From 91063b51383fe008c4509822a66761f6fc7cf334 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 23 Oct 1998 14:53:28 +0000 Subject: [PATCH] cplus-dem.c (work_stuff): Replace const_type and volatile_type with type_quals. * cplus-dem.c (work_stuff): Replace const_type and volatile_type with type_quals. (TYPE_UNQUALIFIED): New macro. (TYPE_QUAL_CONST): Likewise. (TYPE_QUAL_VOLATILE): Likewise. (TYPE_QUAL_RESTRICT): Likewise. (code_for_qualifier): New function. (qualifier_string): Likewise. (demangle_qualifier): Likewise. (internal_cplus_demangle): Use them. (demangle_signature): Likewise. (demangle_template_value_parm): Likewise. (do_type): Likewise. (demangle_fund_type)): Likewise. * Makefile.in (hash.h): Run gperf when necessary. * cp-tree.h (CP_TYPE_READONLY): Remove. (CP_TYPE_VOLATILE): Likewise. (CP_TYPE_QUALS): New macro. (CP_TYPE_CONST_P): Likewise. (CP_TYPE_VOLATILE_P): Likewise. (CP_TYPE_RESTRICT_P): Likewise. (CP_TYPE_CONST_NON_VOLATILE_P): Likewise. (cp_build_type_variant): Rename to ... (cp_build_qualified_type): New function. (c_apply_type_quals_to_decl): Declare. (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'. (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise. (cp_type_qual_from_rid): New function. (compparms): Remove unused parameter. All callers changed. (cp_type_quals): New function. (at_least_as_qualified_p): Likewise. (more_qualified_p): Likewise. * call.c (standard_conversion): Replace calls to cp_build_type_variant with cp_build_qualified_type. Use CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to compare them. Use CP_TYPE_* macros to check qualifiers. (reference_binding): Likewise. (implicit_conversion): Likewise. (add_builtin_candidates): Likewise. (build_over_call): Likewise. * class.c (overrides): Compare all qualifiers, not just `const', on method declarations. * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc. (convert_pointer_to_real): Likewise. (type_promotes_to): Likewise. * decl.c (check_for_uninitialized_const_var): New function. (init_decl_processing): More CP_TYPE_QUALS conversion, etc. (cp_finish_decl): Use check_for_uninitialized_const_var. (grokdeclarator): More CP_TYPE_QUALS conversion, etc. Update to handle `restrict'. (grok_ctor_properties): Likewise. (grok_op_properties): Likewise. (start_function): Likewise. (rever_static_member_fn): Likewise. * decl2.c (grok_method_quals): Likewise. (grokfield): Likewise. * error.c (dump_readonly_or_volatile): Rename to ... (dump_qualifiers): New function. Handle `restrict'. (dump_type_real): Use it. (dump_aggr_type): Likewise. (dump_type_prefix): Likewise. (dump_type_suffix): Likewise. (dump_function_decl): Likewise. (cv_as_string): Likewise. * gxx.gperf: Add __restrict and __restrict__. * gxxint.texi: Document `u' as used for `__restrict', and a few other previously undocumented codes. * hash.h: Regenerated. * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc. (build_member_call): Likewise. (build_new_1): Likewise. * lex.c (init_parse): Add entry for RID_RESTRICT. (cons_up_default_function): More CP_TYPE_QUALS conversion, etc. (cp_type_qual_from_rid): Define. * lex.h (enum rid): Add RID_RESTRICT. * method.c (process_modifiers): Deal with `restrict'. * parse.y (primary): More CP_TYPE_QUALS conversion, etc. * parse.c: Regenerated. * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc. (tsubst_aggr_type): Likewise. (tsubst): Likewise. (check_cv_quals_for_unify): Likewise. (unify): Likewise. * rtti.c (init_rtti_processing): Likewise. (build_headof): Likewise. (get_tinfo_var): Likewise. (buidl_dynamic_cast_1): Likewise. Fix `volatile' handling. (expand_class_desc): Likewise. (expand_attr_desc): Likewise. (synthesize_tinfo_fn): Likewise. * search.c (covariant_return_p): Likewise. Fix `volatile' handling. (get_matching_virtual): Likewise. (expand_upcast_fixups): Likewise. * sig.c (build_signature_pointer_or_reference_name): Take type_quals, not constp and volatilep. (build_signature_pointer_or_reference_type): Likewise. (match_method_types): More CP_TYPE_QUALS conversion, etc. (build_signature_pointer_constructor): Likewise. (build_signature_method_call): Likewise. * tree.c (build_cplus_array_type): Likewise. (cp_build_type_variant): Rename to ... (cp_build_qualified_type): New function. Deal with `__restrict'. (canonical_type_variant): More CP_TYPE_QUALS conversion, etc. (build_exception_variant): Likewise. (mapcar): Likewise. * typeck.c (qualif_type): Likewise. (common_type): Likewise. (comptypes): Likewise. (comp_cv_target_types): Likewise. (at_least_as_qualified_p): Define. (more_qualified_p): Likewise. (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc. (compparms): Likewise. (inline_conversion): Likewise. (string_conv_p): Likewise. (build_component_ref): Likewise. (build_indirect_ref): Likewise. (build_array_ref): Likewise. (build_unary_op): Likewise. (build_conditional_expr): Likewise. (build_static_cast): Likewise. (build_c_cast): Likewise. (build_modify_expr): Likewise. (convert_For_assignment): Likewise. (comp_ptr_ttypes_real): Likewise. (cp_type_quals): New function. From-SVN: r23258 --- gcc/cp/ChangeLog | 117 + gcc/cp/Makefile.in | 9 +- gcc/cp/call.c | 48 +- gcc/cp/class.c | 6 +- gcc/cp/cp-tree.h | 49 +- gcc/cp/cvt.c | 32 +- gcc/cp/decl.c | 189 +- gcc/cp/decl2.c | 43 +- gcc/cp/error.c | 101 +- gcc/cp/gxx.gperf | 2 + gcc/cp/gxxint.texi | 11 +- gcc/cp/hash.h | 260 +- gcc/cp/init.c | 17 +- gcc/cp/lex.c | 26 +- gcc/cp/lex.h | 1 + gcc/cp/method.c | 9 +- gcc/cp/parse.c | 7321 ++++++++--------- gcc/cp/parse.y | 43 +- gcc/cp/pt.c | 45 +- gcc/cp/rtti.c | 28 +- gcc/cp/search.c | 20 +- gcc/cp/sig.c | 79 +- gcc/cp/tree.c | 52 +- gcc/cp/typeck.c | 248 +- gcc/testsuite/g++.old-deja/g++.other/const1.C | 9 + gcc/testsuite/g++.old-deja/g++.other/dcast1.C | 15 + gcc/testsuite/g++.old-deja/g++.other/init8.C | 2 +- .../g++.old-deja/g++.other/virtual2.C | 19 + .../g++.old-deja/g++.other/virtual3.C | 24 + libiberty/cplus-dem.c | 190 +- 30 files changed, 4638 insertions(+), 4377 deletions(-) create mode 100644 gcc/testsuite/g++.old-deja/g++.other/const1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.other/dcast1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.other/virtual2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.other/virtual3.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index da9cad24370..e5e8def2c4f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,120 @@ +1998-10-23 Mark Mitchell + + * Makefile.in (hash.h): Run gperf when necessary. + + * cp-tree.h (CP_TYPE_READONLY): Remove. + (CP_TYPE_VOLATILE): Likewise. + (CP_TYPE_QUALS): New macro. + (CP_TYPE_CONST_P): Likewise. + (CP_TYPE_VOLATILE_P): Likewise. + (CP_TYPE_RESTRICT_P): Likewise. + (CP_TYPE_CONST_NON_VOLATILE_P): Likewise. + (cp_build_type_variant): Rename to ... + (cp_build_qualified_type): New function. + (c_apply_type_quals_to_decl): Declare. + (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'. + (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise. + (cp_type_qual_from_rid): New function. + (compparms): Remove unused parameter. All callers changed. + (cp_type_quals): New function. + (at_least_as_qualified_p): Likewise. + (more_qualified_p): Likewise. + + * call.c (standard_conversion): Replace calls to + cp_build_type_variant with cp_build_qualified_type. Use + CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to + compare them. Use CP_TYPE_* macros to check qualifiers. + (reference_binding): Likewise. + (implicit_conversion): Likewise. + (add_builtin_candidates): Likewise. + (build_over_call): Likewise. + * class.c (overrides): Compare all qualifiers, not just `const', + on method declarations. + * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc. + (convert_pointer_to_real): Likewise. + (type_promotes_to): Likewise. + * decl.c (check_for_uninitialized_const_var): New function. + (init_decl_processing): More CP_TYPE_QUALS conversion, etc. + (cp_finish_decl): Use check_for_uninitialized_const_var. + (grokdeclarator): More CP_TYPE_QUALS conversion, etc. Update to + handle `restrict'. + (grok_ctor_properties): Likewise. + (grok_op_properties): Likewise. + (start_function): Likewise. + (rever_static_member_fn): Likewise. + * decl2.c (grok_method_quals): Likewise. + (grokfield): Likewise. + * error.c (dump_readonly_or_volatile): Rename to ... + (dump_qualifiers): New function. Handle `restrict'. + (dump_type_real): Use it. + (dump_aggr_type): Likewise. + (dump_type_prefix): Likewise. + (dump_type_suffix): Likewise. + (dump_function_decl): Likewise. + (cv_as_string): Likewise. + * gxx.gperf: Add __restrict and __restrict__. + * gxxint.texi: Document `u' as used for `__restrict', and a few + other previously undocumented codes. + * hash.h: Regenerated. + * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc. + (build_member_call): Likewise. + (build_new_1): Likewise. + * lex.c (init_parse): Add entry for RID_RESTRICT. + (cons_up_default_function): More CP_TYPE_QUALS conversion, etc. + (cp_type_qual_from_rid): Define. + * lex.h (enum rid): Add RID_RESTRICT. + * method.c (process_modifiers): Deal with `restrict'. + * parse.y (primary): More CP_TYPE_QUALS conversion, etc. + * parse.c: Regenerated. + * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc. + (tsubst_aggr_type): Likewise. + (tsubst): Likewise. + (check_cv_quals_for_unify): Likewise. + (unify): Likewise. + * rtti.c (init_rtti_processing): Likewise. + (build_headof): Likewise. + (get_tinfo_var): Likewise. + (buidl_dynamic_cast_1): Likewise. Fix `volatile' handling. + (expand_class_desc): Likewise. + (expand_attr_desc): Likewise. + (synthesize_tinfo_fn): Likewise. + * search.c (covariant_return_p): Likewise. Fix `volatile' handling. + (get_matching_virtual): Likewise. + (expand_upcast_fixups): Likewise. + * sig.c (build_signature_pointer_or_reference_name): Take + type_quals, not constp and volatilep. + (build_signature_pointer_or_reference_type): Likewise. + (match_method_types): More CP_TYPE_QUALS conversion, etc. + (build_signature_pointer_constructor): Likewise. + (build_signature_method_call): Likewise. + * tree.c (build_cplus_array_type): Likewise. + (cp_build_type_variant): Rename to ... + (cp_build_qualified_type): New function. Deal with `__restrict'. + (canonical_type_variant): More CP_TYPE_QUALS conversion, etc. + (build_exception_variant): Likewise. + (mapcar): Likewise. + * typeck.c (qualif_type): Likewise. + (common_type): Likewise. + (comptypes): Likewise. + (comp_cv_target_types): Likewise. + (at_least_as_qualified_p): Define. + (more_qualified_p): Likewise. + (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc. + (compparms): Likewise. + (inline_conversion): Likewise. + (string_conv_p): Likewise. + (build_component_ref): Likewise. + (build_indirect_ref): Likewise. + (build_array_ref): Likewise. + (build_unary_op): Likewise. + (build_conditional_expr): Likewise. + (build_static_cast): Likewise. + (build_c_cast): Likewise. + (build_modify_expr): Likewise. + (convert_For_assignment): Likewise. + (comp_ptr_ttypes_real): Likewise. + (cp_type_quals): New function. + 1998-10-23 Jason Merrill * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. diff --git a/gcc/cp/Makefile.in b/gcc/cp/Makefile.in index 96e8f654c46..425bedd3dd2 100644 --- a/gcc/cp/Makefile.in +++ b/gcc/cp/Makefile.in @@ -235,11 +235,10 @@ $(PARSE_C) : $(srcdir)/parse.y # cp $(PARSE_C) y.tab.c # touch stamp-parse -# hash.h really depends on $(srcdir)/gxx.gperf. -# But this would screw things for people that don't have gperf, -# if gxx.gpref got touched, say. -# Thus you have to remove hash.h to force it to be re-made. -$(srcdir)/hash.h: +# We used to try to protect people from having to rerun gperf. But, +# the C front-end already requires this if c-parse.gperf is changed, +# so we should be consistent. +$(srcdir)/hash.h: $(srcdir)/gxx.gperf gperf -L KR-C -F ', 0, 0' -p -j1 -g -o -t -N is_reserved_word \ '-k1,4,7,$$' $(srcdir)/gxx.gperf >$(srcdir)/hash.h diff --git a/gcc/cp/call.c b/gcc/cp/call.c index dc05d19b81b..94f62985b74 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -843,9 +843,8 @@ standard_conversion (to, from, expr) && ufcode != FUNCTION_TYPE) { from = build_pointer_type - (cp_build_type_variant (void_type_node, - TYPE_READONLY (TREE_TYPE (from)), - TYPE_VOLATILE (TREE_TYPE (from)))); + (cp_build_qualified_type (void_type_node, + CP_TYPE_QUALS (TREE_TYPE (from)))); conv = build_conv (PTR_CONV, from, conv); } else if (ufcode == OFFSET_TYPE && utcode == OFFSET_TYPE) @@ -868,9 +867,9 @@ standard_conversion (to, from, expr) { if (DERIVED_FROM_P (TREE_TYPE (to), TREE_TYPE (from))) { - from = cp_build_type_variant (TREE_TYPE (to), - TYPE_READONLY (TREE_TYPE (from)), - TYPE_VOLATILE (TREE_TYPE (from))); + from = + cp_build_qualified_type (TREE_TYPE (to), + CP_TYPE_QUALS (TREE_TYPE (from))); from = build_pointer_type (from); conv = build_conv (PTR_CONV, from, conv); } @@ -903,13 +902,11 @@ standard_conversion (to, from, expr) if (! DERIVED_FROM_P (fbase, tbase) || ! comptypes (TREE_TYPE (fromfn), TREE_TYPE (tofn), 1) || ! compparms (TREE_CHAIN (TYPE_ARG_TYPES (fromfn)), - TREE_CHAIN (TYPE_ARG_TYPES (tofn)), 1) - || TYPE_READONLY (fbase) != TYPE_READONLY (tbase) - || TYPE_VOLATILE (fbase) != TYPE_VOLATILE (tbase)) + TREE_CHAIN (TYPE_ARG_TYPES (tofn))) + || CP_TYPE_QUALS (fbase) != CP_TYPE_QUALS (tbase)) return 0; - from = cp_build_type_variant (tbase, TYPE_READONLY (fbase), - TYPE_VOLATILE (fbase)); + from = cp_build_qualified_type (tbase, CP_TYPE_QUALS (fbase)); from = build_cplus_method_type (from, TREE_TYPE (fromfn), TREE_CHAIN (TYPE_ARG_TYPES (fromfn))); from = build_ptrmemfunc_type (build_pointer_type (from)); @@ -981,9 +978,7 @@ reference_binding (rto, rfrom, expr, flags) || (IS_AGGR_TYPE (to) && IS_AGGR_TYPE (from) && DERIVED_FROM_P (to, from))); - if (lvalue && related - && TYPE_READONLY (to) >= TYPE_READONLY (from) - && TYPE_VOLATILE (to) >= TYPE_VOLATILE (from)) + if (lvalue && related && at_least_as_qualified_p (to, from)) { conv = build1 (IDENTITY_CONV, from, expr); @@ -1012,14 +1007,12 @@ reference_binding (rto, rfrom, expr, flags) TREE_OPERAND (conv, 0) = TREE_OPERAND (TREE_OPERAND (conv, 0), 0); } if (conv - && ((! (TYPE_READONLY (to) && ! TYPE_VOLATILE (to) + && ((! (CP_TYPE_CONST_NON_VOLATILE_P (to) && (flags & LOOKUP_NO_TEMP_BIND) == 0)) /* If T1 is reference-related to T2, cv1 must be the same cv-qualification as, or greater cv-qualification than, cv2; otherwise, the program is ill-formed. */ - || (related - && (TYPE_READONLY (to) < TYPE_READONLY (from) - || TYPE_VOLATILE (to) < TYPE_VOLATILE (from))))) + || (related && !at_least_as_qualified_p (to, from)))) ICS_BAD_FLAG (conv) = 1; } @@ -1071,8 +1064,7 @@ implicit_conversion (to, from, expr, flags) (TYPE_MAIN_VARIANT (TREE_TYPE (to)), expr, LOOKUP_ONLYCONVERTING); if (cand) { - if (! TYPE_READONLY (TREE_TYPE (to)) - || TYPE_VOLATILE (TREE_TYPE (to))) + if (!CP_TYPE_CONST_NON_VOLATILE_P (TREE_TYPE (to))) ICS_BAD_FLAG (cand->second_conv) = 1; if (!conv || (ICS_BAD_FLAG (conv) > ICS_BAD_FLAG (cand->second_conv))) @@ -1823,7 +1815,7 @@ add_builtin_candidates (candidates, code, code2, fnname, args, flags) if (i == 0 && ref1 && (TREE_CODE (type) != REFERENCE_TYPE - || TYPE_READONLY (TREE_TYPE (type)))) + || CP_TYPE_CONST_P (TREE_TYPE (type)))) continue; if (code == COND_EXPR && TREE_CODE (type) == REFERENCE_TYPE) @@ -3223,17 +3215,9 @@ build_over_call (cand, args, flags) tree argtype = TREE_TYPE (TREE_VALUE (arg)); tree t; if (ICS_BAD_FLAG (TREE_VEC_ELT (convs, i))) - { - int dv = (TYPE_VOLATILE (TREE_TYPE (parmtype)) - < TYPE_VOLATILE (TREE_TYPE (argtype))); - int dc = (TYPE_READONLY (TREE_TYPE (parmtype)) - < TYPE_READONLY (TREE_TYPE (argtype))); - char *p = (dv && dc ? "const and volatile" - : dc ? "const" : dv ? "volatile" : ""); - - cp_error ("passing `%T' as `this' argument of `%#D' discards %s", - TREE_TYPE (argtype), fn, p); - } + cp_error ("passing `%T' as `this' argument of `%#D' discards qualifiers", + TREE_TYPE (argtype), fn); + /* [class.mfct.nonstatic]: If a nonstatic member function of a class X is called for an object that is not of type X, or of a type derived from X, the behavior is undefined. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 70a905f4086..8141db18341 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -2387,9 +2387,9 @@ overrides (fndecl, base_fndecl) #endif types = TYPE_ARG_TYPES (TREE_TYPE (fndecl)); base_types = TYPE_ARG_TYPES (TREE_TYPE (base_fndecl)); - if ((TYPE_READONLY (TREE_TYPE (TREE_VALUE (base_types))) - == TYPE_READONLY (TREE_TYPE (TREE_VALUE (types)))) - && compparms (TREE_CHAIN (base_types), TREE_CHAIN (types), 3)) + if ((TYPE_QUALS (TREE_TYPE (TREE_VALUE (base_types))) + == TYPE_QUALS (TREE_TYPE (TREE_VALUE (types)))) + && compparms (TREE_CHAIN (base_types), TREE_CHAIN (types))) return 1; } return 0; diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index ad874a12b18..7ef0477f5b8 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -514,15 +514,6 @@ enum languages { lang_c, lang_cplusplus, lang_java }; /* The _DECL for this _TYPE. */ #define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE))) -#define CP_TYPE_READONLY(NODE) \ - (TREE_CODE (NODE) == ARRAY_TYPE \ - ? TYPE_READONLY (TREE_TYPE (NODE)) \ - : TYPE_READONLY (NODE)) -#define CP_TYPE_VOLATILE(NODE) \ - (TREE_CODE (NODE) == ARRAY_TYPE \ - ? TYPE_VOLATILE (TREE_TYPE (NODE)) \ - : TYPE_VOLATILE (NODE)) - /* Nonzero if T is a class (or struct or union) type. Also nonzero for template type parameters and typename types. Despite its name, this macro has nothing to do with the definition of aggregate given @@ -547,6 +538,33 @@ enum languages { lang_c, lang_cplusplus, lang_java }; /* True if this a "Java" type, defined in 'extern "Java"'. */ #define TYPE_FOR_JAVA(NODE) TYPE_LANG_FLAG_3(NODE) +/* The type qualifiers for this type, including the qualifiers on the + elements for an array type. */ +#define CP_TYPE_QUALS(NODE) \ + ((TREE_CODE (NODE) != ARRAY_TYPE) \ + ? TYPE_QUALS (NODE) : cp_type_quals (NODE)) + +/* Nonzero if this type is const-qualified. */ +#define CP_TYPE_CONST_P(NODE) \ + (CP_TYPE_QUALS (NODE) & TYPE_QUAL_CONST) + +/* Nonzero if this type is volatile-qualified. */ +#define CP_TYPE_VOLATILE_P(NODE) \ + (CP_TYPE_QUALS (NODE) & TYPE_QUAL_VOLATILE) + +/* Nonzero if this type is restrict-qualified. + FIXME: Does this make sense? */ +#define CP_TYPE_RESTRICT_P(NODE) \ + (CP_TYPE_QUALS (NODE) & TYPE_QUAL_RESTRICT) + +/* Nonzero if this type is const-qualified, but not + volatile-qualified. Other qualifiers are ignored. This macro is + used to test whether or not it is OK to bind an rvalue to a + reference. */ +#define CP_TYPE_CONST_NON_VOLATILE_P(NODE) \ + ((CP_TYPE_QUALS (NODE) & (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE)) \ + == TYPE_QUAL_CONST) + #define DELTA_FROM_VTABLE_ENTRY(ENTRY) \ (!flag_vtable_thunks ? \ TREE_VALUE (CONSTRUCTOR_ELTS (ENTRY)) \ @@ -1882,7 +1900,7 @@ extern void check_function_format PROTO((tree, tree, tree)); /* Print an error message for invalid operands to arith operation CODE. NOP_EXPR is used as a special case (see truthvalue_conversion). */ extern void binary_op_error PROTO((enum tree_code)); -extern tree cp_build_type_variant PROTO((tree, int, int)); +extern tree cp_build_qualified_type PROTO((tree, int)); extern tree canonical_type_variant PROTO((tree)); extern void c_expand_expr_stmt PROTO((tree)); /* Validate the expression after `case' and apply default promotions. */ @@ -1893,6 +1911,7 @@ extern void constant_expression_warning PROTO((tree)); extern tree convert_and_check PROTO((tree, tree)); extern void overflow_warning PROTO((tree)); extern void unsigned_conversion_warning PROTO((tree, tree)); +extern void c_apply_type_quals_to_decl PROTO((int, tree)); /* Read the rest of the current #-directive line. */ #if USE_CPPLIB @@ -2161,9 +2180,9 @@ extern int current_function_parms_stored; #define SIGNATURE_OPTR_NAME "__optr" #define SIGNATURE_SPTR_NAME "__sptr" #define SIGNATURE_POINTER_NAME "__sp_" -#define SIGNATURE_POINTER_NAME_FORMAT "__%s%ssp_%s" +#define SIGNATURE_POINTER_NAME_FORMAT "__%s%s%ssp_%s" #define SIGNATURE_REFERENCE_NAME "__sr_" -#define SIGNATURE_REFERENCE_NAME_FORMAT "__%s%ssr_%s" +#define SIGNATURE_REFERENCE_NAME_FORMAT "__%s%s%ssr_%s" #define SIGTABLE_PTR_TYPE "__sigtbl_ptr_type" #define SIGTABLE_NAME_FORMAT "__st_%s_%s" @@ -2815,6 +2834,7 @@ extern void add_defarg_fn PROTO((tree)); extern void do_pending_defargs PROTO((void)); extern int identifier_type PROTO((tree)); extern void yyhook PROTO((int)); +extern int cp_type_qual_from_rid PROTO((tree)); /* in method.c */ extern void init_method PROTO((void)); @@ -3122,7 +3142,7 @@ extern tree common_type PROTO((tree, tree)); extern int compexcepttypes PROTO((tree, tree)); extern int comptypes PROTO((tree, tree, int)); extern int comp_target_types PROTO((tree, tree, int)); -extern int compparms PROTO((tree, tree, int)); +extern int compparms PROTO((tree, tree)); extern int comp_target_types PROTO((tree, tree, int)); extern int comp_cv_qualification PROTO((tree, tree)); extern int comp_cv_qual_signature PROTO((tree, tree)); @@ -3176,6 +3196,9 @@ extern tree c_expand_start_case PROTO((tree)); extern int comp_ptr_ttypes PROTO((tree, tree)); extern int ptr_reasonably_similar PROTO((tree, tree)); extern tree build_ptrmemfunc PROTO((tree, tree, int)); +extern int cp_type_quals PROTO((tree)); +extern int at_least_as_qualified_p PROTO((tree, tree)); +extern int more_qualified_p PROTO((tree, tree)); /* in typeck2.c */ extern tree error_not_base_type PROTO((tree, tree)); diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index 3058641fc10..105c4e7ac4b 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -444,13 +444,13 @@ convert_to_reference (reftype, expr, convtype, flags, decl) initialize a reference, then the reference must be to a non-volatile const type. */ if (! real_lvalue_p (expr) - && (!TYPE_READONLY (ttl) || TYPE_VOLATILE (ttl))) + && !CP_TYPE_CONST_NON_VOLATILE_P (ttl)) { char* msg; - if (TYPE_VOLATILE (ttl) && decl) + if (CP_TYPE_VOLATILE_P (ttl) && decl) msg = "initialization of volatile reference type `%#T'"; - else if (TYPE_VOLATILE (ttl)) + else if (CP_TYPE_VOLATILE_P (ttl)) msg = "conversion to volatile reference type `%#T'"; else if (decl) msg = "initialization of non-const reference type `%#T'"; @@ -460,15 +460,10 @@ convert_to_reference (reftype, expr, convtype, flags, decl) cp_error (msg, reftype); cp_error ("from rvalue of type `%T'", intype); } - else if (! (convtype & CONV_CONST)) - { - if (! TYPE_READONLY (ttl) && TYPE_READONLY (ttr)) - cp_error ("conversion from `%T' to `%T' discards const", - ttr, reftype); - else if (! TYPE_VOLATILE (ttl) && TYPE_VOLATILE (ttr)) - cp_error ("conversion from `%T' to `%T' discards volatile", - ttr, reftype); - } + else if (! (convtype & CONV_CONST) + && !at_least_as_qualified_p (ttl, ttr)) + cp_error ("conversion from `%T' to `%T' discards qualifiers", + ttr, reftype); } return build_up_reference (reftype, expr, flags); @@ -502,7 +497,7 @@ convert_to_reference (reftype, expr, convtype, flags, decl) return error_mark_node; rval = build_up_reference (reftype, rval, flags); - if (rval && ! TYPE_READONLY (TREE_TYPE (reftype))) + if (rval && ! CP_TYPE_CONST_P (TREE_TYPE (reftype))) cp_pedwarn ("initializing non-const `%T' with `%T' will use a temporary", reftype, intype); } @@ -570,8 +565,8 @@ convert_pointer_to_real (binfo, expr) binfo = NULL_TREE; } - ptr_type = cp_build_type_variant (type, TYPE_READONLY (TREE_TYPE (intype)), - TYPE_VOLATILE (TREE_TYPE (intype))); + ptr_type = cp_build_qualified_type (type, + CP_TYPE_QUALS (TREE_TYPE (intype))); ptr_type = build_pointer_type (ptr_type); if (ptr_type == TYPE_MAIN_VARIANT (intype)) return expr; @@ -1059,13 +1054,12 @@ tree type_promotes_to (type) tree type; { - int constp, volatilep; + int type_quals; if (type == error_mark_node) return error_mark_node; - constp = TYPE_READONLY (type); - volatilep = TYPE_VOLATILE (type); + type_quals = CP_TYPE_QUALS (type); type = TYPE_MAIN_VARIANT (type); /* bool always promotes to int (not unsigned), even if it's the same @@ -1099,7 +1093,7 @@ type_promotes_to (type) else if (type == float_type_node) type = double_type_node; - return cp_build_type_variant (type, constp, volatilep); + return cp_build_qualified_type (type, type_quals); } /* The routines below this point are carefully written to conform to diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index c98db982014..448290bc707 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -177,6 +177,7 @@ static void bad_specifiers PROTO((tree, char *, int, int, int, int, int)); static void lang_print_error_function PROTO((char *)); static tree maybe_process_template_type_declaration PROTO((tree, int, struct binding_level*)); +static void check_for_uninitialized_const_var PROTO((tree)); #if defined (DEBUG_CP_BINDING_LEVELS) static void indent PROTO((void)); @@ -2567,7 +2568,7 @@ decls_match (newdecl, olddecl) TREE_TYPE (newdecl) = TREE_TYPE (olddecl); } else - types_match = compparms (p1, p2, 3); + types_match = compparms (p1, p2); } else types_match = 0; @@ -2769,7 +2770,7 @@ duplicate_decls (newdecl, olddecl) else if (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL && TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL && compparms (TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (olddecl))), - TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl))), 3) + TYPE_ARG_TYPES (TREE_TYPE (DECL_TEMPLATE_RESULT (newdecl)))) && comp_template_parms (DECL_TEMPLATE_PARMS (newdecl), DECL_TEMPLATE_PARMS (olddecl))) { @@ -2788,7 +2789,7 @@ duplicate_decls (newdecl, olddecl) cp_error_at ("previous declaration `%#D' here", olddecl); } else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (newdecl)), - TYPE_ARG_TYPES (TREE_TYPE (olddecl)), 3)) + TYPE_ARG_TYPES (TREE_TYPE (olddecl)))) { cp_error ("new declaration `%#D'", newdecl); cp_error_at ("ambiguates old declaration `%#D'", olddecl); @@ -5840,7 +5841,8 @@ init_decl_processing () string_type_node = build_pointer_type (char_type_node); const_string_type_node - = build_pointer_type (build_type_variant (char_type_node, 1, 0)); + = build_pointer_type (build_qualified_type (char_type_node, + TYPE_QUAL_CONST)); #if 0 record_builtin_type (RID_MAX, NULL_PTR, string_type_node); #endif @@ -5870,7 +5872,8 @@ init_decl_processing () ptr_type_node = build_pointer_type (void_type_node); const_ptr_type_node - = build_pointer_type (build_type_variant (void_type_node, 1, 0)); + = build_pointer_type (build_qualified_type (void_type_node, + TYPE_QUAL_CONST)); #if 0 record_builtin_type (RID_MAX, NULL_PTR, ptr_type_node); #endif @@ -6199,14 +6202,15 @@ init_decl_processing () DECL_SIZE (fields[3]) = TYPE_SIZE (delta_type_node); TREE_UNSIGNED (fields[3]) = 0; TREE_CHAIN (fields[2]) = fields[3]; - vtable_entry_type = build_type_variant (vtable_entry_type, 1, 0); + vtable_entry_type = build_qualified_type (vtable_entry_type, + TYPE_QUAL_CONST); } record_builtin_type (RID_MAX, VTBL_PTR_TYPE, vtable_entry_type); vtbl_type_node = build_array_type (vtable_entry_type, NULL_TREE); layout_type (vtbl_type_node); - vtbl_type_node = cp_build_type_variant (vtbl_type_node, 1, 0); + vtbl_type_node = build_qualified_type (vtbl_type_node, TYPE_QUAL_CONST); record_builtin_type (RID_MAX, NULL_PTR, vtbl_type_node); vtbl_ptr_type_node = build_pointer_type (vtable_entry_type); layout_type (vtbl_ptr_type_node); @@ -6245,7 +6249,8 @@ init_decl_processing () TREE_UNSIGNED (fields[5]) = 0; TREE_CHAIN (fields[4]) = fields[5]; - sigtable_entry_type = build_type_variant (sigtable_entry_type, 1, 0); + sigtable_entry_type = build_qualified_type (sigtable_entry_type, + TYPE_QUAL_CONST); record_builtin_type (RID_MAX, SIGTABLE_PTR_TYPE, sigtable_entry_type); } @@ -7000,6 +7005,25 @@ obscure_complex_init (decl, init) return init; } +/* Issue an error message if DECL is an uninitialized const variable. */ + +static void +check_for_uninitialized_const_var (decl) + tree decl; +{ + tree type = TREE_TYPE (decl); + + /* ``Unless explicitly declared extern, a const object does not have + external linkage and must be initialized. ($8.4; $12.1)'' ARM + 7.1.6 */ + if (TREE_CODE (decl) == VAR_DECL + && TREE_CODE (type) != REFERENCE_TYPE + && CP_TYPE_CONST_P (type) + && !TYPE_NEEDS_CONSTRUCTING (type) + && !DECL_INITIAL (decl)) + cp_error ("uninitialized const `%D'", decl); +} + /* Finish processing of a declaration; install its line number and initial value. If the length of an array type is not known before, @@ -7241,32 +7265,16 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) decl); } - if (TREE_CODE (decl) == VAR_DECL - && !DECL_INITIAL (decl) - && !TYPE_NEEDS_CONSTRUCTING (type) - && (TYPE_READONLY (type) || TREE_READONLY (decl))) - cp_error ("uninitialized const `%D'", decl); + check_for_uninitialized_const_var (decl); if (TYPE_SIZE (type) != NULL_TREE && TYPE_NEEDS_CONSTRUCTING (type)) init = obscure_complex_init (decl, NULL_TREE); - } - else if (TREE_CODE (decl) == VAR_DECL - && TREE_CODE (type) != REFERENCE_TYPE - && (TYPE_READONLY (type) || TREE_READONLY (decl))) - { - /* ``Unless explicitly declared extern, a const object does not have - external linkage and must be initialized. ($8.4; $12.1)'' ARM 7.1.6 - However, if it's `const int foo = 1; const int foo;', don't complain - about the second decl, since it does have an initializer before. - We deliberately don't complain about arrays, because they're - supposed to be initialized by a constructor. */ - if (! DECL_INITIAL (decl) - && TREE_CODE (type) != ARRAY_TYPE - && (!pedantic || !current_class_type)) - cp_error ("uninitialized const `%#D'", decl); - } + } + else + check_for_uninitialized_const_var (decl); + /* For top-level declaration, the initial value was read in the temporary obstack. MAXINDEX, rtl, etc. to be made below must go in the permanent obstack; but don't discard the @@ -8503,7 +8511,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) tree type = NULL_TREE; int longlong = 0; int constp; + int restrictp; int volatilep; + int type_quals; int virtualp, explicitp, friendp, inlinep, staticp; int explicit_int = 0; int explicit_char = 0; @@ -9065,8 +9075,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) && TYPE_MAIN_VARIANT (type) == double_type_node) { RIDBIT_RESET (RID_LONG, specbits); - type = build_type_variant (long_double_type_node, TYPE_READONLY (type), - TYPE_VOLATILE (type)); + type = build_qualified_type (long_double_type_node, + CP_TYPE_QUALS (type)); } /* Check all other uses of type modifiers. */ @@ -9188,17 +9198,24 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) if (return_type == return_conversion && (RIDBIT_SETP (RID_CONST, specbits) - || RIDBIT_SETP (RID_VOLATILE, specbits))) - cp_error ("`operator %T' cannot be cv-qualified", + || RIDBIT_SETP (RID_VOLATILE, specbits) + || RIDBIT_SETP (RID_RESTRICT, specbits))) + cp_error ("qualifiers are not allowed on declaration of `operator %T'", ctor_return_type); /* Set CONSTP if this declaration is `const', whether by explicit specification or via a typedef. Likewise for VOLATILEP. */ - constp = !!RIDBIT_SETP (RID_CONST, specbits) + CP_TYPE_READONLY (type); - volatilep = !!RIDBIT_SETP (RID_VOLATILE, specbits) + CP_TYPE_VOLATILE (type); - type = cp_build_type_variant (type, constp, volatilep); + constp = !! RIDBIT_SETP (RID_CONST, specbits) + CP_TYPE_CONST_P (type); + restrictp = + !! RIDBIT_SETP (RID_RESTRICT, specbits) + CP_TYPE_RESTRICT_P (type); + volatilep = + !! RIDBIT_SETP (RID_VOLATILE, specbits) + CP_TYPE_VOLATILE_P (type); + type_quals = ((constp ? TYPE_QUAL_CONST : 0) + | (restrictp ? TYPE_QUAL_RESTRICT : 0) + | (volatilep ? TYPE_QUAL_VOLATILE : 0)); + type = cp_build_qualified_type (type, type_quals); staticp = 0; inlinep = !! RIDBIT_SETP (RID_INLINE, specbits); virtualp = RIDBIT_SETP (RID_VIRTUAL, specbits); @@ -9275,16 +9292,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) && IS_SIGNATURE (current_class_type) && RIDBIT_NOTSETP (RID_TYPEDEF, specbits)) { - if (constp) + if (type_quals != TYPE_UNQUALIFIED) { - error ("`const' specified for signature member function `%s'", name); - constp = 0; - } - if (volatilep) - { - error ("`volatile' specified for signature member function `%s'", - name); - volatilep = 0; + error ("type qualifiers specified for signature member function `%s'", name); + type_quals = TYPE_UNQUALIFIED; } if (inlinep) { @@ -9634,9 +9645,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) /* Declaring a function type. Make sure we have a valid type for the function to return. */ - /* We now know that constp and volatilep don't apply to the + /* We now know that the TYPE_QUALS don't apply to the decl, but to its return type. */ - constp = volatilep = 0; + type_quals = TYPE_UNQUALIFIED; /* Warn about some types functions can't return. */ @@ -9844,9 +9855,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) /* Merge any constancy or volatility into the target type for the pointer. */ - /* We now know that constp and volatilep don't apply to the - decl, but to the target of the pointer. */ - constp = volatilep = 0; + /* We now know that the TYPE_QUALS don't apply to the decl, + but to the target of the pointer. */ + type_quals = TYPE_UNQUALIFIED; if (IS_SIGNATURE (type)) { @@ -9871,8 +9882,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) type); type = build_signature_pointer_type (type); } - constp = 0; - volatilep = 0; } else if (TREE_CODE (declarator) == ADDR_EXPR) { @@ -9895,25 +9904,37 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) { register tree typemodlist; int erred = 0; + + constp = 0; + volatilep = 0; + restrictp = 0; for (typemodlist = TREE_TYPE (declarator); typemodlist; typemodlist = TREE_CHAIN (typemodlist)) { - if (TREE_VALUE (typemodlist) == ridpointers[(int) RID_CONST]) + tree qualifier = TREE_VALUE (typemodlist); + + if (qualifier == ridpointers[(int) RID_CONST]) constp++; - else if (TREE_VALUE (typemodlist) == ridpointers[(int) RID_VOLATILE]) + else if (qualifier == ridpointers[(int) RID_VOLATILE]) volatilep++; + else if (qualifier == ridpointers[(int) RID_RESTRICT]) + restrictp++; else if (!erred) { erred = 1; - error ("invalid type modifier within %s declarator", - TREE_CODE (declarator) == ADDR_EXPR - ? "reference" : "pointer"); + error ("invalid type modifier within pointer declarator"); } } if (constp > 1) pedwarn ("duplicate `const'"); if (volatilep > 1) pedwarn ("duplicate `volatile'"); + if (restrictp > 1) + pedwarn ("duplicate `restrict'"); + + type_quals = ((constp ? TYPE_QUAL_CONST : 0) + | (restrictp ? TYPE_QUAL_RESTRICT : 0) + | (volatilep ? TYPE_QUAL_VOLATILE : 0)); if (TREE_CODE (declarator) == ADDR_EXPR && (constp || volatilep)) { @@ -9921,9 +9942,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) pedwarn ("discarding `const' applied to a reference"); if (volatilep) pedwarn ("discarding `volatile' applied to a reference"); - constp = volatilep = 0; + type_quals &= ~(TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE); } - type = cp_build_type_variant (type, constp, volatilep); + type = cp_build_qualified_type (type, type_quals); } declarator = TREE_OPERAND (declarator, 0); ctype = NULL_TREE; @@ -10131,7 +10152,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) if (RIDBIT_SETP (RID_MUTABLE, specbits)) { - if (constp) + if (type_quals & TYPE_QUAL_CONST) { error ("const `%s' cannot be declared `mutable'", name); RIDBIT_RESET (RID_MUTABLE, specbits); @@ -10268,19 +10289,20 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) { /* Note that the grammar rejects storage classes in typenames, fields or parameters. */ - if (constp || volatilep) + if (type_quals != TYPE_UNQUALIFIED) { if (IS_SIGNATURE (type)) - error ("`const' or `volatile' specified with signature type"); + error ("type qualifiers specified for signature type"); + type_quals = TYPE_UNQUALIFIED; } /* Special case: "friend class foo" looks like a TYPENAME context. */ if (friendp) { - if (volatilep) + if (type_quals != TYPE_UNQUALIFIED) { - cp_error ("`volatile' specified for friend class declaration"); - volatilep = 0; + cp_error ("type qualifiers specified for friend class declaration"); + type_quals = TYPE_UNQUALIFIED; } if (inlinep) { @@ -10360,7 +10382,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) { /* Transfer const-ness of array into that of type pointed to. */ type = build_pointer_type (TREE_TYPE (type)); - volatilep = constp = 0; + type_quals = TYPE_UNQUALIFIED; } else if (TREE_CODE (type) == FUNCTION_TYPE) type = build_pointer_type (type); @@ -10788,14 +10810,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) DECL_THIS_STATIC (decl) = 1; /* Record constancy and volatility. */ - - if (constp) - TREE_READONLY (decl) = TREE_CODE (type) != REFERENCE_TYPE; - if (volatilep) - { - TREE_SIDE_EFFECTS (decl) = 1; - TREE_THIS_VOLATILE (decl) = 1; - } + /* FIXME: Disallow `restrict' pointer-to-member declarations. */ + c_apply_type_quals_to_decl (type_quals, decl); return decl; } @@ -11214,7 +11230,7 @@ grok_ctor_properties (ctype, decl) || TREE_PURPOSE (TREE_CHAIN (parmtypes)))) { TYPE_HAS_INIT_REF (ctype) = 1; - if (TYPE_READONLY (TREE_TYPE (parmtype))) + if (CP_TYPE_CONST_P (TREE_TYPE (parmtype))) TYPE_HAS_CONST_INIT_REF (ctype) = 1; } else if (TYPE_MAIN_VARIANT (parmtype) == ctype @@ -11419,7 +11435,7 @@ grok_op_properties (decl, virtualp, friendp) { TYPE_HAS_ASSIGN_REF (current_class_type) = 1; if (TREE_CODE (parmtype) != REFERENCE_TYPE - || TYPE_READONLY (TREE_TYPE (parmtype))) + || CP_TYPE_CONST_P (TREE_TYPE (parmtype))) TYPE_HAS_CONST_ASSIGN_REF (current_class_type) = 1; } } @@ -12436,8 +12452,10 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) TYPE_ARG_TYPES (TREE_TYPE (decl1))); DECL_RESULT (decl1) = build_decl (RESULT_DECL, 0, TYPE_MAIN_VARIANT (TREE_TYPE (fntype))); - TREE_READONLY (DECL_RESULT (decl1)) = TYPE_READONLY (TREE_TYPE (fntype)); - TREE_THIS_VOLATILE (DECL_RESULT (decl1)) = TYPE_VOLATILE (TREE_TYPE (fntype)); + TREE_READONLY (DECL_RESULT (decl1)) + = CP_TYPE_CONST_P (TREE_TYPE (fntype)); + TREE_THIS_VOLATILE (DECL_RESULT (decl1)) + = CP_TYPE_VOLATILE_P (TREE_TYPE (fntype)); } if (TYPE_LANG_SPECIFIC (TREE_TYPE (fntype)) @@ -12621,8 +12639,8 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) { DECL_RESULT (decl1) = build_decl (RESULT_DECL, 0, TYPE_MAIN_VARIANT (restype)); - TREE_READONLY (DECL_RESULT (decl1)) = TYPE_READONLY (restype); - TREE_THIS_VOLATILE (DECL_RESULT (decl1)) = TYPE_VOLATILE (restype); + TREE_READONLY (DECL_RESULT (decl1)) = CP_TYPE_CONST_P (restype); + TREE_THIS_VOLATILE (DECL_RESULT (decl1)) = CP_TYPE_VOLATILE_P (restype); } /* Allocate further tree nodes temporarily during compilation @@ -13864,15 +13882,14 @@ revert_static_member_fn (decl, fn, argtypes) tree function = fn ? *fn : TREE_TYPE (*decl); tree args = argtypes ? *argtypes : TYPE_ARG_TYPES (function); - if (TYPE_READONLY (TREE_TYPE (TREE_VALUE (args)))) - cp_error ("static member function `%#D' declared const", *decl); - if (TYPE_VOLATILE (TREE_TYPE (TREE_VALUE (args)))) - cp_error ("static member function `%#D' declared volatile", *decl); + if (CP_TYPE_QUALS (TREE_TYPE (TREE_VALUE (args))) + != TYPE_UNQUALIFIED) + cp_error ("static member function `%#D' declared with type qualifiers", + *decl); args = TREE_CHAIN (args); tmp = build_function_type (TREE_TYPE (function), args); - tmp = build_type_variant (tmp, TYPE_READONLY (function), - TYPE_VOLATILE (function)); + tmp = build_qualified_type (tmp, CP_TYPE_QUALS (function)); tmp = build_exception_variant (tmp, TYPE_RAISES_EXCEPTIONS (function)); TREE_TYPE (*decl) = tmp; diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 302138ab2d2..6ef3099332d 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -784,36 +784,27 @@ grok_method_quals (ctype, function, quals) { tree fntype = TREE_TYPE (function); tree raises = TYPE_RAISES_EXCEPTIONS (fntype); + int type_quals = TYPE_UNQUALIFIED; + int dup_quals = TYPE_UNQUALIFIED; do { - extern tree ridpointers[]; - - if (TREE_VALUE (quals) == ridpointers[(int)RID_CONST]) - { - if (TYPE_READONLY (ctype)) - error ("duplicate `%s' %s", - IDENTIFIER_POINTER (TREE_VALUE (quals)), - (TREE_CODE (function) == FUNCTION_DECL - ? "for member function" : "in type declaration")); - ctype = build_type_variant (ctype, 1, TYPE_VOLATILE (ctype)); - build_pointer_type (ctype); - } - else if (TREE_VALUE (quals) == ridpointers[(int)RID_VOLATILE]) - { - if (TYPE_VOLATILE (ctype)) - error ("duplicate `%s' %s", - IDENTIFIER_POINTER (TREE_VALUE (quals)), - (TREE_CODE (function) == FUNCTION_DECL - ? "for member function" : "in type declaration")); - ctype = build_type_variant (ctype, TYPE_READONLY (ctype), 1); - build_pointer_type (ctype); - } + int tq = cp_type_qual_from_rid (TREE_VALUE (quals)); + + if (type_quals & tq) + dup_quals |= tq; else - my_friendly_abort (20); + type_quals |= tq; quals = TREE_CHAIN (quals); - } + } while (quals); + + if (dup_quals != TYPE_UNQUALIFIED) + cp_error ("duplicate type qualifiers in %s declaration", + TREE_CODE (function) == FUNCTION_DECL + ? "member function" : "type"); + + ctype = cp_build_qualified_type (ctype, type_quals); fntype = build_cplus_method_type (ctype, TREE_TYPE (fntype), (TREE_CODE (fntype) == METHOD_TYPE ? TREE_CHAIN (TYPE_ARG_TYPES (fntype)) @@ -1417,7 +1408,7 @@ check_classfn (ctype, function) if (comptypes (TREE_TYPE (TREE_TYPE (function)), TREE_TYPE (TREE_TYPE (fndecl)), 1) - && compparms (p1, p2, 3) + && compparms (p1, p2) && (DECL_TEMPLATE_SPECIALIZATION (function) == DECL_TEMPLATE_SPECIALIZATION (fndecl)) && (!DECL_TEMPLATE_SPECIALIZATION (function) @@ -1702,7 +1693,7 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) } /* Force the compiler to know when an uninitialized static const member is being used. */ - if (TYPE_READONLY (value) && init == 0) + if (CP_TYPE_CONST_P (TREE_TYPE (value)) && init == 0) TREE_USED (value) = 1; DECL_INITIAL (value) = init; DECL_IN_AGGR_P (value) = 1; diff --git a/gcc/cp/error.c b/gcc/cp/error.c index ba5243aefc2..ba3517ef6f3 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -102,7 +102,7 @@ static void dump_type_suffix PROTO((tree, int, int)); static void dump_function_name PROTO((tree)); static void dump_expr_list PROTO((tree)); static void dump_global_iord PROTO((tree)); -static void dump_readonly_or_volatile PROTO((tree, enum pad)); +static void dump_qualifiers PROTO((tree, enum pad)); static void dump_char PROTO((int)); static char *aggr_variety PROTO((tree)); static tree ident_fndecl PROTO((tree)); @@ -115,19 +115,46 @@ init_error () } static void -dump_readonly_or_volatile (t, p) +dump_qualifiers (t, p) tree t; enum pad p; { - if (TYPE_READONLY (t) || TYPE_VOLATILE (t)) + if (TYPE_QUALS (t)) { if (p == before) OB_PUTC (' '); - if (TYPE_READONLY (t)) - OB_PUTS ("const"); - if (TYPE_READONLY (t) && TYPE_VOLATILE (t)) - OB_PUTC (' '); - if (TYPE_VOLATILE (t)) - OB_PUTS ("volatile"); + switch (TYPE_QUALS (t)) + { + case TYPE_QUAL_CONST: + OB_PUTS ("const"); + break; + + case TYPE_QUAL_VOLATILE: + OB_PUTS ("volatile"); + break; + + case TYPE_QUAL_RESTRICT: + OB_PUTS ("__restrict"); + break; + + case TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE: + OB_PUTS ("const volatile"); + break; + + case TYPE_QUAL_CONST | TYPE_QUAL_RESTRICT: + OB_PUTS ("const __restrict"); + break; + + case TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT: + OB_PUTS ("volatile __restrict"); + break; + + case TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT: + OB_PUTS ("const volatile __restrict"); + break; + + default: + my_friendly_abort (0); + } if (p == after) OB_PUTC (' '); } } @@ -197,8 +224,7 @@ dump_type_real (t, v, canonical_name) if (TYPE_LANG_SPECIFIC (t) && (IS_SIGNATURE_POINTER (t) || IS_SIGNATURE_REFERENCE (t))) { - if (TYPE_READONLY (t) | TYPE_VOLATILE (t)) - dump_readonly_or_volatile (t, after); + dump_qualifiers (t, after); dump_type_real (SIGNATURE_TYPE (t), v, canonical_name); if (IS_SIGNATURE_POINTER (t)) OB_PUTC ('*'); @@ -232,7 +258,7 @@ dump_type_real (t, v, canonical_name) case BOOLEAN_TYPE: { tree type; - dump_readonly_or_volatile (t, after); + dump_qualifiers (t, after); type = canonical_name ? TYPE_MAIN_VARIANT (t) : t; if (TYPE_NAME (type) && TYPE_IDENTIFIER (type)) OB_PUTID (TYPE_IDENTIFIER (type)); @@ -275,7 +301,7 @@ dump_type_real (t, v, canonical_name) break; case TEMPLATE_TYPE_PARM: - dump_readonly_or_volatile (t, after); + dump_qualifiers (t, after); if (TYPE_IDENTIFIER (t)) OB_PUTID (TYPE_IDENTIFIER (t)); else @@ -343,7 +369,7 @@ dump_aggr_type (t, v, canonical_name) tree name; char *variety = aggr_variety (t); - dump_readonly_or_volatile (t, after); + dump_qualifiers (t, after); if (v > 0) { @@ -404,13 +430,14 @@ dump_type_prefix (t, v, canonical_name) switch (TREE_CODE (t)) { case POINTER_TYPE: + case REFERENCE_TYPE: { tree sub = TREE_TYPE (t); dump_type_prefix (sub, v, canonical_name); /* A tree for a member pointer looks like pointer to offset, so let the OFFSET_TYPE case handle it. */ - if (TREE_CODE (sub) != OFFSET_TYPE) + if (!TYPE_PTRMEM_P (t)) { switch (TREE_CODE (sub)) { @@ -425,42 +452,20 @@ dump_type_prefix (t, v, canonical_name) case POINTER_TYPE: /* We don't want "char * *" */ - if (! (TYPE_READONLY (sub) || TYPE_VOLATILE (sub))) + if (TYPE_QUALS (sub) == TYPE_UNQUALIFIED) break; /* But we do want "char *const *" */ default: OB_PUTC (' '); } - OB_PUTC ('*'); - dump_readonly_or_volatile (t, none); - } - } - break; - - case REFERENCE_TYPE: - { - tree sub = TREE_TYPE (t); - dump_type_prefix (sub, v, canonical_name); - - switch (TREE_CODE (sub)) - { - case ARRAY_TYPE: - OB_PUTC2 (' ', '('); - break; - - case POINTER_TYPE: - /* We don't want "char * &" */ - if (! (TYPE_READONLY (sub) || TYPE_VOLATILE (sub))) - break; - /* But we do want "char *const &" */ - - default: - OB_PUTC (' '); + if (TREE_CODE (t) == POINTER_TYPE) + OB_PUTC ('*'); + else + OB_PUTC ('&'); + dump_qualifiers (t, none); } } - OB_PUTC ('&'); - dump_readonly_or_volatile (t, none); break; case OFFSET_TYPE: @@ -473,7 +478,7 @@ dump_type_prefix (t, v, canonical_name) OB_PUTC2 (':', ':'); } OB_PUTC ('*'); - dump_readonly_or_volatile (t, none); + dump_qualifiers (t, none); break; /* Can only be reached through function pointer -- this would not be @@ -555,7 +560,7 @@ dump_type_suffix (t, v, canonical_name) OB_PUTS ("..."); OB_PUTC (')'); if (TREE_CODE (t) == METHOD_TYPE) - dump_readonly_or_volatile + dump_qualifiers (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (t))), before); dump_type_suffix (TREE_TYPE (t), v, canonical_name); break; @@ -1000,10 +1005,10 @@ dump_function_decl (t, v) { if (IS_SIGNATURE (cname)) /* We look at the type pointed to by the `optr' field of `this.' */ - dump_readonly_or_volatile + dump_qualifiers (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_VALUE (TYPE_ARG_TYPES (fntype))))), before); else - dump_readonly_or_volatile + dump_qualifiers (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fntype))), before); } } @@ -1951,7 +1956,7 @@ cv_as_string (p, v) { OB_INIT (); - dump_readonly_or_volatile (p, before); + dump_qualifiers (p, before); OB_FINISH (); diff --git a/gcc/cp/gxx.gperf b/gcc/cp/gxx.gperf index 868dfc426f0..5632f7f34a5 100644 --- a/gcc/cp/gxx.gperf +++ b/gcc/cp/gxx.gperf @@ -22,6 +22,8 @@ __label__, LABEL, NORID __null, CONSTANT, RID_NULL __real, REALPART, NORID __real__, REALPART, NORID +__restrict, CV_QUALIFIER, RID_RESTRICT +__restrict__, CV_QUALIFIER, RID_RESTRICT __signature__, AGGR, RID_SIGNATURE /* Extension */, __signed, TYPESPEC, RID_SIGNED __signed__, TYPESPEC, RID_SIGNED diff --git a/gcc/cp/gxxint.texi b/gcc/cp/gxxint.texi index c8f312ebfca..f23b85d3514 100644 --- a/gcc/cp/gxxint.texi +++ b/gcc/cp/gxxint.texi @@ -1783,6 +1783,12 @@ Used by squangling to compress qualified names. @item l Encodes the C++ @code{long} type. +@item n +Used with squangling. + +@item N +Namespaces. + @item P Indicates a pointer type. Followed by the type pointed to. @@ -1817,11 +1823,14 @@ A modifier that indicates that the following integer type is unsigned. Also used to indicate that the following class or namespace name is encoded using Unicode-mangling. +@item u +The @code{restrict} type qualifier. + @item v Encodes the C++ and Java @code{void} types. @item V -A modified for a @code{const} type or method. +A modifier for a @code{volatile} type or method. @item w Encodes the C++ @code{wchar_t} type, and the Java @code{char} types. diff --git a/gcc/cp/hash.h b/gcc/cp/hash.h index 21ebdd7901e..71c2f317ffe 100644 --- a/gcc/cp/hash.h +++ b/gcc/cp/hash.h @@ -1,14 +1,14 @@ /* KR-C code produced by gperf version 2.7.1 (19981006 egcs) */ -/* Command-line: gperf -L KR-C -F , 0, 0 -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ./gxx.gperf */ +/* Command-line: gperf -L KR-C -F , 0, 0 -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../gcc/cp/gxx.gperf */ /* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -g -o -t -N is_reserved_word -k1,4,$,7 gplus.gperf */ struct resword { char *name; short token; enum rid rid;}; -#define TOTAL_KEYWORDS 104 +#define TOTAL_KEYWORDS 106 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 16 #define MIN_HASH_VALUE 4 -#define MAX_HASH_VALUE 261 -/* maximum key range = 258, duplicates = 0 */ +#define MAX_HASH_VALUE 250 +/* maximum key range = 247, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -18,34 +18,34 @@ hash (str, len) register char *str; register unsigned int len; { - static unsigned short asso_values[] = + static unsigned char asso_values[] = { - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 0, 262, 87, 25, 96, - 60, 0, 55, 7, 4, 41, 262, 2, 15, 49, - 14, 63, 32, 29, 3, 23, 6, 8, 2, 2, - 0, 7, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262 + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 0, 251, 64, 93, 3, + 0, 0, 74, 35, 0, 26, 251, 2, 31, 65, + 23, 76, 7, 19, 45, 37, 6, 64, 12, 38, + 14, 4, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 251, 251, 251, 251, 251 }; register int hval = len; @@ -80,155 +80,145 @@ is_reserved_word (str, len) {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"else", ELSE, NORID,}, {"", 0, 0}, - {"xor", '^', NORID,}, - {"", 0, 0}, + {"delete", DELETE, NORID,}, + {"case", CASE, NORID,}, {"__real__", REALPART, NORID}, {"", 0, 0}, {"true", CXX_TRUE, NORID,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"catch", CATCH, NORID,}, + {"typeid", TYPEID, NORID,}, {"try", TRY, NORID,}, {"", 0, 0}, {"", 0, 0}, - {"new", NEW, NORID,}, + {"void", TYPESPEC, RID_VOID,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"private", VISSPEC, RID_PRIVATE,}, + {"template", TEMPLATE, RID_TEMPLATE,}, + {"protected", VISSPEC, RID_PROTECTED,}, {"extern", SCSPEC, RID_EXTERN,}, - {"__real", REALPART, NORID}, - {"while", WHILE, NORID,}, + {"", 0, 0}, {"", 0, 0}, {"not", '!', NORID,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__extension__", EXTENSION, NORID}, {"", 0, 0}, - {"__null", CONSTANT, RID_NULL}, - {"__asm__", ASM_KEYWORD, NORID}, - {"return", RETURN, NORID,}, + {"__signed", TYPESPEC, RID_SIGNED}, + {"int", TYPESPEC, RID_INT,}, + {"__signed__", TYPESPEC, RID_SIGNED}, + {"__real", REALPART, NORID}, {"", 0, 0}, - {"long", TYPESPEC, RID_LONG,}, - {"using", USING, NORID,}, {"xor_eq", ASSIGN, NORID,}, - {"__inline", SCSPEC, RID_INLINE}, - {"short", TYPESPEC, RID_SHORT,}, - {"__inline__", SCSPEC, RID_INLINE}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"__attribute", ATTRIBUTE, NORID}, + {"__asm__", ASM_KEYWORD, NORID}, + {"__attribute__", ATTRIBUTE, NORID}, + {"compl", '~', NORID,}, + {"public", VISSPEC, RID_PUBLIC,}, + {"not_eq", EQCOMPARE, NORID,}, {"switch", SWITCH, NORID,}, - {"__alignof__", ALIGNOF, NORID}, - {"private", VISSPEC, RID_PRIVATE,}, - {"reinterpret_cast", REINTERPRET_CAST, NORID,}, - {"struct", AGGR, RID_RECORD,}, + {"__extension__", EXTENSION, NORID}, + {"const", CV_QUALIFIER, RID_CONST,}, + {"static", SCSPEC, RID_STATIC,}, {"", 0, 0}, - {"virtual", SCSPEC, RID_VIRTUAL,}, + {"__inline", SCSPEC, RID_INLINE}, + {"", 0, 0}, + {"__inline__", SCSPEC, RID_INLINE}, + {"__restrict__", CV_QUALIFIER, RID_RESTRICT}, + {"inline", SCSPEC, RID_INLINE,}, + {"const_cast", CONST_CAST, NORID,}, {"static_cast", STATIC_CAST, NORID,}, - {"", 0, 0}, {"", 0, 0}, - {"not_eq", EQCOMPARE, NORID,}, - {"int", TYPESPEC, RID_INT,}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"template", TEMPLATE, RID_TEMPLATE,}, + {"__restrict", CV_QUALIFIER, RID_RESTRICT}, + {"xor", '^', NORID,}, + {"__wchar_t", TYPESPEC, RID_WCHAR /* Unique to ANSI C++ */,}, + {"new", NEW, NORID,}, + {"__alignof__", ALIGNOF, NORID}, + {"signed", TYPESPEC, RID_SIGNED,}, + {"and", ANDAND, NORID,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"explicit", SCSPEC, RID_EXPLICIT,}, {"", 0, 0}, - {"signature", AGGR, RID_SIGNATURE /* Extension */,}, - {"register", SCSPEC, RID_REGISTER,}, - {"this", THIS, NORID,}, {"__imag__", IMAGPART, NORID}, - {"__attribute", ATTRIBUTE, NORID}, - {"bool", TYPESPEC, RID_BOOL,}, - {"__attribute__", ATTRIBUTE, NORID}, - {"for", FOR, NORID,}, - {"__imag", IMAGPART, NORID}, + {"while", WHILE, NORID,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"do", DO, NORID,}, {"typename", TYPENAME_KEYWORD, NORID,}, - {"", 0, 0}, {"", 0, 0}, - {"delete", DELETE, NORID,}, + {"friend", SCSPEC, RID_FRIEND,}, + {"continue", CONTINUE, NORID,}, + {"class", AGGR, RID_CLASS,}, + {"default", DEFAULT, NORID,}, + {"this", THIS, NORID,}, + {"dynamic_cast", DYNAMIC_CAST, NORID,}, {"typeof", TYPEOF, NORID,}, - {"or", OROR, NORID,}, - {"", 0, 0}, - {"explicit", SCSPEC, RID_EXPLICIT,}, - {"", 0, 0}, - {"typeid", TYPEID, NORID,}, - {"", 0, 0}, {"", 0, 0}, + {"virtual", SCSPEC, RID_VIRTUAL,}, {"export", SCSPEC, RID_EXPORT,}, - {"throw", THROW, NORID,}, - {"__asm", ASM_KEYWORD, NORID}, + {"and_eq", ASSIGN, NORID,}, + {"__typeof__", TYPEOF, NORID}, {"__const__", CV_QUALIFIER, RID_CONST}, {"__volatile", CV_QUALIFIER, RID_VOLATILE}, - {"__typeof__", TYPEOF, NORID}, + {"short", TYPESPEC, RID_SHORT,}, {"__volatile__", CV_QUALIFIER, RID_VOLATILE}, {"__const", CV_QUALIFIER, RID_CONST}, - {"false", CXX_FALSE, NORID,}, - {"sizeof", SIZEOF, NORID,}, - {"", 0, 0}, {"", 0, 0}, - {"__complex", TYPESPEC, RID_COMPLEX}, - {"inline", SCSPEC, RID_INLINE,}, - {"__complex__", TYPESPEC, RID_COMPLEX}, - {"union", AGGR, RID_UNION,}, + {"namespace", NAMESPACE, NORID,}, + {"char", TYPESPEC, RID_CHAR,}, + {"unsigned", TYPESPEC, RID_UNSIGNED,}, {"double", TYPESPEC, RID_DOUBLE,}, - {"", 0, 0}, - {"__alignof", ALIGNOF, NORID}, - {"", 0, 0}, {"", 0, 0}, - {"bitor", '|', NORID,}, {"or_eq", ASSIGN, NORID,}, + {"__null", CONSTANT, RID_NULL}, {"if", IF, NORID,}, - {"", 0, 0}, - {"case", CASE, NORID,}, - {"", 0, 0}, - {"enum", ENUM, NORID,}, - {"signed", TYPESPEC, RID_SIGNED,}, - {"", 0, 0}, - {"__sigof__", SIGOF, NORID /* Extension */,}, - {"char", TYPESPEC, RID_CHAR,}, - {"", 0, 0}, {"", 0, 0}, - {"__signed", TYPESPEC, RID_SIGNED}, - {"namespace", NAMESPACE, NORID,}, + {"__signature__", AGGR, RID_SIGNATURE /* Extension */,}, {"__label__", LABEL, NORID}, - {"volatile", CV_QUALIFIER, RID_VOLATILE,}, - {"protected", VISSPEC, RID_PROTECTED,}, - {"__wchar_t", TYPESPEC, RID_WCHAR /* Unique to ANSI C++ */,}, - {"", 0, 0}, {"", 0, 0}, - {"unsigned", TYPESPEC, RID_UNSIGNED,}, - {"continue", CONTINUE, NORID,}, - {"break", BREAK, NORID,}, - {"", 0, 0}, - {"friend", SCSPEC, RID_FRIEND,}, - {"and_eq", ASSIGN, NORID,}, - {"typedef", SCSPEC, RID_TYPEDEF,}, + {"long", TYPESPEC, RID_LONG,}, + {"__imag", IMAGPART, NORID}, + {"__asm", ASM_KEYWORD, NORID}, {"", 0, 0}, - {"do", DO, NORID,}, - {"void", TYPESPEC, RID_VOID,}, + {"__sigof__", SIGOF, NORID /* Extension */,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"const", CV_QUALIFIER, RID_CONST,}, - {"static", SCSPEC, RID_STATIC,}, + {"struct", AGGR, RID_RECORD,}, {"", 0, 0}, - {"__typeof", TYPEOF, NORID}, + {"volatile", CV_QUALIFIER, RID_VOLATILE,}, + {"false", CXX_FALSE, NORID,}, + {"sizeof", SIZEOF, NORID,}, + {"__complex__", TYPESPEC, RID_COMPLEX}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"goto", GOTO, NORID,}, + {"for", FOR, NORID,}, + {"or", OROR, NORID,}, + {"register", SCSPEC, RID_REGISTER,}, + {"throw", THROW, NORID,}, {"", 0, 0}, - {"asm", ASM_KEYWORD, NORID,}, - {"operator", OPERATOR, NORID,}, - {"__signature__", AGGR, RID_SIGNATURE /* Extension */,}, + {"using", USING, NORID,}, + {"", 0, 0}, {"", 0, 0}, + {"__complex", TYPESPEC, RID_COMPLEX}, {"", 0, 0}, + {"asm", ASM_KEYWORD, NORID,}, + {"signature", AGGR, RID_SIGNATURE /* Extension */,}, + {"enum", ENUM, NORID,}, + {"reinterpret_cast", REINTERPRET_CAST, NORID,}, {"mutable", SCSPEC, RID_MUTABLE,}, - {"", 0, 0}, {"", 0, 0}, - {"sigof", SIGOF, NORID /* Extension */,}, - {"class", AGGR, RID_CLASS,}, - {"compl", '~', NORID,}, - {"public", VISSPEC, RID_PUBLIC,}, - {"and", ANDAND, NORID,}, - {"", 0, 0}, {"", 0, 0}, - {"float", TYPESPEC, RID_FLOAT,}, + {"__alignof", ALIGNOF, NORID}, + {"return", RETURN, NORID,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"default", DEFAULT, NORID,}, + {"", 0, 0}, + {"float", TYPESPEC, RID_FLOAT,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, + {"bool", TYPESPEC, RID_BOOL,}, + {"", 0, 0}, + {"typedef", SCSPEC, RID_TYPEDEF,}, + {"__typeof", TYPEOF, NORID}, {"bitand", '&', NORID,}, + {"break", BREAK, NORID,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"union", AGGR, RID_UNION,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"catch", CATCH, NORID,}, + {"goto", GOTO, NORID,}, + {"sigof", SIGOF, NORID /* Extension */,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"auto", SCSPEC, RID_AUTO,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"const_cast", CONST_CAST, NORID,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"bitor", '|', NORID,}, + {"auto", SCSPEC, RID_AUTO,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"dynamic_cast", DYNAMIC_CAST, NORID,} + {"operator", OPERATOR, NORID,} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 87c4a596f64..82e616f76cd 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1057,7 +1057,7 @@ expand_aggr_init (exp, init, flags) /* Must arrange to initialize each element of EXP from elements of INIT. */ tree itype = init ? TREE_TYPE (init) : NULL_TREE; - if (TYPE_READONLY (TREE_TYPE (type)) || TYPE_VOLATILE (TREE_TYPE (type))) + if (CP_TYPE_QUALS (type) != TYPE_UNQUALIFIED) { TREE_TYPE (exp) = TYPE_MAIN_VARIANT (type); if (init) @@ -1424,8 +1424,7 @@ build_member_call (type, name, parmlist) tree oldtype = TREE_TYPE (TREE_TYPE (olddecl)); if (oldtype != type) { - tree newtype = build_type_variant (type, TYPE_READONLY (oldtype), - TYPE_VOLATILE (oldtype)); + tree newtype = build_qualified_type (type, TYPE_QUALS (oldtype)); decl = convert_force (build_pointer_type (newtype), olddecl, 0); decl = build_indirect_ref (decl, NULL_PTR); } @@ -2143,7 +2142,7 @@ build_new_1 (exp) } true_type = type; - if (TYPE_READONLY (type) || TYPE_VOLATILE (type)) + if (CP_TYPE_QUALS (type)) type = TYPE_MAIN_VARIANT (type); /* If our base type is an array, then make sure we know how many elements @@ -2345,11 +2344,11 @@ build_new_1 (exp) allow the expression to be non-const while we do the initialization. */ deref_type = TREE_TYPE (deref); - if (TYPE_READONLY (deref_type)) + if (CP_TYPE_CONST_P (deref_type)) TREE_TYPE (deref) - = cp_build_type_variant (deref_type, - /*constp=*/0, - TYPE_VOLATILE (deref_type)); + = cp_build_qualified_type (deref_type, + CP_TYPE_QUALS (deref_type) + & ~TYPE_QUAL_CONST); TREE_READONLY (deref) = 0; if (TREE_CHAIN (init) != NULL_TREE) @@ -2469,7 +2468,7 @@ build_new_1 (exp) } } } - else if (TYPE_READONLY (true_type)) + else if (CP_TYPE_CONST_P (true_type)) cp_error ("uninitialized const in `new' of `%#T'", true_type); done: diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 3f0ab477335..e0816633185 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -702,6 +702,9 @@ init_parse (filename) ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VOLATILE], build_tree_list (NULL_TREE, ridpointers[(int) RID_VOLATILE])); + ridpointers[(int) RID_RESTRICT] = get_identifier ("__restrict"); + SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_RESTRICT], + build_tree_list (NULL_TREE, ridpointers[(int) RID_RESTRICT])); ridpointers[(int) RID_AUTO] = get_identifier ("auto"); SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_AUTO], build_tree_list (NULL_TREE, ridpointers[(int) RID_AUTO])); @@ -1984,7 +1987,7 @@ cons_up_default_function (type, full_name, kind) break; case 3: - type = build_type_variant (type, 1, 0); + type = build_qualified_type (type, TYPE_QUAL_CONST); /* Fall through... */ case 4: /* According to ARM $12.8, the default copy ctor will be declared, but @@ -2002,7 +2005,7 @@ cons_up_default_function (type, full_name, kind) declspecs = build_decl_list (NULL_TREE, type); if (kind == 5) - type = build_type_variant (type, 1, 0); + type = build_qualified_type (type, TYPE_QUAL_CONST); name = ansi_opname [(int) MODIFY_EXPR]; @@ -4934,6 +4937,25 @@ handle_cp_pragma (pname) return 0; } + +/* Return the type-qualifier corresponding to the identifier given by + RID. */ + +int +cp_type_qual_from_rid (rid) + tree rid; +{ + if (rid == ridpointers[(int) RID_CONST]) + return TYPE_QUAL_CONST; + else if (rid == ridpointers[(int) RID_VOLATILE]) + return TYPE_QUAL_VOLATILE; + else if (rid == ridpointers[(int) RID_RESTRICT]) + return TYPE_QUAL_RESTRICT; + + my_friendly_abort (0); + return TYPE_UNQUALIFIED; +} + #ifdef HANDLE_GENERIC_PRAGMAS diff --git a/gcc/cp/lex.h b/gcc/cp/lex.h index 98add36ff17..ec08f39f69e 100644 --- a/gcc/cp/lex.h +++ b/gcc/cp/lex.h @@ -64,6 +64,7 @@ enum rid RID_AUTO, RID_MUTABLE, RID_COMPLEX, + RID_RESTRICT, /* This is where grokdeclarator ends its search when setting the specbits. */ diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 6d31ce4f268..f738124117f 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1163,7 +1163,10 @@ void process_modifiers (parmtype) tree parmtype; { - if (TREE_READONLY (parmtype)) + /* Note that here we do not use CP_TYPE_CONST_P and friends because + we describe types recursively; we will get the `const' in + `const int ()[10]' when processing the `const int' part. */ + if (TYPE_READONLY (parmtype)) OB_PUTC ('C'); if (TREE_CODE (parmtype) == INTEGER_TYPE && (TYPE_MAIN_VARIANT (parmtype) @@ -1172,6 +1175,10 @@ process_modifiers (parmtype) OB_PUTC ('U'); if (TYPE_VOLATILE (parmtype)) OB_PUTC ('V'); + /* It would be better to use `R' for `restrict', but that's already + used for reference types. And `r' is used for `long double'. */ + if (TYPE_RESTRICT (parmtype)) + OB_PUTC ('u'); } /* Check to see if TYPE has been entered into the Bcode typelist. If diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c index f7bfb100ba1..fb1d896578d 100644 --- a/gcc/cp/parse.c +++ b/gcc/cp/parse.c @@ -215,11 +215,11 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) -#define YYFINAL 1624 +#define YYFINAL 1625 #define YYFLAG -32768 #define YYNTBASE 112 -#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 398) +#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 399) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -311,44 +311,44 @@ static const short yyprhs[] = { 0, 1568, 1575, 1579, 1582, 1585, 1588, 1589, 1590, 1600, 1602, 1603, 1605, 1606, 1608, 1610, 1613, 1616, 1619, 1622, 1625, 1628, 1631, 1634, 1637, 1641, 1646, 1650, 1653, 1657, 1659, - 1660, 1664, 1667, 1670, 1672, 1674, 1675, 1678, 1682, 1684, - 1689, 1691, 1695, 1697, 1699, 1704, 1709, 1712, 1715, 1719, - 1723, 1725, 1726, 1728, 1731, 1735, 1738, 1741, 1743, 1746, - 1749, 1752, 1755, 1758, 1761, 1764, 1766, 1769, 1772, 1776, - 1779, 1782, 1787, 1792, 1795, 1797, 1803, 1808, 1810, 1811, - 1813, 1817, 1818, 1820, 1824, 1826, 1828, 1830, 1832, 1837, - 1842, 1847, 1852, 1857, 1861, 1866, 1871, 1876, 1881, 1885, - 1887, 1891, 1893, 1897, 1900, 1902, 1910, 1911, 1914, 1916, - 1919, 1920, 1923, 1928, 1933, 1936, 1941, 1945, 1949, 1952, - 1955, 1959, 1961, 1963, 1966, 1968, 1970, 1973, 1976, 1981, - 1986, 1990, 1994, 1997, 1999, 2001, 2004, 2008, 2012, 2015, - 2018, 2022, 2024, 2028, 2032, 2035, 2038, 2042, 2044, 2049, - 2053, 2058, 2062, 2064, 2067, 2070, 2073, 2076, 2079, 2081, - 2084, 2089, 2094, 2097, 2099, 2101, 2103, 2105, 2108, 2113, - 2116, 2119, 2122, 2125, 2127, 2130, 2133, 2136, 2139, 2143, - 2145, 2148, 2152, 2157, 2160, 2163, 2166, 2169, 2172, 2175, - 2180, 2183, 2185, 2188, 2191, 2195, 2197, 2201, 2204, 2208, - 2211, 2214, 2218, 2220, 2224, 2229, 2233, 2236, 2239, 2241, - 2245, 2248, 2251, 2253, 2256, 2260, 2262, 2266, 2268, 2275, - 2280, 2285, 2289, 2295, 2299, 2303, 2307, 2310, 2312, 2314, - 2317, 2320, 2323, 2324, 2326, 2328, 2331, 2335, 2337, 2340, - 2341, 2345, 2346, 2347, 2353, 2355, 2356, 2359, 2361, 2363, - 2365, 2368, 2369, 2374, 2376, 2377, 2378, 2384, 2385, 2386, - 2394, 2395, 2396, 2397, 2398, 2411, 2412, 2413, 2421, 2422, - 2428, 2429, 2437, 2438, 2443, 2446, 2449, 2452, 2456, 2463, - 2472, 2483, 2496, 2501, 2505, 2508, 2511, 2513, 2515, 2517, - 2519, 2521, 2522, 2523, 2530, 2531, 2532, 2538, 2540, 2543, - 2544, 2545, 2551, 2553, 2555, 2559, 2563, 2566, 2569, 2572, - 2575, 2578, 2580, 2583, 2584, 2586, 2587, 2589, 2591, 2592, - 2594, 2596, 2600, 2605, 2607, 2611, 2612, 2614, 2616, 2618, - 2621, 2624, 2627, 2629, 2632, 2635, 2636, 2640, 2642, 2644, - 2646, 2649, 2652, 2655, 2660, 2663, 2666, 2669, 2672, 2675, - 2678, 2680, 2683, 2685, 2688, 2690, 2692, 2693, 2694, 2696, - 2697, 2702, 2705, 2707, 2709, 2713, 2714, 2718, 2722, 2726, - 2728, 2731, 2734, 2737, 2740, 2743, 2746, 2749, 2752, 2755, - 2758, 2761, 2764, 2767, 2770, 2773, 2776, 2779, 2782, 2785, - 2788, 2791, 2794, 2797, 2801, 2804, 2807, 2810, 2813, 2817, - 2820, 2823, 2828, 2833, 2837 + 1660, 1664, 1665, 1669, 1672, 1674, 1676, 1677, 1680, 1684, + 1686, 1691, 1693, 1697, 1699, 1701, 1706, 1711, 1714, 1717, + 1721, 1725, 1727, 1728, 1730, 1733, 1737, 1740, 1743, 1745, + 1748, 1751, 1754, 1757, 1760, 1763, 1766, 1768, 1771, 1774, + 1778, 1781, 1784, 1789, 1794, 1797, 1799, 1805, 1810, 1812, + 1813, 1815, 1819, 1820, 1822, 1826, 1828, 1830, 1832, 1834, + 1839, 1844, 1849, 1854, 1859, 1863, 1868, 1873, 1878, 1883, + 1887, 1889, 1893, 1895, 1899, 1902, 1904, 1912, 1913, 1916, + 1918, 1921, 1922, 1925, 1930, 1935, 1938, 1943, 1947, 1951, + 1954, 1957, 1961, 1963, 1965, 1968, 1970, 1972, 1975, 1978, + 1983, 1988, 1992, 1996, 1999, 2001, 2003, 2006, 2010, 2014, + 2017, 2020, 2024, 2026, 2030, 2034, 2037, 2040, 2044, 2046, + 2051, 2055, 2060, 2064, 2066, 2069, 2072, 2075, 2078, 2081, + 2083, 2086, 2091, 2096, 2099, 2101, 2103, 2105, 2107, 2110, + 2115, 2118, 2121, 2124, 2127, 2129, 2132, 2135, 2138, 2141, + 2145, 2147, 2150, 2154, 2159, 2162, 2165, 2168, 2171, 2174, + 2177, 2182, 2185, 2187, 2190, 2193, 2197, 2199, 2203, 2206, + 2210, 2213, 2216, 2220, 2222, 2226, 2231, 2235, 2238, 2241, + 2243, 2247, 2250, 2253, 2255, 2258, 2262, 2264, 2268, 2270, + 2277, 2282, 2287, 2291, 2297, 2301, 2305, 2309, 2312, 2314, + 2316, 2319, 2322, 2325, 2326, 2328, 2330, 2333, 2337, 2339, + 2342, 2343, 2347, 2348, 2349, 2355, 2357, 2358, 2361, 2363, + 2365, 2367, 2370, 2371, 2376, 2378, 2379, 2380, 2386, 2387, + 2388, 2396, 2397, 2398, 2399, 2400, 2413, 2414, 2415, 2423, + 2424, 2430, 2431, 2439, 2440, 2445, 2448, 2451, 2454, 2458, + 2465, 2474, 2485, 2498, 2503, 2507, 2510, 2513, 2515, 2517, + 2519, 2521, 2523, 2524, 2525, 2532, 2533, 2534, 2540, 2542, + 2545, 2546, 2547, 2553, 2555, 2557, 2561, 2565, 2568, 2571, + 2574, 2577, 2580, 2582, 2585, 2586, 2588, 2589, 2591, 2593, + 2594, 2596, 2598, 2602, 2607, 2609, 2613, 2614, 2616, 2618, + 2620, 2623, 2626, 2629, 2631, 2634, 2637, 2638, 2642, 2644, + 2646, 2648, 2651, 2654, 2657, 2662, 2665, 2668, 2671, 2674, + 2677, 2680, 2682, 2685, 2687, 2690, 2692, 2694, 2695, 2696, + 2698, 2699, 2704, 2707, 2709, 2711, 2715, 2716, 2720, 2724, + 2728, 2730, 2733, 2736, 2739, 2742, 2745, 2748, 2751, 2754, + 2757, 2760, 2763, 2766, 2769, 2772, 2775, 2778, 2781, 2784, + 2787, 2790, 2793, 2796, 2799, 2803, 2806, 2809, 2812, 2815, + 2819, 2822, 2825, 2830, 2835, 2839 }; static const short yyrhs[] = { -1, @@ -360,16 +360,16 @@ static const short yyrhs[] = { -1, 0, 0, 44, 163, 58, 123, 115, 109, 0, 0, 44, 58, 124, 115, 109, 0, 125, 0, 127, 60, 0, 129, 0, 118, 122, 0, 0, 44, 163, 64, - 126, 132, 60, 0, 46, 312, 0, 46, 326, 312, - 0, 46, 326, 208, 0, 46, 131, 163, 0, 46, - 326, 163, 0, 46, 326, 131, 163, 0, 0, 46, + 126, 132, 60, 0, 46, 313, 0, 46, 327, 313, + 0, 46, 327, 208, 0, 46, 131, 163, 0, 46, + 327, 163, 0, 46, 327, 131, 163, 0, 0, 46, 44, 130, 132, 60, 0, 57, 54, 0, 131, 57, - 54, 0, 208, 0, 312, 0, 326, 312, 0, 326, + 54, 0, 208, 0, 313, 0, 327, 313, 0, 327, 208, 0, 98, 0, 133, 98, 0, 0, 48, 74, 135, 136, 75, 0, 48, 74, 75, 0, 140, 0, 136, 59, 140, 0, 163, 0, 0, 267, 137, 0, 45, 137, 0, 134, 267, 137, 0, 138, 0, 138, - 64, 224, 0, 389, 0, 389, 64, 203, 0, 139, + 64, 224, 0, 390, 0, 390, 64, 203, 0, 139, 0, 139, 64, 183, 0, 134, 142, 0, 134, 1, 0, 148, 147, 0, 143, 0, 141, 0, 133, 116, 148, 117, 147, 0, 133, 116, 143, 117, 0, 118, @@ -379,33 +379,33 @@ static const short yyrhs[] = { -1, 166, 60, 0, 225, 60, 0, 1, 60, 0, 1, 109, 0, 60, 0, 219, 0, 159, 0, 0, 158, 0, 158, 60, 0, 0, 107, 0, 154, 146, 145, - 336, 0, 154, 146, 360, 0, 154, 146, 1, 0, - 0, 317, 5, 93, 150, 380, 108, 298, 392, 0, - 317, 5, 47, 298, 392, 0, 0, 326, 317, 5, - 93, 151, 380, 108, 298, 392, 0, 326, 317, 5, - 47, 298, 392, 0, 0, 317, 178, 93, 152, 380, - 108, 298, 392, 0, 317, 178, 47, 298, 392, 0, - 0, 326, 317, 178, 93, 153, 380, 108, 298, 392, - 0, 326, 317, 178, 47, 298, 392, 0, 225, 222, - 0, 228, 309, 0, 309, 0, 228, 149, 0, 149, - 0, 5, 93, 380, 108, 298, 392, 0, 5, 47, - 298, 392, 0, 178, 93, 380, 108, 298, 392, 0, - 178, 47, 298, 392, 0, 228, 155, 0, 155, 0, - 225, 222, 0, 228, 309, 0, 309, 0, 228, 149, + 337, 0, 154, 146, 361, 0, 154, 146, 1, 0, + 0, 318, 5, 93, 150, 381, 108, 299, 393, 0, + 318, 5, 47, 299, 393, 0, 0, 327, 318, 5, + 93, 151, 381, 108, 299, 393, 0, 327, 318, 5, + 47, 299, 393, 0, 0, 318, 178, 93, 152, 381, + 108, 299, 393, 0, 318, 178, 47, 299, 393, 0, + 0, 327, 318, 178, 93, 153, 381, 108, 299, 393, + 0, 327, 318, 178, 47, 299, 393, 0, 225, 222, + 0, 228, 310, 0, 310, 0, 228, 149, 0, 149, + 0, 5, 93, 381, 108, 299, 393, 0, 5, 47, + 299, 393, 0, 178, 93, 381, 108, 299, 393, 0, + 178, 47, 299, 393, 0, 228, 155, 0, 155, 0, + 225, 222, 0, 228, 310, 0, 310, 0, 228, 149, 0, 149, 0, 25, 3, 0, 157, 252, 0, 157, 93, 195, 108, 0, 157, 47, 0, 62, 160, 161, 0, 0, 0, 162, 0, 161, 59, 162, 0, 161, 1, 0, 93, 195, 108, 0, 47, 0, 164, 93, - 195, 108, 0, 164, 47, 0, 304, 93, 195, 108, - 0, 304, 47, 0, 319, 93, 195, 108, 0, 319, + 195, 108, 0, 164, 47, 0, 305, 93, 195, 108, + 0, 305, 47, 0, 320, 93, 195, 108, 0, 320, 47, 0, 3, 0, 4, 0, 5, 0, 56, 0, 57, 0, 3, 0, 56, 0, 57, 0, 104, 0, 103, 0, 105, 0, 0, 48, 175, 231, 60, 167, 176, 0, 0, 48, 175, 225, 222, 168, 176, 0, - 0, 48, 175, 309, 169, 176, 0, 0, 48, 175, + 0, 48, 175, 310, 169, 176, 0, 0, 48, 175, 149, 170, 176, 0, 0, 7, 48, 175, 231, 60, 171, 176, 0, 0, 7, 48, 175, 225, 222, 172, - 176, 0, 0, 7, 48, 175, 309, 173, 176, 0, + 176, 0, 0, 7, 48, 175, 310, 173, 176, 0, 0, 7, 48, 175, 149, 174, 176, 0, 0, 0, 56, 74, 181, 180, 179, 0, 4, 74, 181, 180, 179, 0, 178, 0, 5, 74, 181, 180, 179, 0, @@ -414,17 +414,17 @@ static const short yyrhs[] = { -1, 79, 0, 78, 0, 86, 0, 87, 0, 110, 0, 194, 0, 203, 0, 47, 0, 93, 185, 108, 0, 47, 0, 93, 189, 108, 0, 0, 189, 0, 1, - 0, 0, 370, 222, 236, 245, 64, 190, 253, 0, - 185, 0, 109, 0, 333, 331, 109, 0, 333, 331, - 1, 109, 0, 333, 1, 109, 0, 0, 58, 193, - 191, 0, 345, 0, 203, 59, 203, 0, 203, 59, + 0, 0, 371, 222, 236, 245, 64, 190, 253, 0, + 185, 0, 109, 0, 334, 332, 109, 0, 334, 332, + 1, 109, 0, 334, 1, 109, 0, 0, 58, 193, + 191, 0, 346, 0, 203, 59, 203, 0, 203, 59, 1, 0, 194, 59, 203, 0, 194, 59, 1, 0, 203, 0, 194, 0, 213, 0, 118, 202, 0, 80, 202, 0, 70, 202, 0, 88, 202, 0, 184, 202, 0, 67, 163, 0, 13, 196, 0, 13, 93, 224, 108, 0, 29, 196, 0, 29, 93, 224, 108, 0, - 215, 297, 0, 215, 297, 200, 0, 215, 199, 297, - 0, 215, 199, 297, 200, 0, 215, 93, 198, 224, + 215, 298, 0, 215, 298, 200, 0, 215, 199, 298, + 0, 215, 199, 298, 200, 0, 215, 93, 198, 224, 197, 0, 215, 93, 198, 224, 197, 200, 0, 215, 199, 93, 198, 224, 197, 0, 215, 199, 93, 198, 224, 197, 200, 0, 216, 202, 0, 216, 94, 111, @@ -442,58 +442,58 @@ static const short yyrhs[] = { -1, 203, 72, 203, 0, 203, 71, 203, 0, 203, 70, 203, 0, 203, 68, 203, 0, 203, 69, 203, 0, 203, 67, 203, 0, 203, 66, 203, 0, 203, 65, - 375, 62, 203, 0, 203, 64, 203, 0, 203, 63, - 203, 0, 61, 0, 61, 203, 0, 88, 390, 163, - 0, 88, 390, 177, 0, 206, 0, 397, 0, 3, + 376, 62, 203, 0, 203, 64, 203, 0, 203, 63, + 203, 0, 61, 0, 61, 203, 0, 88, 391, 163, + 0, 88, 391, 177, 0, 206, 0, 398, 0, 3, 0, 56, 0, 57, 0, 0, 6, 74, 205, 181, - 180, 0, 397, 74, 205, 181, 180, 0, 48, 163, + 180, 0, 398, 74, 205, 181, 180, 0, 48, 163, 74, 181, 180, 0, 48, 6, 74, 181, 180, 0, - 48, 397, 74, 181, 180, 0, 204, 0, 4, 0, + 48, 398, 74, 181, 180, 0, 204, 0, 4, 0, 5, 0, 210, 0, 246, 210, 0, 204, 0, 80, 209, 0, 70, 209, 0, 93, 209, 108, 0, 3, - 74, 181, 180, 0, 57, 74, 182, 180, 0, 311, + 74, 181, 180, 0, 57, 74, 182, 180, 0, 312, 0, 204, 0, 211, 0, 93, 209, 108, 0, 204, 0, 10, 0, 217, 0, 218, 0, 93, 185, 108, 0, 93, 209, 108, 0, 93, 1, 108, 0, 0, - 93, 214, 337, 108, 0, 204, 93, 195, 108, 0, + 93, 214, 338, 108, 0, 204, 93, 195, 108, 0, 204, 47, 0, 213, 93, 195, 108, 0, 213, 47, 0, 213, 94, 185, 111, 0, 213, 86, 0, 213, - 87, 0, 40, 0, 9, 93, 195, 108, 0, 315, + 87, 0, 40, 0, 9, 93, 195, 108, 0, 316, 0, 50, 74, 224, 75, 93, 185, 108, 0, 51, 74, 224, 75, 93, 185, 108, 0, 52, 74, 224, 75, 93, 185, 108, 0, 53, 74, 224, 75, 93, 185, 108, 0, 49, 93, 185, 108, 0, 49, 93, - 224, 108, 0, 326, 3, 0, 326, 206, 0, 326, - 397, 0, 314, 0, 314, 93, 195, 108, 0, 314, + 224, 108, 0, 327, 3, 0, 327, 206, 0, 327, + 398, 0, 315, 0, 315, 93, 195, 108, 0, 315, 47, 0, 220, 207, 0, 220, 207, 93, 195, 108, - 0, 220, 207, 47, 0, 220, 208, 0, 220, 314, + 0, 220, 207, 47, 0, 220, 208, 0, 220, 315, 0, 220, 208, 93, 195, 108, 0, 220, 208, 47, - 0, 220, 314, 93, 195, 108, 0, 220, 314, 47, + 0, 220, 315, 93, 195, 108, 0, 220, 315, 47, 0, 220, 88, 8, 47, 0, 220, 8, 54, 88, - 8, 47, 0, 220, 1, 0, 39, 0, 326, 39, - 0, 38, 0, 326, 216, 0, 42, 0, 43, 0, + 8, 47, 0, 220, 1, 0, 39, 0, 327, 39, + 0, 38, 0, 327, 216, 0, 42, 0, 43, 0, 11, 0, 218, 11, 0, 0, 213, 92, 0, 213, 91, 0, 231, 233, 60, 0, 225, 233, 60, 0, 228, 234, 60, 0, 225, 60, 0, 228, 60, 0, - 118, 221, 0, 303, 0, 309, 0, 47, 0, 223, - 47, 0, 229, 329, 0, 299, 329, 0, 231, 329, - 0, 229, 0, 299, 0, 229, 0, 226, 0, 228, + 118, 221, 0, 304, 0, 310, 0, 47, 0, 223, + 47, 0, 229, 330, 0, 300, 330, 0, 231, 330, + 0, 229, 0, 300, 0, 229, 0, 226, 0, 228, 231, 0, 231, 227, 0, 231, 230, 227, 0, 228, 231, 227, 0, 228, 231, 230, 0, 228, 231, 230, 227, 0, 7, 0, 227, 232, 0, 227, 7, 0, - 227, 246, 0, 246, 0, 299, 0, 7, 0, 228, + 227, 246, 0, 246, 0, 300, 0, 7, 0, 228, 9, 0, 228, 7, 0, 228, 246, 0, 246, 0, - 231, 0, 299, 231, 0, 231, 230, 0, 299, 231, + 231, 0, 300, 231, 0, 231, 230, 0, 300, 231, 230, 0, 232, 0, 230, 232, 0, 260, 0, 8, - 0, 305, 0, 28, 93, 185, 108, 0, 28, 93, + 0, 306, 0, 28, 93, 185, 108, 0, 28, 93, 224, 108, 0, 30, 93, 185, 108, 0, 30, 93, 224, 108, 0, 8, 0, 9, 0, 260, 0, 241, 0, 233, 59, 237, 0, 242, 0, 234, 59, 237, 0, 243, 0, 235, 59, 237, 0, 0, 119, 93, 218, 108, 0, 0, 222, 236, 245, 64, 238, 253, 0, 222, 236, 245, 0, 0, 245, 64, 240, 253, - 0, 245, 0, 222, 236, 239, 0, 309, 236, 239, - 0, 0, 309, 236, 244, 239, 0, 149, 236, 245, + 0, 245, 0, 222, 236, 239, 0, 310, 236, 239, + 0, 0, 310, 236, 244, 239, 0, 149, 236, 245, 0, 0, 246, 0, 247, 0, 246, 247, 0, 31, 93, 93, 248, 108, 108, 0, 249, 0, 248, 59, 249, 0, 0, 250, 0, 250, 93, 3, 108, 0, @@ -504,138 +504,139 @@ static const short yyrhs[] = { -1, 254, 59, 109, 0, 1, 0, 253, 0, 254, 59, 253, 0, 94, 203, 111, 253, 0, 163, 62, 253, 0, 254, 59, 163, 62, 253, 0, 97, 0, 255, - 146, 145, 336, 0, 255, 146, 360, 0, 255, 146, + 146, 145, 337, 0, 255, 146, 361, 0, 255, 146, 1, 0, 0, 257, 256, 147, 0, 102, 203, 107, 0, 102, 1, 107, 0, 0, 259, 258, 0, 259, - 1, 0, 0, 14, 163, 58, 261, 295, 266, 109, + 1, 0, 0, 14, 163, 58, 261, 296, 266, 109, 0, 14, 163, 58, 109, 0, 0, 14, 58, 262, - 295, 266, 109, 0, 14, 58, 109, 0, 14, 163, - 0, 14, 324, 0, 45, 319, 0, 0, 0, 274, - 280, 282, 109, 245, 263, 259, 264, 257, 0, 274, + 296, 266, 109, 0, 14, 58, 109, 0, 14, 163, + 0, 14, 325, 0, 45, 320, 0, 0, 0, 275, + 281, 283, 109, 245, 263, 259, 264, 257, 0, 275, 0, 0, 59, 0, 0, 59, 0, 36, 0, 267, 7, 0, 267, 8, 0, 267, 9, 0, 267, 36, 0, 267, 246, 0, 267, 163, 0, 267, 165, 0, - 268, 58, 0, 268, 62, 0, 267, 317, 163, 0, - 267, 326, 317, 163, 0, 267, 326, 163, 0, 267, - 177, 0, 267, 317, 177, 0, 268, 0, 0, 269, - 272, 275, 0, 270, 275, 0, 267, 58, 0, 273, - 0, 271, 0, 0, 62, 390, 0, 62, 390, 276, - 0, 277, 0, 276, 59, 390, 277, 0, 278, 0, - 279, 390, 278, 0, 319, 0, 304, 0, 30, 93, - 185, 108, 0, 30, 93, 224, 108, 0, 37, 390, - 0, 7, 390, 0, 279, 37, 390, 0, 279, 7, - 390, 0, 58, 0, 0, 281, 0, 281, 284, 0, - 282, 283, 284, 0, 282, 283, 0, 37, 62, 0, - 285, 0, 284, 285, 0, 286, 60, 0, 286, 109, - 0, 156, 62, 0, 156, 95, 0, 156, 25, 0, - 156, 58, 0, 60, 0, 118, 285, 0, 134, 285, - 0, 134, 225, 60, 0, 225, 287, 0, 228, 288, - 0, 309, 236, 245, 252, 0, 149, 236, 245, 252, - 0, 62, 203, 0, 1, 0, 228, 155, 236, 245, - 252, 0, 155, 236, 245, 252, 0, 127, 0, 0, - 289, 0, 287, 59, 290, 0, 0, 292, 0, 288, - 59, 294, 0, 291, 0, 292, 0, 293, 0, 294, - 0, 303, 236, 245, 252, 0, 4, 62, 203, 245, - 0, 309, 236, 245, 252, 0, 149, 236, 245, 252, - 0, 3, 62, 203, 245, 0, 62, 203, 245, 0, - 303, 236, 245, 252, 0, 4, 62, 203, 245, 0, - 309, 236, 245, 252, 0, 3, 62, 203, 245, 0, - 62, 203, 245, 0, 296, 0, 295, 59, 296, 0, - 163, 0, 163, 64, 203, 0, 370, 327, 0, 370, - 0, 93, 198, 224, 197, 94, 185, 111, 0, 0, - 298, 9, 0, 9, 0, 299, 9, 0, 0, 300, - 185, 0, 300, 93, 195, 108, 0, 300, 93, 380, - 108, 0, 300, 47, 0, 300, 93, 1, 108, 0, - 80, 299, 303, 0, 70, 299, 303, 0, 80, 303, - 0, 70, 303, 0, 325, 298, 303, 0, 307, 0, - 316, 0, 326, 316, 0, 304, 0, 306, 0, 326, - 306, 0, 317, 316, 0, 307, 302, 298, 392, 0, - 307, 94, 301, 111, 0, 307, 94, 111, 0, 93, - 303, 108, 0, 317, 316, 0, 316, 0, 309, 0, - 246, 309, 0, 80, 299, 308, 0, 70, 299, 308, - 0, 80, 308, 0, 70, 308, 0, 325, 298, 308, - 0, 212, 0, 80, 299, 308, 0, 70, 299, 308, - 0, 80, 310, 0, 70, 310, 0, 325, 298, 308, - 0, 311, 0, 212, 302, 298, 392, 0, 93, 310, - 108, 0, 212, 94, 301, 111, 0, 212, 94, 111, - 0, 313, 0, 317, 211, 0, 317, 208, 0, 317, - 207, 0, 317, 204, 0, 317, 207, 0, 313, 0, - 326, 313, 0, 231, 93, 195, 108, 0, 231, 93, - 209, 108, 0, 231, 223, 0, 4, 0, 5, 0, - 177, 0, 318, 0, 317, 318, 0, 317, 48, 323, - 54, 0, 4, 54, 0, 5, 54, 0, 57, 54, - 0, 177, 54, 0, 320, 0, 326, 320, 0, 321, - 163, 0, 321, 177, 0, 321, 323, 0, 321, 48, - 323, 0, 322, 0, 321, 322, 0, 321, 323, 54, - 0, 321, 48, 323, 54, 0, 4, 54, 0, 5, - 54, 0, 177, 54, 0, 56, 54, 0, 3, 54, - 0, 57, 54, 0, 163, 74, 181, 180, 0, 326, - 316, 0, 306, 0, 326, 306, 0, 317, 80, 0, - 326, 317, 80, 0, 54, 0, 80, 298, 327, 0, - 80, 298, 0, 70, 298, 327, 0, 70, 298, 0, - 325, 298, 0, 325, 298, 327, 0, 328, 0, 94, - 185, 111, 0, 328, 94, 301, 111, 0, 80, 299, - 329, 0, 80, 329, 0, 80, 299, 0, 80, 0, - 70, 299, 329, 0, 70, 329, 0, 70, 299, 0, - 70, 0, 325, 298, 0, 325, 298, 329, 0, 330, - 0, 93, 329, 108, 0, 90, 0, 330, 93, 380, - 108, 298, 392, 0, 330, 47, 298, 392, 0, 330, - 94, 301, 111, 0, 330, 94, 111, 0, 93, 381, - 108, 298, 392, 0, 201, 298, 392, 0, 223, 298, - 392, 0, 94, 301, 111, 0, 94, 111, 0, 344, - 0, 332, 0, 331, 344, 0, 331, 332, 0, 1, - 60, 0, 0, 334, 0, 335, 0, 334, 335, 0, - 33, 251, 60, 0, 337, 0, 1, 337, 0, 0, - 58, 338, 191, 0, 0, 0, 15, 340, 187, 341, - 342, 0, 337, 0, 0, 343, 345, 0, 337, 0, - 345, 0, 221, 0, 185, 60, 0, 0, 339, 16, - 346, 342, 0, 339, 0, 0, 0, 17, 347, 187, - 348, 192, 0, 0, 0, 18, 349, 342, 17, 350, - 186, 60, 0, 0, 0, 0, 0, 19, 351, 93, - 373, 352, 188, 60, 353, 375, 108, 354, 192, 0, - 0, 0, 20, 355, 93, 189, 108, 356, 342, 0, - 0, 21, 203, 62, 357, 344, 0, 0, 21, 203, - 12, 203, 62, 358, 344, 0, 0, 22, 62, 359, - 344, 0, 23, 60, 0, 24, 60, 0, 25, 60, - 0, 25, 185, 60, 0, 119, 374, 93, 218, 108, - 60, 0, 119, 374, 93, 218, 62, 376, 108, 60, - 0, 119, 374, 93, 218, 62, 376, 62, 376, 108, - 60, 0, 119, 374, 93, 218, 62, 376, 62, 376, - 62, 379, 108, 60, 0, 26, 80, 185, 60, 0, - 26, 163, 60, 0, 372, 344, 0, 372, 109, 0, - 60, 0, 363, 0, 129, 0, 128, 0, 125, 0, - 0, 0, 95, 361, 145, 337, 362, 366, 0, 0, - 0, 95, 364, 337, 365, 366, 0, 367, 0, 366, - 367, 0, 0, 0, 96, 368, 371, 369, 337, 0, - 229, 0, 299, 0, 93, 12, 108, 0, 93, 389, - 108, 0, 3, 62, 0, 56, 62, 0, 4, 62, - 0, 5, 62, 0, 375, 60, 0, 221, 0, 58, - 191, 0, 0, 9, 0, 0, 185, 0, 1, 0, - 0, 377, 0, 378, 0, 377, 59, 378, 0, 11, - 93, 185, 108, 0, 11, 0, 379, 59, 11, 0, - 0, 381, 0, 224, 0, 385, 0, 386, 12, 0, - 385, 12, 0, 224, 12, 0, 12, 0, 385, 62, - 0, 224, 62, 0, 0, 64, 383, 384, 0, 101, - 0, 253, 0, 387, 0, 389, 382, 0, 386, 388, - 0, 386, 391, 0, 386, 391, 64, 253, 0, 385, - 59, 0, 224, 59, 0, 226, 222, 0, 229, 222, - 0, 231, 222, 0, 226, 329, 0, 226, 0, 228, - 309, 0, 389, 0, 389, 382, 0, 387, 0, 224, - 0, 0, 0, 309, 0, 0, 61, 93, 394, 108, - 0, 61, 47, 0, 224, 0, 393, 0, 394, 59, - 393, 0, 0, 80, 298, 395, 0, 70, 298, 395, - 0, 325, 298, 395, 0, 41, 0, 396, 80, 0, - 396, 81, 0, 396, 82, 0, 396, 78, 0, 396, - 79, 0, 396, 70, 0, 396, 68, 0, 396, 69, - 0, 396, 88, 0, 396, 59, 0, 396, 73, 0, - 396, 74, 0, 396, 75, 0, 396, 72, 0, 396, - 63, 0, 396, 64, 0, 396, 76, 0, 396, 77, - 0, 396, 86, 0, 396, 87, 0, 396, 67, 0, - 396, 66, 0, 396, 110, 0, 396, 65, 62, 0, - 396, 71, 0, 396, 91, 0, 396, 83, 0, 396, - 47, 0, 396, 94, 111, 0, 396, 39, 0, 396, - 38, 0, 396, 39, 94, 111, 0, 396, 38, 94, - 111, 0, 396, 370, 395, 0, 396, 1, 0 + 268, 58, 0, 268, 62, 0, 267, 318, 163, 0, + 267, 327, 318, 163, 0, 267, 327, 163, 0, 267, + 177, 0, 267, 318, 177, 0, 268, 0, 0, 269, + 272, 276, 0, 0, 270, 273, 276, 0, 267, 58, + 0, 274, 0, 271, 0, 0, 62, 391, 0, 62, + 391, 277, 0, 278, 0, 277, 59, 391, 278, 0, + 279, 0, 280, 391, 279, 0, 320, 0, 305, 0, + 30, 93, 185, 108, 0, 30, 93, 224, 108, 0, + 37, 391, 0, 7, 391, 0, 280, 37, 391, 0, + 280, 7, 391, 0, 58, 0, 0, 282, 0, 282, + 285, 0, 283, 284, 285, 0, 283, 284, 0, 37, + 62, 0, 286, 0, 285, 286, 0, 287, 60, 0, + 287, 109, 0, 156, 62, 0, 156, 95, 0, 156, + 25, 0, 156, 58, 0, 60, 0, 118, 286, 0, + 134, 286, 0, 134, 225, 60, 0, 225, 288, 0, + 228, 289, 0, 310, 236, 245, 252, 0, 149, 236, + 245, 252, 0, 62, 203, 0, 1, 0, 228, 155, + 236, 245, 252, 0, 155, 236, 245, 252, 0, 127, + 0, 0, 290, 0, 288, 59, 291, 0, 0, 293, + 0, 289, 59, 295, 0, 292, 0, 293, 0, 294, + 0, 295, 0, 304, 236, 245, 252, 0, 4, 62, + 203, 245, 0, 310, 236, 245, 252, 0, 149, 236, + 245, 252, 0, 3, 62, 203, 245, 0, 62, 203, + 245, 0, 304, 236, 245, 252, 0, 4, 62, 203, + 245, 0, 310, 236, 245, 252, 0, 3, 62, 203, + 245, 0, 62, 203, 245, 0, 297, 0, 296, 59, + 297, 0, 163, 0, 163, 64, 203, 0, 371, 328, + 0, 371, 0, 93, 198, 224, 197, 94, 185, 111, + 0, 0, 299, 9, 0, 9, 0, 300, 9, 0, + 0, 301, 185, 0, 301, 93, 195, 108, 0, 301, + 93, 381, 108, 0, 301, 47, 0, 301, 93, 1, + 108, 0, 80, 300, 304, 0, 70, 300, 304, 0, + 80, 304, 0, 70, 304, 0, 326, 299, 304, 0, + 308, 0, 317, 0, 327, 317, 0, 305, 0, 307, + 0, 327, 307, 0, 318, 317, 0, 308, 303, 299, + 393, 0, 308, 94, 302, 111, 0, 308, 94, 111, + 0, 93, 304, 108, 0, 318, 317, 0, 317, 0, + 310, 0, 246, 310, 0, 80, 300, 309, 0, 70, + 300, 309, 0, 80, 309, 0, 70, 309, 0, 326, + 299, 309, 0, 212, 0, 80, 300, 309, 0, 70, + 300, 309, 0, 80, 311, 0, 70, 311, 0, 326, + 299, 309, 0, 312, 0, 212, 303, 299, 393, 0, + 93, 311, 108, 0, 212, 94, 302, 111, 0, 212, + 94, 111, 0, 314, 0, 318, 211, 0, 318, 208, + 0, 318, 207, 0, 318, 204, 0, 318, 207, 0, + 314, 0, 327, 314, 0, 231, 93, 195, 108, 0, + 231, 93, 209, 108, 0, 231, 223, 0, 4, 0, + 5, 0, 177, 0, 319, 0, 318, 319, 0, 318, + 48, 324, 54, 0, 4, 54, 0, 5, 54, 0, + 57, 54, 0, 177, 54, 0, 321, 0, 327, 321, + 0, 322, 163, 0, 322, 177, 0, 322, 324, 0, + 322, 48, 324, 0, 323, 0, 322, 323, 0, 322, + 324, 54, 0, 322, 48, 324, 54, 0, 4, 54, + 0, 5, 54, 0, 177, 54, 0, 56, 54, 0, + 3, 54, 0, 57, 54, 0, 163, 74, 181, 180, + 0, 327, 317, 0, 307, 0, 327, 307, 0, 318, + 80, 0, 327, 318, 80, 0, 54, 0, 80, 299, + 328, 0, 80, 299, 0, 70, 299, 328, 0, 70, + 299, 0, 326, 299, 0, 326, 299, 328, 0, 329, + 0, 94, 185, 111, 0, 329, 94, 302, 111, 0, + 80, 300, 330, 0, 80, 330, 0, 80, 300, 0, + 80, 0, 70, 300, 330, 0, 70, 330, 0, 70, + 300, 0, 70, 0, 326, 299, 0, 326, 299, 330, + 0, 331, 0, 93, 330, 108, 0, 90, 0, 331, + 93, 381, 108, 299, 393, 0, 331, 47, 299, 393, + 0, 331, 94, 302, 111, 0, 331, 94, 111, 0, + 93, 382, 108, 299, 393, 0, 201, 299, 393, 0, + 223, 299, 393, 0, 94, 302, 111, 0, 94, 111, + 0, 345, 0, 333, 0, 332, 345, 0, 332, 333, + 0, 1, 60, 0, 0, 335, 0, 336, 0, 335, + 336, 0, 33, 251, 60, 0, 338, 0, 1, 338, + 0, 0, 58, 339, 191, 0, 0, 0, 15, 341, + 187, 342, 343, 0, 338, 0, 0, 344, 346, 0, + 338, 0, 346, 0, 221, 0, 185, 60, 0, 0, + 340, 16, 347, 343, 0, 340, 0, 0, 0, 17, + 348, 187, 349, 192, 0, 0, 0, 18, 350, 343, + 17, 351, 186, 60, 0, 0, 0, 0, 0, 19, + 352, 93, 374, 353, 188, 60, 354, 376, 108, 355, + 192, 0, 0, 0, 20, 356, 93, 189, 108, 357, + 343, 0, 0, 21, 203, 62, 358, 345, 0, 0, + 21, 203, 12, 203, 62, 359, 345, 0, 0, 22, + 62, 360, 345, 0, 23, 60, 0, 24, 60, 0, + 25, 60, 0, 25, 185, 60, 0, 119, 375, 93, + 218, 108, 60, 0, 119, 375, 93, 218, 62, 377, + 108, 60, 0, 119, 375, 93, 218, 62, 377, 62, + 377, 108, 60, 0, 119, 375, 93, 218, 62, 377, + 62, 377, 62, 380, 108, 60, 0, 26, 80, 185, + 60, 0, 26, 163, 60, 0, 373, 345, 0, 373, + 109, 0, 60, 0, 364, 0, 129, 0, 128, 0, + 125, 0, 0, 0, 95, 362, 145, 338, 363, 367, + 0, 0, 0, 95, 365, 338, 366, 367, 0, 368, + 0, 367, 368, 0, 0, 0, 96, 369, 372, 370, + 338, 0, 229, 0, 300, 0, 93, 12, 108, 0, + 93, 390, 108, 0, 3, 62, 0, 56, 62, 0, + 4, 62, 0, 5, 62, 0, 376, 60, 0, 221, + 0, 58, 191, 0, 0, 9, 0, 0, 185, 0, + 1, 0, 0, 378, 0, 379, 0, 378, 59, 379, + 0, 11, 93, 185, 108, 0, 11, 0, 380, 59, + 11, 0, 0, 382, 0, 224, 0, 386, 0, 387, + 12, 0, 386, 12, 0, 224, 12, 0, 12, 0, + 386, 62, 0, 224, 62, 0, 0, 64, 384, 385, + 0, 101, 0, 253, 0, 388, 0, 390, 383, 0, + 387, 389, 0, 387, 392, 0, 387, 392, 64, 253, + 0, 386, 59, 0, 224, 59, 0, 226, 222, 0, + 229, 222, 0, 231, 222, 0, 226, 330, 0, 226, + 0, 228, 310, 0, 390, 0, 390, 383, 0, 388, + 0, 224, 0, 0, 0, 310, 0, 0, 61, 93, + 395, 108, 0, 61, 47, 0, 224, 0, 394, 0, + 395, 59, 394, 0, 0, 80, 299, 396, 0, 70, + 299, 396, 0, 326, 299, 396, 0, 41, 0, 397, + 80, 0, 397, 81, 0, 397, 82, 0, 397, 78, + 0, 397, 79, 0, 397, 70, 0, 397, 68, 0, + 397, 69, 0, 397, 88, 0, 397, 59, 0, 397, + 73, 0, 397, 74, 0, 397, 75, 0, 397, 72, + 0, 397, 63, 0, 397, 64, 0, 397, 76, 0, + 397, 77, 0, 397, 86, 0, 397, 87, 0, 397, + 67, 0, 397, 66, 0, 397, 110, 0, 397, 65, + 62, 0, 397, 71, 0, 397, 91, 0, 397, 83, + 0, 397, 47, 0, 397, 94, 111, 0, 397, 39, + 0, 397, 38, 0, 397, 39, 94, 111, 0, 397, + 38, 94, 111, 0, 397, 371, 396, 0, 397, 1, + 0 }; #endif @@ -674,62 +675,62 @@ static const short yyrline[] = { 0, 1333, 1335, 1343, 1345, 1347, 1349, 1353, 1356, 1360, 1364, 1365, 1366, 1370, 1378, 1379, 1380, 1394, 1396, 1399, 1401, 1412, 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1432, 1434, - 1478, 1479, 1483, 1487, 1491, 1495, 1497, 1501, 1503, 1505, - 1513, 1515, 1517, 1519, 1523, 1525, 1527, 1529, 1534, 1536, - 1538, 1540, 1543, 1545, 1547, 1591, 1594, 1598, 1601, 1605, - 1608, 1613, 1615, 1619, 1632, 1635, 1642, 1649, 1654, 1656, - 1661, 1663, 1670, 1672, 1676, 1680, 1686, 1690, 1693, 1696, - 1699, 1709, 1711, 1714, 1718, 1721, 1724, 1727, 1730, 1736, - 1742, 1744, 1749, 1751, 1760, 1763, 1765, 1768, 1774, 1776, - 1786, 1790, 1793, 1796, 1801, 1804, 1812, 1814, 1816, 1818, - 1821, 1824, 1839, 1858, 1861, 1863, 1866, 1868, 1872, 1874, - 1878, 1880, 1884, 1887, 1891, 1897, 1898, 1910, 1917, 1920, - 1926, 1930, 1935, 1941, 1942, 1950, 1953, 1957, 1960, 1964, - 1969, 1972, 1976, 1979, 1981, 1983, 1985, 1992, 1994, 1995, - 1996, 2000, 2003, 2007, 2010, 2016, 2018, 2021, 2024, 2027, - 2033, 2036, 2039, 2041, 2043, 2047, 2053, 2061, 2063, 2067, - 2069, 2074, 2077, 2080, 2082, 2084, 2088, 2093, 2100, 2104, - 2108, 2115, 2119, 2122, 2125, 2131, 2143, 2145, 2148, 2168, - 2170, 2173, 2175, 2180, 2182, 2184, 2186, 2188, 2190, 2194, - 2202, 2205, 2207, 2211, 2217, 2222, 2227, 2229, 2233, 2236, - 2238, 2244, 2261, 2267, 2269, 2272, 2275, 2277, 2281, 2283, - 2287, 2292, 2298, 2301, 2302, 2323, 2346, 2348, 2352, 2363, - 2377, 2382, 2389, 2391, 2392, 2393, 2396, 2411, 2416, 2422, - 2424, 2429, 2431, 2433, 2435, 2437, 2439, 2442, 2452, 2459, - 2484, 2490, 2493, 2496, 2498, 2509, 2514, 2517, 2522, 2525, - 2532, 2542, 2545, 2552, 2562, 2564, 2567, 2569, 2572, 2579, - 2587, 2594, 2600, 2606, 2614, 2618, 2623, 2627, 2630, 2639, - 2641, 2645, 2648, 2653, 2657, 2663, 2674, 2677, 2681, 2685, - 2693, 2698, 2704, 2707, 2709, 2711, 2717, 2720, 2722, 2724, - 2726, 2730, 2733, 2751, 2761, 2763, 2764, 2768, 2773, 2776, - 2778, 2780, 2782, 2786, 2792, 2794, 2802, 2805, 2807, 2809, - 2811, 2815, 2818, 2821, 2823, 2825, 2827, 2831, 2834, 2837, - 2839, 2841, 2843, 2845, 2852, 2856, 2861, 2865, 2870, 2872, - 2876, 2879, 2881, 2884, 2886, 2887, 2890, 2892, 2894, 2900, - 2915, 2921, 2927, 2941, 2943, 2947, 2961, 2963, 2965, 2969, - 2975, 2988, 2990, 2994, 3007, 3013, 3015, 3016, 3017, 3025, - 3030, 3039, 3040, 3044, 3047, 3053, 3059, 3062, 3064, 3066, - 3068, 3072, 3076, 3080, 3083, 3088, 3091, 3093, 3095, 3097, - 3099, 3101, 3103, 3105, 3109, 3113, 3117, 3121, 3122, 3124, - 3126, 3128, 3130, 3132, 3134, 3136, 3138, 3146, 3148, 3149, - 3150, 3153, 3159, 3161, 3166, 3168, 3171, 3185, 3188, 3191, - 3195, 3198, 3205, 3207, 3210, 3212, 3214, 3217, 3220, 3223, - 3226, 3228, 3231, 3235, 3237, 3243, 3245, 3246, 3248, 3253, - 3255, 3257, 3259, 3261, 3264, 3265, 3267, 3270, 3271, 3274, - 3274, 3277, 3277, 3280, 3280, 3282, 3284, 3286, 3288, 3294, - 3300, 3303, 3306, 3312, 3314, 3316, 3320, 3322, 3323, 3324, - 3326, 3329, 3336, 3341, 3349, 3353, 3355, 3358, 3360, 3363, - 3367, 3369, 3372, 3374, 3377, 3394, 3400, 3408, 3410, 3412, - 3416, 3419, 3420, 3428, 3432, 3436, 3439, 3440, 3446, 3449, - 3452, 3454, 3458, 3463, 3466, 3476, 3481, 3482, 3489, 3492, - 3495, 3497, 3500, 3502, 3512, 3526, 3530, 3533, 3535, 3539, - 3543, 3546, 3549, 3551, 3555, 3557, 3564, 3571, 3574, 3577, - 3581, 3585, 3591, 3595, 3600, 3602, 3605, 3610, 3616, 3627, - 3630, 3632, 3636, 3641, 3643, 3650, 3653, 3655, 3657, 3663, - 3668, 3671, 3673, 3675, 3677, 3679, 3681, 3683, 3685, 3687, - 3689, 3691, 3693, 3695, 3697, 3699, 3701, 3703, 3705, 3707, - 3709, 3711, 3713, 3715, 3717, 3719, 3721, 3723, 3725, 3727, - 3729, 3731, 3733, 3736, 3738 + 1451, 1452, 1456, 1460, 1464, 1468, 1470, 1474, 1476, 1478, + 1486, 1488, 1490, 1492, 1496, 1498, 1500, 1502, 1507, 1509, + 1511, 1513, 1516, 1518, 1520, 1564, 1567, 1571, 1574, 1578, + 1581, 1586, 1588, 1592, 1605, 1608, 1615, 1622, 1627, 1629, + 1634, 1636, 1643, 1645, 1649, 1653, 1659, 1663, 1666, 1669, + 1672, 1682, 1684, 1687, 1691, 1694, 1697, 1700, 1703, 1709, + 1715, 1717, 1722, 1724, 1733, 1736, 1738, 1741, 1747, 1749, + 1759, 1763, 1766, 1769, 1774, 1777, 1785, 1787, 1789, 1791, + 1794, 1797, 1812, 1831, 1834, 1836, 1839, 1841, 1845, 1847, + 1851, 1853, 1857, 1860, 1864, 1870, 1871, 1883, 1890, 1893, + 1899, 1903, 1908, 1914, 1915, 1923, 1926, 1930, 1933, 1937, + 1942, 1945, 1949, 1952, 1954, 1956, 1958, 1965, 1967, 1968, + 1969, 1973, 1976, 1980, 1983, 1989, 1991, 1994, 1997, 2000, + 2006, 2009, 2012, 2014, 2016, 2020, 2026, 2034, 2036, 2040, + 2042, 2047, 2050, 2053, 2055, 2057, 2061, 2066, 2073, 2077, + 2081, 2088, 2092, 2095, 2098, 2104, 2116, 2118, 2121, 2141, + 2143, 2146, 2148, 2153, 2155, 2157, 2159, 2161, 2163, 2167, + 2175, 2178, 2180, 2184, 2190, 2195, 2200, 2202, 2206, 2209, + 2213, 2219, 2222, 2239, 2245, 2247, 2250, 2253, 2255, 2259, + 2261, 2265, 2270, 2276, 2279, 2280, 2301, 2324, 2326, 2330, + 2341, 2355, 2360, 2367, 2369, 2370, 2371, 2374, 2389, 2394, + 2400, 2402, 2407, 2409, 2411, 2413, 2415, 2417, 2420, 2430, + 2437, 2462, 2468, 2471, 2474, 2476, 2487, 2492, 2495, 2500, + 2503, 2510, 2520, 2523, 2530, 2540, 2542, 2545, 2547, 2550, + 2557, 2565, 2572, 2578, 2584, 2592, 2596, 2601, 2605, 2608, + 2617, 2619, 2623, 2626, 2631, 2635, 2641, 2652, 2655, 2659, + 2663, 2671, 2676, 2682, 2685, 2687, 2689, 2695, 2698, 2700, + 2702, 2704, 2708, 2711, 2729, 2739, 2741, 2742, 2746, 2751, + 2754, 2756, 2758, 2760, 2764, 2770, 2772, 2780, 2783, 2785, + 2787, 2789, 2793, 2796, 2799, 2801, 2803, 2805, 2809, 2812, + 2815, 2817, 2819, 2821, 2823, 2830, 2834, 2839, 2843, 2848, + 2850, 2854, 2857, 2859, 2862, 2864, 2865, 2868, 2870, 2872, + 2878, 2893, 2899, 2905, 2919, 2921, 2925, 2939, 2941, 2943, + 2947, 2953, 2966, 2968, 2972, 2985, 2991, 2993, 2994, 2995, + 3003, 3008, 3017, 3018, 3022, 3025, 3031, 3037, 3040, 3042, + 3044, 3046, 3050, 3054, 3058, 3061, 3066, 3069, 3071, 3073, + 3075, 3077, 3079, 3081, 3083, 3087, 3091, 3095, 3099, 3100, + 3102, 3104, 3106, 3108, 3110, 3112, 3114, 3116, 3124, 3126, + 3127, 3128, 3131, 3137, 3139, 3144, 3146, 3149, 3163, 3166, + 3169, 3173, 3176, 3183, 3185, 3188, 3190, 3192, 3195, 3198, + 3201, 3204, 3206, 3209, 3213, 3215, 3221, 3223, 3224, 3226, + 3231, 3233, 3235, 3237, 3239, 3242, 3243, 3245, 3248, 3249, + 3252, 3252, 3255, 3255, 3258, 3258, 3260, 3262, 3264, 3266, + 3272, 3278, 3281, 3284, 3290, 3292, 3294, 3298, 3300, 3301, + 3302, 3304, 3307, 3314, 3319, 3327, 3331, 3333, 3336, 3338, + 3341, 3345, 3347, 3350, 3352, 3355, 3372, 3378, 3386, 3388, + 3390, 3394, 3397, 3398, 3406, 3410, 3414, 3417, 3418, 3424, + 3427, 3430, 3432, 3436, 3441, 3444, 3454, 3459, 3460, 3467, + 3470, 3473, 3475, 3478, 3480, 3490, 3504, 3508, 3511, 3513, + 3517, 3521, 3524, 3527, 3529, 3533, 3535, 3542, 3549, 3552, + 3555, 3559, 3563, 3569, 3573, 3578, 3580, 3583, 3588, 3594, + 3605, 3608, 3610, 3614, 3619, 3621, 3628, 3631, 3633, 3635, + 3641, 3646, 3649, 3651, 3653, 3655, 3657, 3659, 3661, 3663, + 3665, 3667, 3669, 3671, 3673, 3675, 3677, 3679, 3681, 3683, + 3685, 3687, 3689, 3691, 3693, 3695, 3697, 3699, 3701, 3703, + 3705, 3707, 3709, 3711, 3714, 3716 }; #endif @@ -778,7 +779,7 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "init","initlist","fn.defpen","pending_inline","pending_inlines","defarg_again", "pending_defargs","structsp","@26","@27","@28","@29","maybecomma","maybecomma_warn", "aggr","named_class_head_sans_basetype","named_class_head_sans_basetype_defn", -"named_complex_class_head_sans_basetype","named_class_head","@30","unnamed_class_head", +"named_complex_class_head_sans_basetype","named_class_head","@30","@31","unnamed_class_head", "class_head","maybe_base_class_list","base_class_list","base_class","base_class.1", "base_class_access_list","left_curly","self_reference","opt.component_decl_list", "access_specifier","component_decl_list","component_decl","component_decl_1", @@ -794,12 +795,12 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "explicit_template_type","complex_type_name","ptr_to_mem","global_scope","new_declarator", "direct_new_declarator","absdcl","direct_abstract_declarator","stmts","errstmt", "maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt", -"@31","simple_if","@32","@33","implicitly_scoped_stmt","@34","stmt","simple_stmt", -"@35","@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47", -"@48","function_try_block","@49","@50","try_block","@51","@52","handler_seq", -"handler","@53","@54","type_specifier_seq","handler_args","label_colon","for.init.statement", +"@32","simple_if","@33","@34","implicitly_scoped_stmt","@35","stmt","simple_stmt", +"@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","@48", +"@49","function_try_block","@50","@51","try_block","@52","@53","handler_seq", +"handler","@54","@55","type_specifier_seq","handler_args","label_colon","for.init.statement", "maybe_cv_qualifier","xexpr","asm_operands","nonnull_asm_operands","asm_operand", -"asm_clobbers","parmlist","complex_parmlist","defarg","@55","defarg1","parms", +"asm_clobbers","parmlist","complex_parmlist","defarg","@56","defarg1","parms", "parms_comma","named_parm","full_parm","parm","see_typename","bad_parm","exception_specification_opt", "ansi_raise_identifier","ansi_raise_identifiers","conversion_declarator","operator", "operator_name", NULL @@ -857,44 +858,44 @@ static const short yyr1[] = { 0, 260, 260, 260, 260, 260, 263, 264, 260, 260, 265, 265, 266, 266, 267, 267, 267, 267, 267, 267, 268, 269, 269, 269, 270, 270, 270, 270, 270, 271, 272, - 271, 271, 273, 274, 274, 275, 275, 275, 276, 276, - 277, 277, 278, 278, 278, 278, 279, 279, 279, 279, - 280, 281, 282, 282, 282, 282, 283, 284, 284, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 287, 287, - 287, 288, 288, 288, 289, 289, 290, 290, 291, 291, - 292, 292, 292, 292, 293, 293, 294, 294, 294, 295, - 295, 296, 296, 297, 297, 297, 298, 298, 299, 299, - 300, 301, 302, 302, 302, 302, 303, 303, 303, 303, - 303, 303, 304, 304, 305, 305, 305, 306, 307, 307, - 307, 307, 307, 307, 308, 308, 309, 309, 309, 309, - 309, 309, 310, 310, 310, 310, 310, 310, 311, 311, - 311, 311, 311, 311, 312, 312, 313, 313, 314, 314, - 315, 315, 315, 316, 316, 316, 317, 317, 317, 318, - 318, 318, 318, 319, 319, 320, 320, 320, 320, 321, - 321, 321, 321, 322, 322, 322, 322, 322, 322, 323, - 324, 324, 324, 325, 325, 326, 327, 327, 327, 327, - 327, 327, 327, 328, 328, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 330, 330, 330, 330, + 271, 273, 271, 274, 275, 275, 276, 276, 276, 277, + 277, 278, 278, 279, 279, 279, 279, 280, 280, 280, + 280, 281, 282, 283, 283, 283, 283, 284, 285, 285, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 287, 287, 287, 287, 287, 287, 287, 287, 287, 288, + 288, 288, 289, 289, 289, 290, 290, 291, 291, 292, + 292, 293, 293, 293, 293, 294, 294, 295, 295, 295, + 296, 296, 297, 297, 298, 298, 298, 299, 299, 300, + 300, 301, 302, 303, 303, 303, 303, 304, 304, 304, + 304, 304, 304, 305, 305, 306, 306, 306, 307, 308, + 308, 308, 308, 308, 308, 309, 309, 310, 310, 310, + 310, 310, 310, 311, 311, 311, 311, 311, 311, 312, + 312, 312, 312, 312, 312, 313, 313, 314, 314, 315, + 315, 316, 316, 316, 317, 317, 317, 318, 318, 318, + 319, 319, 319, 319, 320, 320, 321, 321, 321, 321, + 322, 322, 322, 322, 323, 323, 323, 323, 323, 323, + 324, 325, 325, 325, 326, 326, 327, 328, 328, 328, + 328, 328, 328, 328, 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, - 331, 332, 333, 333, 334, 334, 335, 336, 336, 338, - 337, 340, 341, 339, 342, 343, 342, 344, 344, 345, - 345, 346, 345, 345, 347, 348, 345, 349, 350, 345, - 351, 352, 353, 354, 345, 355, 356, 345, 357, 345, - 358, 345, 359, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 361, 362, 360, 364, 365, 363, 366, 366, 368, - 369, 367, 370, 370, 371, 371, 372, 372, 372, 372, - 373, 373, 373, 374, 374, 375, 375, 375, 376, 376, - 377, 377, 378, 379, 379, 380, 380, 380, 381, 381, - 381, 381, 381, 381, 381, 383, 382, 384, 384, 385, - 385, 385, 385, 385, 386, 386, 387, 387, 387, 387, - 387, 387, 388, 388, 389, 389, 390, 391, 391, 392, - 392, 392, 393, 394, 394, 395, 395, 395, 395, 396, - 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397 + 331, 331, 331, 331, 331, 331, 331, 331, 332, 332, + 332, 332, 333, 334, 334, 335, 335, 336, 337, 337, + 339, 338, 341, 342, 340, 343, 344, 343, 345, 345, + 346, 346, 347, 346, 346, 348, 349, 346, 350, 351, + 346, 352, 353, 354, 355, 346, 356, 357, 346, 358, + 346, 359, 346, 360, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 362, 363, 361, 365, 366, 364, 367, 367, + 369, 370, 368, 371, 371, 372, 372, 373, 373, 373, + 373, 374, 374, 374, 375, 375, 376, 376, 376, 377, + 377, 378, 378, 379, 380, 380, 381, 381, 381, 382, + 382, 382, 382, 382, 382, 382, 384, 383, 385, 385, + 386, 386, 386, 386, 386, 387, 387, 388, 388, 388, + 388, 388, 388, 389, 389, 390, 390, 391, 392, 392, + 393, 393, 393, 394, 395, 395, 396, 396, 396, 396, + 397, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398 }; static const short yyr2[] = { 0, @@ -948,100 +949,100 @@ static const short yyr2[] = { 0, 6, 3, 2, 2, 2, 0, 0, 9, 1, 0, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 3, 2, 3, 1, 0, - 3, 2, 2, 1, 1, 0, 2, 3, 1, 4, - 1, 3, 1, 1, 4, 4, 2, 2, 3, 3, - 1, 0, 1, 2, 3, 2, 2, 1, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 2, 3, 2, - 2, 4, 4, 2, 1, 5, 4, 1, 0, 1, - 3, 0, 1, 3, 1, 1, 1, 1, 4, 4, - 4, 4, 4, 3, 4, 4, 4, 4, 3, 1, - 3, 1, 3, 2, 1, 7, 0, 2, 1, 2, - 0, 2, 4, 4, 2, 4, 3, 3, 2, 2, - 3, 1, 1, 2, 1, 1, 2, 2, 4, 4, - 3, 3, 2, 1, 1, 2, 3, 3, 2, 2, - 3, 1, 3, 3, 2, 2, 3, 1, 4, 3, - 4, 3, 1, 2, 2, 2, 2, 2, 1, 2, - 4, 4, 2, 1, 1, 1, 1, 2, 4, 2, - 2, 2, 2, 1, 2, 2, 2, 2, 3, 1, - 2, 3, 4, 2, 2, 2, 2, 2, 2, 4, - 2, 1, 2, 2, 3, 1, 3, 2, 3, 2, - 2, 3, 1, 3, 4, 3, 2, 2, 1, 3, - 2, 2, 1, 2, 3, 1, 3, 1, 6, 4, - 4, 3, 5, 3, 3, 3, 2, 1, 1, 2, - 2, 2, 0, 1, 1, 2, 3, 1, 2, 0, - 3, 0, 0, 5, 1, 0, 2, 1, 1, 1, - 2, 0, 4, 1, 0, 0, 5, 0, 0, 7, - 0, 0, 0, 0, 12, 0, 0, 7, 0, 5, - 0, 7, 0, 4, 2, 2, 2, 3, 6, 8, - 10, 12, 4, 3, 2, 2, 1, 1, 1, 1, - 1, 0, 0, 6, 0, 0, 5, 1, 2, 0, - 0, 5, 1, 1, 3, 3, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 0, 1, 1, 0, 1, - 1, 3, 4, 1, 3, 0, 1, 1, 1, 2, - 2, 2, 1, 2, 2, 0, 3, 1, 1, 1, - 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, - 1, 2, 1, 2, 1, 1, 0, 0, 1, 0, - 4, 2, 1, 1, 3, 0, 3, 3, 3, 1, + 3, 0, 3, 2, 1, 1, 0, 2, 3, 1, + 4, 1, 3, 1, 1, 4, 4, 2, 2, 3, + 3, 1, 0, 1, 2, 3, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 2, 3, + 2, 2, 4, 4, 2, 1, 5, 4, 1, 0, + 1, 3, 0, 1, 3, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 3, 4, 4, 4, 4, 3, + 1, 3, 1, 3, 2, 1, 7, 0, 2, 1, + 2, 0, 2, 4, 4, 2, 4, 3, 3, 2, + 2, 3, 1, 1, 2, 1, 1, 2, 2, 4, + 4, 3, 3, 2, 1, 1, 2, 3, 3, 2, + 2, 3, 1, 3, 3, 2, 2, 3, 1, 4, + 3, 4, 3, 1, 2, 2, 2, 2, 2, 1, + 2, 4, 4, 2, 1, 1, 1, 1, 2, 4, + 2, 2, 2, 2, 1, 2, 2, 2, 2, 3, + 1, 2, 3, 4, 2, 2, 2, 2, 2, 2, + 4, 2, 1, 2, 2, 3, 1, 3, 2, 3, + 2, 2, 3, 1, 3, 4, 3, 2, 2, 1, + 3, 2, 2, 1, 2, 3, 1, 3, 1, 6, + 4, 4, 3, 5, 3, 3, 3, 2, 1, 1, + 2, 2, 2, 0, 1, 1, 2, 3, 1, 2, + 0, 3, 0, 0, 5, 1, 0, 2, 1, 1, + 1, 2, 0, 4, 1, 0, 0, 5, 0, 0, + 7, 0, 0, 0, 0, 12, 0, 0, 7, 0, + 5, 0, 7, 0, 4, 2, 2, 2, 3, 6, + 8, 10, 12, 4, 3, 2, 2, 1, 1, 1, + 1, 1, 0, 0, 6, 0, 0, 5, 1, 2, + 0, 0, 5, 1, 1, 3, 3, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 0, 1, 1, 0, + 1, 1, 3, 4, 1, 3, 0, 1, 1, 1, + 2, 2, 2, 1, 2, 2, 0, 3, 1, 1, + 1, 2, 2, 2, 4, 2, 2, 2, 2, 2, + 2, 1, 2, 1, 2, 1, 1, 0, 0, 1, + 0, 4, 2, 1, 1, 3, 0, 3, 3, 3, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, - 2, 4, 4, 3, 2 + 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, + 2, 2, 4, 4, 3, 2 }; static const short yydefact[] = { 3, - 12, 12, 5, 0, 4, 0, 279, 634, 635, 0, - 386, 398, 579, 0, 11, 0, 0, 0, 10, 484, - 840, 0, 0, 0, 167, 666, 280, 281, 83, 0, - 0, 827, 0, 45, 0, 0, 13, 25, 0, 27, - 8, 0, 16, 15, 89, 110, 86, 0, 636, 171, - 300, 277, 301, 612, 0, 373, 0, 372, 391, 0, - 411, 390, 428, 397, 0, 499, 500, 506, 505, 504, - 479, 385, 595, 399, 596, 108, 299, 623, 593, 0, - 637, 577, 0, 0, 278, 81, 82, 176, 640, 176, - 641, 176, 282, 167, 140, 141, 142, 143, 144, 470, - 473, 0, 662, 0, 474, 0, 0, 0, 0, 141, + 12, 12, 5, 0, 4, 0, 279, 635, 636, 0, + 386, 398, 580, 0, 11, 0, 0, 0, 10, 484, + 841, 0, 0, 0, 167, 667, 280, 281, 83, 0, + 0, 828, 0, 45, 0, 0, 13, 25, 0, 27, + 8, 0, 16, 15, 89, 110, 86, 0, 637, 171, + 300, 277, 301, 613, 0, 373, 0, 372, 391, 0, + 411, 390, 428, 397, 0, 499, 500, 502, 506, 505, + 479, 385, 596, 399, 597, 108, 299, 624, 594, 0, + 638, 578, 0, 0, 278, 81, 82, 176, 641, 176, + 642, 176, 282, 167, 140, 141, 142, 143, 144, 470, + 473, 0, 663, 0, 474, 0, 0, 0, 0, 141, 142, 143, 144, 23, 0, 0, 0, 0, 0, 0, - 0, 475, 644, 0, 650, 0, 0, 0, 37, 0, - 0, 31, 0, 0, 47, 0, 176, 642, 0, 0, - 0, 610, 605, 0, 0, 0, 609, 0, 0, 0, - 0, 300, 0, 291, 581, 0, 0, 299, 577, 28, + 0, 475, 645, 0, 651, 0, 0, 0, 37, 0, + 0, 31, 0, 0, 47, 0, 176, 643, 0, 0, + 0, 611, 606, 0, 0, 0, 610, 0, 0, 0, + 0, 300, 0, 291, 582, 0, 0, 299, 578, 28, 0, 26, 3, 46, 0, 64, 386, 0, 0, 8, 67, 63, 66, 89, 0, 0, 0, 397, 90, 14, - 0, 426, 0, 0, 444, 87, 79, 643, 581, 0, - 577, 80, 0, 0, 0, 106, 0, 407, 363, 592, - 364, 604, 0, 577, 388, 387, 78, 109, 374, 0, + 0, 426, 0, 0, 444, 87, 79, 644, 582, 0, + 578, 80, 0, 0, 0, 106, 0, 407, 363, 593, + 364, 605, 0, 578, 388, 387, 78, 109, 374, 0, 409, 389, 107, 380, 404, 405, 375, 393, 395, 384, - 406, 0, 75, 429, 485, 486, 487, 488, 503, 149, + 406, 0, 75, 429, 485, 486, 487, 488, 504, 149, 148, 150, 490, 491, 497, 489, 0, 0, 492, 493, - 506, 827, 502, 521, 522, 580, 392, 0, 423, 635, - 0, 664, 171, 627, 628, 624, 598, 638, 0, 597, - 594, 0, 875, 871, 870, 868, 850, 855, 856, 0, - 862, 861, 847, 848, 846, 865, 854, 851, 852, 853, - 857, 858, 844, 845, 841, 842, 843, 867, 859, 860, - 849, 866, 0, 863, 773, 391, 774, 836, 282, 279, - 579, 304, 352, 0, 0, 0, 0, 348, 346, 319, - 350, 351, 0, 0, 0, 0, 0, 280, 281, 273, - 0, 0, 184, 183, 0, 185, 186, 0, 0, 187, - 0, 0, 177, 178, 0, 247, 0, 250, 182, 303, - 213, 0, 0, 305, 306, 0, 180, 370, 391, 371, - 629, 331, 321, 0, 0, 0, 0, 176, 0, 472, - 0, 467, 0, 663, 661, 0, 188, 189, 0, 0, - 0, 433, 3, 21, 29, 658, 654, 655, 657, 659, - 656, 140, 141, 142, 0, 143, 144, 646, 647, 651, - 648, 645, 0, 289, 290, 288, 626, 625, 33, 32, - 49, 0, 157, 0, 0, 391, 155, 0, 0, 606, - 608, 0, 607, 141, 142, 275, 276, 295, 0, 616, - 294, 0, 615, 0, 302, 280, 281, 0, 0, 0, - 293, 292, 620, 0, 0, 12, 0, 167, 9, 9, - 70, 0, 65, 0, 0, 71, 74, 0, 425, 427, - 122, 93, 127, 762, 0, 85, 84, 92, 125, 0, - 0, 123, 88, 622, 0, 0, 585, 0, 830, 0, - 590, 0, 589, 0, 0, 0, 0, 577, 426, 0, - 77, 581, 577, 603, 0, 377, 378, 0, 76, 426, - 382, 381, 383, 376, 396, 413, 412, 494, 498, 496, - 0, 501, 507, 0, 0, 394, 426, 577, 94, 0, - 0, 0, 0, 577, 100, 578, 611, 635, 665, 171, - 0, 0, 864, 869, 393, 577, 577, 0, 577, 874, + 507, 507, 522, 523, 581, 392, 0, 423, 636, 0, + 665, 171, 628, 629, 625, 599, 639, 0, 598, 595, + 0, 876, 872, 871, 869, 851, 856, 857, 0, 863, + 862, 848, 849, 847, 866, 855, 852, 853, 854, 858, + 859, 845, 846, 842, 843, 844, 868, 860, 861, 850, + 867, 0, 864, 774, 391, 775, 837, 282, 279, 580, + 304, 352, 0, 0, 0, 0, 348, 346, 319, 350, + 351, 0, 0, 0, 0, 0, 280, 281, 273, 0, + 0, 184, 183, 0, 185, 186, 0, 0, 187, 0, + 0, 177, 178, 0, 247, 0, 250, 182, 303, 213, + 0, 0, 305, 306, 0, 180, 370, 391, 371, 630, + 331, 321, 0, 0, 0, 0, 176, 0, 472, 0, + 467, 0, 664, 662, 0, 188, 189, 0, 0, 0, + 433, 3, 21, 29, 659, 655, 656, 658, 660, 657, + 140, 141, 142, 0, 143, 144, 647, 648, 652, 649, + 646, 0, 289, 290, 288, 627, 626, 33, 32, 49, + 0, 157, 0, 0, 391, 155, 0, 0, 607, 609, + 0, 608, 141, 142, 275, 276, 295, 0, 617, 294, + 0, 616, 0, 302, 280, 281, 0, 0, 0, 293, + 292, 621, 0, 0, 12, 0, 167, 9, 9, 70, + 0, 65, 0, 0, 71, 74, 0, 425, 427, 122, + 93, 127, 763, 0, 85, 84, 92, 125, 0, 0, + 123, 88, 623, 0, 0, 586, 0, 831, 0, 591, + 0, 590, 0, 0, 0, 0, 578, 426, 0, 77, + 582, 578, 604, 0, 377, 378, 0, 76, 426, 382, + 381, 383, 376, 396, 413, 412, 494, 498, 496, 0, + 828, 501, 503, 0, 0, 394, 426, 578, 94, 0, + 0, 0, 0, 578, 100, 579, 612, 636, 666, 171, + 0, 0, 865, 870, 393, 578, 578, 0, 578, 875, 176, 0, 0, 0, 220, 0, 0, 222, 235, 236, 0, 0, 0, 0, 0, 274, 219, 216, 215, 217, 0, 0, 0, 0, 0, 303, 0, 0, 0, 214, @@ -1049,2271 +1050,2231 @@ static const short yydefact[] = { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 315, 317, 318, 356, 355, 0, 0, 238, - 238, 0, 224, 575, 0, 232, 353, 345, 0, 0, - 827, 334, 337, 338, 0, 0, 365, 683, 679, 688, - 0, 581, 577, 577, 577, 367, 686, 0, 633, 369, - 0, 0, 368, 333, 0, 328, 347, 329, 349, 630, - 0, 330, 173, 173, 0, 165, 0, 391, 163, 572, - 482, 570, 469, 0, 0, 400, 0, 0, 401, 402, + 238, 0, 224, 576, 0, 232, 353, 345, 0, 0, + 828, 334, 337, 338, 0, 0, 365, 684, 680, 689, + 0, 582, 578, 578, 578, 367, 687, 0, 634, 369, + 0, 0, 368, 333, 0, 328, 347, 329, 349, 631, + 0, 330, 173, 173, 0, 165, 0, 391, 163, 573, + 482, 571, 469, 0, 0, 400, 0, 0, 401, 402, 403, 439, 440, 441, 438, 0, 431, 434, 0, 3, - 0, 649, 176, 652, 0, 41, 42, 0, 53, 0, - 0, 57, 61, 50, 826, 821, 0, 370, 391, 53, - 371, 825, 59, 168, 153, 151, 168, 173, 298, 614, - 613, 302, 0, 617, 0, 18, 20, 89, 9, 9, - 73, 72, 0, 128, 354, 0, 710, 91, 708, 450, - 0, 446, 445, 212, 0, 211, 582, 621, 0, 803, - 0, 798, 391, 0, 797, 799, 828, 810, 0, 0, - 619, 588, 587, 0, 0, 602, 0, 421, 420, 408, - 601, 0, 830, 591, 379, 410, 422, 426, 495, 634, - 635, 827, 0, 827, 636, 508, 509, 511, 827, 514, - 513, 0, 545, 635, 0, 536, 0, 0, 548, 0, - 121, 116, 0, 171, 549, 552, 0, 528, 0, 119, - 0, 426, 0, 424, 830, 796, 176, 176, 639, 176, - 830, 796, 577, 97, 577, 103, 873, 872, 836, 836, - 836, 0, 0, 0, 0, 633, 0, 0, 0, 0, - 391, 0, 0, 0, 309, 0, 307, 308, 0, 245, - 179, 279, 634, 635, 280, 281, 0, 0, 451, 480, - 0, 272, 271, 788, 787, 0, 269, 268, 266, 267, - 265, 264, 263, 260, 261, 262, 258, 259, 253, 254, - 255, 256, 257, 251, 252, 0, 0, 0, 0, 0, - 238, 226, 242, 0, 0, 225, 577, 577, 0, 577, - 574, 673, 0, 0, 0, 0, 0, 336, 0, 340, - 0, 342, 0, 682, 681, 678, 677, 826, 0, 0, - 697, 0, 0, 830, 366, 830, 684, 577, 796, 581, - 683, 679, 0, 0, 577, 0, 390, 0, 0, 0, - 0, 170, 172, 283, 168, 161, 159, 168, 0, 483, - 0, 482, 210, 209, 208, 207, 433, 0, 0, 24, - 0, 0, 653, 0, 38, 44, 43, 55, 52, 53, - 0, 48, 0, 0, 683, 679, 0, 817, 577, 820, - 822, 0, 818, 819, 54, 490, 0, 158, 168, 168, - 156, 169, 296, 17, 19, 69, 89, 414, 145, 133, - 146, 147, 0, 126, 129, 0, 0, 0, 0, 709, - 703, 447, 0, 124, 586, 583, 802, 816, 805, 0, - 584, 801, 815, 804, 800, 829, 812, 823, 813, 806, - 811, 832, 0, 418, 600, 599, 417, 518, 0, 517, - 827, 827, 827, 0, 577, 796, 544, 537, 549, 538, - 426, 426, 534, 535, 532, 533, 577, 796, 279, 634, - 0, 413, 117, 540, 550, 555, 556, 413, 413, 0, - 0, 413, 115, 541, 553, 413, 529, 530, 531, 426, - 527, 476, 0, 96, 0, 0, 0, 0, 102, 0, - 830, 796, 830, 796, 838, 837, 839, 284, 320, 221, - 223, 326, 327, 0, 0, 0, 0, 308, 311, 0, - 0, 0, 0, 246, 0, 312, 314, 316, 0, 0, - 0, 0, 227, 244, 0, 0, 670, 668, 0, 671, - 581, 233, 0, 0, 176, 343, 0, 0, 0, 680, - 676, 687, 577, 696, 694, 695, 685, 830, 0, 692, - 0, 631, 632, 0, 332, 166, 168, 168, 164, 573, - 571, 471, 0, 432, 430, 279, 0, 22, 30, 660, - 56, 51, 58, 62, 682, 678, 683, 679, 0, 593, - 0, 577, 684, 60, 154, 152, 68, 0, 131, 0, - 135, 0, 137, 0, 139, 0, 763, 0, 200, 711, - 0, 704, 705, 0, 448, 683, 679, 0, 303, 0, - 629, 824, 0, 0, 833, 834, 0, 0, 415, 0, - 0, 0, 520, 519, 512, 830, 0, 539, 444, 444, - 830, 0, 0, 0, 426, 426, 0, 426, 426, 0, - 426, 0, 444, 464, 577, 286, 285, 287, 577, 99, - 0, 105, 0, 0, 0, 0, 0, 0, 454, 0, - 452, 249, 270, 240, 239, 237, 228, 0, 241, 243, - 669, 667, 674, 672, 0, 234, 0, 0, 335, 339, - 341, 830, 690, 577, 691, 162, 160, 468, 0, 435, - 437, 682, 678, 598, 684, 132, 130, 0, 0, 0, - 0, 442, 0, 0, 279, 634, 635, 712, 725, 728, - 731, 736, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 757, 765, 0, 784, 761, 760, 759, 0, 720, - 0, 0, 391, 0, 699, 718, 724, 698, 719, 758, - 0, 706, 449, 0, 632, 814, 808, 809, 807, 0, - 831, 419, 0, 515, 516, 510, 112, 577, 543, 547, - 114, 577, 426, 426, 564, 444, 279, 634, 0, 551, - 557, 558, 413, 413, 444, 444, 0, 444, 554, 542, - 0, 830, 830, 577, 577, 0, 0, 0, 0, 453, - 0, 0, 229, 230, 675, 344, 285, 693, 830, 0, - 134, 136, 138, 770, 764, 768, 0, 707, 702, 203, - 777, 779, 780, 0, 0, 716, 0, 0, 0, 743, - 745, 746, 747, 0, 0, 0, 0, 0, 0, 0, - 778, 0, 362, 785, 0, 721, 360, 413, 0, 361, - 0, 413, 0, 0, 0, 201, 701, 700, 722, 756, - 755, 308, 835, 416, 830, 830, 563, 560, 562, 0, - 0, 426, 426, 426, 559, 561, 546, 466, 0, 465, - 460, 95, 101, 830, 830, 322, 323, 324, 325, 455, - 0, 231, 689, 436, 0, 769, 443, 192, 0, 713, - 726, 715, 0, 0, 0, 0, 0, 739, 0, 748, - 0, 754, 39, 144, 34, 144, 0, 35, 766, 0, - 358, 359, 0, 0, 0, 357, 202, 716, 111, 113, - 426, 426, 569, 444, 444, 0, 0, 478, 98, 104, - 576, 0, 771, 199, 0, 391, 0, 716, 0, 729, - 717, 703, 782, 732, 0, 0, 0, 0, 744, 753, - 40, 36, 0, 0, 723, 568, 566, 565, 567, 463, - 462, 456, 86, 89, 0, 0, 0, 193, 413, 714, - 204, 727, 206, 0, 783, 0, 781, 737, 741, 740, - 767, 789, 0, 0, 461, 775, 776, 772, 426, 703, - 190, 0, 0, 196, 0, 195, 716, 0, 0, 0, - 790, 791, 749, 459, 0, 458, 0, 205, 0, 730, - 733, 738, 742, 0, 789, 0, 0, 457, 197, 191, - 0, 0, 0, 750, 792, 0, 0, 793, 0, 0, - 198, 734, 794, 0, 751, 0, 0, 0, 735, 795, - 752, 0, 0, 0 + 0, 650, 176, 653, 0, 41, 42, 0, 53, 0, + 0, 57, 61, 50, 827, 822, 0, 370, 391, 53, + 371, 826, 59, 168, 153, 151, 168, 173, 298, 615, + 614, 302, 0, 618, 0, 18, 20, 89, 9, 9, + 73, 72, 0, 128, 354, 0, 711, 91, 709, 450, + 0, 446, 445, 212, 0, 211, 583, 622, 0, 804, + 0, 799, 391, 0, 798, 800, 829, 811, 0, 0, + 620, 589, 588, 0, 0, 603, 0, 421, 420, 408, + 602, 0, 831, 592, 379, 410, 422, 426, 495, 508, + 546, 636, 0, 537, 0, 0, 549, 0, 121, 116, + 0, 171, 550, 553, 0, 529, 0, 119, 0, 426, + 0, 424, 831, 797, 176, 176, 640, 176, 831, 797, + 578, 97, 578, 103, 874, 873, 837, 837, 837, 0, + 0, 0, 0, 634, 0, 0, 0, 0, 391, 0, + 0, 0, 309, 0, 307, 308, 0, 245, 179, 279, + 635, 636, 280, 281, 0, 0, 451, 480, 0, 272, + 271, 789, 788, 0, 269, 268, 266, 267, 265, 264, + 263, 260, 261, 262, 258, 259, 253, 254, 255, 256, + 257, 251, 252, 0, 0, 0, 0, 0, 238, 226, + 242, 0, 0, 225, 578, 578, 0, 578, 575, 674, + 0, 0, 0, 0, 0, 336, 0, 340, 0, 342, + 0, 683, 682, 679, 678, 827, 0, 0, 698, 0, + 0, 831, 366, 831, 685, 578, 797, 582, 684, 680, + 0, 0, 578, 0, 390, 0, 0, 0, 0, 170, + 172, 283, 168, 161, 159, 168, 0, 483, 0, 482, + 210, 209, 208, 207, 433, 0, 0, 24, 0, 0, + 654, 0, 38, 44, 43, 55, 52, 53, 0, 48, + 0, 0, 684, 680, 0, 818, 578, 821, 823, 0, + 819, 820, 54, 490, 0, 158, 168, 168, 156, 169, + 296, 17, 19, 69, 89, 414, 145, 635, 636, 133, + 146, 147, 0, 126, 129, 0, 637, 0, 0, 0, + 0, 710, 704, 447, 0, 124, 587, 584, 803, 817, + 806, 0, 585, 802, 816, 805, 801, 830, 813, 824, + 814, 807, 812, 833, 0, 418, 601, 600, 417, 828, + 0, 828, 509, 510, 512, 828, 515, 514, 578, 797, + 545, 538, 550, 539, 426, 426, 535, 536, 533, 534, + 578, 797, 279, 635, 0, 413, 117, 541, 551, 556, + 557, 413, 413, 0, 0, 413, 115, 542, 554, 413, + 530, 531, 532, 426, 528, 476, 0, 96, 0, 0, + 0, 0, 102, 0, 831, 797, 831, 797, 839, 838, + 840, 284, 320, 221, 223, 326, 327, 0, 0, 0, + 0, 308, 311, 0, 0, 0, 0, 246, 0, 312, + 314, 316, 0, 0, 0, 0, 227, 244, 0, 0, + 671, 669, 0, 672, 582, 233, 0, 0, 176, 343, + 0, 0, 0, 681, 677, 688, 578, 697, 695, 696, + 686, 831, 0, 693, 0, 632, 633, 0, 332, 166, + 168, 168, 164, 574, 572, 471, 0, 432, 430, 279, + 0, 22, 30, 661, 56, 51, 58, 62, 683, 679, + 684, 680, 0, 594, 0, 578, 685, 60, 154, 152, + 68, 0, 131, 0, 135, 0, 137, 0, 139, 0, + 764, 0, 200, 712, 0, 705, 706, 0, 448, 684, + 680, 0, 303, 0, 630, 825, 0, 0, 834, 835, + 0, 0, 415, 519, 0, 518, 828, 828, 828, 0, + 831, 0, 540, 444, 444, 831, 0, 0, 0, 426, + 426, 0, 426, 426, 0, 426, 0, 444, 464, 578, + 286, 285, 287, 578, 99, 0, 105, 0, 0, 0, + 0, 0, 0, 454, 0, 452, 249, 270, 240, 239, + 237, 228, 0, 241, 243, 670, 668, 675, 673, 0, + 234, 0, 0, 335, 339, 341, 831, 691, 578, 692, + 162, 160, 468, 0, 435, 437, 683, 679, 599, 685, + 132, 130, 0, 0, 0, 0, 442, 0, 0, 279, + 635, 636, 713, 726, 729, 732, 737, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 758, 766, 0, 785, + 762, 761, 760, 0, 721, 0, 0, 391, 0, 700, + 719, 725, 699, 720, 759, 0, 707, 449, 0, 633, + 815, 809, 810, 808, 0, 832, 419, 0, 0, 0, + 0, 521, 520, 513, 112, 578, 544, 548, 114, 578, + 426, 426, 565, 444, 279, 635, 0, 552, 558, 559, + 413, 413, 444, 444, 0, 444, 555, 543, 0, 831, + 831, 578, 578, 0, 0, 0, 0, 453, 0, 0, + 229, 230, 676, 344, 285, 694, 831, 0, 134, 136, + 138, 771, 765, 769, 0, 708, 703, 203, 778, 780, + 781, 0, 0, 717, 0, 0, 0, 744, 746, 747, + 748, 0, 0, 0, 0, 0, 0, 0, 779, 0, + 362, 786, 0, 722, 360, 413, 0, 361, 0, 413, + 0, 0, 0, 201, 702, 701, 723, 757, 756, 308, + 836, 416, 516, 517, 511, 831, 831, 564, 561, 563, + 0, 0, 426, 426, 426, 560, 562, 547, 466, 0, + 465, 460, 95, 101, 831, 831, 322, 323, 324, 325, + 455, 0, 231, 690, 436, 0, 770, 443, 192, 0, + 714, 727, 716, 0, 0, 0, 0, 0, 740, 0, + 749, 0, 755, 39, 144, 34, 144, 0, 35, 767, + 0, 358, 359, 0, 0, 0, 357, 202, 717, 111, + 113, 426, 426, 570, 444, 444, 0, 0, 478, 98, + 104, 577, 0, 772, 199, 0, 391, 0, 717, 0, + 730, 718, 704, 783, 733, 0, 0, 0, 0, 745, + 754, 40, 36, 0, 0, 724, 569, 567, 566, 568, + 463, 462, 456, 86, 89, 0, 0, 0, 193, 413, + 715, 204, 728, 206, 0, 784, 0, 782, 738, 742, + 741, 768, 790, 0, 0, 461, 776, 777, 773, 426, + 704, 190, 0, 0, 196, 0, 195, 717, 0, 0, + 0, 791, 792, 750, 459, 0, 458, 0, 205, 0, + 731, 734, 739, 743, 0, 790, 0, 0, 457, 197, + 191, 0, 0, 0, 751, 793, 0, 0, 794, 0, + 0, 198, 735, 795, 0, 752, 0, 0, 0, 736, + 796, 753, 0, 0, 0 }; -static const short yydefgoto[] = { 1622, - 436, 2, 437, 165, 707, 331, 181, 3, 4, 37, - 670, 373, 1306, 671, 779, 1307, 1308, 393, 1409, 675, - 41, 780, 402, 681, 948, 682, 683, 684, 43, 172, - 173, 44, 455, 184, 180, 45, 46, 796, 1072, 802, - 1074, 47, 782, 783, 185, 186, 456, 714, 984, 985, - 650, 986, 234, 48, 970, 969, 697, 694, 1138, 1137, - 928, 925, 136, 968, 49, 50, 922, 563, 332, 333, - 334, 335, 1309, 1573, 1470, 1575, 1515, 1606, 1180, 1552, - 1570, 367, 914, 336, 1247, 869, 602, 876, 337, 338, - 368, 340, 358, 52, 255, 676, 418, 154, 53, 54, - 341, 558, 342, 343, 344, 345, 457, 346, 1310, 496, - 624, 347, 1311, 56, 217, 687, 348, 218, 536, 219, - 197, 210, 60, 479, 497, 1333, 748, 1198, 198, 211, - 61, 507, 749, 62, 63, 666, 667, 668, 1283, 462, - 839, 840, 1543, 1544, 1508, 1450, 1361, 64, 654, 361, - 1224, 1451, 1093, 931, 65, 66, 67, 68, 69, 241, - 70, 71, 243, 766, 767, 768, 769, 245, 504, 505, - 793, 787, 788, 789, 1044, 1054, 1045, 1350, 1046, 1047, - 1351, 1352, 651, 652, 603, 904, 350, 465, 466, 191, - 199, 73, 74, 75, 200, 142, 143, 157, 77, 132, - 351, 352, 353, 79, 354, 81, 771, 123, 124, 125, - 512, 105, 82, 355, 881, 882, 899, 627, 1314, 1315, - 1181, 1182, 1183, 718, 1316, 991, 1317, 1394, 1518, 1473, - 1474, 1318, 1319, 1498, 1395, 1519, 1396, 1554, 1397, 1556, - 1601, 1616, 1398, 1577, 1528, 1578, 1479, 458, 715, 1281, - 1320, 1412, 1533, 1385, 1386, 1465, 1547, 1517, 1513, 1321, - 1524, 1415, 846, 1580, 1581, 1582, 1614, 734, 735, 1011, - 1194, 1329, 736, 737, 738, 1007, 739, 148, 1009, 741, - 1196, 1197, 530, 84, 85 +static const short yydefgoto[] = { 1623, + 435, 2, 436, 165, 707, 330, 181, 3, 4, 37, + 670, 372, 1301, 671, 767, 1302, 1303, 392, 1407, 675, + 41, 768, 401, 681, 936, 682, 683, 684, 43, 172, + 173, 44, 454, 184, 180, 45, 46, 784, 1066, 790, + 1068, 47, 770, 771, 185, 186, 455, 714, 974, 975, + 650, 976, 234, 48, 958, 957, 697, 694, 1132, 1131, + 916, 913, 136, 956, 49, 50, 910, 563, 331, 332, + 333, 334, 1304, 1574, 1471, 1576, 1516, 1607, 1174, 1553, + 1571, 366, 902, 335, 1242, 857, 602, 864, 336, 337, + 367, 339, 357, 52, 254, 676, 417, 154, 53, 54, + 340, 558, 341, 342, 343, 344, 456, 345, 1305, 495, + 624, 346, 1306, 56, 217, 687, 347, 218, 536, 219, + 197, 210, 60, 478, 496, 1328, 748, 1192, 198, 211, + 61, 507, 749, 62, 63, 666, 667, 668, 1278, 461, + 827, 828, 1544, 1545, 1509, 1451, 1359, 64, 654, 360, + 1219, 1452, 1087, 919, 65, 66, 67, 68, 69, 241, + 242, 70, 71, 502, 1013, 1014, 1015, 1016, 244, 504, + 505, 781, 775, 776, 777, 1038, 1048, 1039, 1348, 1040, + 1041, 1349, 1350, 651, 652, 603, 892, 349, 464, 465, + 191, 199, 73, 74, 75, 200, 142, 143, 157, 77, + 132, 350, 351, 352, 79, 353, 81, 1018, 123, 124, + 125, 512, 105, 82, 354, 869, 870, 887, 627, 1309, + 1310, 1175, 1176, 1177, 718, 1311, 983, 1312, 1392, 1519, + 1474, 1475, 1313, 1314, 1499, 1393, 1520, 1394, 1555, 1395, + 1557, 1602, 1617, 1396, 1578, 1529, 1579, 1480, 457, 715, + 1276, 1315, 1410, 1534, 1383, 1384, 1466, 1548, 1518, 1514, + 1316, 1525, 1413, 834, 1581, 1582, 1583, 1615, 734, 735, + 1003, 1188, 1324, 736, 737, 738, 999, 739, 148, 1001, + 741, 1190, 1191, 530, 84, 85 }; -static const short yypact[] = { 134, - 147,-32768,-32768, 10614,-32768, 113, 124, 383, 475, 168, - 235,-32768,-32768, 1317,-32768, 193, 230, 267,-32768,-32768, --32768, 797, 818, 588, 296,-32768, 326, 491,-32768, 3006, - 3006,-32768, 2737,-32768, 10614, 330,-32768,-32768, 365,-32768, - 73, 3940,-32768,-32768, 333, 911, 425, 405, 437,-32768, --32768,-32768,-32768, 325, 2831,-32768, 4345,-32768, 1547, 700, --32768, 467,-32768,-32768, 2099, 254,-32768, 458,-32768,-32768, - 500, 7261,-32768,-32768,-32768, 1031,-32768,-32768,-32768, 1082, --32768,-32768, 359, 6042, 490,-32768,-32768, 9680,-32768, 9680, --32768, 9680,-32768,-32768,-32768, 383, 475, 326, 528, 504, - 585, 437,-32768, 617,-32768, 359, 9766, 9766, 548,-32768, --32768,-32768,-32768,-32768, 255, 592, 522, 741, 760, 594, - 610,-32768,-32768, 1984,-32768, 710, 383, 475,-32768, 326, - 528,-32768, 1230, 1299, 595, 5960, 9680,-32768, 9680, 4453, - 3755,-32768,-32768, 1402, 680, 3755,-32768, 1687, 3899, 3899, - 2737, 559, 569,-32768, 587, 1881, 614, 618,-32768,-32768, - 682,-32768, 582,-32768, 3152,-32768,-32768, 296, 5610, 597, --32768,-32768,-32768, 333, 3414, 10887, 835, 688,-32768,-32768, - 661, 467, 753, 155, 402, 703,-32768,-32768, 662, 98, --32768,-32768, 4138, 4138, 4947, 1031, 868,-32768,-32768, 454, --32768,-32768, 2487,-32768,-32768,-32768,-32768,-32768, 1547, 892, --32768, 467, 1031,-32768,-32768,-32768, 1705, 1547,-32768, 467, --32768, 3414,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 437, 467, 1998, 1822,-32768,-32768, - 458,-32768,-32768,-32768,-32768,-32768, 1038, 359,-32768, 304, - 1529,-32768, 185,-32768,-32768,-32768,-32768,-32768, 4607,-32768, --32768, 803,-32768, 690, 697,-32768,-32768,-32768,-32768, 737, +static const short yypact[] = { 126, + 129,-32768,-32768, 10615,-32768, 110, 77, 203, 259, 176, + 247,-32768,-32768, 1079,-32768, 22, 232, 273,-32768,-32768, +-32768, 418, 1052, 1404, 336,-32768, 357, 452,-32768, 2484, + 2484,-32768, 2672,-32768, 10615, 351,-32768,-32768, 422,-32768, + 175, 4517,-32768,-32768, 391, 209, 478, 488, 455,-32768, +-32768,-32768,-32768, 458, 1898,-32768, 5536,-32768, 938, 211, +-32768, 523,-32768,-32768, 331, 509,-32768,-32768,-32768,-32768, + 533, 3647,-32768,-32768,-32768, 1224,-32768,-32768,-32768, 409, +-32768,-32768, 800, 7914, 527,-32768,-32768, 9681,-32768, 9681, +-32768, 9681,-32768,-32768,-32768, 203, 259, 357, 541, 510, + 605, 455,-32768, 815,-32768, 800, 9767, 9767, 530,-32768, +-32768,-32768,-32768,-32768, 284, 631, 457, 577, 624, 638, + 641,-32768,-32768, 686,-32768, 982, 203, 259,-32768, 357, + 541,-32768, 1244, 1418, 570, 10888, 9681,-32768, 9681, 3446, + 2986,-32768,-32768, 832, 877, 2986,-32768, 1464, 3204, 3204, + 2672, 597, 602,-32768, 643, 1348, 639, 642,-32768,-32768, + 688,-32768, 645,-32768, 1818,-32768,-32768, 336, 5424, 659, +-32768,-32768,-32768, 391, 5857, 10943, 475, 703,-32768,-32768, + 680, 523, 785, 76, 67, 732,-32768,-32768, 700, 191, +-32768,-32768, 4646, 4646, 5138, 1224, 959,-32768,-32768, 535, +-32768,-32768, 1359,-32768,-32768,-32768,-32768,-32768, 938, 1020, +-32768, 523, 1224,-32768,-32768,-32768, 2418, 938,-32768, 523, +-32768, 5857,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 455, 523, 1277, 1579,-32768,-32768, + 755, 755,-32768,-32768,-32768, 1057, 800,-32768, 674, 1215, +-32768, 236,-32768,-32768,-32768,-32768,-32768, 4780,-32768,-32768, + 517,-32768, 731, 734,-32768,-32768,-32768,-32768, 782,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 699,-32768,-32768, 1038, 7261, 650,-32768,-32768, - 727,-32768,-32768, 10374, 10460, 10546, 10546,-32768,-32768,-32768, --32768,-32768, 738, 770, 772, 790, 804, 939, 528, 9852, - 2016, 10546,-32768,-32768, 10546,-32768,-32768, 10546, 7206,-32768, - 10546, 318, 851,-32768, 10546,-32768, 9938,-32768, 11105, 228, - 821, 2403, 10024,-32768, 869, 440,-32768, 685, 927, 1846, --32768, 237,-32768, 1902, 3265, 318, 318, 9680, 5960,-32768, - 2016, 775, 2016,-32768,-32768, 810, 878, 11038, 831, 879, - 887, 1713, 582,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 592, 522, 741, 2016, 760, 594, 918, 610,-32768, - 965,-32768, 1075, 383, 475,-32768,-32768,-32768,-32768,-32768, --32768, 6810,-32768, 3414, 10954, 994,-32768, 318, 581,-32768, --32768, 898,-32768, 961, 971,-32768,-32768,-32768, 3755,-32768, --32768, 3755,-32768, 943,-32768,-32768,-32768, 1881, 1881, 1881, --32768,-32768,-32768, 4607, 97, 947, 951,-32768,-32768,-32768, --32768, 5960,-32768, 973, 984,-32768,-32768, 682,-32768, 467, --32768,-32768,-32768,-32768, 126,-32768,-32768,-32768,-32768, 7781, - 9852,-32768,-32768,-32768, 9852, 978,-32768, 6717, 119, 4618, --32768, 4618,-32768, 4748, 4748, 4947, 985,-32768, 467, 3414, --32768, 989,-32768,-32768, 4855, 1705, 1547, 3414,-32768, 467, --32768,-32768, 467, 1705,-32768, 1065,-32768,-32768, 437,-32768, - 1998,-32768, 1941, 5099, 72, 1038, 467,-32768,-32768, 1027, - 1030, 1052, 1033,-32768,-32768,-32768,-32768, 628,-32768, 247, - 998, 1001,-32768,-32768, 1038,-32768,-32768, 981,-32768,-32768, - 9680, 9852, 727, 7206,-32768, 287, 7206,-32768,-32768,-32768, - 9766, 10998, 10998, 10998, 10998, 11083,-32768,-32768,-32768,-32768, - 1005, 10116, 10116, 7206, 1009, 136, 1013, 1062, 1016,-32768, --32768,-32768,-32768, 9680,-32768, 7320, 7206,-32768, 9852, 9852, - 7872, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, - 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, 9852, --32768, 9852,-32768,-32768,-32768,-32768,-32768, 9852, 9852,-32768, --32768, 6212, 468, 183, 8413,-32768,-32768,-32768, 1071, 1529, - 1119, 362, 413, 463, 2639, 680,-32768, 1170, 1170,-32768, - 3651, 1022, 1042, 1090,-32768,-32768, 543, 8963, 1352,-32768, - 1019, 359,-32768,-32768, 9852,-32768,-32768,-32768,-32768,-32768, - 266, 490,-32768,-32768, 318,-32768, 3414, 2324,-32768, 1080, - 1089,-32768,-32768, 2016, 918,-32768, 8145, 8236,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 61,-32768, 1056, 1044, 582, - 1075, 1097, 9680,-32768, 1094,-32768,-32768, 1299, 1620, 1124, - 433, 1101, 1102,-32768,-32768, 1616, 10887, 1616, 3284, 2099, - 4549,-32768, 1107,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1053, 1068,-32768, 1118,-32768,-32768, 333,-32768,-32768, --32768,-32768, 106, 328, 1123, 1062,-32768,-32768,-32768,-32768, - 7112, 11083,-32768, 878, 1073, 11038,-32768,-32768, 1081,-32768, - 1084, 542, 5731, 1086,-32768, 150, 3420, 1131, 1137, 466, --32768,-32768,-32768, 4618, 4618,-32768, 4855,-32768, 1138,-32768, --32768, 1092, 119,-32768, 1705,-32768,-32768, 467,-32768, 522, - 741,-32768, 1113,-32768, 610, 1149,-32768,-32768, 273,-32768, --32768, 2023,-32768, 664, 825,-32768, 9852, 10692,-32768, 10692, - 241, 241, 447, 541, 4866, 10760, 5486,-32768, 156, 241, - 1145, 467, 6153,-32768, 119, 5039, 9680, 9680,-32768, 9680, - 119, 5039,-32768,-32768,-32768,-32768,-32768,-32768, 1324, 1324, - 1324, 318, 1110, 1114, 9331, 1090, 1115, 1117, 1129, 1134, - 3596, 1140, 1146, 1169,-32768, 1139,-32768,-32768, 1141,-32768, --32768, 1183, 283, 795, 92, 469, 9852, 1196,-32768, 1202, - 1151, 11083, 11083,-32768,-32768, 1204, 6378, 6411, 6614, 11008, - 3061, 3485, 3796, 2854, 2854, 2854, 1373, 1373, 1148, 1148, - 532, 532, 532,-32768,-32768, 1154, 1160, 1158, 9852, 9766, --32768, 468,-32768, 7781, 9852,-32768,-32768,-32768, 9852,-32768, --32768, 1176, 10546, 1166, 1191, 1211, 1234,-32768, 9852,-32768, - 9852,-32768, 9852, 2254,-32768, 2254,-32768, 162, 1180, 1185, --32768, 1187, 10998, 119,-32768, 119, 2810,-32768, 5039, 1190, - 9147, 9147, 5316, 1186, 9938, 1188, 1881, 3529, 3265, 1195, - 1198,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 9852, 2016, - 1182, 1089,-32768, 11083,-32768, 11083, 1713, 1199, 10202,-32768, - 1203, 1249,-32768, 318,-32768,-32768,-32768,-32768,-32768, 1810, - 6810,-32768, 10998, 9680, 1977, 1977, 4216,-32768,-32768,-32768, --32768, 2487,-32768,-32768,-32768, 884, 9852,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 333,-32768, 592,-32768, - 760, 594, 9852, 1252,-32768, 578, 583, 651, 1062,-32768, - 88,-32768, 84,-32768,-32768,-32768,-32768,-32768,-32768, 9055, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 1137, 1255,-32768, --32768,-32768, 10998,-32768,-32768,-32768, 1261,-32768, 9766,-32768, --32768,-32768,-32768, 1602,-32768, 5039, 11083,-32768, 836,-32768, - 467, 467,-32768,-32768,-32768,-32768,-32768, 5039, 334, 811, - 9852, 1065,-32768, 1254,-32768,-32768,-32768, 211, 352, 1082, - 680, 364, 241, 1268,-32768, 556,-32768,-32768,-32768, 467, --32768,-32768, 8481,-32768, 1226, 318, 318, 318,-32768, 1228, - 119, 5039, 119, 5039,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1244, 1248, 1257, 1258, 1053,-32768, 6933, - 7781, 7414, 1233,-32768, 9852,-32768,-32768,-32768, 1253, 1259, - 1260, 10998,-32768,-32768, 1262, 214, 423, 423, 1265, 423, --32768,-32768, 10546, 1355, 9680,-32768, 1269, 1275, 1277,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 119, 1280,-32768, - 1278,-32768,-32768, 3668,-32768,-32768,-32768,-32768,-32768, 11083, --32768,-32768, 1256,-32768,-32768, 151, 1283,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 2225, 2225, 2666, 2666, 4216,-32768, - 2487,-32768, 2960, 11105,-32768,-32768,-32768, 1284,-32768, 328, --32768, 9852,-32768, 9852,-32768, 9852,-32768, 2016,-32768,-32768, - 6871, 1333,-32768, 7505,-32768, 9239, 9239, 5831, 188, 1287, - 294,-32768, 7781, 7596,-32768,-32768, 166, 7781,-32768, 1288, - 1289, 1941,-32768,-32768,-32768, 119, 1290,-32768, 1336, 1336, - 119, 1301, 9852, 9852, 4666, 467, 5218, 467, 467, 1200, - 467, 5335, 1336,-32768,-32768,-32768, 1358,-32768,-32768,-32768, - 1307,-32768, 1310, 9852, 9852, 9852, 9852, 7781,-32768, 1359, --32768,-32768, 11083,-32768,-32768,-32768, 533, 1260,-32768,-32768, --32768,-32768,-32768,-32768, 1311,-32768, 1377, 318,-32768,-32768, --32768, 119,-32768,-32768,-32768,-32768,-32768,-32768, 9852,-32768, --32768, 2225, 2225,-32768, 2960,-32768,-32768, 1320, 1322, 1323, - 1337,-32768, 990, 206, 1370, 871, 902,-32768,-32768,-32768, --32768,-32768, 9852, 1372, 1375, 1376, 9417, 606, 2016, 655, - 442,-32768,-32768, 9508, 1431,-32768,-32768,-32768, 1382,-32768, - 5376, 10828, 4008, 6334,-32768,-32768, 1428,-32768,-32768,-32768, - 8574,-32768,-32768, 1339, 641,-32768,-32768,-32768,-32768, 10998, --32768,-32768, 7781,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 4666, 4666,-32768, 1336, 545, 915, 9852,-32768, --32768,-32768, 1065, 1065, 1336, 1336, 628, 1336,-32768,-32768, - 6555, 119, 119,-32768,-32768, 1341, 1354, 1356, 1360,-32768, - 7781, 9852,-32768, 533,-32768,-32768,-32768,-32768, 119, 1361, --32768,-32768,-32768,-32768, 1337,-32768, 2016,-32768,-32768,-32768, --32768,-32768,-32768, 684, 684, 1062, 1380, 1381, 6461,-32768, --32768,-32768,-32768, 1417, 9852, 1420, 1419, 1412, 2034, 2055, --32768, 1062,-32768,-32768, 1394,-32768,-32768, 1065, 1004,-32768, - 1006, 1065, 9594, 1012, 240,-32768,-32768,-32768,-32768,-32768, --32768, 360,-32768,-32768, 119, 119,-32768,-32768,-32768, 9852, - 9852, 4666, 467, 467,-32768,-32768,-32768,-32768, 8327,-32768, --32768,-32768,-32768, 119, 119,-32768,-32768,-32768,-32768,-32768, - 1387,-32768,-32768,-32768, 1399,-32768,-32768,-32768, 9766,-32768, --32768,-32768, 1482, 8870, 7021, 9766, 9852,-32768, 8682,-32768, - 1442,-32768,-32768, 1447,-32768, 1412, 2034,-32768,-32768, 682, --32768,-32768, 10288, 10288, 7690,-32768,-32768, 1062,-32768,-32768, - 4666, 4666,-32768, 1336, 1336, 1404, 10993, 1415,-32768,-32768, --32768, 10941,-32768,-32768, 1401, 510, 3414, 1062, 8776,-32768, --32768, 88,-32768,-32768, 1456, 1409, 11061, 8682,-32768,-32768, --32768,-32768, 1337, 68,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 425, 333, 1418, 1423, 1062,-32768, 1065,-32768, --32768,-32768,-32768, 693,-32768, 7963,-32768,-32768,-32768,-32768, - 1337, 1509, 1463, 169,-32768,-32768,-32768,-32768, 467, 88, --32768, 9852, 1465,-32768, 1468,-32768, 1062, 8682, 1443, 742, - 1486,-32768,-32768,-32768, 126,-32768, 1477,-32768, 1439,-32768, --32768,-32768,-32768, 9852, 1509, 1488, 1509,-32768,-32768,-32768, - 8054, 1445, 754,-32768,-32768, 7781, 1449,-32768, 1538, 1500, --32768,-32768,-32768, 184,-32768, 8776, 1551, 1503,-32768,-32768, --32768, 1568, 1569,-32768 +-32768, 739,-32768,-32768, 1057, 3647, 988,-32768,-32768, 762, +-32768,-32768, 10375, 10461, 10547, 10547,-32768,-32768,-32768,-32768, +-32768, 777, 801, 810, 818, 824, 343, 541, 9853, 1772, + 10547,-32768,-32768, 10547,-32768,-32768, 10547, 7116,-32768, 10547, + 712, 817,-32768, 10547,-32768, 9939,-32768, 11183, 263, 1821, + 4581, 10025,-32768, 890, 3298,-32768, 1940, 1624, 2321,-32768, + 335,-32768, 2792, 1755, 712, 712, 9681, 10888,-32768, 1772, + 804, 1772,-32768,-32768, 813, 859, 11116, 831, 845, 853, + 900, 645,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 631, 457, 577, 1772, 624, 638, 849, 641,-32768, 909, +-32768, 2246, 203, 259,-32768,-32768,-32768,-32768,-32768,-32768, + 10997,-32768, 5857, 11054, 2230,-32768, 712, 802,-32768,-32768, + 584,-32768, 891, 903,-32768,-32768,-32768, 2986,-32768,-32768, + 2986,-32768, 896,-32768,-32768,-32768, 1348, 1348, 1348,-32768, +-32768,-32768, 4780, 112, 899, 901,-32768,-32768,-32768,-32768, + 10888,-32768, 1062, 1102,-32768,-32768, 688,-32768, 523,-32768, +-32768,-32768,-32768, 115,-32768,-32768,-32768,-32768, 7574, 9853, +-32768,-32768,-32768, 9853, 916,-32768, 6915, 101, 4970,-32768, + 4970,-32768, 5273, 5273, 5138, 923,-32768, 523, 5857,-32768, + 918,-32768,-32768, 5303, 2418, 938, 5857,-32768, 523,-32768, +-32768, 523, 2418,-32768, 1022,-32768,-32768, 455,-32768, 1277, +-32768,-32768,-32768, 5647, 100, 1057, 523,-32768,-32768, 973, + 980, 1007, 998,-32768,-32768,-32768,-32768, 753,-32768, 394, + 958, 963,-32768,-32768, 1057,-32768,-32768, 661,-32768,-32768, + 9681, 9853, 762, 7116,-32768, 449, 7116,-32768,-32768,-32768, + 9767, 4022, 4022, 4022, 4022, 11161,-32768,-32768,-32768,-32768, + 979, 10117, 10117, 7116, 983, 168, 987, 1042, 1006,-32768, +-32768,-32768,-32768, 9681,-32768, 6244, 7116,-32768, 9853, 9853, + 7665, 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9853, + 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9853, 9853, +-32768, 9853,-32768,-32768,-32768,-32768,-32768, 9853, 9853,-32768, +-32768, 886, 378, 524, 8274,-32768,-32768,-32768, 1064, 1215, + 1108, 499, 578, 587, 2940, 877,-32768, 2114, 2114,-32768, + 5068, 1019, 1061, 1109,-32768,-32768, 565, 8964, 1214,-32768, + 995, 800,-32768,-32768, 9853,-32768,-32768,-32768,-32768,-32768, + 355, 527,-32768,-32768, 712,-32768, 5857, 2362,-32768, 1099, + 1118,-32768,-32768, 1772, 849,-32768, 8006, 8097,-32768,-32768, +-32768,-32768,-32768,-32768,-32768, 137,-32768, 1090, 1081, 645, + 2246, 1140, 9681,-32768, 1145,-32768,-32768, 1418, 1440, 1164, + 395, 1143, 1148,-32768,-32768, 2103, 10943, 2103, 4337, 331, + 3702,-32768, 1158,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1117, 1119,-32768, 1168,-32768,-32768, 391,-32768,-32768, +-32768,-32768, 116, 318, 1167, 1042,-32768,-32768,-32768,-32768, + 7006, 11161,-32768, 859, 1126, 11116,-32768,-32768, 1127,-32768, + 1128, 384, 6051, 1130,-32768, 314, 5716, 1175, 1177, 607, +-32768,-32768,-32768, 4970, 4970,-32768, 5303,-32768, 1179,-32768, +-32768, 1134, 101,-32768, 2418,-32768,-32768, 523,-32768, 2778, +-32768, 921, 456,-32768, 9853, 10693,-32768, 10693, 121, 121, + 177, 665, 3193, 10761, 8342,-32768, 169, 121, 1182, 523, + 8412,-32768, 101, 6183, 9681, 9681,-32768, 9681, 101, 6183, +-32768,-32768,-32768,-32768,-32768,-32768, 699, 699, 699, 712, + 1149, 1151, 9332, 1109, 1152, 1155, 1157, 1194, 2848, 1199, + 1202, 1204,-32768, 1178,-32768,-32768, 1185,-32768,-32768, 1228, + 620, 791, 66, 96, 9853, 1235,-32768, 1239, 1196, 11161, + 11161,-32768,-32768, 1248, 3488, 6078, 4671, 6829, 11090, 6609, + 4141, 2007, 2007, 2007, 2386, 2386, 941, 941, 748, 748, + 748,-32768,-32768, 1198, 1203, 1206, 9853, 9767,-32768, 378, +-32768, 7574, 9853,-32768,-32768,-32768, 9853,-32768,-32768, 1219, + 10547, 1207, 1227, 1246, 1281,-32768, 9853,-32768, 9853,-32768, + 9853, 2551,-32768, 2551,-32768, 82, 1221, 1222,-32768, 1229, + 4022, 101,-32768, 101, 3146,-32768, 6183, 1232, 9148, 9148, + 6469, 1230, 9939, 1231, 1348, 2216, 1755, 1072, 1238,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 9853, 1772, 1236, 1118, +-32768, 11161,-32768, 11161, 900, 1245, 10203,-32768, 1243, 1287, +-32768, 712,-32768,-32768,-32768,-32768,-32768, 1968, 10997,-32768, + 4022, 9681, 2122, 2122, 5193,-32768,-32768,-32768,-32768, 1359, +-32768,-32768,-32768, 932, 9853,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 391,-32768, 631, 457, 577,-32768, + 624, 638, 9853, 1296,-32768, 668, 641, 682, 705, 1813, + 1042,-32768, 78,-32768, 155,-32768,-32768,-32768,-32768,-32768, +-32768, 9056,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1177, + 1295,-32768,-32768,-32768, 4022,-32768,-32768,-32768, 1297,-32768, + 1267,-32768, 1307,-32768,-32768, 106,-32768,-32768,-32768, 6183, + 11161,-32768, 1692,-32768, 523, 523,-32768,-32768,-32768,-32768, +-32768, 6183, 496, 904, 9853, 1022,-32768, 1310,-32768,-32768, +-32768, 224, 586, 409, 877, 772, 121, 1311,-32768, 816, +-32768,-32768,-32768, 523,-32768,-32768, 8482,-32768, 1263, 712, + 712, 712,-32768, 1268, 101, 6183, 101, 6183,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1284, 1288, 1291, + 1292, 1117,-32768, 11049, 7574, 7207, 1271,-32768, 9853,-32768, +-32768,-32768, 1282, 1285, 1286, 4022,-32768,-32768, 1290, 212, + 1777, 1777, 1279, 1777,-32768,-32768, 10547, 1387, 9681,-32768, + 1293, 1298, 1303,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 101, 1304,-32768, 1306,-32768,-32768, 2930,-32768,-32768, +-32768,-32768,-32768, 11161,-32768,-32768, 1294,-32768,-32768, 173, + 1312,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 3044, 3044, + 3592, 3592, 5193,-32768, 1359,-32768, 4042, 11183,-32768,-32768, +-32768, 1317,-32768, 318,-32768, 9853,-32768, 9853,-32768, 9853, +-32768, 1772,-32768,-32768, 6696, 1363,-32768, 7298,-32768, 9240, + 9240, 6804, 196, 1318, 400,-32768, 7574, 7389,-32768,-32768, + 188, 7574,-32768,-32768, 9767,-32768,-32768,-32768,-32768, 1595, + 101, 1321,-32768, 1350, 1350, 101, 1325, 9853, 9853, 4694, + 523, 4333, 523, 523, 1094, 523, 5812, 1350,-32768,-32768, +-32768, 1380,-32768,-32768,-32768, 1329,-32768, 1332, 9853, 9853, + 9853, 9853, 7574,-32768, 1389,-32768,-32768, 11161,-32768,-32768, +-32768, 521, 1286,-32768,-32768,-32768,-32768,-32768,-32768, 1331, +-32768, 1402, 712,-32768,-32768,-32768, 101,-32768,-32768,-32768, +-32768,-32768,-32768, 9853,-32768,-32768, 3044, 3044,-32768, 4042, +-32768,-32768, 1344, 1345, 1349, 1360,-32768, 1106, 241, 1400, + 1049, 1093,-32768,-32768,-32768,-32768,-32768, 9853, 1401, 1405, + 1417, 9418, 376, 1772, 347, 502,-32768,-32768, 9509, 1455, +-32768,-32768,-32768, 1419,-32768, 5314, 10829, 3813, 6585,-32768, +-32768, 1462,-32768,-32768,-32768, 8575,-32768,-32768, 1373, 608, +-32768,-32768,-32768,-32768, 4022,-32768,-32768, 7574, 1375, 1381, + 2778,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 4694, 4694,-32768, 1350, 614, 1122, 9853,-32768,-32768,-32768, + 1022, 1022, 1350, 1350, 753, 1350,-32768,-32768, 6341, 101, + 101,-32768,-32768, 1383, 1385, 1391, 1399,-32768, 7574, 9853, +-32768, 521,-32768,-32768,-32768,-32768, 101, 1407,-32768,-32768, +-32768,-32768, 1360,-32768, 1772,-32768,-32768,-32768,-32768,-32768, +-32768, 754, 754, 1042, 1395, 1424, 3882,-32768,-32768,-32768, +-32768, 1450, 9853, 1459, 1460, 1472, 1879, 1890,-32768, 1042, +-32768,-32768, 1439,-32768,-32768, 1022, 1113,-32768, 1133, 1022, + 9595, 1156, 248,-32768,-32768,-32768,-32768,-32768,-32768, 514, +-32768,-32768,-32768,-32768,-32768, 101, 101,-32768,-32768,-32768, + 9853, 9853, 4694, 523, 523,-32768,-32768,-32768,-32768, 8188, +-32768,-32768,-32768,-32768, 101, 101,-32768,-32768,-32768,-32768, +-32768, 1431,-32768,-32768,-32768, 1453,-32768,-32768,-32768, 9767, +-32768,-32768,-32768, 1526, 8871, 4910, 9767, 9853,-32768, 8683, +-32768, 1489,-32768,-32768, 1496,-32768, 1472, 1879,-32768,-32768, + 688,-32768,-32768, 10289, 10289, 7483,-32768,-32768, 1042,-32768, +-32768, 4694, 4694,-32768, 1350, 1350, 1444, 11071, 1457,-32768, +-32768,-32768, 11010,-32768,-32768, 1447, 591, 5857, 1042, 8777, +-32768,-32768, 78,-32768,-32768, 1492, 1454, 11139, 8683,-32768, +-32768,-32768,-32768, 1360, 97,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 478, 391, 1458, 1461, 1042,-32768, 1022, +-32768,-32768,-32768,-32768, 769,-32768, 7756,-32768,-32768,-32768, +-32768, 1360, 1550, 1507, 179,-32768,-32768,-32768,-32768, 523, + 78,-32768, 9853, 1513,-32768, 1516,-32768, 1042, 8683, 1484, + 760, 1520,-32768,-32768,-32768, 115,-32768, 1524,-32768, 1483, +-32768,-32768,-32768,-32768, 9853, 1550, 1530, 1550,-32768,-32768, +-32768, 7847, 1485, 778,-32768,-32768, 7574, 1493,-32768, 1569, + 1532,-32768,-32768,-32768, 189,-32768, 8777, 1591, 1544,-32768, +-32768,-32768, 1605, 1606,-32768 }; static const short yypgoto[] = {-32768, - 1572,-32768, -314, 1403, -401, 39, 2, 1574,-32768, 1542, --32768,-32768, 120,-32768, 252,-32768, 486,-32768, 191, 908, - 57, 9,-32768,-32768, -614,-32768,-32768, 643, 64, 1426, - 1161, 1437, -697, 67, -172, 20, -35,-32768,-32768,-32768, --32768,-32768, 822,-32768,-32768,-32768,-32768,-32768,-32768, 434, - 1848,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1517, -626, 6173, -70, -491, 74, -73, 1490, - -541,-32768, 363,-32768, 221,-32768, -1357,-32768, -1384, 15, --32768, 2213, 1279, -255, 385, -529,-32768, -830, 3900, 1424, - 1207, 4286, 1335, -328, -56, -79, 1613, -147, -51, 0, --32768,-32768,-32768, -330,-32768, -160,-32768,-32768, -1213, -39, - -334, 3372, 83, 1441, -148, 65, 31, -201, -4, -120, - -168, -165, 25, 66, 46,-32768, -350,-32768,-32768,-32768, --32768,-32768, -5, 1208, -30,-32768, 698,-32768,-32768, -952, - -413, 919,-32768,-32768,-32768,-32768,-32768, 80,-32768,-32768, --32768,-32768,-32768, 707, -366,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1400,-32768, 443, 620,-32768,-32768,-32768,-32768, --32768, 855, -695,-32768,-32768,-32768,-32768,-32768,-32768, 863, --32768, 428, 997, 722, 1051, 2738, 10, 60, -454, 1454, - 1818, -473,-32768, 7,-32768, 17, 1406, -146, 96, -76, - 4791, 1315,-32768, 5548, 2440, 1788, -18, -106,-32768, 1540, - -59,-32768, 4983, 3380, -219,-32768, 2934,-32768,-32768, 348, --32768,-32768, 483, 81, -421,-32768,-32768,-32768,-32768, -1354, --32768, -1225, -1396,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 105,-32768,-32768, --32768,-32768,-32768, 138, -1310,-32768,-32768, -24,-32768,-32768, --32768,-32768, -1373, 90,-32768, 82,-32768, -691, -565, 681, --32768,-32768,-32768,-32768, -378,-32768, -376, -185,-32768, 1735, - 358,-32768, 195,-32768, -239 + 1608,-32768, -321, 1441, -379, 83, 7, 1607,-32768, 1575, +-32768,-32768, 348,-32768, 423,-32768, 480,-32768, 206, 945, + 57, 5,-32768,-32768, -629,-32768,-32768, 681, 59, 1465, + 1181, 1466, -705, 79, -172, 23, 40,-32768,-32768,-32768, +-32768,-32768, 852,-32768,-32768,-32768,-32768,-32768,-32768, 466, + 2100,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1545, -614, 5775, -55, -535, -49, -63, 1501, + -518,-32768, 365,-32768, 250,-32768, -1375,-32768, -1306, 30, +-32768, 2949, 1841, -282, 407, -544,-32768, -816, 3540, 783, + 1482, 4109, 1355, -330, -66, -85, 49, -139, -54, 6, +-32768,-32768,-32768, -341,-32768, -160,-32768,-32768, -1210, 50, + -328, 1691, 149, 747, -145, 10, 58, -203, -4, -122, + -167, -169, 14, -10, 323,-32768, -353,-32768,-32768,-32768, +-32768,-32768, 592, 1237, 55,-32768, 736,-32768,-32768, -1098, + -443, 935,-32768,-32768,-32768,-32768,-32768, 221,-32768,-32768, +-32768,-32768,-32768, 743, -364,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 1425,-32768, 328, 468,-32768,-32768,-32768, +-32768,-32768, 892, -697,-32768,-32768,-32768,-32768,-32768,-32768, + 898,-32768, 459, 1025, 766, 1083, 2985, 28, 31, -453, + 1487, 1849, -681,-32768, 41,-32768, 1256, 1077, -146, 17, + -99, 4676, 1343,-32768, 5050, 2478, 109, -18, -114,-32768, + 1566, -52,-32768, 4867, 3296, -120,-32768, 2722,-32768,-32768, + 382,-32768,-32768, 525, 107, -324,-32768,-32768,-32768,-32768, + -1380,-32768, -1218, -1399,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 134,-32768, +-32768,-32768,-32768,-32768, 171, -1308,-32768,-32768, -43,-32768, +-32768,-32768,-32768, -1395, 111,-32768, 104,-32768, -580, -598, + 709,-32768,-32768,-32768,-32768, -386,-32768, -382, -467,-32768, + 2023, 388,-32768, 346,-32768, -232 }; -#define YYLAST 11189 +#define YYLAST 11267 static const short yytable[] = { 59, - 435, 443, 420, 423, 122, 36, 444, 487, 432, 253, - 445, 513, 42, 72, 629, 196, 356, 989, 357, 392, - 103, 208, 831, 692, 639, 693, 638, 752, 256, 770, - 59, 224, 155, 719, 58, 690, 36, 59, 708, 141, - 146, 1103, 35, 42, 72, 506, 723, 147, 535, 538, - 42, 72, 209, 398, 399, 900, 503, 400, 669, 298, - 486, 174, 900, 408, 391, 58, 177, 247, 57, 494, - 971, 870, 58, 35, 1466, 965, 397, 1521, 607, 296, - 169, 568, 1028, 349, 1030, 349, 55, 349, 1428, 260, - 1413, 1057, 256, 297, 525, 1431, 492, 495, 170, 57, - 403, 1525, 349, 349, 1065, 171, 176, 607, 791, 224, - 1070, 182, 364, 190, 295, 642, 607, 55, 1526, 937, - 1178, 178, 1553, 38, 175, 224, 716, 516, 158, 1562, - 163, 406, 349, -1, 349, 196, 829, 1555, 221, 757, - 208, 249, 1184, 1535, 467, 72, -2, 525, 155, 155, - 155, 256, 923, -143, 38, 452, 794, 411, 419, 422, - 59, 1002, 413, 1550, 59, 137, 58, 902, 938, 1584, - 164, 209, 86, 997, 72, 1563, 449, 42, 72, 740, - 792, 224, 591, 717, 440, 1588, 127, 128, 174, 224, - 468, 520, 1185, 177, 155, 58, 1179, 88, 1576, 58, - 405, 816, 470, 472, 705, 224, 972, 169, 1003, 1269, - 147, 1004, -354, 978, 190, 1058, 453, 1129, 404, 1553, - 998, 87, 1592, 999, 1330, 170, -354, 1607, 592, 57, - 453, 514, 171, 176, -300, -363, 26, 15, 130, 131, - 987, 93, 1617, -293, 158, 158, 158, 55, 178, 454, - 1466, 175, 877, 1529, 260, 39, 1339, 1340, 1270, 190, - 617, 1523, 878, 454, 1059, 1389, 613, 15, -363, 830, - 1360, -413, -363, 1331, 591, 517, 879, 515, 490, 1022, - -300, -300, 94, 634, 645, 107, 39, 713, 221, 612, - 158, 1618, 247, 805, 990, -293, 221, 221, 1136, 1389, - -413, 1139, 1560, 308, -413, -363, 815, 976, 977, 1023, - 639, 239, 374, 950, 1390, 240, 677, 604, 375, 26, - 592, 1250, 108, 646, 349, 672, 221, 420, 423, 635, - 979, 760, 761, 617, 1207, 1151, 89, 296, 755, 806, - -623, 1102, 1165, 1166, -141, 247, 1212, 900, 1497, -413, - 508, 297, 1593, 349, 648, 941, 90, 91, 692, 109, - 1008, 260, 8, 9, 695, 492, 495, 1057, 72, 135, - 513, -581, 295, 492, 980, 221, -364, 92, 15, 815, - 1231, 26, 1233, 981, 982, 495, -623, -623, -120, 58, - 15, 900, 561, 1439, 562, 1213, 509, 689, 629, 137, - 209, -623, 1445, 1446, 495, 1447, -302, 88, 888, -364, - 680, 691, 1154, -364, 130, 131, 1373, -581, 189, 224, - 983, -120, 161, 405, 162, -120, 127, 128, 221, 643, - 644, 516, 688, 784, 900, 700, 89, 59, 701, 179, - 608, 647, 300, 394, 395, 10, -364, 609, 459, 183, - 704, 72, -302, -302, 889, 1131, 90, 812, -120, 890, - 1104, 710, 224, 733, 187, 460, 177, -296, 781, 366, - 370, 1033, 58, 155, 155, 155, 26, 691, 130, 131, - 21, 698, 699, 744, 745, 221, 411, 610, 413, 40, - 188, 951, 877, 26, 461, 27, 319, 18, 688, 59, - -581, 517, 878, 1411, 1034, 891, 176, 952, 1035, 892, - 1266, 1267, 1012, 72, 873, 137, 879, 215, 216, 242, - 40, 178, 138, 14, 175, 750, 349, 611, 91, 349, - -144, 874, 349, 756, 58, 975, 349, 821, 821, 821, - 821, 1036, 778, 1462, 138, 20, -581, 482, 92, 349, - 770, 1538, 1539, 997, 23, 893, 617, 244, 1013, 349, - 875, 758, 349, 299, 139, 221, 221, 1177, 786, 158, - 158, 158, 692, 221, 693, 377, 1018, 604, 1020, 873, - -118, 138, 15, 1024, 690, 221, 785, 1037, 639, 908, - 638, 127, 128, 900, 677, 90, 874, 296, 946, 944, - 998, 947, 815, 999, 221, -826, 1440, 926, 95, 110, - 111, 297, 360, -118, 589, 590, 689, -118, 88, 525, - 8, 9, 900, 733, 1171, 875, 1372, 894, 896, 1173, - 691, 129, 295, 1038, 492, 909, 910, 691, 260, 564, - 372, 26, 362, 130, 131, 376, 958, 380, 963, 964, - -118, 688, -302, 127, 128, 561, 1255, 562, 688, 568, - 122, 112, 113, 381, 363, 392, -293, -302, 349, 401, - 1172, -302, 130, 131, 803, 1174, 425, 1239, 1241, 642, - 189, 91, 209, 127, 128, 1405, 247, -302, 127, 128, - -7, 555, 303, 964, 164, 988, 987, 1175, 129, -302, - -302, 92, -302, 26, -302, 130, 131, 784, 26, 784, - 1025, 1408, 116, 117, 118, 784, 784, 91, 924, 526, - 804, 433, 784, 1066, 1067, -618, 1068, 221, 770, 527, - 1468, 617, 689, -302, -302, 130, 131, 92, 26, 1571, - 130, 131, 781, 1176, 781, 1043, 691, 447, -302, 1042, - 1052, 781, 1017, 448, 618, 451, 1026, 781, 222, 223, - 700, 701, 463, 704, 619, 119, 120, 688, 221, 432, - 1241, 816, 464, 59, 620, 59, 1469, 621, 622, 1326, - 1328, 209, 59, 521, 1332, 1572, 1062, 72, 59, 72, - 522, 689, 349, 349, 378, 349, 72, 689, 523, 95, - 110, 111, 72, 1595, 1167, 691, 8, 518, 58, 524, - 58, 691, 221, 379, 92, 1609, 778, 58, 778, 532, - 116, 117, 118, 58, 1370, 778, 688, 727, 127, 128, - 541, 778, 688, 137, 221, 1202, 1203, 1204, 1039, 1040, - 9, 10, 786, 542, 786, 543, 1031, 1032, 91, 1596, - 363, 786, 112, 113, 114, 1060, -142, 786, 130, 131, - 785, 1610, 1029, 544, 89, 349, 1585, 593, 92, 785, - 1106, 26, 1214, 119, 120, 785, 21, 545, 26, 607, - 130, 131, 519, 653, 90, 1078, 224, 1251, 1252, 26, - 1254, 27, 28, 222, 446, 1208, 555, 1041, 821, 555, - 221, 127, 128, 818, 689, 193, 594, 595, 733, 564, - 256, 596, 597, 598, 599, 194, 555, 656, 691, 1434, - 894, 896, 691, 32, 89, 260, 480, 481, 195, 555, - 127, 128, 1392, 845, 215, 216, 657, 15, 659, 688, - 14, -413, -52, 688, 90, 363, 689, -52, 821, 349, - 488, 489, 689, 130, 131, 91, 155, 1460, -52, 680, - 691, 868, 20, 1393, 1155, 1156, 691, 884, 89, -413, - -413, 23, 147, 617, 1472, 92, 1441, 519, 816, 253, - 26, 688, 130, 131, 127, 128, 660, 688, 90, 1043, - 1489, 673, 784, 1042, 661, 733, 618, -181, 256, 155, - 214, 215, 216, 1075, 1076, 1077, 619, 14, 821, 691, - 420, 423, 137, -181, 349, -181, 620, 1150, 674, 628, - 622, 689, 8, 9, 18, 1209, 1210, 781, 363, 20, - 688, 480, 711, 689, 90, 691, 130, 131, 23, 420, - 423, 1258, 488, 712, 92, 215, 216, 691, 1387, 1388, - 702, 14, 158, 696, 1223, -6, 688, 15, 59, 706, - 252, -413, 480, 1491, 488, 1492, 363, 689, 688, 689, - 480, 1496, 72, 20, 130, 131, 1472, 300, 394, 395, - 10, 691, 23, 691, 7, 8, 250, 10, 728, -413, - -413, 15, 746, 58, -413, 158, 1472, 821, 252, 751, - 797, 778, 688, 798, 688, 799, 800, 1216, 807, 256, - 349, 808, 825, 1218, 1219, 21, 827, 1216, 1221, 717, - 828, 1219, 21, 830, 885, 1568, 887, 786, 26, 251, - 27, 319, 901, 692, 903, 1546, 905, 27, 28, 1226, - 1227, 1228, 1419, 929, 1424, 785, 1421, 930, 939, 520, - 943, 988, 940, 945, 689, 1472, 155, 155, 155, 20, - -296, 252, 32, 719, 953, 954, 1272, 1273, 691, 32, - 967, 411, 413, 127, 128, 973, 1313, 974, 13, 517, - 994, 816, 1305, 733, 453, 155, 155, 155, 995, 688, - 72, 996, 1611, 1001, -825, 1272, 1273, 691, 8, 9, - 1010, 1014, 1015, 127, 1357, 1019, 1061, 1021, 1084, 1345, - 1346, 58, 1355, 1356, 1085, 1358, 617, 1079, 688, 1304, - 1086, 1080, 1081, 26, 1082, 130, 131, 586, 587, 588, - 589, 590, 300, 394, 395, 10, 1083, 140, 140, 618, - 156, 1109, 363, 1087, -140, 1312, 1088, 363, 1089, 619, - 130, 131, 158, 158, 158, 130, 131, 1091, 1094, 620, - 1092, 1096, 621, 622, 212, 1095, 220, 1097, 1098, 1111, - 21, 1418, 236, 1418, 519, 555, 1113, 251, 1114, 519, - 1116, 158, 158, 158, 1115, 27, 319, 1122, 700, 701, - 1142, 704, 1123, 1132, 339, 1133, 339, 1124, 339, 1313, - 1130, 300, 394, 395, 10, 1135, 1145, 209, 1149, 1313, - 1170, 1148, 1217, 72, 525, 1305, 1313, 32, 1193, 95, - 96, 97, 1305, 72, 1199, 821, 1222, 127, 128, 1534, - 72, 1377, 516, 1225, 58, 1229, 1234, 1437, 1438, 21, - 1235, 1242, 1304, 339, 58, 339, 420, 423, 140, 1236, - 1237, 58, 1304, 140, 27, 319, 156, 156, 156, 1304, - -577, 1244, 1257, -577, 1268, 1178, 1245, 1246, 1312, 1249, - 26, 1565, 98, 99, 100, 1253, 1259, 26, 1312, 130, - 131, 1200, 1260, 212, 1261, 1312, 32, 1264, 1265, 450, - 1271, 1276, 221, 526, 1325, 1334, 1335, 1338, 905, 460, - 140, 140, 156, 527, 7, 127, 128, 10, 1342, 76, - -577, -660, -577, -577, 1364, -577, 220, 1365, 1443, 1444, - 1371, 1375, 155, 1376, 493, 220, -577, 1381, -577, 1382, - 1383, 1391, 1384, 1400, 1401, 1402, 1503, 1504, 1505, 1414, - 76, 1416, 21, 1429, -577, -577, 1432, 76, 1456, 251, - 584, 585, 586, 587, 588, 589, 590, 27, 28, -577, - 201, 1457, 213, 1458, 1516, 1483, 140, 1459, 1464, 1313, - 1313, 1516, 1475, 1476, 1313, 1305, 1480, 1549, 297, 1482, - 1305, 252, 375, 72, 72, 297, 1490, 490, 72, 32, - 349, 1512, 155, 155, 155, 1536, 1537, 1511, 1520, 295, - 1531, 1530, 744, 745, 58, 58, 295, 689, 1548, 58, - 1540, 1542, 1304, 1304, 1313, 1557, 1558, 1304, 158, 1579, - 1305, 691, 1583, 1313, 1590, 1566, 546, 1591, 72, 1305, - 1567, 95, 110, 111, 510, 1594, 156, 72, 1312, 1312, - 1599, 407, 688, 1312, 1597, 410, 1600, 1604, 1613, 58, - 555, 1516, 1608, 214, 215, 216, 1612, 1304, 58, 1615, - 14, 1620, 1621, 1587, 339, 297, 1304, 1623, 1624, 21, - 76, 1, 442, 1313, 76, 5, 160, 18, 942, 1305, - 201, 213, 20, 1312, 112, 113, 295, 72, 158, 158, - 158, 23, 1312, 1152, 441, 221, 1366, 1367, 1368, 1369, - 1487, 439, 709, 1277, 116, 760, 761, 1053, 58, 1564, - 359, 1313, 212, 220, 1569, 1471, 1304, 1305, 7, 8, - 9, 10, 382, 383, 384, 72, 140, 201, 409, 140, - 1619, 763, 1374, 531, 1144, 156, 156, 156, 1143, 993, - 502, 140, 1312, 1205, 1336, 153, 58, 1063, 1055, 1359, - 932, 1141, 872, 483, 1304, 26, 21, 119, 120, 1404, - 614, 1427, 617, 390, 1322, 1598, 722, 726, 1586, 26, - 1561, 27, 28, 26, 726, 386, 387, 140, 1605, 140, - 1312, 156, 156, 156, 1603, 955, 450, 1433, 1192, 95, - 414, 415, 140, 493, 220, 956, 0, 450, 0, 0, - 0, 493, 0, 32, 0, 620, 0, 0, 957, 622, - 0, 491, 215, 216, 450, 95, 110, 111, 14, 662, - 663, 664, 0, 0, 0, 0, 0, 0, 0, 539, - 540, 0, 0, 0, 1461, 18, 0, 339, 726, 725, - 20, 156, 98, 113, 156, 548, 731, 0, 549, 23, - 0, 550, 0, 0, 560, 0, 0, 0, 565, 156, - 156, 156, 421, 424, 649, 0, 606, 1481, 112, 113, - 339, 0, 722, 0, 156, 842, 843, 0, 847, 848, - 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 0, 726, 0, - 0, 0, 0, 0, 726, 0, 0, 153, 0, 201, - 813, 0, 95, 110, 111, 0, 225, 226, 227, 0, - 0, 0, 0, 0, 95, 96, 97, 0, 0, 0, - 0, 1514, 0, 0, 726, 917, 0, 845, 1514, 0, - 18, 726, 686, 0, 0, 228, 0, 76, 0, 8, - 9, 0, 0, 12, 246, 220, 0, 555, 0, 14, - 0, 101, 0, 934, 936, 112, 113, 258, 0, 115, - 866, 0, 0, 16, 0, 17, 867, 98, 99, 339, - 0, 20, 0, 300, 0, 201, 10, 0, 0, 0, - 23, 258, 617, 201, 212, 0, 220, 236, 0, 26, - 0, 130, 131, 0, 300, 8, 9, 10, 686, 790, - 0, 18, 233, 921, 0, 618, 0, 0, 1514, 0, - 258, 21, 0, 0, 0, 619, 0, 722, 0, 0, - 0, 258, 0, 0, 1589, 620, 426, 427, 621, 622, - 220, 557, 21, 116, 760, 761, 0, 762, 0, 251, - 428, 140, 140, 0, 140, 0, 1602, 27, 319, 0, - 429, 0, 493, 845, 0, 450, 0, 0, 32, 0, - 763, 388, 0, 430, 0, 548, 549, 764, 0, 7, - 8, 9, 10, 1027, 0, 13, 382, 383, 384, 32, - 258, 0, 0, 212, 26, 416, 119, 120, 0, 450, - 95, 96, 97, 339, 339, 0, 339, 18, 0, 0, - 471, 473, 477, 0, 0, 0, 0, 21, 95, 110, - 111, 726, 156, 617, 258, 116, 760, 761, 0, 0, - 26, 385, 27, 28, 0, 0, 95, 110, 111, 386, - 387, 421, 703, 1090, 0, 363, 955, 0, 0, 258, - 0, 0, 201, 98, 99, 0, 956, 95, 110, 111, - 0, 686, 0, 0, 32, 0, 620, 0, 686, 957, - 622, 112, 113, 0, 0, 726, 726, 0, 119, 120, - 722, 726, 0, 0, 498, 500, 0, 421, 424, 112, - 1484, 201, 961, 201, 201, 726, 0, 726, 511, 726, - 0, 95, 96, 97, 0, 225, 226, 227, 0, 0, - 112, 1486, 0, 0, 0, 0, 0, 0, 156, 156, - 917, 0, 0, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 228, 1140, 0, 0, 201, 0, - 0, 258, 1006, 0, 0, 726, 557, 1099, 1100, 557, - 0, 0, 26, 1105, 98, 99, 229, 236, 0, 0, - 339, 0, 140, 140, 917, 421, 826, 1117, 547, 1118, - 0, 1119, 0, 1164, 0, 0, 0, 686, 0, 557, - 0, 0, 0, 790, 0, 790, 0, 0, 0, 726, - 1049, 1056, 790, 0, 0, 0, 0, 0, 790, 258, - 0, 230, 231, 232, 0, 0, 726, 917, 0, 0, - 655, 0, 0, 0, 0, 0, 0, 1147, 0, 665, - 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, - 10, 0, 655, 246, 0, 0, 686, 0, 450, 450, - 916, 0, 686, 0, 0, 0, 0, 1215, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 127, 128, 0, - 0, 1168, 246, 0, 0, 21, 0, 450, 0, 0, - 0, 617, 0, 0, 0, 0, 0, 0, 26, 0, - 27, 28, 0, 0, 0, 0, 0, 742, 258, 743, - 0, 471, 473, 477, 955, 0, 0, 722, 722, 0, - 617, 1243, 754, 0, 956, 0, 1112, 26, 0, 130, - 131, 0, 32, 0, 620, 258, 0, 957, 622, 0, - 0, 339, 0, 618, 0, 0, 0, 0, 0, 0, - 214, 215, 216, 619, 548, 549, 0, 14, 0, 0, - 0, 0, 0, 620, 0, 0, 621, 622, 759, 686, - 0, 0, 0, 686, 18, 0, 0, 0, 0, 20, - 0, 0, 140, 140, 156, 156, 917, 0, 23, 0, - 140, 0, 0, 0, 0, 0, 0, 0, 726, 0, - 726, 0, 726, 927, 0, 0, 0, 0, 0, 0, - 722, 686, 0, 156, 156, 917, 0, 686, 0, 722, - 722, 0, 258, 0, 722, 0, 8, 9, 0, 0, - 12, 13, 0, 838, 0, 0, 14, 0, 258, 1343, - 1344, 0, 450, 450, 0, 450, 450, 916, 450, 0, - 16, 0, 17, 0, 1049, 0, 0, 0, 20, 0, - 686, 0, 0, 80, 722, 0, 0, 23, 0, 0, - 1278, 0, 1279, 104, 1280, 0, 26, 886, 130, 131, - 600, 0, 0, 133, 0, 0, 686, 0, 790, 144, - 144, 0, 144, 0, 80, 726, 0, 0, 686, 140, - 140, 80, 140, 0, 0, 0, 0, 1016, 0, 7, - 8, 9, 10, 0, 203, 601, 80, 0, 0, 1399, - 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, - 0, 104, 686, 0, 686, 0, 0, 0, 0, 212, - 220, 0, 262, 104, 421, 826, 949, 21, 0, 1064, - 0, 0, 0, 0, 251, 1069, 1256, 966, 0, 722, - 0, 0, 27, 28, 0, 104, 0, 1380, 0, 0, - 450, 450, 0, 0, 0, 1442, 0, 0, 0, 0, - 0, 742, 743, 0, 754, 0, 252, 0, 838, 153, - 0, 0, 0, 133, 32, 80, 0, 722, 0, 144, - 144, 0, 0, 0, 412, 144, 0, 0, 144, 144, - 144, 0, 0, 0, 0, 0, 0, 0, 0, 686, - 0, 0, 1048, 0, 80, 0, 0, 0, 80, 548, - 549, 0, 1190, 0, 203, 80, 0, 0, 0, 0, - 0, 0, 1354, 0, 0, 0, 0, 1354, 686, 726, - 156, 0, 203, 203, 203, 0, 0, 0, 1125, 0, - 1126, 300, 127, 128, 10, 0, 1501, 1502, 0, 450, - 450, 450, 0, 0, 0, 1507, 0, 0, 0, 0, - 0, 203, 0, 0, 0, 0, 0, 0, 7, 8, - 9, 10, 0, 724, 13, 0, 0, 501, 0, 21, - 724, 0, 0, 1527, 0, 0, 251, 104, 0, 0, - 0, 0, 0, 0, 27, 319, 18, 0, 144, 0, - 156, 156, 156, 0, 0, 258, 21, 258, 450, 450, - 0, 0, 617, 0, 0, 0, 201, 1422, 201, 26, - 0, 27, 28, 0, 0, 0, 32, 560, 0, 0, - 0, 0, 0, 0, 0, 1157, 104, 528, 0, 7, - 127, 128, 10, 0, 724, 1158, 0, 0, 0, 258, - 0, 0, 0, 32, 0, 620, 0, 0, 1159, 622, - 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, - 421, 424, 471, 473, 477, 0, 450, 21, 0, 0, - 0, 104, 0, 0, 665, 615, 0, 528, 528, 631, - 26, 0, 27, 28, 0, 0, 0, 949, 80, 421, - 1324, 0, 0, 0, 724, 1230, 149, 1232, 0, 0, - 724, 0, 722, 127, 128, 0, 150, 477, 516, 259, - 0, 0, 0, 0, 32, 0, 0, 0, 0, 151, - 0, 0, 133, 7, 8, 9, 10, 258, 0, 0, - 724, 104, 0, 203, 104, 0, 1048, 724, 0, 0, - 0, 0, 0, 0, 0, 0, 617, 0, 144, 0, - 0, 144, 1263, 26, 0, 130, 131, 0, 0, 0, - 0, 21, 0, 144, 0, 0, 0, 0, 0, 618, - 0, 80, 0, 0, 26, 0, 27, 28, 0, 619, - 192, 0, 0, 0, 0, 0, 434, 0, 0, 620, - 193, 0, 621, 622, 0, 0, 0, 0, 0, 203, - 194, 203, 0, 203, 203, 203, 548, 549, 32, 203, - 0, 258, 201, 195, 203, 0, 0, 203, 469, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 0, 1240, - 1337, 485, 0, 80, 0, 1341, 0, 0, 258, 0, - 0, 0, 686, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 8, 9, 10, 0, 0, 516, 0, - 0, 0, 742, 743, 471, 473, 477, 0, 0, 0, - 754, 104, 104, 104, 104, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 1378, 0, 0, 0, - 21, 0, 0, 471, 473, 477, 617, 258, 7, 127, - 128, 10, 0, 26, 13, 27, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 1282, 0, 724, 0, 955, - 0, 1240, 0, 0, 1353, 1190, 18, 0, 0, 956, - 0, 104, 0, 528, 0, 0, 21, 32, 0, 620, - 0, 0, 957, 622, 0, 615, 0, 528, 528, 26, - 631, 27, 28, 0, 0, 0, 0, 918, 0, 0, - 0, 920, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 724, 724, 0, 0, 31, 203, 724, 0, 742, - 743, 0, 754, 32, 0, 0, 1452, 1453, 33, 0, - 0, 724, 0, 724, 0, 724, 421, 1324, 0, 0, - 133, 0, 0, 1463, 0, 0, 0, 133, 0, 0, - 0, 0, 0, 0, 0, 203, 962, 203, 203, 237, - 631, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 1406, 1407, 0, 0, 0, - 0, 724, 6, 0, 7, 8, 9, 10, 11, 12, - 13, 0, 0, 0, 0, 14, 0, 0, 0, 1499, - 1500, 0, 203, 0, 0, 0, 962, 0, 0, 16, - 0, 17, 18, 203, 203, 0, 203, 20, 1509, 1510, - 0, 0, 21, 0, 0, 724, 23, 0, 0, 438, - 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, - 0, 29, 724, 0, 133, 747, 0, 80, 0, 80, - 753, 30, 0, 0, 1050, 80, 80, 0, 0, 0, - 0, 31, 80, 0, 1467, 104, 0, 0, 0, 32, - 477, 104, 0, 0, 33, 795, 0, 0, 528, 528, - 528, 801, 0, 0, 0, 0, 1485, 1488, 0, 0, - 528, 0, 0, 809, 810, 0, 811, 636, 8, 9, - 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 626, 630, 633, 0, 0, 7, 8, 9, 10, - 214, 215, 216, 0, 0, 0, 0, 14, 0, 0, - 0, 0, 308, 637, 0, 21, 0, 0, 0, 0, - 471, 473, 477, 0, 18, 0, 0, 0, 26, 20, - 130, 131, 0, 0, 21, 0, 0, 0, 23, 0, - 617, 0, 0, 528, 1532, 528, 0, 26, 0, 27, - 28, 0, 104, 0, 0, 0, 528, 0, 104, 0, - 918, 918, 918, 955, 0, 0, 0, 0, 1134, 0, - 0, 906, 907, 956, 0, 0, 906, 0, 0, 0, - 0, 32, 0, 620, 0, 0, 957, 622, 0, 0, - 0, 0, 0, 83, 724, 0, 724, 0, 724, 0, - 104, 0, 104, 106, 203, 203, 1161, 0, 0, 0, - 0, 0, 126, 134, 0, 0, 0, 0, 0, 145, - 145, 0, 145, 0, 83, 0, 7, 8, 9, 10, - 0, 83, 7, 8, 9, 10, 167, 12, 13, 0, - 0, 1005, 0, 14, 145, 0, 83, 0, 0, 1161, - 0, 0, 0, 0, 238, 0, 0, 16, 0, 17, - 18, 248, 104, 0, 21, 20, 0, 0, 0, 0, - 21, 0, 0, 248, 23, 104, 0, 26, 1050, 27, - 28, 0, 0, 26, 0, 27, 28, 104, 369, 371, - 0, 724, 0, 193, 0, 0, 0, 0, 0, 30, - 1220, 0, 0, 194, 0, 0, 0, 0, 0, 31, - 0, 32, 80, 0, 0, 0, 195, 32, 0, 0, - 0, 104, 33, 104, 0, 83, 0, 0, 0, 145, - 145, 0, 0, 0, 0, 145, 0, 0, 145, 145, - 145, 300, 8, 9, 10, 0, 0, 0, 0, 0, - 1071, 104, 1073, 0, 83, 0, 528, 528, 83, 528, - 0, 895, 897, 0, 145, 83, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 21, - 0, 0, 145, 145, 145, 0, 251, 0, 0, 0, - 0, 0, 0, 0, 27, 319, 0, 0, 0, 0, - 0, 0, 0, 0, 203, 203, 203, 203, 1161, 127, - 128, 145, 203, 215, 216, 0, 0, 0, 252, 14, - 0, 0, 0, 0, 1107, 1108, 32, 1110, 0, 960, - 0, 626, 630, 0, 633, 1161, 1161, 1161, 0, 0, - 0, 20, 0, 0, 0, 724, 0, 0, 145, 0, - 23, 0, 617, 0, 0, 1128, 0, 0, 0, 26, - 0, 130, 131, 0, 8, 9, 203, 167, 12, 13, - 0, 144, 730, 0, 14, 618, 630, 0, 0, 0, - 300, 8, 9, 10, 0, 619, 248, 145, 16, 0, - 17, 18, 0, 0, 0, 620, 20, 0, 621, 622, - 0, 0, 0, 0, 0, 23, 1163, 617, 0, 0, - 559, 0, 0, 0, 26, 0, 130, 131, 21, 0, - 0, 203, 203, 0, 203, 251, 0, 0, 0, 0, - 618, 248, 0, 27, 319, 616, 0, 145, 145, 632, - 619, 0, 0, 0, 641, 0, 0, 0, 83, 0, - 620, 0, 0, 621, 622, 0, 0, 519, 0, 0, - 203, 962, 203, 0, 630, 32, 0, 7, 127, 128, - 10, 0, 1206, 246, 0, 0, 0, 0, 0, 104, - 0, 0, 678, 685, 1211, 0, 0, 0, 0, 0, - 0, 248, 0, 145, 248, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 21, 0, 0, 145, 0, - 0, 145, 0, 0, 0, 0, 0, 0, 26, 0, - 27, 28, 0, 145, 0, 0, 0, 0, 0, 0, - 0, 83, 0, 0, 30, 0, 0, 1120, 0, 1121, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 732, - 1127, 0, 32, 0, 895, 897, 0, 33, 0, 145, - 0, 145, 0, 145, 145, 145, 0, 0, 0, 145, - 1262, 0, 1161, 0, 145, 0, 0, 145, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 0, 0, 772, 83, 0, 0, 0, 0, 895, 897, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275, - 0, 7, 127, 128, 10, 814, 0, 13, 817, 0, - 0, 0, 819, 820, 822, 823, 824, 0, 0, 0, - 0, 248, 248, 248, 248, 559, 0, 0, 0, 18, - 0, 0, 1161, 1161, 1161, 0, 0, 0, 841, 21, - 166, 0, 7, 8, 9, 10, 167, 12, 13, 0, - 0, 104, 26, 14, 27, 28, 203, 0, 0, 0, - 0, 0, 1362, 0, 0, 0, 1363, 16, 149, 17, - 18, 19, 0, 0, 0, 20, 0, 0, 150, 0, - 21, 248, 0, 145, 23, 0, 32, 168, 0, 0, - 0, 151, 898, 26, 0, 27, 28, 145, 145, 898, - 632, 1379, 0, 0, 0, 0, 0, 919, 0, 30, - 7, 8, 9, 10, 214, 215, 216, 0, 0, 31, - 641, 14, 0, 0, 0, 0, 145, 32, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 34, 18, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, - 678, 0, 23, 0, 617, 0, 0, 0, 126, 0, - 0, 26, 0, 27, 28, 145, 632, 145, 145, 238, - 632, 0, 0, 0, 0, 1435, 0, 193, 0, 1436, - 0, 0, 0, 0, 0, 0, 0, 194, 1120, 1121, - 895, 897, 0, 772, 0, 32, 1127, 0, 0, 0, - 1423, 1454, 1455, 0, 0, 0, 0, 0, 685, 0, - 0, 0, 145, 0, 0, 0, 632, 0, 0, 895, - 897, 0, 0, 145, 145, 0, 145, 0, 0, 0, + 434, 442, 419, 422, 122, 486, 444, 443, 42, 981, + 36, 391, 639, 57, 692, 723, 431, 513, 693, 629, + 535, 538, 888, 638, 252, 255, 355, 752, 356, 888, + 59, 72, 978, 760, 399, 182, 690, 59, 155, 42, + 297, 36, 506, 1097, 57, 819, 42, 397, 398, 158, + 669, 176, 209, 568, 103, 177, 858, 141, 146, 708, + 953, 58, 72, 485, 174, 248, 396, 246, 1022, 72, + 1024, 390, 493, 407, 1467, 1522, 451, 1051, 1017, 295, + 1526, 153, 959, 348, 190, 348, 35, 348, 1411, 255, + 1426, 525, 58, 989, 491, 494, 208, 1429, 170, 58, + 171, 1527, 348, 348, 196, 1337, 1338, 607, 911, 516, + 1172, 296, 1198, 458, 107, 716, 224, 35, 1536, 1358, + 1554, 642, 607, 259, 169, -1, 607, -143, -2, 719, + 459, 405, 348, -354, 348, 757, 779, 452, 1551, 137, + 990, 294, 1199, 991, 525, 404, 363, 15, 255, 138, + 88, -413, 55, 782, 155, 155, 155, -144, 1563, 460, + 59, 740, 960, 72, 59, 158, 158, 158, 890, 86, + 453, 209, 717, 42, 57, 402, 418, 421, 176, 1585, + -413, 1577, 177, 55, -413, 190, 1173, 439, 257, 818, + 175, 174, 72, 58, 224, 925, 72, 1593, 420, 423, + 155, 1027, 489, 1059, 1564, 520, 1608, 804, 780, 1064, + 224, 158, 257, 1178, 591, 208, 1556, 1554, 87, 705, + 469, 471, 58, 966, 196, 170, 58, 171, 1052, -413, + 190, 1264, 163, 817, 1028, 15, -354, 466, 1029, -413, + 452, 257, -300, 153, 926, 1440, 1325, 1618, -363, 93, + 15, 169, 257, 1467, 1446, 1447, 89, 1448, 617, 613, + 592, 1530, 178, 1179, 1589, 1524, 224, -413, -413, 222, + 223, 1030, 164, 453, 224, -293, 90, 1053, 612, 221, + 1265, -363, 514, 467, 403, -363, 713, 259, -300, -300, + 224, 246, 677, 645, 94, 1326, 1619, 604, 1130, 639, + 1387, 1133, 888, -293, 803, 643, 644, 1387, 1145, 591, + 1561, 257, 91, 55, 1096, 938, 1123, 175, -363, 1245, + 967, 968, 969, 348, 108, 994, 419, 422, 515, 964, + 965, 672, 92, 95, 96, 97, 295, 225, 226, 227, + 755, 373, 1159, 1160, 246, 257, 888, 374, 929, 1388, + 692, 38, 348, 648, 1000, 592, 1498, 698, 699, 1051, + 1594, 18, 491, 494, 970, 109, 228, 404, 296, 257, + 491, 26, 995, 971, 972, 996, 557, 513, 95, 110, + 111, 634, 38, 494, 26, 72, 98, 99, 229, 178, + 129, 982, 307, 888, 259, 989, 689, 646, 294, 209, + 26, -181, 494, 1406, 629, 680, 1539, 1540, 26, 135, + 973, 7, 8, 249, 10, 58, 137, -181, 1098, -181, + 95, 110, 111, 1148, 861, 1371, 39, 635, 691, 221, + 137, 112, 113, 230, 231, 232, 59, 221, 221, 1202, + 793, 862, 990, 161, 1125, 991, -624, -827, 772, 21, + 176, 1207, 695, 939, 177, 1403, 250, 39, 688, 127, + 128, 257, 733, 710, 27, 28, 221, 800, 72, 940, + 863, 365, 369, 112, 113, 114, 420, 703, 155, 155, + 155, 162, 978, 40, 758, 1226, 794, 1228, 251, 158, + 158, 158, -624, -624, 691, 617, 32, 179, 58, 59, + 744, 745, 183, 224, -582, 138, 647, -624, 188, 26, + 376, 130, 131, 774, 40, 221, 1261, 1262, 1017, 257, + 8, 518, 420, 423, 688, 139, 348, 127, 128, 348, + 90, 72, 348, 222, 445, 963, 348, 809, 809, 809, + 809, 803, 1194, 769, 1196, 876, 224, 187, 1200, 348, + -582, 189, 692, 18, 888, 1463, 693, 1208, 604, 348, + -302, 58, 348, 1409, 362, 639, 239, 861, 221, 88, + 240, 677, 130, 131, 690, 137, 638, 26, 935, 130, + 131, -582, 557, 888, 862, 557, 766, 127, 128, 175, + 243, 877, 934, 865, 138, 912, 519, 295, 215, 216, + 298, 420, 814, 866, 14, 525, -302, -302, 257, 932, + -364, 896, 15, 863, 1370, 557, 689, 867, 359, -302, + 568, -296, 371, 733, 878, 221, 20, -582, 481, 296, + 377, 362, 491, 880, -302, 23, 257, 617, -302, 130, + 131, 1234, 1236, -364, 400, 882, 884, -364, 691, 1017, + 92, 1250, 773, 1004, -302, 691, 1171, 897, 898, 294, + 122, 178, 361, 519, 127, 128, -302, -302, 348, -302, + 879, -302, 259, 89, 642, 1441, 904, 378, 688, 881, + -364, -141, 209, 803, 375, 688, 246, 88, 381, 382, + 383, 379, 555, 90, 380, 979, 914, 137, 302, 1005, + -302, -302, 127, 128, -293, 221, 221, 516, 362, 424, + 772, 1031, 772, 221, 1165, -302, 130, 131, 772, 772, + 508, 1060, 1061, 257, 1062, 772, 221, 91, 1167, 1331, + 1332, 1333, 689, 384, 1236, 946, 189, 951, 952, 257, + 251, 385, 386, 1321, 1323, 221, 432, 92, 1327, -619, + 1072, 1169, 26, -7, 130, 131, 164, 1032, 1025, 1026, + 1166, 59, 446, 59, 691, 431, 509, 1054, 526, 209, + 59, 804, 447, 448, 1168, 774, 59, 774, 527, 689, + 348, 348, 952, 348, 774, 689, 561, 450, 562, 1368, + 774, 462, 1161, 72, 688, 72, -120, 1170, 15, 791, + 1469, 750, 72, 8, 9, 769, 91, 769, 72, 756, + 463, 691, 1036, 1046, 769, 1572, 501, 691, 8, 9, + 769, 1596, 1037, 58, 521, 58, 92, 522, 727, -120, + 589, 590, 58, -120, 7, 127, 128, 10, 58, 1610, + -118, 688, 15, 523, 91, 792, 1470, 688, 766, 524, + 766, 904, -142, 348, 532, 130, 131, 766, 1100, 1586, + 564, 1573, 362, 766, 92, 391, -120, 1597, 221, 541, + 130, 131, 21, -118, 542, 564, 561, -118, 562, 250, + 127, 128, 1144, 543, 1432, 1611, 809, 27, 28, 8, + 9, 544, 689, 12, 13, 255, 733, 545, 555, 14, + 607, 555, 95, 110, 111, 806, 662, 663, 664, 221, + -118, 251, 653, 16, 773, 17, 1023, 657, 555, 32, + 656, 20, 673, 773, 691, 1461, 882, 884, 691, 773, + 23, 555, 130, 131, 689, 833, 809, 348, 659, 26, + 689, 130, 131, 680, 214, 215, 216, 259, 420, 814, + 155, 14, 660, 221, 688, 112, 113, 89, 688, 224, + 661, 158, 674, 856, 90, 1209, 691, 1019, 18, 872, + 1149, 1150, 691, 20, 91, 221, 92, 90, 859, 804, + 1246, 1247, 23, 1249, 116, 117, 118, 733, 252, 255, + -52, 127, 128, 153, 92, -52, 688, 155, 8, 9, + 809, 772, 688, 702, 419, 422, -52, -6, 158, 706, + 1221, 1222, 1223, 1020, 257, 689, 257, 479, 480, 691, + 586, 587, 588, 589, 590, 1211, 728, 689, 751, 221, + 746, 1213, 1214, 419, 422, 1211, 1216, 119, 120, 1214, + 1184, 26, 362, 130, 131, 1253, 785, 691, 15, 688, + 130, 131, 59, 786, 116, 117, 118, 526, 257, 691, + 787, 689, 1036, 689, 215, 216, 774, 527, 795, 1473, + 14, 788, 1037, 796, 251, 8, 9, 688, 487, 488, + 76, 95, 96, 97, 72, 1490, 813, 539, 540, 688, + 815, 809, 20, 691, 816, 691, 769, 127, 1355, 717, + 255, 23, 89, 548, 348, 26, 549, 119, 120, 550, + 1390, 76, 560, 818, 58, 875, 565, 873, 76, 362, + 479, 711, 90, 688, 606, 688, 692, 130, 131, 889, + 1547, 201, 26, 213, 98, 99, 100, 1419, 1417, 766, + 1422, 362, 1069, 1070, 1071, 979, 91, 686, 689, 130, + 131, 519, 257, 891, 1391, 893, 155, 155, 155, 520, + 487, 712, 917, 1612, 1385, 1386, 92, 158, 158, 158, + 1308, 479, 1492, 519, 1473, 89, 918, 733, 1267, 1268, + 691, 1300, 927, 1442, 1307, 155, 155, 155, 804, 928, + 348, 487, 1493, 931, 1473, 90, 158, 158, 158, 20, + 420, 423, 72, 1375, 933, 773, 941, 1267, 1268, 691, + 688, 942, 406, 686, 479, 1497, 409, 95, 110, 111, + 510, 955, -578, 1569, -296, -578, 961, 962, 452, 420, + 1319, 1103, 58, 986, 987, 988, 257, 993, -826, 688, + 1002, 76, 1006, 1055, 1007, 76, 299, 393, 394, 10, + 15, 201, 213, 1473, -413, 21, 1073, 1299, 1074, 1075, + 893, 719, 1076, 257, 1077, 555, 140, 140, 1078, 156, + 112, 113, -578, 1079, -578, -578, 1080, -578, 1081, 95, + 96, 97, -413, -413, 21, 1082, 147, -413, -578, -140, + -578, 250, 1083, 212, 1308, 220, 1085, 1086, 201, 27, + 318, 236, 209, 1088, 1308, 1090, -578, -578, 1307, 1089, + 1091, 1308, 1105, 525, 1108, 1300, 1092, 1107, 1307, 1109, + 809, -578, 1300, 257, 362, 1307, 72, 1110, 1116, 1117, + 1535, 32, 98, 99, 548, 549, 72, 1126, 1127, 1118, + 1444, 1445, 1124, 72, 1136, 1129, 1143, 419, 422, 1009, + 299, 1142, 1139, 10, 1164, 1416, 58, 1416, 1187, 1195, + 1193, 7, 8, 9, 10, 1197, 58, 686, 1212, 1217, + 1220, 1056, 1566, 58, 686, 1224, 1229, 140, 18, 1237, + 1230, 1299, 140, 1231, 1232, 156, 156, 156, 21, 1248, + 1239, 1299, 1240, 1241, 1252, 1172, 410, 1244, 1299, 21, + 1254, 412, 1263, 425, 426, 1255, 250, 127, 128, 489, + 1256, 1259, 212, 459, 27, 28, 1260, 427, 449, 1266, + 299, 393, 394, 10, 1271, 1320, 155, 428, 1336, 140, + 140, 156, 1340, -661, 649, 32, 1362, 158, 251, 1363, + 429, 1373, 381, 382, 383, 220, 32, 129, 1374, 147, + 1369, 1379, 1380, 492, 220, 1382, 1381, 26, 21, 130, + 131, 1389, 1398, 1412, 1399, 1517, 95, 413, 414, 1184, + 1308, 1308, 1517, 27, 318, 1308, 1400, 1427, 1414, 201, + 1430, 1300, 1433, 686, 1307, 1307, 1300, 1476, 1434, 1307, + 1457, 348, 1458, 26, 140, 385, 386, 296, 1459, 155, + 155, 155, 72, 72, 296, 32, 1460, 72, 689, 1481, + 158, 158, 158, 517, 1465, 1308, 1477, 76, 1483, 98, + 113, 744, 745, 374, 1308, 1484, 1300, 294, 221, 1307, + 686, 1491, 58, 58, 294, 1300, 686, 58, 1307, 1570, + 691, 1512, 1521, 420, 1319, 1513, 555, 72, 1531, 1532, + 1541, 1558, 1517, 1543, 1549, 201, 72, 1299, 1299, 1329, + 1580, 1559, 1299, 201, 156, 1567, 1584, 1550, 1568, 338, + 688, 338, 1591, 338, 1308, 1592, 1595, 58, 1598, 1614, + 778, 95, 96, 97, 296, 1300, 58, 1600, 1307, 1605, + 1601, 1616, 1609, 1364, 1365, 1366, 1367, 116, 968, 969, + 1613, 1621, 1299, 1622, 1624, 1625, 72, 1, 5, 160, + 441, 1299, 1308, 1488, 294, 930, 1204, 1205, 338, 1146, + 338, 709, 1565, 1300, 1011, 1047, 1307, 127, 128, 1272, + 438, 215, 216, 440, 98, 99, 58, 14, 358, 408, + 212, 220, 1472, 686, 72, 1218, 1620, 686, 26, 1372, + 119, 120, 531, 1106, 140, 985, 1402, 140, 1435, 20, + 1138, 1299, 1137, 156, 156, 156, 503, 1334, 23, 140, + 617, 1049, 1057, 700, 58, 1357, 701, 26, 920, 130, + 131, 548, 549, 1135, 860, 686, 482, 614, 704, 389, + 1425, 686, 1599, 618, 1033, 1034, 9, 10, 1587, 1299, + 1317, 1606, 0, 619, 1562, 140, 1604, 140, 1186, 156, + 156, 156, 1431, 620, 449, 0, 628, 622, 0, 0, + 140, 492, 220, 201, 410, 449, 412, 0, 0, 492, + 0, 0, 21, 0, 1462, 0, 0, 221, 686, 517, + 0, 0, 0, 449, 0, 26, 0, 27, 28, 0, + 0, 1203, 0, 1035, 0, 0, 0, 636, 8, 9, + 10, 193, 201, 949, 201, 201, 686, 1482, 0, 0, + 156, 194, 0, 156, 95, 110, 111, 0, 686, 32, + 127, 128, 0, 0, 195, 516, 0, 0, 156, 156, + 156, 0, 307, 637, 0, 21, 0, 368, 370, 0, + 546, 1343, 1344, 156, 1353, 1354, 0, 1356, 26, 201, + 130, 131, 686, 998, 686, 116, 968, 969, 6, 0, + 7, 8, 9, 10, 11, 12, 13, 112, 113, 0, + 26, 14, 130, 131, 1515, 0, 0, 0, 338, 0, + 833, 1515, 778, 0, 778, 16, 865, 17, 18, 1043, + 1050, 778, 0, 20, 0, 0, 866, 778, 21, 0, + 555, 0, 23, 0, 905, 437, 0, 593, 119, 120, + 867, 26, 0, 27, 28, 0, 0, 29, 0, 0, + 0, 95, 110, 111, 220, 0, 0, 30, 0, 1251, + 0, 0, 95, 110, 111, 0, 0, 31, 0, 686, + 7, 8, 9, 10, 0, 32, 594, 595, 0, 0, + 33, 596, 597, 598, 599, 0, 0, 0, 0, 0, + 0, 1515, 0, 212, 0, 220, 236, 0, 686, 0, + 0, 0, 1438, 1439, 112, 1485, 0, 1590, 21, 0, + 722, 726, 0, 127, 128, 112, 1487, 0, 726, 0, + 0, 26, 0, 27, 28, 0, 0, 192, 0, 1603, + 0, 0, 548, 549, 0, 0, 833, 193, 0, 220, + 95, 110, 111, 0, 225, 226, 227, 194, 0, 0, + 140, 140, 0, 140, 0, 32, 617, 0, 0, 0, + 195, 492, 0, 26, 449, 130, 131, 0, 18, 700, + 701, 0, 704, 228, 0, 0, 0, 0, 0, 618, + 212, 0, 338, 726, 0, 0, 449, 0, 559, 619, + 0, 0, 0, 112, 113, 0, 0, 0, 0, 620, + 0, 0, 621, 622, 1504, 1505, 1506, 0, 0, 156, + 0, 470, 472, 476, 0, 338, 0, 722, 0, 0, + 830, 831, 0, 835, 836, 837, 838, 839, 840, 841, + 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, + 852, 853, 0, 726, 0, 0, 0, 0, 0, 726, + 0, 560, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 685, 0, 1537, 1538, 0, 0, 0, 0, 1043, + 0, 0, 0, 0, 0, 7, 8, 9, 10, 726, + 0, 0, 0, 101, 0, 0, 726, 127, 128, 0, + 0, 115, 13, 0, 7, 8, 9, 10, 0, 0, + 13, 0, 0, 778, 0, 156, 156, 905, 922, 924, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 617, + 0, 0, 18, 0, 338, 0, 26, 732, 27, 28, + 617, 1588, 21, 0, 233, 0, 0, 26, 617, 130, + 131, 0, 943, 0, 236, 26, 0, 27, 28, 140, + 140, 905, 944, 618, 0, 0, 0, 0, 0, 0, + 32, 943, 620, 619, 0, 945, 622, 0, 0, 147, + 0, 944, 722, 620, 0, 0, 621, 622, 0, 32, + 0, 620, 0, 0, 945, 622, 0, 0, 299, 8, + 9, 10, 0, 387, 802, 0, 0, 805, 905, 0, + 0, 807, 808, 810, 811, 812, 214, 215, 216, 0, + 0, 0, 0, 14, 559, 0, 1021, 415, 299, 393, + 394, 10, 0, 0, 0, 0, 21, 829, 0, 686, + 18, 449, 449, 250, 0, 20, 338, 338, 0, 338, + 0, 27, 318, 0, 23, 0, 548, 549, 0, 0, + 0, 0, 0, 0, 726, 0, 21, 0, 1352, 696, + 449, 0, 0, 1352, 0, 251, 0, 0, 0, 26, + 725, 27, 318, 32, 0, 0, 1084, 731, 0, 0, + 0, 886, 0, 0, 0, 0, 0, 742, 886, 743, + 0, 470, 472, 476, 8, 9, 0, 0, 12, 245, + 0, 0, 754, 32, 14, 0, 497, 499, 726, 726, + 0, 0, 0, 722, 726, 0, 0, 0, 16, 511, + 17, 0, 0, 0, 0, 0, 20, 0, 726, 0, + 726, 0, 726, 0, 0, 23, 0, 617, 214, 215, + 216, 0, 801, 0, 26, 14, 130, 131, 0, 0, + 0, 0, 201, 1420, 201, 140, 140, 156, 156, 905, + 618, 0, 18, 140, 0, 0, 0, 20, 1134, 0, + 619, 0, 0, 0, 410, 412, 23, 0, 726, 0, + 620, 0, 517, 621, 622, 0, 156, 156, 905, 547, + 0, 915, 0, 338, 490, 215, 216, 685, 0, 0, + 0, 14, 854, 0, 0, 0, 1158, 0, 855, 0, + 0, 0, 0, 0, 0, 0, 449, 449, 18, 449, + 449, 0, 449, 20, 726, 0, 0, 0, 0, 0, + 0, 655, 23, 584, 585, 586, 587, 588, 589, 590, + 665, 0, 0, 726, 732, 909, 0, 0, 0, 0, + 732, 80, 0, 655, 0, 0, 7, 127, 128, 10, + 0, 104, 13, 0, 0, 0, 0, 0, 0, 0, + 0, 133, 0, 140, 140, 0, 140, 144, 144, 0, + 144, 0, 80, 0, 18, 0, 1210, 0, 0, 80, + 0, 0, 700, 701, 21, 704, 0, 0, 0, 0, + 0, 0, 203, 0, 80, 0, 0, 26, 0, 27, + 28, 0, 237, 212, 220, 0, 0, 0, 1095, 104, + 0, 0, 0, 30, 127, 128, 0, 0, 0, 245, + 261, 104, 0, 31, 0, 0, 722, 722, 0, 0, + 1238, 32, 0, 0, 0, 0, 33, 449, 449, 0, + 0, 829, 0, 104, 0, 0, 0, 732, 0, 0, + 338, 886, 742, 743, 201, 754, 0, 617, 0, 759, + 0, 0, 0, 0, 26, 0, 130, 131, 0, 0, + 0, 133, 0, 80, 0, 0, 0, 144, 144, 0, + 618, 1042, 411, 144, 0, 0, 144, 144, 144, 685, + 619, 1147, 0, 0, 0, 886, 0, 0, 0, 0, + 620, 0, 80, 621, 622, 0, 80, 726, 0, 726, + 0, 726, 203, 80, 0, 0, 0, 156, 0, 722, + 0, 0, 0, 0, 0, 826, 0, 0, 722, 722, + 203, 203, 203, 722, 7, 127, 128, 10, 0, 449, + 449, 449, 886, 0, 0, 0, 0, 0, 0, 1341, + 1342, 0, 0, 0, 0, 1189, 0, 1093, 1094, 203, + 0, 0, 18, 1099, 0, 0, 0, 0, 0, 874, + 732, 0, 21, 0, 722, 500, 0, 1111, 0, 1112, + 0, 1113, 732, 0, 104, 26, 0, 27, 28, 0, + 156, 156, 156, 0, 0, 144, 0, 0, 449, 449, + 0, 149, 0, 0, 0, 726, 0, 0, 0, 0, + 0, 150, 0, 0, 0, 0, 732, 0, 732, 32, + 0, 0, 0, 0, 151, 0, 0, 1141, 0, 1397, + 0, 0, 0, 104, 528, 1008, 0, 0, 937, 0, + 116, 968, 969, 0, 1010, 0, 1243, 0, 0, 954, + 0, 470, 472, 476, 299, 8, 9, 10, 0, 0, + 0, 0, 0, 0, 0, 1058, 449, 1011, 0, 722, + 0, 1063, 0, 1162, 1012, 0, 0, 0, 104, 0, + 826, 0, 615, 0, 528, 528, 631, 0, 1443, 0, + 0, 26, 21, 119, 120, 80, 0, 0, 0, 250, + 476, 0, 0, 886, 0, 0, 0, 27, 318, 0, + 722, 127, 128, 0, 0, 215, 216, 0, 0, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 133, + 0, 1042, 886, 0, 0, 0, 0, 0, 104, 32, + 203, 104, 0, 20, 0, 1330, 0, 0, 0, 0, + 0, 0, 23, 0, 617, 144, 0, 0, 144, 0, + 0, 26, 726, 130, 131, 0, 0, 0, 0, 0, + 144, 0, 0, 0, 1119, 0, 1120, 618, 80, 0, + 0, 0, 1502, 1503, 0, 0, 0, 619, 0, 0, + 0, 1508, 299, 8, 9, 10, 0, 620, 0, 0, + 621, 622, 299, 127, 128, 10, 203, 0, 203, 0, + 203, 203, 203, 0, 0, 0, 203, 0, 0, 1528, + 0, 203, 0, 0, 203, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 0, 250, 0, 0, + 21, 80, 0, 0, 0, 27, 318, 250, 7, 127, + 128, 10, 0, 0, 245, 27, 318, 742, 743, 470, + 472, 476, 0, 0, 0, 754, 1273, 0, 1274, 519, + 1275, 0, 0, 0, 0, 1189, 18, 32, 0, 104, + 104, 104, 104, 0, 665, 0, 21, 32, 470, 472, + 476, 0, 0, 0, 0, 0, 0, 937, 0, 26, + 0, 27, 28, 0, 0, 0, 7, 8, 9, 10, + 0, 0, 245, 0, 0, 30, 0, 0, 0, 0, + 1351, 0, 0, 0, 0, 31, 258, 0, 626, 630, + 633, 0, 0, 32, 18, 0, 0, 0, 33, 104, + 0, 528, 0, 0, 21, 0, 0, 1225, 722, 1227, + 617, 0, 0, 615, 0, 528, 528, 26, 631, 27, + 28, 0, 0, 0, 1378, 906, 0, 0, 0, 908, + 0, 0, 0, 943, 0, 742, 743, 0, 754, 0, + 0, 0, 0, 944, 203, 0, 0, 0, 0, 0, + 0, 32, 0, 620, 0, 0, 945, 622, 0, 0, + 0, 0, 0, 433, 1258, 0, 0, 0, 133, 127, + 128, 0, 0, 0, 516, 133, 0, 0, 0, 0, + 0, 0, 0, 203, 950, 203, 203, 237, 631, 0, + 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1235, 559, 0, 484, 0, + 0, 0, 617, 0, 0, 1033, 1034, 9, 10, 26, + 0, 130, 131, 685, 0, 0, 7, 127, 128, 10, + 203, 0, 13, 0, 950, 618, 0, 0, 0, 0, + 0, 203, 203, 1335, 203, 619, 0, 0, 1339, 0, + 0, 0, 0, 21, 18, 620, 0, 0, 621, 622, + 133, 0, 0, 80, 21, 80, 26, 0, 27, 28, + 1044, 80, 80, 0, 1035, 0, 0, 26, 80, 27, + 28, 104, 193, 0, 0, 0, 0, 104, 0, 476, + 0, 1277, 194, 149, 528, 528, 528, 1235, 0, 1376, + 32, 0, 0, 150, 0, 195, 528, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 151, 0, 608, 83, + 299, 393, 394, 10, 0, 609, 0, 0, 0, 106, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 134, + 0, 0, 0, 0, 0, 145, 145, 0, 145, 0, + 83, 0, 0, 0, 0, 0, 0, 83, 21, 883, + 885, 0, 470, 472, 476, 610, 0, 0, 0, 0, + 145, 26, 83, 27, 318, 0, 0, 0, 0, 528, + 238, 528, 0, 0, 0, 0, 0, 247, 104, 0, + 0, 0, 528, 0, 104, 0, 906, 906, 906, 247, + 0, 0, 1453, 1454, 1128, 611, 0, 0, 0, 0, + 0, 0, 1404, 1405, 0, 0, 0, 0, 0, 1464, + 0, 0, 0, 0, 0, 0, 0, 948, 724, 626, + 630, 0, 633, 0, 0, 724, 104, 0, 104, 0, + 203, 203, 1155, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 145, 145, 0, 0, 0, + 0, 145, 0, 0, 145, 145, 145, 0, 7, 127, + 128, 10, 0, 0, 630, 0, 0, 0, 1500, 1501, + 83, 747, 0, 0, 83, 0, 753, 0, 0, 1155, + 145, 83, 0, 0, 0, 0, 18, 1510, 1511, 0, + 724, 0, 104, 0, 1468, 0, 21, 0, 145, 145, + 145, 0, 783, 0, 0, 0, 0, 104, 789, 26, + 1044, 27, 28, 0, 0, 0, 1486, 1489, 0, 104, + 797, 798, 0, 799, 0, 30, 0, 145, 0, 0, + 0, 0, 1215, 0, 0, 31, 0, 0, 0, 0, + 630, 0, 0, 32, 80, 0, 0, 0, 33, 0, + 724, 0, 0, 104, 0, 104, 724, 0, 0, 0, + 0, 0, 0, 145, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 0, 104, 0, 0, 724, 0, 528, 528, + 0, 528, 0, 724, 0, 0, 0, 1533, 0, 0, + 0, 247, 145, 0, 7, 8, 9, 10, 0, 0, + 13, 0, 0, 1114, 0, 1115, 0, 0, 894, 895, + 0, 0, 0, 894, 0, 0, 1121, 0, 0, 0, + 883, 885, 18, 0, 0, 0, 203, 203, 203, 203, + 1155, 0, 21, 0, 203, 0, 247, 0, 617, 0, + 616, 0, 145, 145, 632, 26, 0, 27, 28, 641, + 8, 9, 0, 83, 12, 245, 0, 1155, 1155, 1155, + 14, 1151, 0, 0, 883, 885, 0, 0, 0, 0, + 0, 1152, 0, 0, 16, 0, 17, 0, 0, 32, + 0, 620, 20, 0, 1153, 622, 0, 678, 0, 203, + 0, 23, 0, 0, 144, 0, 247, 0, 145, 247, + 26, 0, 130, 131, -385, 8, 9, -385, -385, 12, + 245, 0, 0, 145, 0, 14, 145, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 145, 16, + 0, 17, -385, 0, 0, 0, 83, 20, 0, 0, + 0, 0, -385, 0, 203, 203, 23, 203, 617, 0, + 0, 724, 0, 0, 0, 26, 0, 130, 131, 0, + 0, 0, 0, 0, 145, 0, 145, 0, 145, 145, + 145, 618, 0, 0, 145, 1065, 0, 1067, 0, 145, + 0, 619, 145, 203, 950, 203, 0, 0, 0, -385, + 0, 620, 0, 0, 621, 622, 0, 0, 0, 83, + 0, 0, 104, 0, 0, 724, 724, 0, 0, 0, + 0, 724, 0, 0, 0, 7, 8, 9, 10, 214, + 215, 216, 0, 0, 0, 724, 14, 724, 0, 724, + 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, + 247, 0, 0, 18, 0, 0, 0, 0, 20, 1101, + 1102, 0, 1104, 21, 0, 0, 0, 23, 0, 617, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 1114, 1115, 883, 885, 0, 724, 0, 0, 1121, 0, + 1122, 0, 193, 0, 0, 0, 623, 623, 623, 0, + 0, 0, 194, 1478, 0, 0, 0, 247, 1155, 145, + 32, 883, 885, 0, 0, 1421, 0, 0, 0, 0, + 0, 0, 0, 145, 145, 0, 632, 0, 0, 0, + 0, 724, 0, 907, 0, 0, 0, 0, 0, 0, + 0, 1157, 0, 0, 0, 0, 641, 0, 0, 0, + 724, 0, 145, 1479, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 678, 0, 0, 0, + 0, 1155, 1155, 1155, 126, 0, 0, 0, 0, 0, + 0, 145, 632, 145, 145, 238, 632, 0, 1114, 1115, + 104, 1121, 0, 0, 0, 203, 0, 0, 0, 0, + 0, 0, 0, 1201, 0, 0, 0, 0, 0, 980, + 0, 0, 0, 0, 0, 1206, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 8, 9, 0, 145, 12, + 13, 0, 632, 0, 0, 14, 0, 0, 0, 145, + 145, 0, 145, 0, 7, 8, 9, 10, 0, 16, + 516, 17, 0, 0, 0, 980, 0, 20, 134, 0, + 0, 83, 0, 83, 0, 0, 23, 0, 1045, 83, + 83, 0, 18, 0, 0, 26, 83, 130, 131, 247, + 0, 0, 21, 0, 0, 247, 0, 0, 617, 0, + 0, 0, 145, 145, 145, 26, 0, 27, 28, 0, + 0, 1257, 0, 0, 145, 0, 0, 0, 0, 0, + 0, 943, 51, 0, 724, 0, 724, 0, 724, 0, + 0, 944, 0, 0, 0, 0, 0, 0, 0, 32, + 0, 620, 0, 0, 945, 622, 0, 0, 51, 51, + 1270, 152, 0, 51, 0, 0, 0, 0, 0, 0, + 51, 0, 0, 0, 0, 0, 0, 623, 623, 0, + 623, 0, 0, 51, 0, 51, 0, 903, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 145, 0, 145, + 0, 0, 0, 0, 0, 0, 247, 0, 253, 0, + 145, 0, 247, 0, 907, 907, 907, 0, 0, 0, + 0, 0, 641, 0, 1360, 0, 0, 0, 1361, 0, + 0, 0, 724, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 623, 0, 623, 623, 0, + 623, 0, 0, 0, 247, 0, 247, 0, 145, 145, + 632, 395, 395, 1377, 51, 0, 0, 0, 51, 51, + 0, 0, 253, 0, 51, 0, 0, 152, 152, 152, + 0, 0, 0, 0, 430, 0, 0, 0, 0, 0, + 0, 0, 623, 51, 0, 0, 0, 51, 0, 0, + 0, 0, 0, 51, 51, 0, 0, 907, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 247, 51, 51, 152, 0, 0, 0, 0, 0, 0, + 0, 253, 0, 0, 0, 247, 0, 0, 1045, 0, + 1436, 0, 0, 0, 1437, 0, 0, 247, 0, 0, + 51, 0, 0, 0, 0, 1345, 1346, 9, 10, 7, + 8, 9, 10, 214, 215, 216, 1455, 1456, 623, 0, + 14, 0, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 247, 0, 247, 0, 0, 51, 18, 0, 724, + 0, 0, 20, 21, 0, 0, 0, 21, 0, 0, + 0, 23, 0, 617, 0, 0, 26, 0, 27, 28, + 26, 247, 27, 28, 1347, 0, 145, 145, 0, 145, + 0, 0, 193, 0, 0, 0, 943, 0, 0, 0, + 0, 0, 194, 0, 0, 0, 944, 0, 0, 0, + 32, 623, 0, 623, 32, 195, 620, 0, 0, 945, + 622, 0, 0, 0, 623, 0, 556, 0, 903, 903, + 903, 0, 0, 0, 145, 145, 145, 145, 632, 0, + 0, 0, 145, 395, 0, 0, 0, 0, 0, 980, + 0, 253, 0, 0, 0, 0, 51, 0, 0, 0, + 0, 0, 0, 0, 0, 907, 907, 907, 0, 0, + 0, 0, 623, 623, 623, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 980, 0, 0, 0, 0, + 395, 0, 0, 0, 0, 0, 0, 145, 0, 0, + 0, 51, 145, 0, 0, 0, 0, 166, 0, 7, + 8, 9, 10, 167, 12, 13, 51, 0, 0, 51, + 14, 903, 0, 0, 0, 430, 430, 430, 0, 0, + 0, 51, 0, 0, 16, 0, 17, 18, 19, 51, + 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, + 0, 23, 145, 145, 168, 145, 0, 0, 0, 0, + 26, 0, 27, 28, 0, 0, 0, 51, 0, 51, + 0, 152, 152, 152, 8, 9, 30, 51, 12, 13, + 1408, 0, 51, 0, 14, 51, 31, 0, 0, 0, + 0, 145, 632, 145, 32, 0, 0, 0, 16, 33, + 17, 0, 51, 0, 34, 0, 20, 0, 0, 0, + 247, 0, 0, 0, 0, 23, 980, 0, 0, 0, + 0, 0, 0, 0, 26, 0, 130, 131, 600, 0, + 0, 0, 556, 0, 0, 556, 0, 0, 7, 8, + 9, 10, 0, 0, 13, 0, 0, 0, 0, 0, + 556, 556, 556, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 601, 0, 556, 18, 0, 0, 78, + 0, 0, 0, 0, 0, 0, 21, 0, 623, 623, + 623, 623, 623, 0, 0, 0, 623, 0, 0, 26, + 0, 27, 28, 0, 0, 78, 78, 0, 78, 0, + 78, 0, 0, 0, 0, 193, 907, 78, 0, 903, + 903, 903, 0, 253, 18, 194, 0, 0, 0, 0, + 78, 0, 78, 32, 0, 0, 556, 0, 195, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 51, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 0, 395, + 0, 0, 7, 127, 128, 10, 395, 0, 516, 907, + 907, 907, 0, 0, 51, 51, 51, 51, 0, 0, + 0, 0, 0, 0, 0, 0, 623, 623, 247, 623, + 18, 78, 0, 145, 0, 78, 78, 0, 0, 0, + 21, 78, 0, 0, 78, 78, 78, 0, 0, 0, + 0, 0, 0, 26, 0, 27, 28, 0, 0, 0, + 78, 51, 0, 0, 78, 51, 0, 0, 0, 30, + 78, 78, 51, 51, 0, 51, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 0, 32, 78, 78, + 78, 0, 33, 0, 51, 0, 51, 0, 0, 0, + 0, 51, 51, 51, 0, 0, 0, 0, 0, 51, + 0, 0, 0, 0, 0, 0, 0, 78, 0, 159, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 832, 556, 299, 8, 9, 10, 167, 12, 300, 301, + 302, 204, 303, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 0, 0, 0, 16, 304, 17, + 18, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 0, 23, 0, 0, 0, 312, 313, + 314, 315, 316, 26, 0, 27, 318, 1523, 0, -787, + 319, 0, 7, 8, 9, 10, 320, 0, 245, 321, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, + 0, 0, 0, 0, 0, 325, 326, 327, 0, 0, + 18, 0, 328, 0, 0, 0, 0, 556, 556, 556, + 21, 0, 0, 430, 253, 159, 159, 159, 0, 329, + 0, 0, 0, 26, 0, 27, 28, 0, 0, 640, + 0, 0, 0, 78, 0, 0, 0, 0, 0, 193, + 0, 204, 0, 0, 0, 0, 0, 0, 0, 194, + 0, 51, 51, 152, 0, 0, 0, 32, 253, 204, + 204, 477, 195, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 9, 0, 167, 12, 13, 0, 78, 730, + 0, 14, 0, 0, 0, 0, 0, 0, 204, 0, + 0, 0, 0, 78, 0, 16, 78, 17, 18, 0, + 1183, 0, 0, 20, 202, 0, 0, 0, 78, 0, + 0, 0, 23, 0, 617, 0, 78, 0, 0, 0, + 0, 26, 0, 130, 131, 0, 0, 0, 0, 256, + 0, 51, 260, 0, 0, 0, 0, 618, 0, 0, + 7, 8, 9, 10, 78, 0, 78, 619, 78, 78, + 78, 0, 253, 256, 78, 364, 0, 620, 0, 78, + 621, 622, 78, 529, 0, 51, 0, 0, 18, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 21, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 8, 9, 10, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 134, 0, 0, 83, 0, 83, - 0, 0, 0, 0, 1051, 83, 83, 732, 18, 0, - 0, 0, 83, 732, 0, 248, 0, 0, 21, 0, - 0, 248, 0, 0, 0, 0, 0, 0, 145, 145, - 145, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 145, 0, 0, 0, 0, 1120, 1121, 193, 1127, 0, - 0, 0, 0, 0, 0, 0, 0, 194, 7, 8, - 9, 10, 167, 12, 13, 32, 0, 730, 0, 14, - 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1101, 0, 16, 0, 17, 18, 623, 623, 623, + 0, 26, 0, 27, 28, 7, 8, 9, 10, 167, + 12, 13, 0, 0, 730, 0, 14, 473, 0, 0, + 0, 0, 0, 625, 625, 625, 0, 474, 0, 0, + 16, 0, 17, 18, 202, 32, 0, 0, 20, 0, + 475, 0, 0, 21, 0, 0, 253, 23, 0, 617, + 0, 0, 202, 202, 202, 0, 26, 0, 27, 28, + 0, 0, 483, 0, 0, 0, 0, 51, 51, 152, + 152, 152, 1151, 253, 0, 51, 0, 0, 0, 204, + 0, 202, 1152, 0, 0, 7, 8, 9, 10, 0, + 32, 13, 620, 0, 0, 1153, 622, 0, 1183, 1183, + 1183, 640, 0, 0, 0, 0, 260, 0, 0, 0, + 0, 0, 0, 18, 0, 7, 8, 9, 10, 0, + 256, 516, 0, 21, 0, 0, 7, 8, 9, 10, + 51, 0, 78, 0, 0, 51, 26, 0, 27, 28, + 0, 0, 0, 18, 0, 204, 0, 204, 0, 477, + 477, 477, 473, 21, 0, 204, 0, 0, 0, 0, + 204, 0, 474, 204, 21, 0, 26, 0, 27, 28, + 32, 78, 78, 78, 78, 475, 0, 26, 0, 27, + 28, 0, 193, 1415, 0, 51, 51, 0, 51, 0, + 0, 0, 194, 193, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 194, 0, 195, 0, 0, 0, 0, + 0, 32, 256, 260, 0, 0, 195, 0, 78, 0, + 0, 0, 78, 0, 51, 51, 51, 0, 0, 78, + 78, 0, 78, 0, 0, 0, 7, 8, 9, 10, + 167, 12, 13, 0, 0, 0, 0, 14, 0, 0, + 0, 78, 0, 78, 0, 0, 0, 0, 78, 78, + 78, 16, 202, 17, 18, 19, 78, 0, 0, 20, + 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, + 868, 168, 0, 0, 0, 0, 0, 26, 0, 27, + 28, 0, 0, 0, 625, 625, 0, 625, 0, 0, + 0, 0, 0, 30, 625, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 0, 32, 0, 204, 0, 0, 33, 0, 202, 0, + 202, 34, 202, 202, 202, 0, 0, 0, 202, 1183, + 0, 0, 0, 202, 0, 0, 202, 0, 7, 8, + 9, 10, 205, 12, 206, 0, 0, 0, 0, 14, + 0, 0, 947, 0, 947, 947, 0, 625, 0, 0, + 0, 0, 0, 16, 0, 17, 18, 0, 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, 0, - 23, 0, 617, 0, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 145, 841, 145, 0, 0, 0, 0, - 732, 0, 248, 0, 898, 1157, 145, 0, 248, 51, - 919, 919, 919, 0, 0, 1158, 0, 0, 641, 0, - 0, 0, 0, 32, 0, 620, 0, 0, 1159, 622, - 0, 0, 0, 0, 0, 51, 51, 0, 152, 0, - 51, 0, 685, 0, 1153, 0, 0, 51, 898, 0, - 248, 0, 248, 0, 145, 145, 632, 0, 0, 0, - 51, 0, 51, 0, 0, 0, 0, 7, 8, 9, - 10, 205, 12, 206, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, - 0, 898, 16, 0, 17, 18, 0, 0, 0, 919, - 20, 0, 0, 0, 1195, 21, 0, 0, 0, 23, - 1201, 0, 248, 0, 0, 0, 0, 732, 26, 0, - 27, 28, 0, 772, 207, 248, 0, 0, 1051, 732, - 0, 0, 0, 0, 30, 0, 0, 248, 396, 396, - 0, 51, 0, 0, 31, 51, 51, 0, 0, 254, - 0, 51, 32, 0, 152, 152, 152, 33, 0, 0, - 0, 431, 83, 732, 0, 732, 0, 0, 0, 0, - 51, 248, 0, 248, 51, 7, 127, 128, 10, 0, - 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1248, 0, 0, 0, 0, 51, 51, - 152, 248, 0, 18, 0, 0, 145, 145, 254, 145, - 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 51, 27, 28, - 0, 0, 0, 0, 0, 0, 0, 623, 623, 0, - 623, 0, 30, 0, 0, 0, 0, 915, 0, 0, - 898, 0, 31, 0, 145, 145, 145, 145, 632, 0, - 32, 0, 145, 0, 51, 33, 0, 0, 0, 772, - 0, -385, 8, 9, -385, -385, 12, 246, 0, 898, - 0, 0, 14, 0, 0, 919, 919, 919, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 17, -385, - 0, 772, 0, 0, 20, 623, 0, 623, 623, -385, - 623, 0, 0, 23, 0, 617, 145, 0, 0, 0, - 0, 145, 26, 0, 130, 131, 0, 0, 0, 7, - 127, 128, 10, 0, 556, 516, 0, 0, 618, 0, - 7, 8, 9, 10, 0, 0, 246, 0, 619, 0, - 0, 396, 623, 0, 0, 0, -385, 18, 620, 254, - 0, 621, 622, 0, 51, 0, 0, 21, 18, 0, - 0, 145, 145, 0, 145, 0, 0, 0, 21, 0, - 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 0, 30, 0, 396, 1410, - 0, 0, 0, 0, 0, 0, 31, 193, 0, 51, - 145, 632, 145, 0, 32, 0, 18, 194, 0, 33, - 0, 1195, 0, 0, 51, 32, 0, 51, 0, 248, - 195, 0, 0, 431, 431, 431, 0, 0, 0, 51, - 623, 0, 0, 0, 0, 0, 0, 51, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 7, 8, 9, 10, 0, 51, 13, 51, 0, 152, - 152, 152, 0, 0, 0, 51, 0, 0, 0, 0, - 51, 0, 0, 51, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 51, - 0, 0, 0, 623, 78, 623, 0, 0, 0, 0, - 0, 26, 919, 27, 28, 0, 623, 0, 0, 0, - 915, 915, 915, 0, 0, 0, 0, 474, 0, 556, - 78, 78, 556, 78, 0, 78, 0, 475, 0, 0, - 0, 0, 78, 0, 0, 32, 0, 556, 556, 556, - 476, 0, 0, 0, 0, 78, 0, 78, 0, 0, - 0, 0, 556, 0, 623, 623, 623, 7, 8, 9, - 10, 0, 0, 516, 0, 0, 559, 0, 1039, 1040, - 9, 10, 919, 919, 919, 0, 0, 0, 0, 0, - 0, 0, 0, 685, 0, 18, 0, 0, 0, 0, - 0, 248, 0, 0, 0, 21, 145, 0, 0, 915, - 254, 0, 0, 0, 0, 0, 21, 0, 26, 0, - 27, 28, 0, 556, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 0, 193, 0, 78, 1041, 0, 0, - 78, 78, 51, 0, 194, 193, 78, 0, 0, 78, - 78, 78, 32, 0, 0, 194, 0, 195, 0, 7, - 8, 9, 10, 32, 0, 78, 396, 0, 195, 78, - 0, 0, 0, 396, 0, 78, 78, 0, 0, 0, - 0, 51, 51, 51, 51, 0, 0, 18, 0, 0, - 0, 0, 0, 78, 78, 78, 0, 21, 0, 0, + 23, 0, 640, 0, 0, 0, 0, 0, 0, 26, + 0, 27, 28, 0, 0, 207, 0, 0, 0, 947, + 0, 0, 1183, 1183, 1183, 30, 0, 0, 0, 0, + 204, 204, 0, 204, 0, 31, 0, 0, 78, 78, + 78, 0, 0, 32, 0, 0, 51, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, + 0, 0, 0, 0, 0, 0, 0, 761, 0, 7, + 8, 762, 10, 167, 12, 13, 0, 0, 0, 0, + 14, 0, 0, 529, 529, 529, 0, 1185, 0, 0, + 0, 0, 0, 0, 16, 625, 17, 18, 19, 0, + 256, 260, 20, -524, 0, 0, 0, 21, 0, 0, + 0, 23, 763, 0, 168, 0, 202, 0, 78, 0, + 26, 0, 27, 28, 0, 0, 764, 0, 765, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 7, 8, + 9, 10, 167, 12, 13, 0, 31, 997, 0, 14, + 0, 0, 78, 0, 32, 202, 0, 202, 202, 33, + 0, 0, 0, 16, 0, 17, 18, 0, 625, 0, + 625, 20, 0, 0, 0, -524, 21, 0, 0, 0, + 23, 625, 0, 0, 0, 625, 625, 625, 0, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 202, 0, 0, 30, 0, 0, 102, 0, + 0, 0, 0, 202, 202, 31, 202, 121, 102, 0, + 0, 0, 0, 32, 102, 102, 0, 102, 33, 947, + 947, 1156, 0, 0, 1345, 127, 128, 10, 0, 0, + 0, 0, 202, 0, 78, 78, 78, 78, 78, 0, + 0, 0, 78, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 78, 0, 0, 159, 474, 0, 51, 0, - 0, 0, 51, 0, 0, 0, 475, 0, 0, 51, - 51, 0, 51, 0, 32, 0, 0, 204, 0, 476, - 0, 0, 8, 9, 0, 167, 12, 13, 0, 78, - 730, 0, 14, 0, 623, 623, 623, 623, 623, 0, - 0, 0, 623, 51, 0, 51, 16, 0, 17, 18, - 51, 51, 51, 0, 20, 0, 0, 0, 51, 0, - 0, 0, 0, 23, 0, 915, 915, 915, 0, 0, - 0, 0, 26, 0, 130, 131, 0, 0, 0, 773, - 556, 7, 8, 774, 10, 167, 12, 13, 0, 0, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, - 19, 159, 159, 159, 20, -523, 0, 0, 0, 21, - 0, 0, 0, 23, 775, 640, 168, 0, 0, 78, - 0, 0, 26, 0, 27, 28, 0, 204, 776, 0, - 777, 0, 0, 0, 0, 0, 0, 0, 30, 0, - 0, 623, 623, 0, 623, 204, 204, 478, 31, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 0, 78, 0, 556, 556, 556, 0, - 0, 0, 431, 254, 204, 0, 0, -523, 0, 78, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, - 1347, 1348, 9, 10, 78, 0, 0, 0, 0, 0, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, - 51, 51, 152, 0, 0, 0, 0, 254, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - 78, 0, 78, 0, 78, 78, 78, 0, 0, 0, - 78, 26, 0, 27, 28, 78, 0, 0, 78, 1349, - 529, 0, 0, 0, 0, 1189, 0, 193, 0, 0, - 0, 0, 0, 0, 78, 0, 0, 194, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 195, 0, 0, 0, 51, 0, 551, 0, 300, 8, - 9, 10, 167, 12, 301, 302, 303, 730, 304, 14, - 625, 625, 625, 0, 0, 254, 0, 1347, 127, 128, - 10, 0, 0, 16, 305, 17, 18, 19, 51, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 617, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, -310, 0, 21, 320, 0, 7, 8, - 9, 10, 321, 0, 0, 911, 204, 0, 26, 0, - 27, 28, 0, 323, 324, 912, 1349, 0, 0, 0, - 0, 326, 327, 328, 30, 620, 640, 0, 913, 622, - 0, 0, 0, 0, 31, 0, 21, 0, 0, 254, - 0, 0, 32, 0, 0, 330, 0, 33, 0, 26, - 0, 27, 28, 0, 0, 1417, 0, 78, 0, 0, - 51, 51, 152, 152, 152, 193, 254, 0, 51, 0, - 0, 0, 204, 0, 204, 194, 478, 478, 478, 0, - 0, 0, 204, 32, 0, 0, 0, 204, 195, 0, - 204, 1189, 1189, 1189, 0, 0, 78, 78, 78, 78, - 0, 0, 0, 0, 0, 0, 773, 0, 7, 8, - 774, 10, 167, 12, 13, 0, 0, 0, 0, 14, - 0, 0, 51, 0, 0, 0, 0, 51, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 0, 20, -524, 78, 0, 0, 21, 78, 0, 0, - 23, 775, 0, 168, 78, 78, 0, 78, 0, 26, - 0, 27, 28, 0, 0, 776, 0, 777, 0, 0, - 0, 0, 0, 0, 0, 30, 0, 51, 51, 0, - 51, 0, 0, 0, 0, 31, 0, 0, 78, 0, - 78, 0, 0, 32, 0, 78, 78, 78, 33, 0, - 0, 0, 0, 78, 0, 0, 880, 0, 0, 0, - 0, 0, 0, 0, -524, 0, 51, 51, 51, 0, - 625, 625, 202, 625, 0, 0, 0, 0, 0, 0, - 625, 0, 7, 8, 9, 10, 167, 12, 13, 0, - 0, 0, 0, 14, 0, 0, 0, 257, 0, 204, - 261, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 0, 20, 0, 0, 0, 0, - 21, 257, 0, 365, 23, 0, 0, 168, 0, 0, - 0, 0, 0, 26, 0, 27, 28, 0, 959, 0, - 959, 959, 0, 625, 0, 0, 0, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 34, 1189, 640, - 0, 0, 0, 0, 0, 959, 0, 0, 0, 0, - 0, 0, 202, 0, 0, 0, 204, 204, 0, 204, - 0, 0, 0, 7, 8, 9, 10, 214, 215, 216, - 202, 202, 202, 0, 14, 78, 78, 78, 0, 0, - 484, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 20, 204, 0, 202, - 0, 21, 0, 0, 0, 23, 0, 617, 1189, 1189, - 1189, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 1191, 529, 529, 529, 0, 261, 0, 0, 0, 0, - 955, 0, 51, 625, 0, 0, 0, 0, 0, 257, - 956, 0, 0, 0, 0, 0, 0, 0, 32, 78, - 620, 0, 0, 1000, 622, 0, 0, 0, 0, 0, - 0, 551, 0, 7, 8, 9, 10, 167, 12, 301, - 302, 303, 730, 304, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 625, 617, 625, 313, - 314, 315, 316, 317, 26, 0, 27, 28, -310, 625, - 0, 320, 0, 625, 625, 625, 0, 321, 0, 0, - 1186, 257, 261, 0, 0, 0, 0, 0, 323, 324, - 1187, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 620, 0, 0, 1188, 622, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 959, 959, 1162, - 330, 0, 0, 0, 0, 78, 78, 78, 78, 78, - 0, 202, 0, 78, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 8, 9, 10, 167, 12, 13, 0, - 0, 0, 0, 14, 0, 0, 1191, 1191, 1191, 0, - 0, 0, 1162, 0, 0, 0, 0, 16, 0, 17, - 18, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 21, 0, 0, 0, 23, 0, 0, 78, 0, 0, - 0, 204, 78, 26, 0, 27, 28, 202, 0, 202, - 0, 202, 202, 202, 0, 0, 0, 202, 0, 30, - 0, 0, 202, 0, 0, 202, 0, 0, 0, 31, - 0, 0, 263, 0, 0, 8, 9, 32, 0, 12, - 13, 0, 33, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 78, 78, 0, 78, 0, 0, 0, 16, - 0, 17, 0, 0, 0, 0, 0, 20, 0, 264, - 265, 0, 0, 0, 0, 0, 23, 0, 266, 880, - 880, 0, 880, 0, 0, 26, 0, 130, 131, 0, - 267, 78, 78, 78, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 289, 290, 291, - 0, 0, 292, 0, 0, 293, 0, 959, 959, 1162, - 1162, 1162, 0, 0, 0, 959, 0, 0, 0, 0, - 0, 294, 0, 773, 0, 7, 8, 774, 10, 167, - 12, 13, 0, 0, 0, 0, 14, 0, 1162, 1162, - 1162, 0, 0, 0, 0, 0, 0, 0, 257, 261, - 16, 0, 17, 18, 19, 0, 102, 0, 20, -526, - 0, 0, 0, 21, 202, 121, 102, 23, 775, 204, - 168, 0, 102, 102, 0, 102, 26, 0, 27, 28, - 0, 0, 776, 1191, 777, 8, 9, 0, 0, 12, - 13, 0, 30, 0, 0, 14, 0, 0, 0, 0, - 0, 0, 31, 202, 0, 202, 202, 235, 0, 16, - 32, 17, 0, 0, 0, 33, 0, 20, 0, 0, - 0, 0, 0, 0, 959, 959, 23, 959, 0, 0, - 0, -526, 0, 0, 0, 26, 0, 130, 131, 0, + 0, 0, 21, 0, 0, 1185, 1185, 1185, 1156, 7, + 8, 9, 10, 0, 0, 26, 0, 27, 28, 0, + 0, 0, 0, 1347, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 0, 78, 0, 204, + 0, 31, 78, 0, 0, 0, 0, 21, 388, 32, + 121, 0, 0, 0, 33, 0, 0, 102, 102, 0, + 26, 0, 27, 28, 102, 102, 0, 0, 102, 102, + 102, 0, 416, 102, 102, 102, 193, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, + 0, 0, 78, 78, 32, 78, 0, 0, 0, 195, + 0, 0, 0, 0, 0, 256, 260, 256, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 868, 868, 0, + 868, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 78, 78, 78, 0, 0, 0, 0, 0, 0, + 0, 0, 202, 202, 1154, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 0, 0, 1191, 1191, 1191, 0, 0, 0, 0, - 0, 202, 202, 204, 202, 204, 389, 0, 121, 0, - 0, 0, 0, 0, 871, 102, 102, 78, 0, 0, - 0, 0, 102, 102, 0, 0, 102, 102, 102, 261, - 417, 102, 102, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 202, 0, 1425, 0, 1285, 1286, 1287, 10, - 167, 12, 301, 302, 303, 0, 304, 14, 1288, 0, - 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 15, 16, 305, 17, 18, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 1299, 23, 1300, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 1301, - 319, 717, 0, 1302, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 478, 0, 0, 0, 499, - 102, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 0, 329, 0, 1303, 0, - 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1426, 330, 573, 574, 575, 576, 577, 578, + 0, 498, 102, 0, 0, 947, 947, 1156, 1156, 1156, + 0, 0, 0, 947, 0, 0, 0, 0, 0, 260, + 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, + 0, 1154, 0, 0, 0, 0, 1156, 1156, 1156, 0, + 0, 0, 0, 7, 8, 9, 10, 214, 215, 216, + 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, + 0, 102, 202, 0, 0, 0, 0, 0, 204, 0, + 0, 18, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 21, 0, 483, 0, 23, 1185, 617, 0, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 943, 102, 102, 0, 0, 0, 0, 0, 0, 0, + 944, 0, 0, 947, 947, 0, 947, 0, 32, 0, + 620, 0, 0, 992, 622, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 0, 0, 0, 257, 261, 257, 0, 0, - 102, 0, 1477, 0, 0, 478, 478, 478, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 0, 0, 0, 0, 204, - 0, 0, 202, 202, 1160, 0, 0, 0, 0, 257, - 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, - 102, 102, 1478, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 0, 0, 1160, 0, 0, - 0, 0, 0, 0, 0, 1448, 0, -477, -477, -477, - -477, -477, -477, -477, 0, 102, -477, 0, -477, 0, - 0, 0, 0, 0, 0, 0, 202, 0, 0, -477, - 0, -477, 0, 0, 102, -477, 0, 0, 0, 0, - -477, 102, 0, 0, 102, -477, 0, 484, 0, -477, - 0, -477, 0, 0, 0, 0, 102, 0, -477, 0, - -477, -477, -477, -477, -477, 0, -477, -477, -477, -477, + 589, 590, 0, 0, 0, 0, 102, 0, 0, 1185, + 1185, 1185, 204, 0, 204, 0, 0, 256, 0, 0, + 0, 0, 0, 0, 0, 102, 8, 9, 0, 167, + 12, 13, 102, 78, 730, 102, 14, 0, 202, 202, + 202, 202, 1154, 0, 1269, 0, 202, 102, 0, 0, + 16, 0, 17, 18, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 0, 1154, + 1154, 1154, 0, 0, 0, 0, 26, 0, 130, 131, + 0, 0, 0, 0, 720, 0, 820, 821, 822, 10, + 0, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 102, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 477, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 823, + 824, 721, 102, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 202, 202, 0, 202, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 825, 0, 0, + 0, 1449, 0, -477, -477, -477, -477, -477, -477, -477, + 0, 0, -477, 329, -477, 202, 0, 202, 0, 0, + 477, 477, 477, 0, 0, -477, 0, -477, 0, 0, + 0, -477, 0, 0, 0, 0, -477, 0, 102, 0, + 0, -477, 0, 0, 204, -477, 0, -477, 0, 102, + 102, 0, 102, 102, -477, 0, -477, -477, -477, -477, + -477, 0, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, -477, - -477, -477, -477, -477, -477, -477, -477, -477, -477, 0, - -477, -477, -477, 0, -477, -477, -477, -477, -477, -477, - 0, -477, 0, 0, 0, 0, 1449, 0, 0, 0, - 0, -477, -477, -477, 0, -477, 0, 0, 0, 0, - 0, 0, 0, 102, 0, 765, 0, 0, 0, 0, - 0, 257, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 0, 0, - 102, 0, 202, 202, 202, 202, 1160, 0, 1274, 0, - 202, 0, 0, 0, 0, 0, 0, 729, 0, 300, - 8, 9, 10, 167, 12, 301, 302, 303, 730, 304, - 14, 0, 0, 1160, 1160, 1160, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 202, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 0, 0, 102, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 102, 102, 0, - 102, 102, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, - 0, 0, 0, 8, 9, 0, 167, 12, 13, 202, - 202, 0, 202, 14, -796, 0, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 0, 0, 102, 0, 20, 0, 0, 0, 0, - 102, 121, 0, 0, 679, 0, 0, 168, 202, 0, - 202, 0, 235, 26, 0, 130, 131, 0, 0, 0, - 0, 1284, 0, 1285, 1286, 1287, 10, 167, 12, 301, - 302, 303, 0, 304, 14, 1288, 765, 1289, 1290, 1291, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 15, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 1299, 23, 1300, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 1301, 319, 717, 0, - 1302, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 765, 0, 0, 102, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 0, 1303, 0, 0, 0, 0, - 1160, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 102, 102, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 102, 0, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 0, 0, 0, - 0, 844, 0, 300, 8, 9, 10, 167, 12, 301, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, - 1160, 1160, 1160, 1238, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 202, 23, 102, 0, 102, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 1522, 102, - -786, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 720, 329, 832, 833, 834, 10, 0, 12, - 533, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 835, 836, 721, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 765, 326, 327, 328, - 0, 0, 0, 0, 329, 837, 551, 0, 300, 8, - 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, - 992, 330, 0, 102, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, -310, 8, 9, 320, 0, 12, 246, - 0, 0, 321, 0, 14, 552, 0, 0, 0, 102, - 102, 0, 102, 323, 324, 553, 0, 0, 16, 0, - 17, 326, 327, 328, 0, 0, 20, 0, 554, 0, - 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 330, 130, 131, 0, 0, - 720, 0, 832, 833, 834, 10, 0, 12, 533, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 765, 0, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 765, 835, 836, 721, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, - 0, 0, 102, 0, 102, 0, 0, 323, 324, 325, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 0, 329, 837, 720, 0, 832, 833, 834, 10, - 0, 12, 533, 302, 303, 0, 304, 14, 0, 330, + -477, -477, -477, -477, -477, 0, -477, -477, -477, 0, + -477, -477, -477, -477, -477, -477, 0, -477, 0, 0, + 0, 0, 1450, 0, 0, 102, 0, -477, -477, -477, + 0, -477, 102, 121, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 235, 0, 0, 0, 0, 551, + 1154, 299, 8, 9, 10, 167, 12, 300, 301, 302, + 730, 303, 14, 0, 0, 0, 0, 0, 977, 0, + 0, 0, 0, 0, 0, 0, 16, 304, 17, 18, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 617, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, -310, 0, 0, 319, + 0, 0, 0, 0, 977, 320, 0, 102, 899, 0, + 0, 0, 0, 1154, 1154, 1154, 322, 323, 900, 0, + 0, 0, 0, 0, 325, 326, 327, 0, 620, 0, + 0, 901, 622, 0, 0, 0, 0, 202, 0, 0, + 0, 102, 102, 102, 0, 0, 0, 0, 329, 0, + 0, 0, 0, 102, 0, 1423, 0, 1280, 1281, 1282, + 10, 167, 12, 300, 301, 302, 0, 303, 14, 1283, + 0, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, + 1293, 15, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 1294, 23, + 1295, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 1296, 318, 717, 0, 1297, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 102, 0, 102, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 102, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 1298, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 1424, 329, 0, 1279, 0, 1280, 1281, + 1282, 10, 167, 12, 300, 301, 302, 0, 303, 14, + 1283, 0, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, + 1292, 1293, 15, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 1294, + 23, 1295, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 1296, 318, 717, 977, 1297, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 0, 328, 0, + 1298, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 551, 329, 7, 8, 9, 10, + 167, 12, 300, 301, 302, 730, 303, 14, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 835, - 836, 721, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 720, 329, 832, 833, 834, - 10, 0, 12, 533, 302, 303, 0, 304, 14, 0, - 0, 0, -481, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 835, 836, 721, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 720, 329, 300, 8, - 9, 10, 0, 12, 533, 302, 303, 0, 304, 14, - 0, 0, 0, 1323, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 721, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, - 551, 0, 7, 8, 9, 10, 1327, 12, 301, 302, - 303, 0, 304, 14, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 28, -310, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 1493, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 1494, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 720, 1495, 300, 8, 9, 10, 0, 12, 533, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 721, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 844, 329, 300, 8, 9, 10, 0, 12, - 533, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, 0, 320, -786, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 1574, 329, 300, 8, 9, 10, 0, - 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, -194, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 844, 329, 300, 8, 9, 10, - 0, 12, 533, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 933, 329, 300, 8, 9, - 10, 0, 12, 533, 302, 303, 0, 304, 14, 0, - 0, -786, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 0, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 935, 329, 300, 8, - 9, 10, 0, 12, 533, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 0, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 1506, 329, 300, - 8, 9, 10, 0, 12, 533, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 0, 0, 0, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 300, 8, 9, 10, 329, - 12, 533, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, - 0, 773, 322, 7, 8, 774, 10, 167, 12, 13, - 323, 324, 325, 0, 14, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 0, 329, 0, 0, 16, 0, - 17, 18, 19, 0, 0, 0, 20, -525, 0, 0, - 0, 21, 330, 883, 0, 23, 775, 0, 168, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 776, 0, 777, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 33, 0, 0, 1285, 1286, 1287, 10, - 167, 12, 301, 302, 303, 0, 304, 14, 1288, -525, - 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, - 15, 16, 305, 17, 18, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 1299, 23, 1300, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 1301, - 319, 717, 0, 1302, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 0, 329, 0, 1303, 0, + 0, 16, 304, 17, 18, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 617, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 28, -310, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 1180, 0, 102, 102, 0, 102, 0, + 0, 322, 323, 1181, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 620, 0, 0, 1182, 622, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 329, 0, 729, 0, 299, 8, 9, + 10, 167, 12, 300, 301, 302, 730, 303, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 977, 0, + 0, 0, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 977, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 102, + 0, 102, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 0, 0, 720, 328, 820, 821, + 822, 10, 0, 12, 533, 301, 302, 0, 303, 14, + 0, 0, -797, 0, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 0, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 823, 824, 721, 0, 0, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 0, 328, 825, + 0, 0, 0, 0, 0, 977, 0, 0, 0, 0, + 0, 0, 0, 0, 984, 329, 551, 0, 299, 8, + 9, 10, 0, 12, 300, 301, 302, 0, 303, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1430, 330, 1285, 1286, 1287, 10, 167, 12, - 301, 302, 303, 0, 304, 14, 1288, 0, 1289, 1290, - 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 15, 16, - 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 1299, 23, 1300, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 1301, 319, 717, - 0, 1302, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 0, 329, 0, 1303, 0, 1285, 1286, - 1287, 10, 167, 12, 301, 302, 303, 0, 304, 14, - 1288, 330, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, - 1297, 1298, 15, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 1299, - 23, 1300, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 1301, 319, 1551, 0, 1302, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, - 1303, 0, 1285, 1286, 1287, 10, 167, 12, 301, 302, - 303, 0, 304, 14, 1288, 330, 1289, 1290, 1291, 1292, - 1293, 1294, 1295, 1296, 1297, 1298, 15, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 1299, 23, 1300, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 1301, 319, 0, 0, 1302, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 0, 329, 0, 1303, 300, 8, 9, 10, 167, - 12, 301, 302, 303, 730, 304, 14, 0, 0, 330, + 0, 0, 0, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, -310, 0, 0, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 552, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 553, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 720, 554, 820, + 821, 822, 10, 0, 12, 533, 301, 302, 0, 303, + 14, 0, 0, 0, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 0, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 823, 824, 721, 0, 0, 319, 0, 0, + 0, 0, 0, 320, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 720, 328, + 820, 821, 822, 10, 0, 12, 533, 301, 302, 0, + 303, 14, 0, 0, 0, -481, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 823, 824, 721, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 0, 0, 720, + 328, 299, 8, 9, 10, 0, 12, 533, 301, 302, + 0, 303, 14, 0, 0, 0, 1318, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 304, 17, 0, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, 721, 0, 0, 319, + 0, 0, 0, 0, 0, 320, 0, 0, 321, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 324, 0, + 0, 0, 0, 0, 325, 326, 327, 0, 0, 0, + 0, 328, 0, 551, 0, 7, 8, 9, 10, 1322, + 12, 300, 301, 302, 0, 303, 14, 0, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 0, 23, 0, 617, - 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 912, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 620, 0, 0, 913, 622, 7, 8, 9, - 10, 167, 12, 301, 302, 303, 730, 304, 14, 0, - 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 617, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 28, 0, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 1186, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 1187, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 620, 0, 0, 1188, 622, 300, - 8, 9, 10, 0, 12, 301, 302, 303, 0, 304, - 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 617, 0, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 911, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 912, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 620, 0, 0, 913, - 622, 7, 8, 9, 10, 0, 12, 301, 302, 303, - 0, 304, 14, 0, 0, 0, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, - 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 0, 23, 0, 617, 0, 313, 314, 315, - 316, 317, 26, 0, 27, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 321, 0, 0, 1186, 0, - 0, 0, 0, 0, 0, 0, 323, 324, 1187, 0, - 0, 0, 0, 0, 326, 327, 328, 0, 620, 0, - 0, 1188, 622, 300, 8, 9, 10, 0, 12, 533, - 302, 303, 0, 304, 14, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 552, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 553, 0, 0, 0, 0, 0, 326, 327, 328, 300, - 8, 9, 10, 554, 12, 533, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 0, 0, 1403, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, - 300, 8, 9, 10, 167, 12, 301, 302, 303, 0, - 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, - 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, - 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, - 317, 26, 0, 27, 319, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, - 0, 0, 0, 326, 327, 328, 7, 8, 9, 10, - 329, 12, 533, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 28, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 1493, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 1494, 0, 0, 0, 0, 0, 326, - 327, 328, 300, 8, 9, 10, 1495, 12, 301, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 318, 319, 0, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, - 0, 0, 0, 0, 0, 326, 327, 328, 300, 8, - 9, 10, 329, 12, 301, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 0, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 300, 8, 9, 10, 329, 12, - 533, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 300, 8, 9, 10, 329, 12, 533, 302, 303, 0, - 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, - 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, - 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, - 317, 26, 0, 27, 319, 566, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, - 0, 0, 0, 326, 327, 328, 300, 8, 9, 10, - 567, 12, 533, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 0, 329, 605, 300, 8, - 9, 10, 0, 12, 533, 302, 303, 0, 304, 14, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 552, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 553, 0, 0, 0, 0, - 0, 326, 327, 328, 1146, 8, 9, 10, 554, 12, - 533, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 7, 8, 9, 10, 329, 12, 301, 302, 303, 0, - 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 16, 305, 17, 18, 19, - 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, - 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, - 317, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 1493, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 1494, 0, 0, - 0, 0, 0, 326, 327, 328, 300, 8, 9, 10, - 1495, 12, 533, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 300, 8, 9, 10, 534, 12, 533, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, - 0, 0, 0, 0, 0, 326, 327, 328, 300, 8, - 9, 10, 537, 12, 533, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 321, 0, 6, 322, 7, 8, 9, 10, - 11, 12, 13, 323, 324, 325, 0, 14, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, - 15, 16, 0, 17, 18, 19, 0, 0, 0, 20, - 0, 0, 0, 0, 21, 330, 0, 22, 23, 24, - 0, 25, 0, 0, 0, 0, 0, 26, 0, 27, - 28, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, - 0, 0, 773, 31, 7, 8, 774, 10, 167, 12, - 13, 32, 0, 0, 0, 14, 33, 0, 0, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, - 0, 0, 21, 0, 0, 0, 23, 775, 0, 168, + 16, 304, 17, 18, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 27, 28, + -310, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 1494, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 1495, 0, 0, 0, 0, 0, 325, 326, + 327, 0, 0, 0, 720, 1496, 299, 8, 9, 10, + 0, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 0, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 721, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 324, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 832, 328, 299, 8, 9, + 10, 0, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 304, 17, 0, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 0, 319, -787, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 0, 0, 1575, 328, 299, 8, + 9, 10, 0, 12, 300, 301, 302, 0, 303, 14, + 0, 0, 0, 0, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 0, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, 0, 0, -194, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 832, 328, 299, + 8, 9, 10, 0, 12, 533, 301, 302, 0, 303, + 14, 0, 0, 0, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 0, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, 0, 0, 0, 319, 0, 0, + 0, 0, 0, 320, 262, 0, 321, 8, 9, 0, + 0, 12, 13, 0, 322, 323, 324, 14, 0, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 0, 328, + 0, 16, 0, 17, 0, 0, 0, 0, 0, 20, + 0, 263, 264, 0, -787, 0, 329, 0, 23, 0, + 265, 0, 0, 0, 0, 0, 0, 26, 0, 130, + 131, 0, 266, 0, 0, 0, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 0, 0, 288, + 289, 290, 0, 0, 291, 0, 921, 292, 299, 8, + 9, 10, 0, 12, 533, 301, 302, 0, 303, 14, + 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 0, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 0, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 318, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 321, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 324, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 0, 0, 923, 328, 299, + 8, 9, 10, 0, 12, 533, 301, 302, 0, 303, + 14, 0, 0, 0, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 0, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, 0, 0, 0, 319, 0, 0, + 0, 0, 0, 320, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 1507, 328, + 299, 8, 9, 10, 0, 12, 533, 301, 302, 0, + 303, 14, 0, 0, 0, 0, 329, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 318, 0, 0, 0, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 299, 8, 9, 10, + 328, 12, 533, 301, 302, 0, 303, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, + 0, 16, 304, 17, 0, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 0, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 761, 321, 7, 8, 762, 10, 167, 12, + 13, 322, 323, 324, 0, 14, 0, 0, 0, 325, + 326, 327, 0, 0, 0, 0, 328, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, -525, 0, + 0, 0, 21, 329, 871, 0, 23, 763, 0, 168, 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, - 0, 776, 0, 777, 0, 0, 0, 0, 0, 0, - 0, 30, 1039, 8, 774, 10, 205, 12, 206, 0, - 0, 31, 0, 14, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 33, 0, 0, 16, 0, 17, - 18, 0, 0, 0, 0, 20, 0, 0, 0, 0, - 21, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 27, 28, 0, 0, 0, - 0, 1041, 0, 0, 0, 0, 0, 0, 0, 30, - 7, 8, 9, 10, 205, 12, 206, 0, 0, 31, - 0, 14, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 33, 0, 0, 16, 0, 17, 18, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 0, 0, 1420, 0, 7, - 8, 9, 10, 205, 12, 206, 0, 30, 0, 0, - 14, 0, 0, 0, 0, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 16, 32, 17, 18, 0, 0, - 33, 0, 20, 0, 0, 0, 0, 21, 0, 0, - 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 27, 28, 8, 9, 0, 167, 12, 13, - 0, 0, 1545, 0, 14, 0, 30, 8, 9, 0, - 205, 12, 206, 0, 0, 0, 31, 14, 16, 0, - 17, 18, 0, 0, 32, 0, 20, 0, 0, 33, - 0, 16, 0, 17, 18, 23, 0, 0, 0, 20, - 0, 0, 0, 0, 26, 0, 130, 131, 23, 0, - 0, 8, 9, 0, 0, 12, 13, 26, 0, 130, - 131, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, + 0, 764, 0, 765, 0, 0, 0, 0, 0, 0, + 0, 30, 761, 0, 7, 8, 762, 10, 167, 12, + 13, 31, 0, 0, 0, 14, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, -527, 0, + -525, 0, 21, 0, 0, 0, 23, 763, 0, 168, + 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, + 0, 764, 0, 765, 0, 0, 0, 0, 0, 0, + 0, 30, 761, 0, 7, 8, 762, 10, 167, 12, + 13, 31, 0, 0, 0, 14, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, -526, 0, + -527, 0, 21, 0, 0, 0, 23, 763, 0, 168, + 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, + 0, 764, 0, 765, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 0, 1280, 1281, 1282, + 10, 167, 12, 300, 301, 302, 0, 303, 14, 1283, + -526, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, + 1293, 15, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 1294, 23, + 1295, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 1296, 318, 717, 0, 1297, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 0, 0, 0, 328, 0, 1298, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1428, 329, 1280, 1281, 1282, 10, 167, + 12, 300, 301, 302, 0, 303, 14, 1283, 0, 1284, + 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 15, + 16, 304, 17, 18, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 1294, 23, 1295, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 1296, 318, + 717, 0, 1297, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 0, 0, 325, 326, + 327, 0, 0, 0, 0, 328, 0, 1298, 0, 1280, + 1281, 1282, 10, 167, 12, 300, 301, 302, 0, 303, + 14, 1283, 329, 1284, 1285, 1286, 1287, 1288, 1289, 1290, + 1291, 1292, 1293, 15, 16, 304, 17, 18, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 1294, 23, 1295, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 1296, 318, 1552, 0, 1297, 319, 0, 0, + 0, 0, 0, 320, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 0, 328, + 0, 1298, 0, 1280, 1281, 1282, 10, 167, 12, 300, + 301, 302, 0, 303, 14, 1283, 329, 1284, 1285, 1286, + 1287, 1288, 1289, 1290, 1291, 1292, 1293, 15, 16, 304, + 17, 18, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 1294, 23, 1295, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 1296, 318, 0, 0, + 1297, 319, 0, 0, 0, 0, 0, 320, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 0, 0, 0, 0, 0, 325, 326, 327, 0, + 0, 0, 0, 328, 0, 1298, 299, 8, 9, 10, + 167, 12, 300, 301, 302, 730, 303, 14, 0, 0, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 304, 17, 18, 19, 0, 305, 306, 20, + 0, 307, 308, 309, 21, 310, 311, 0, 23, 0, + 617, 0, 312, 313, 314, 315, 316, 26, 0, 27, + 318, 0, 0, 0, 319, 0, 0, 0, 0, 0, + 320, 0, 0, 899, 0, 0, 0, 0, 0, 0, + 0, 322, 323, 900, 0, 0, 0, 0, 0, 325, + 326, 327, 0, 620, 0, 0, 901, 622, 7, 8, + 9, 10, 167, 12, 300, 301, 302, 730, 303, 14, + 0, 0, 0, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 304, 17, 18, 19, 0, 305, + 306, 20, 0, 307, 308, 309, 21, 310, 311, 0, + 23, 0, 617, 0, 312, 313, 314, 315, 316, 26, + 0, 27, 28, 0, 0, 0, 319, 0, 0, 0, + 0, 0, 320, 0, 0, 1180, 0, 0, 0, 0, + 0, 0, 0, 322, 323, 1181, 0, 0, 0, 0, + 0, 325, 326, 327, 0, 620, 0, 0, 1182, 622, + 299, 8, 9, 10, 0, 12, 300, 301, 302, 0, + 303, 14, 0, 0, 0, 329, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 304, 17, 18, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 617, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 320, 0, 0, 899, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 900, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 620, 0, 0, + 901, 622, 7, 8, 9, 10, 0, 12, 300, 301, + 302, 0, 303, 14, 0, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 304, 17, + 18, 19, 0, 305, 306, 20, 0, 307, 308, 309, + 21, 310, 311, 0, 23, 0, 617, 0, 312, 313, + 314, 315, 316, 26, 0, 27, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 0, 1180, + 0, 0, 0, 0, 0, 0, 0, 322, 323, 1181, + 0, 0, 0, 0, 0, 325, 326, 327, 0, 620, + 0, 0, 1182, 622, 299, 8, 9, 10, 0, 12, + 533, 301, 302, 0, 303, 14, 0, 0, 0, 329, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 304, 17, 18, 19, 0, 305, 306, 20, 0, 307, + 308, 309, 21, 310, 311, 0, 23, 0, 0, 0, + 312, 313, 314, 315, 316, 26, 0, 27, 318, 0, + 0, 0, 319, 0, 0, 0, 0, 0, 320, 0, + 0, 552, 0, 0, 0, 0, 0, 0, 0, 322, + 323, 553, 0, 0, 0, 0, 0, 325, 326, 327, + 299, 8, 9, 10, 554, 12, 533, 301, 302, 0, + 303, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 0, 0, 0, 16, 304, 17, 0, 19, + 0, 305, 306, 20, 0, 307, 308, 309, 21, 310, + 311, 0, 23, 0, 0, 0, 312, 313, 314, 315, + 316, 26, 0, 27, 318, 0, 0, 1401, 319, 0, + 0, 0, 0, 0, 320, 0, 0, 321, 0, 0, + 0, 0, 0, 0, 0, 322, 323, 324, 0, 0, + 0, 0, 0, 325, 326, 327, 0, 0, 0, 0, + 328, 299, 8, 9, 10, 167, 12, 300, 301, 302, + 0, 303, 14, 0, 0, 0, 0, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 304, 17, 18, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 321, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 324, 0, + 0, 0, 0, 0, 325, 326, 327, 7, 8, 9, + 10, 328, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 0, 0, 16, 304, 17, 18, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 28, 0, 0, 0, 319, 0, 0, 0, 0, + 0, 320, 0, 0, 1494, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 1495, 0, 0, 0, 0, 0, + 325, 326, 327, 299, 8, 9, 10, 1496, 12, 300, + 301, 302, 0, 303, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 0, 0, 0, 16, 304, + 17, 0, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 317, 318, 0, 0, + 0, 319, 0, 0, 0, 0, 0, 320, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 0, 0, 0, 0, 0, 325, 326, 327, 299, + 8, 9, 10, 328, 12, 300, 301, 302, 0, 303, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 329, 0, 0, 0, 16, 304, 17, 0, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, 0, 0, 0, 319, 0, 0, + 0, 0, 0, 320, 0, 0, 321, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 324, 0, 0, 0, + 0, 0, 325, 326, 327, 299, 8, 9, 10, 328, + 12, 533, 301, 302, 0, 303, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, + 16, 304, 17, 0, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 27, 318, + 0, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 0, 0, 325, 326, + 327, 299, 8, 9, 10, 328, 12, 533, 301, 302, + 0, 303, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 0, 0, 0, 16, 304, 17, 0, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 318, 566, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 321, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 324, 0, + 0, 0, 0, 0, 325, 326, 327, 299, 8, 9, + 10, 567, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 0, 0, 16, 304, 17, 0, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 0, 0, 0, 0, 328, 605, 299, + 8, 9, 10, 0, 12, 533, 301, 302, 0, 303, + 14, 0, 0, 0, 329, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 304, 17, 18, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 0, 552, 0, 0, 0, + 0, 0, 0, 0, 322, 323, 553, 0, 0, 0, + 0, 0, 325, 326, 327, 1140, 8, 9, 10, 554, + 12, 533, 301, 302, 0, 303, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, + 16, 304, 17, 0, 19, 0, 305, 306, 20, 0, + 307, 308, 309, 21, 310, 311, 0, 23, 0, 0, + 0, 312, 313, 314, 315, 316, 26, 0, 27, 318, + 0, 0, 0, 319, 0, 0, 0, 0, 0, 320, + 0, 0, 321, 0, 0, 0, 0, 0, 0, 0, + 322, 323, 324, 0, 0, 0, 0, 0, 325, 326, + 327, 7, 8, 9, 10, 328, 12, 300, 301, 302, + 0, 303, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 0, 0, 0, 16, 304, 17, 18, + 19, 0, 305, 306, 20, 0, 307, 308, 309, 21, + 310, 311, 0, 23, 0, 0, 0, 312, 313, 314, + 315, 316, 26, 0, 27, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 320, 0, 0, 1494, 0, + 0, 0, 0, 0, 0, 0, 322, 323, 1495, 0, + 0, 0, 0, 0, 325, 326, 327, 299, 8, 9, + 10, 1496, 12, 533, 301, 302, 0, 303, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 0, + 0, 0, 16, 304, 17, 0, 19, 0, 305, 306, + 20, 0, 307, 308, 309, 21, 310, 311, 0, 23, + 0, 0, 0, 312, 313, 314, 315, 316, 26, 0, + 27, 318, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 320, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 322, 323, 324, 0, 0, 0, 0, 0, + 325, 326, 327, 299, 8, 9, 10, 534, 12, 533, + 301, 302, 0, 303, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 0, 0, 0, 16, 304, + 17, 0, 19, 0, 305, 306, 20, 0, 307, 308, + 309, 21, 310, 311, 0, 23, 0, 0, 0, 312, + 313, 314, 315, 316, 26, 0, 27, 318, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 320, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 322, 323, + 324, 0, 0, 0, 0, 0, 325, 326, 327, 299, + 8, 9, 10, 537, 12, 533, 301, 302, 0, 303, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 329, 0, 0, 0, 16, 304, 17, 0, 19, 0, + 305, 306, 20, 0, 307, 308, 309, 21, 310, 311, + 0, 23, 0, 0, 0, 312, 313, 314, 315, 316, + 26, 0, 27, 318, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 320, 0, 6, 321, 7, 8, 9, + 10, 11, 12, 13, 322, 323, 324, 0, 14, 0, + 0, 0, 325, 326, 327, 0, 0, 0, 0, 328, + 0, 15, 16, 0, 17, 18, 19, 0, 0, 0, + 20, 0, 0, 0, 0, 21, 329, 0, 22, 23, + 24, 0, 25, 0, 0, 0, 0, 0, 26, 0, + 27, 28, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 761, 31, 7, 8, 762, 10, 167, + 12, 13, 32, 0, 0, 0, 14, 33, 0, 0, + 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, + 0, 0, 0, 21, 0, 0, 0, 23, 763, 0, + 168, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 764, 0, 765, 0, 0, 0, 0, 0, + 0, 0, 30, 1033, 8, 762, 10, 205, 12, 206, + 0, 0, 31, 0, 14, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 33, 0, 0, 16, 0, + 17, 18, 0, 0, 0, 0, 20, 0, 0, 0, + 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, + 0, 0, 1035, 0, 0, 0, 0, 0, 0, 0, + 30, 7, 8, 9, 10, 205, 12, 206, 0, 0, + 31, 0, 14, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 33, 0, 0, 16, 0, 17, 18, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 21, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 1418, 0, + 7, 8, 9, 10, 167, 12, 13, 0, 30, 0, + 0, 14, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 16, 32, 17, 18, 0, + 0, 33, 0, 20, 0, 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 130, 131, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 0, 0, 0, 0, 658, 0, 0, 1541, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 1559, 569, 570, 571, 572, 573, 574, 575, + 0, 26, 0, 27, 28, 7, 8, 9, 10, 205, + 12, 206, 0, 0, 0, 0, 14, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 16, 0, 17, 18, 0, 32, 0, 0, 20, 0, + 33, 0, 0, 21, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 8, 9, 0, 167, 12, 13, 0, 0, 0, 0, + 14, 0, 30, 8, 9, 0, 167, 12, 13, 0, + 0, 1546, 31, 14, 16, 0, 17, 18, 0, 0, + 32, 0, 20, 0, 0, 33, 0, 16, 0, 17, + 18, 679, 0, 0, 168, 20, 0, 0, 0, 0, + 26, 0, 130, 131, 23, 0, 0, 8, 9, 0, + 205, 12, 206, 26, 0, 130, 131, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 17, 18, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 0, 0, 0, 0, 0, 0, 0, 26, 0, 130, + 131, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 0, 0, 0, 0, 1233, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 658, 0, 0, 1542, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 1560, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 0, - 582, 583, 584, 585, 586, 587, 588, 589, 590 + 574, 575, 576, 577, 578, 579, 580, 0, 582, 583, + 584, 585, 586, 587, 588, 589, 590 }; static const short yycheck[] = { 4, - 161, 174, 149, 150, 23, 4, 175, 209, 156, 80, - 176, 251, 4, 4, 349, 55, 90, 715, 92, 126, - 14, 57, 564, 402, 355, 402, 355, 482, 80, 503, - 35, 62, 33, 455, 4, 402, 35, 42, 440, 30, - 31, 872, 4, 35, 35, 247, 460, 31, 304, 305, - 42, 42, 57, 133, 134, 621, 242, 134, 373, 84, - 209, 42, 628, 137, 124, 35, 42, 72, 4, 218, - 697, 601, 42, 35, 1385, 690, 133, 1474, 11, 84, - 42, 337, 778, 88, 780, 90, 4, 92, 1314, 83, - 1304, 787, 144, 84, 296, 1321, 217, 218, 42, 35, - 136, 1475, 107, 108, 796, 42, 42, 11, 37, 140, - 802, 46, 106, 54, 84, 355, 11, 35, 1476, 59, - 33, 42, 1519, 4, 42, 156, 1, 9, 33, 62, - 58, 136, 137, 0, 139, 175, 558, 1522, 59, 490, - 176, 76, 59, 1498, 47, 136, 0, 349, 149, 150, - 151, 203, 644, 62, 35, 1, 507, 141, 149, 150, - 165, 12, 146, 1518, 169, 74, 136, 622, 108, 1, - 98, 176, 60, 12, 165, 108, 182, 169, 169, 61, - 109, 212, 47, 58, 165, 1570, 4, 5, 169, 220, - 93, 262, 109, 169, 195, 165, 109, 74, 1556, 169, - 136, 536, 193, 194, 108, 236, 698, 169, 59, 59, - 194, 62, 58, 108, 155, 60, 62, 909, 136, 1616, - 59, 109, 1577, 62, 59, 169, 58, 1601, 93, 165, - 62, 47, 169, 169, 47, 25, 54, 27, 56, 57, - 714, 74, 59, 108, 149, 150, 151, 165, 169, 95, - 1561, 169, 70, 1479, 248, 4, 1209, 1210, 108, 200, - 47, 1475, 80, 95, 109, 60, 346, 27, 58, 108, - 1223, 31, 62, 108, 47, 259, 94, 93, 213, 7, - 93, 94, 48, 47, 358, 93, 35, 448, 209, 346, - 195, 108, 297, 47, 716, 108, 217, 218, 925, 60, - 60, 928, 1528, 38, 64, 95, 93, 709, 710, 37, - 641, 58, 58, 680, 109, 62, 393, 342, 64, 54, - 93, 108, 93, 359, 329, 385, 247, 474, 475, 93, - 3, 4, 5, 47, 1026, 950, 54, 342, 487, 93, - 47, 871, 969, 970, 62, 350, 1038, 913, 109, 109, - 47, 342, 1578, 358, 359, 670, 74, 54, 737, 93, - 737, 355, 4, 5, 404, 486, 487, 1063, 359, 74, - 610, 47, 342, 494, 47, 296, 25, 74, 27, 93, - 1072, 54, 1074, 56, 57, 506, 93, 94, 25, 359, - 27, 957, 75, 1346, 77, 62, 93, 402, 733, 74, - 405, 108, 1355, 1356, 525, 1358, 47, 74, 47, 58, - 402, 402, 954, 62, 56, 57, 1247, 93, 94, 450, - 93, 58, 93, 359, 60, 62, 4, 5, 349, 356, - 357, 9, 402, 504, 1000, 419, 54, 442, 422, 107, - 1, 359, 3, 4, 5, 6, 95, 8, 47, 25, - 434, 442, 93, 94, 93, 910, 74, 531, 95, 47, - 874, 442, 493, 468, 60, 64, 442, 108, 504, 107, - 108, 25, 442, 474, 475, 476, 54, 468, 56, 57, - 41, 408, 409, 474, 475, 406, 470, 48, 472, 4, - 54, 59, 70, 54, 93, 56, 57, 31, 468, 504, - 47, 485, 80, 62, 58, 93, 442, 75, 62, 47, - 1137, 1138, 47, 504, 47, 74, 94, 8, 9, 62, - 35, 442, 54, 14, 442, 480, 531, 88, 54, 534, - 62, 64, 537, 488, 504, 708, 541, 542, 543, 544, - 545, 95, 504, 1374, 54, 36, 93, 94, 74, 554, - 1024, 1504, 1505, 12, 45, 93, 47, 58, 93, 564, - 93, 496, 567, 74, 74, 486, 487, 989, 504, 474, - 475, 476, 951, 494, 951, 54, 762, 602, 764, 47, - 25, 54, 27, 769, 951, 506, 504, 47, 919, 47, - 919, 4, 5, 1159, 671, 74, 64, 602, 678, 673, - 59, 678, 93, 62, 525, 64, 62, 647, 3, 4, - 5, 602, 109, 58, 83, 84, 621, 62, 74, 821, - 4, 5, 1188, 628, 47, 93, 94, 618, 619, 47, - 621, 44, 602, 93, 755, 93, 94, 628, 632, 59, - 93, 54, 58, 56, 57, 54, 686, 54, 688, 689, - 95, 621, 12, 4, 5, 75, 1111, 77, 628, 915, - 679, 56, 57, 54, 48, 772, 108, 27, 673, 75, - 93, 31, 56, 57, 47, 93, 108, 1091, 1092, 919, - 94, 54, 687, 4, 5, 80, 691, 47, 4, 5, - 109, 329, 11, 733, 98, 714, 1170, 47, 44, 59, - 60, 74, 62, 54, 64, 56, 57, 778, 54, 780, - 47, 57, 3, 4, 5, 786, 787, 54, 645, 70, - 93, 108, 793, 797, 798, 108, 800, 648, 1202, 80, - 47, 47, 737, 93, 94, 56, 57, 74, 54, 47, - 56, 57, 778, 93, 780, 785, 737, 60, 108, 785, - 786, 787, 758, 93, 70, 3, 93, 793, 59, 60, - 744, 745, 60, 747, 80, 56, 57, 737, 689, 917, - 1184, 1106, 111, 778, 90, 780, 93, 93, 94, 1193, - 1194, 786, 787, 94, 1198, 93, 792, 778, 793, 780, - 94, 796, 797, 798, 54, 800, 787, 802, 62, 3, - 4, 5, 793, 62, 977, 796, 4, 5, 778, 111, - 780, 802, 733, 54, 74, 62, 778, 787, 780, 93, - 3, 4, 5, 793, 1238, 787, 796, 465, 4, 5, - 93, 793, 802, 74, 755, 1021, 1022, 1023, 3, 4, - 5, 6, 778, 74, 780, 74, 781, 782, 54, 108, - 48, 787, 56, 57, 58, 790, 62, 793, 56, 57, - 778, 108, 780, 74, 54, 870, 1564, 47, 74, 787, - 875, 54, 62, 56, 57, 793, 41, 74, 54, 11, - 56, 57, 80, 109, 74, 812, 917, 1107, 1108, 54, - 1110, 56, 57, 59, 60, 60, 534, 62, 903, 537, - 821, 4, 5, 541, 909, 70, 86, 87, 913, 59, - 962, 91, 92, 93, 94, 80, 554, 108, 909, 1333, - 911, 912, 913, 88, 54, 919, 59, 60, 93, 567, - 4, 5, 62, 571, 8, 9, 59, 27, 108, 909, - 14, 31, 59, 913, 74, 48, 951, 64, 953, 954, - 59, 60, 957, 56, 57, 54, 957, 1371, 75, 951, - 951, 599, 36, 62, 955, 956, 957, 605, 54, 59, - 60, 45, 956, 47, 1396, 74, 62, 80, 1313, 1050, - 54, 951, 56, 57, 4, 5, 108, 957, 74, 1029, - 1412, 74, 1063, 1029, 108, 1000, 70, 59, 1050, 1000, - 7, 8, 9, 809, 810, 811, 80, 14, 1013, 1000, - 1157, 1158, 74, 75, 1019, 77, 90, 944, 54, 93, - 94, 1026, 4, 5, 31, 1031, 1032, 1063, 48, 36, - 1000, 59, 60, 1038, 74, 1026, 56, 57, 45, 1186, - 1187, 1115, 59, 60, 74, 8, 9, 1038, 59, 60, - 108, 14, 957, 60, 1060, 109, 1026, 27, 1063, 109, - 80, 31, 59, 60, 59, 60, 48, 1072, 1038, 1074, - 59, 60, 1063, 36, 56, 57, 1498, 3, 4, 5, - 6, 1072, 45, 1074, 3, 4, 5, 6, 111, 59, - 60, 27, 108, 1063, 64, 1000, 1518, 1102, 80, 111, - 74, 1063, 1072, 74, 1074, 54, 74, 1042, 111, 1161, - 1115, 111, 108, 1048, 1049, 41, 108, 1052, 1053, 58, - 108, 1056, 41, 108, 54, 1547, 8, 1063, 54, 48, - 56, 57, 111, 1512, 93, 1512, 47, 56, 57, 1066, - 1067, 1068, 1311, 64, 1313, 1063, 1312, 59, 93, 1220, - 54, 1170, 109, 60, 1159, 1577, 1157, 1158, 1159, 36, - 108, 80, 88, 1585, 64, 64, 1157, 1158, 1159, 88, - 64, 1155, 1156, 4, 5, 108, 1181, 60, 9, 1163, - 108, 1516, 1181, 1188, 62, 1186, 1187, 1188, 108, 1159, - 1181, 108, 1606, 108, 64, 1186, 1187, 1188, 4, 5, - 64, 64, 111, 4, 5, 93, 62, 59, 75, 1215, - 1216, 1181, 1218, 1219, 75, 1221, 47, 108, 1188, 1181, - 75, 108, 108, 54, 108, 56, 57, 80, 81, 82, - 83, 84, 3, 4, 5, 6, 108, 30, 31, 70, - 33, 879, 48, 75, 62, 1181, 108, 48, 108, 80, - 56, 57, 1157, 1158, 1159, 56, 57, 62, 108, 90, - 59, 108, 93, 94, 57, 62, 59, 108, 111, 94, - 41, 1311, 65, 1313, 80, 913, 111, 48, 88, 80, - 47, 1186, 1187, 1188, 74, 56, 57, 108, 1272, 1273, - 109, 1275, 108, 108, 88, 108, 90, 111, 92, 1304, - 111, 3, 4, 5, 6, 108, 108, 1312, 60, 1314, - 59, 109, 59, 1304, 1516, 1314, 1321, 88, 64, 3, - 4, 5, 1321, 1314, 64, 1330, 59, 4, 5, 1490, - 1321, 1258, 9, 108, 1304, 108, 93, 1343, 1344, 41, - 93, 109, 1304, 137, 1314, 139, 1493, 1494, 141, 93, - 93, 1321, 1314, 146, 56, 57, 149, 150, 151, 1321, - 9, 109, 8, 12, 109, 33, 108, 108, 1304, 108, - 54, 1544, 56, 57, 58, 111, 108, 54, 1314, 56, - 57, 1019, 108, 176, 108, 1321, 88, 108, 111, 182, - 108, 108, 1313, 70, 108, 108, 108, 108, 47, 64, - 193, 194, 195, 80, 3, 4, 5, 6, 108, 4, - 59, 54, 61, 62, 108, 64, 209, 108, 1353, 1354, - 62, 111, 1423, 47, 217, 218, 75, 108, 77, 108, - 108, 62, 96, 62, 60, 60, 1442, 1443, 1444, 9, - 35, 60, 41, 16, 93, 94, 108, 42, 108, 48, - 78, 79, 80, 81, 82, 83, 84, 56, 57, 108, - 55, 108, 57, 108, 1469, 54, 259, 108, 108, 1474, - 1475, 1476, 93, 93, 1479, 1474, 60, 1517, 1469, 60, - 1479, 80, 64, 1474, 1475, 1476, 93, 1422, 1479, 88, - 1495, 93, 1493, 1494, 1495, 1501, 1502, 111, 17, 1469, - 54, 60, 1493, 1494, 1474, 1475, 1476, 1512, 108, 1479, - 107, 97, 1474, 1475, 1519, 60, 108, 1479, 1423, 11, - 1519, 1512, 60, 1528, 60, 108, 320, 60, 1519, 1528, - 108, 3, 4, 5, 6, 93, 329, 1528, 1474, 1475, - 64, 136, 1512, 1479, 59, 140, 108, 60, 11, 1519, - 1188, 1556, 108, 7, 8, 9, 108, 1519, 1528, 60, - 14, 11, 60, 1569, 358, 1556, 1528, 0, 0, 41, - 165, 0, 170, 1578, 169, 2, 35, 31, 671, 1578, - 175, 176, 36, 1519, 56, 57, 1556, 1578, 1493, 1494, - 1495, 45, 1528, 951, 169, 1516, 1234, 1235, 1236, 1237, - 1410, 165, 442, 1170, 3, 4, 5, 786, 1578, 1543, - 94, 1616, 405, 406, 1549, 1395, 1578, 1616, 3, 4, - 5, 6, 3, 4, 5, 1616, 419, 222, 139, 422, - 1616, 30, 1248, 299, 937, 428, 429, 430, 932, 721, - 241, 434, 1578, 1024, 1202, 33, 1616, 793, 786, 1222, - 654, 930, 602, 200, 1616, 54, 41, 56, 57, 1297, - 346, 1314, 47, 124, 1182, 1585, 460, 461, 1564, 54, - 1533, 56, 57, 54, 468, 56, 57, 470, 1597, 472, - 1616, 474, 475, 476, 1595, 70, 479, 1330, 1008, 3, - 4, 5, 485, 486, 487, 80, -1, 490, -1, -1, - -1, 494, -1, 88, -1, 90, -1, -1, 93, 94, - -1, 7, 8, 9, 507, 3, 4, 5, 14, 7, - 8, 9, -1, -1, -1, -1, -1, -1, -1, 306, - 307, -1, -1, -1, 1372, 31, -1, 531, 532, 461, - 36, 534, 56, 57, 537, 322, 468, -1, 325, 45, - -1, 328, -1, -1, 331, -1, -1, -1, 335, 552, - 553, 554, 150, 151, 359, -1, 343, 1405, 56, 57, - 564, -1, 566, -1, 567, 569, 570, -1, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, -1, 592, -1, - -1, -1, -1, -1, 598, -1, -1, 195, -1, 404, - 532, -1, 3, 4, 5, -1, 7, 8, 9, -1, - -1, -1, -1, -1, 3, 4, 5, -1, -1, -1, - -1, 1469, -1, -1, 628, 628, -1, 1475, 1476, -1, - 31, 635, 402, -1, -1, 36, -1, 442, -1, 4, - 5, -1, -1, 8, 9, 648, -1, 1495, -1, 14, - -1, 14, -1, 657, 658, 56, 57, 80, -1, 22, - 592, -1, -1, 28, -1, 30, 598, 56, 57, 673, - -1, 36, -1, 3, -1, 480, 6, -1, -1, -1, - 45, 104, 47, 488, 687, -1, 689, 690, -1, 54, - -1, 56, 57, -1, 3, 4, 5, 6, 468, 504, - -1, 31, 65, 635, -1, 70, -1, -1, 1556, -1, - 133, 41, -1, -1, -1, 80, -1, 721, -1, -1, - -1, 144, -1, -1, 1572, 90, 56, 57, 93, 94, - 733, 329, 41, 3, 4, 5, -1, 7, -1, 48, - 70, 744, 745, -1, 747, -1, 1594, 56, 57, -1, - 80, -1, 755, 1601, -1, 758, -1, -1, 88, -1, - 30, 124, -1, 93, -1, 552, 553, 37, -1, 3, - 4, 5, 6, 777, -1, 9, 3, 4, 5, 88, - 203, -1, -1, 786, 54, 148, 56, 57, -1, 792, - 3, 4, 5, 797, 798, -1, 800, 31, -1, -1, - 193, 194, 195, -1, -1, -1, -1, 41, 3, 4, - 5, 815, 815, 47, 237, 3, 4, 5, -1, -1, - 54, 48, 56, 57, -1, -1, 3, 4, 5, 56, - 57, 429, 430, 837, -1, 48, 70, -1, -1, 262, - -1, -1, 647, 56, 57, -1, 80, 3, 4, 5, - -1, 621, -1, -1, 88, -1, 90, -1, 628, 93, - 94, 56, 57, -1, -1, 869, 870, -1, 56, 57, - 874, 875, -1, -1, 237, 238, -1, 475, 476, 56, - 57, 686, 687, 688, 689, 889, -1, 891, 251, 893, - -1, 3, 4, 5, -1, 7, 8, 9, -1, -1, - 56, 57, -1, -1, -1, -1, -1, -1, 911, 912, - 913, -1, -1, -1, -1, -1, -1, -1, -1, 31, - -1, -1, -1, -1, 36, 929, -1, -1, 733, -1, - -1, 354, 737, -1, -1, 939, 534, 869, 870, 537, - -1, -1, 54, 875, 56, 57, 58, 950, -1, -1, - 954, -1, 955, 956, 957, 553, 554, 889, 321, 891, - -1, 893, -1, 967, -1, -1, -1, 737, -1, 567, - -1, -1, -1, 778, -1, 780, -1, -1, -1, 983, - 785, 786, 787, -1, -1, -1, -1, -1, 793, 412, - -1, 103, 104, 105, -1, -1, 1000, 1000, -1, -1, - 363, -1, -1, -1, -1, -1, -1, 939, -1, 372, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, -1, 385, 9, -1, -1, 796, -1, 1031, 1032, - 628, -1, 802, -1, -1, -1, -1, 1041, -1, -1, - -1, -1, -1, -1, -1, 31, -1, 4, 5, -1, - -1, 983, 9, -1, -1, 41, -1, 1060, -1, -1, - -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, - 56, 57, -1, -1, -1, -1, -1, 470, 501, 472, - -1, 474, 475, 476, 70, -1, -1, 1091, 1092, -1, - 47, 1095, 485, -1, 80, -1, 883, 54, -1, 56, - 57, -1, 88, -1, 90, 528, -1, 93, 94, -1, - -1, 1115, -1, 70, -1, -1, -1, -1, -1, -1, - 7, 8, 9, 80, 911, 912, -1, 14, -1, -1, - -1, -1, -1, 90, -1, -1, 93, 94, 501, 909, - -1, -1, -1, 913, 31, -1, -1, -1, -1, 36, - -1, -1, 1155, 1156, 1157, 1158, 1159, -1, 45, -1, - 1163, -1, -1, -1, -1, -1, -1, -1, 1172, -1, - 1174, -1, 1176, 60, -1, -1, -1, -1, -1, -1, - 1184, 951, -1, 1186, 1187, 1188, -1, 957, -1, 1193, - 1194, -1, 615, -1, 1198, -1, 4, 5, -1, -1, - 8, 9, -1, 566, -1, -1, 14, -1, 631, 1213, - 1214, -1, 1215, 1216, -1, 1218, 1219, 815, 1221, -1, - 28, -1, 30, -1, 1029, -1, -1, -1, 36, -1, - 1000, -1, -1, 4, 1238, -1, -1, 45, -1, -1, - 1172, -1, 1174, 14, 1176, -1, 54, 610, 56, 57, - 58, -1, -1, 24, -1, -1, 1026, -1, 1063, 30, - 31, -1, 33, -1, 35, 1269, -1, -1, 1038, 1272, - 1273, 42, 1275, -1, -1, -1, -1, 753, -1, 3, - 4, 5, 6, -1, 55, 93, 57, -1, -1, 1293, - -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, - -1, 72, 1072, -1, 1074, -1, -1, -1, -1, 1312, - 1313, -1, 83, 84, 912, 913, 679, 41, -1, 795, - -1, -1, -1, -1, 48, 801, 1113, 690, -1, 1333, - -1, -1, 56, 57, -1, 106, -1, 1269, -1, -1, - 1343, 1344, -1, -1, -1, 1349, -1, -1, -1, -1, - -1, 744, 745, -1, 747, -1, 80, -1, 721, 957, - -1, -1, -1, 134, 88, 136, -1, 1371, -1, 140, - 141, -1, -1, -1, 145, 146, -1, -1, 149, 150, - 151, -1, -1, -1, -1, -1, -1, -1, -1, 1159, - -1, -1, 785, -1, 165, -1, -1, -1, 169, 1186, - 1187, -1, 1000, -1, 175, 176, -1, -1, -1, -1, - -1, -1, 1217, -1, -1, -1, -1, 1222, 1188, 1423, - 1423, -1, 193, 194, 195, -1, -1, -1, 904, -1, - 906, 3, 4, 5, 6, -1, 1440, 1441, -1, 1442, - 1443, 1444, -1, -1, -1, 1449, -1, -1, -1, -1, - -1, 222, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, -1, 461, 9, -1, -1, 238, -1, 41, - 468, -1, -1, 1477, -1, -1, 48, 248, -1, -1, - -1, -1, -1, -1, 56, 57, 31, -1, 259, -1, - 1493, 1494, 1495, -1, -1, 918, 41, 920, 1501, 1502, - -1, -1, 47, -1, -1, -1, 1311, 1312, 1313, 54, - -1, 56, 57, -1, -1, -1, 88, 1304, -1, -1, - -1, -1, -1, -1, -1, 70, 297, 298, -1, 3, - 4, 5, 6, -1, 532, 80, -1, -1, -1, 962, - -1, -1, -1, 88, -1, 90, -1, -1, 93, 94, - -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, - 1158, 1159, 955, 956, 957, -1, 1569, 41, -1, -1, - -1, 342, -1, -1, 937, 346, -1, 348, 349, 350, - 54, -1, 56, 57, -1, -1, -1, 950, 359, 1187, - 1188, -1, -1, -1, 592, 1071, 70, 1073, -1, -1, - 598, -1, 1606, 4, 5, -1, 80, 1000, 9, 82, - -1, -1, -1, -1, 88, -1, -1, -1, -1, 93, - -1, -1, 393, 3, 4, 5, 6, 1050, -1, -1, - 628, 402, -1, 404, 405, -1, 1029, 635, -1, -1, - -1, -1, -1, -1, -1, -1, 47, -1, 419, -1, - -1, 422, 1128, 54, -1, 56, 57, -1, -1, -1, - -1, 41, -1, 434, -1, -1, -1, -1, -1, 70, - -1, 442, -1, -1, 54, -1, 56, 57, -1, 80, - 60, -1, -1, -1, -1, -1, 159, -1, -1, 90, - 70, -1, 93, 94, -1, -1, -1, -1, -1, 470, - 80, 472, -1, 474, 475, 476, 1493, 1494, 88, 480, - -1, 1134, 1517, 93, 485, -1, -1, 488, 191, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 1092, - 1206, 204, -1, 504, -1, 1211, -1, -1, 1161, -1, - -1, -1, 1512, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, - -1, -1, 1155, 1156, 1157, 1158, 1159, -1, -1, -1, - 1163, 542, 543, 544, 545, -1, -1, -1, -1, -1, - 31, -1, -1, -1, -1, -1, 1262, -1, -1, -1, - 41, -1, -1, 1186, 1187, 1188, 47, 1220, 3, 4, - 5, 6, -1, 54, 9, 56, 57, -1, -1, -1, - -1, -1, -1, -1, -1, 1178, -1, 815, -1, 70, - -1, 1184, -1, -1, 1217, 1423, 31, -1, -1, 80, - -1, 602, -1, 604, -1, -1, 41, 88, -1, 90, - -1, -1, 93, 94, -1, 616, -1, 618, 619, 54, - 621, 56, 57, -1, -1, -1, -1, 628, -1, -1, - -1, 632, -1, -1, -1, 70, -1, -1, -1, -1, - -1, 869, 870, -1, -1, 80, 647, 875, -1, 1272, - 1273, -1, 1275, 88, -1, -1, 1362, 1363, 93, -1, - -1, 889, -1, 891, -1, 893, 1494, 1495, -1, -1, - 671, -1, -1, 1379, -1, -1, -1, 678, -1, -1, - -1, -1, -1, -1, -1, 686, 687, 688, 689, 690, - 691, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 1298, 1299, -1, -1, -1, - -1, 939, 1, -1, 3, 4, 5, 6, 7, 8, - 9, -1, -1, -1, -1, 14, -1, -1, -1, 1435, - 1436, -1, 733, -1, -1, -1, 737, -1, -1, 28, - -1, 30, 31, 744, 745, -1, 747, 36, 1454, 1455, - -1, -1, 41, -1, -1, 983, 45, -1, -1, 48, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - -1, 60, 1000, -1, 775, 478, -1, 778, -1, 780, - 483, 70, -1, -1, 785, 786, 787, -1, -1, -1, - -1, 80, 793, -1, 1387, 796, -1, -1, -1, 88, - 1423, 802, -1, -1, 93, 508, -1, -1, 809, 810, - 811, 514, -1, -1, -1, -1, 1409, 1410, -1, -1, - 821, -1, -1, 526, 527, -1, 529, 3, 4, 5, - 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, 350, -1, -1, 3, 4, 5, 6, - 7, 8, 9, -1, -1, -1, -1, 14, -1, -1, - -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, - 1493, 1494, 1495, -1, 31, -1, -1, -1, 54, 36, - 56, 57, -1, -1, 41, -1, -1, -1, 45, -1, - 47, -1, -1, 894, 1487, 896, -1, 54, -1, 56, - 57, -1, 903, -1, -1, -1, 907, -1, 909, -1, - 911, 912, 913, 70, -1, -1, -1, -1, 919, -1, - -1, 624, 625, 80, -1, -1, 629, -1, -1, -1, + 161, 174, 149, 150, 23, 209, 176, 175, 4, 715, + 4, 126, 354, 4, 401, 459, 156, 250, 401, 348, + 303, 304, 621, 354, 80, 80, 90, 481, 92, 628, + 35, 4, 714, 501, 134, 46, 401, 42, 33, 35, + 84, 35, 246, 860, 35, 564, 42, 133, 134, 33, + 372, 42, 57, 336, 14, 42, 601, 30, 31, 439, + 690, 4, 35, 209, 42, 76, 133, 72, 766, 42, + 768, 124, 218, 137, 1383, 1475, 1, 775, 760, 84, + 1476, 33, 697, 88, 54, 90, 4, 92, 1299, 144, + 1309, 295, 35, 12, 217, 218, 57, 1316, 42, 42, + 42, 1477, 107, 108, 55, 1204, 1205, 11, 644, 9, + 33, 84, 7, 47, 93, 1, 62, 35, 1499, 1218, + 1520, 354, 11, 83, 42, 0, 11, 62, 0, 454, + 64, 136, 137, 58, 139, 489, 37, 62, 1519, 74, + 59, 84, 37, 62, 348, 136, 106, 27, 203, 54, + 74, 31, 4, 507, 149, 150, 151, 62, 62, 93, + 165, 61, 698, 136, 169, 149, 150, 151, 622, 60, + 95, 176, 58, 169, 165, 136, 149, 150, 169, 1, + 60, 1557, 169, 35, 64, 155, 109, 165, 80, 108, + 42, 169, 165, 136, 140, 59, 169, 1578, 150, 151, + 195, 25, 213, 784, 108, 261, 1602, 536, 109, 790, + 156, 195, 104, 59, 47, 176, 1523, 1617, 109, 108, + 193, 194, 165, 108, 175, 169, 169, 169, 60, 109, + 200, 59, 58, 558, 58, 27, 58, 47, 62, 31, + 62, 133, 47, 195, 108, 1344, 59, 59, 25, 74, + 27, 169, 144, 1562, 1353, 1354, 54, 1356, 47, 345, + 93, 1480, 42, 109, 1571, 1476, 212, 59, 60, 59, + 60, 95, 98, 95, 220, 108, 74, 109, 345, 59, + 108, 58, 47, 93, 136, 62, 447, 247, 93, 94, + 236, 296, 392, 357, 48, 108, 108, 341, 913, 641, + 60, 916, 901, 108, 93, 355, 356, 60, 938, 47, + 1529, 203, 54, 165, 859, 680, 897, 169, 95, 108, + 3, 4, 5, 328, 93, 12, 473, 474, 93, 709, + 710, 384, 74, 3, 4, 5, 341, 7, 8, 9, + 486, 58, 957, 958, 349, 237, 945, 64, 670, 109, + 737, 4, 357, 358, 737, 93, 109, 407, 408, 1057, + 1579, 31, 485, 486, 47, 93, 36, 358, 341, 261, + 493, 54, 59, 56, 57, 62, 328, 610, 3, 4, + 5, 47, 35, 506, 54, 358, 56, 57, 58, 169, + 44, 716, 38, 992, 354, 12, 401, 358, 341, 404, + 54, 59, 525, 57, 733, 401, 1505, 1506, 54, 74, + 93, 3, 4, 5, 6, 358, 74, 75, 862, 77, + 3, 4, 5, 942, 47, 1242, 4, 93, 401, 209, + 74, 56, 57, 103, 104, 105, 441, 217, 218, 1020, + 47, 64, 59, 93, 898, 62, 47, 64, 504, 41, + 441, 1032, 403, 59, 441, 80, 48, 35, 401, 4, + 5, 353, 467, 441, 56, 57, 246, 531, 441, 75, + 93, 107, 108, 56, 57, 58, 428, 429, 473, 474, + 475, 60, 1164, 4, 495, 1066, 93, 1068, 80, 473, + 474, 475, 93, 94, 467, 47, 88, 107, 441, 504, + 473, 474, 25, 449, 47, 54, 358, 108, 54, 54, + 54, 56, 57, 504, 35, 295, 1131, 1132, 1200, 411, + 4, 5, 474, 475, 467, 74, 531, 4, 5, 534, + 74, 504, 537, 59, 60, 708, 541, 542, 543, 544, + 545, 93, 1010, 504, 1012, 47, 492, 60, 1016, 554, + 93, 94, 939, 31, 1153, 1372, 939, 62, 602, 564, + 47, 504, 567, 62, 48, 907, 58, 47, 348, 74, + 62, 671, 56, 57, 939, 74, 907, 54, 678, 56, + 57, 47, 534, 1182, 64, 537, 504, 4, 5, 441, + 58, 93, 678, 70, 54, 645, 80, 602, 8, 9, + 74, 553, 554, 80, 14, 809, 93, 94, 500, 673, + 25, 47, 27, 93, 94, 567, 621, 94, 109, 12, + 903, 108, 93, 628, 47, 405, 36, 93, 94, 602, + 54, 48, 755, 47, 27, 45, 528, 47, 31, 56, + 57, 1085, 1086, 58, 75, 618, 619, 62, 621, 1331, + 74, 1105, 504, 47, 47, 628, 981, 93, 94, 602, + 679, 441, 58, 80, 4, 5, 59, 60, 673, 62, + 93, 64, 632, 54, 907, 62, 628, 54, 621, 93, + 95, 62, 687, 93, 54, 628, 691, 74, 3, 4, + 5, 54, 328, 74, 54, 714, 647, 74, 11, 93, + 93, 94, 4, 5, 108, 485, 486, 9, 48, 108, + 766, 47, 768, 493, 47, 108, 56, 57, 774, 775, + 47, 785, 786, 615, 788, 781, 506, 54, 47, 1197, + 1198, 1199, 737, 48, 1178, 686, 94, 688, 689, 631, + 80, 56, 57, 1187, 1188, 525, 108, 74, 1192, 108, + 800, 47, 54, 109, 56, 57, 98, 93, 769, 770, + 93, 766, 60, 768, 737, 905, 93, 778, 70, 774, + 775, 1100, 93, 182, 93, 766, 781, 768, 80, 784, + 785, 786, 733, 788, 775, 790, 75, 3, 77, 1233, + 781, 60, 965, 766, 737, 768, 25, 93, 27, 47, + 47, 479, 775, 4, 5, 766, 54, 768, 781, 487, + 111, 784, 773, 774, 775, 47, 62, 790, 4, 5, + 781, 62, 773, 766, 94, 768, 74, 94, 464, 58, + 83, 84, 775, 62, 3, 4, 5, 6, 781, 62, + 25, 784, 27, 62, 54, 93, 93, 790, 766, 111, + 768, 803, 62, 858, 93, 56, 57, 775, 863, 1565, + 59, 93, 48, 781, 74, 980, 95, 108, 648, 93, + 56, 57, 41, 58, 74, 59, 75, 62, 77, 48, + 4, 5, 932, 74, 1328, 108, 891, 56, 57, 4, + 5, 74, 897, 8, 9, 950, 901, 74, 534, 14, + 11, 537, 3, 4, 5, 541, 7, 8, 9, 689, + 95, 80, 109, 28, 766, 30, 768, 59, 554, 88, + 108, 36, 74, 775, 897, 1369, 899, 900, 901, 781, + 45, 567, 56, 57, 939, 571, 941, 942, 108, 54, + 945, 56, 57, 939, 7, 8, 9, 907, 900, 901, + 945, 14, 108, 733, 897, 56, 57, 54, 901, 905, + 108, 945, 54, 599, 74, 62, 939, 47, 31, 605, + 943, 944, 945, 36, 54, 755, 74, 74, 93, 1308, + 1101, 1102, 45, 1104, 3, 4, 5, 992, 1044, 1044, + 59, 4, 5, 945, 74, 64, 939, 992, 4, 5, + 1005, 1057, 945, 108, 1151, 1152, 75, 109, 992, 109, + 1060, 1061, 1062, 93, 906, 1020, 908, 59, 60, 992, + 80, 81, 82, 83, 84, 1036, 111, 1032, 111, 809, + 108, 1042, 1043, 1180, 1181, 1046, 1047, 56, 57, 1050, + 992, 54, 48, 56, 57, 1109, 74, 1020, 27, 992, + 56, 57, 1057, 74, 3, 4, 5, 70, 950, 1032, + 54, 1066, 1023, 1068, 8, 9, 1057, 80, 111, 1394, + 14, 74, 1023, 111, 80, 4, 5, 1020, 59, 60, + 4, 3, 4, 5, 1057, 1410, 108, 305, 306, 1032, + 108, 1096, 36, 1066, 108, 1068, 1057, 4, 5, 58, + 1155, 45, 54, 321, 1109, 54, 324, 56, 57, 327, + 62, 35, 330, 108, 1057, 8, 334, 54, 42, 48, + 59, 60, 74, 1066, 342, 1068, 1513, 56, 57, 111, + 1513, 55, 54, 57, 56, 57, 58, 1307, 1306, 1057, + 1308, 48, 797, 798, 799, 1164, 54, 401, 1153, 56, + 57, 80, 1044, 93, 62, 47, 1151, 1152, 1153, 1215, + 59, 60, 64, 1607, 59, 60, 74, 1151, 1152, 1153, + 1175, 59, 60, 80, 1499, 54, 59, 1182, 1151, 1152, + 1153, 1175, 93, 62, 1175, 1180, 1181, 1182, 1517, 109, + 1195, 59, 60, 54, 1519, 74, 1180, 1181, 1182, 36, + 1152, 1153, 1175, 1253, 60, 1057, 64, 1180, 1181, 1182, + 1153, 64, 136, 467, 59, 60, 140, 3, 4, 5, + 6, 64, 9, 1548, 108, 12, 108, 60, 62, 1181, + 1182, 867, 1175, 108, 108, 108, 1128, 108, 64, 1182, + 64, 165, 64, 62, 111, 169, 3, 4, 5, 6, + 27, 175, 176, 1578, 31, 41, 108, 1175, 108, 108, + 47, 1586, 108, 1155, 108, 901, 30, 31, 75, 33, + 56, 57, 59, 75, 61, 62, 75, 64, 75, 3, + 4, 5, 59, 60, 41, 108, 31, 64, 75, 62, + 77, 48, 108, 57, 1299, 59, 62, 59, 222, 56, + 57, 65, 1307, 108, 1309, 108, 93, 94, 1299, 62, + 108, 1316, 94, 1517, 88, 1309, 111, 111, 1309, 74, + 1325, 108, 1316, 1215, 48, 1316, 1299, 47, 108, 108, + 1491, 88, 56, 57, 552, 553, 1309, 108, 108, 111, + 1351, 1352, 111, 1316, 109, 108, 60, 1494, 1495, 758, + 3, 109, 108, 6, 59, 1306, 1299, 1308, 64, 93, + 64, 3, 4, 5, 6, 59, 1309, 621, 59, 59, + 108, 780, 1545, 1316, 628, 108, 93, 141, 31, 109, + 93, 1299, 146, 93, 93, 149, 150, 151, 41, 111, + 109, 1309, 108, 108, 8, 33, 141, 108, 1316, 41, + 108, 146, 109, 56, 57, 108, 48, 4, 5, 1420, + 108, 108, 176, 64, 56, 57, 111, 70, 182, 108, + 3, 4, 5, 6, 108, 108, 1421, 80, 108, 193, + 194, 195, 108, 54, 358, 88, 108, 1421, 80, 108, + 93, 111, 3, 4, 5, 209, 88, 44, 47, 194, + 62, 108, 108, 217, 218, 96, 108, 54, 41, 56, + 57, 62, 62, 9, 60, 1470, 3, 4, 5, 1421, + 1475, 1476, 1477, 56, 57, 1480, 60, 16, 60, 403, + 108, 1475, 108, 737, 1475, 1476, 1480, 93, 108, 1480, + 108, 1496, 108, 54, 258, 56, 57, 1470, 108, 1494, + 1495, 1496, 1475, 1476, 1477, 88, 108, 1480, 1513, 60, + 1494, 1495, 1496, 258, 108, 1520, 93, 441, 60, 56, + 57, 1494, 1495, 64, 1529, 54, 1520, 1470, 1308, 1520, + 784, 93, 1475, 1476, 1477, 1529, 790, 1480, 1529, 1550, + 1513, 111, 17, 1495, 1496, 93, 1182, 1520, 60, 54, + 107, 60, 1557, 97, 108, 479, 1529, 1475, 1476, 1195, + 11, 108, 1480, 487, 328, 108, 60, 1518, 108, 88, + 1513, 90, 60, 92, 1579, 60, 93, 1520, 59, 11, + 504, 3, 4, 5, 1557, 1579, 1529, 64, 1579, 60, + 108, 60, 108, 1229, 1230, 1231, 1232, 3, 4, 5, + 108, 11, 1520, 60, 0, 0, 1579, 0, 2, 35, + 170, 1529, 1617, 1408, 1557, 671, 1025, 1026, 137, 939, + 139, 441, 1544, 1617, 30, 774, 1617, 4, 5, 1164, + 165, 8, 9, 169, 56, 57, 1579, 14, 94, 139, + 404, 405, 1393, 897, 1617, 1054, 1617, 901, 54, 1243, + 56, 57, 298, 871, 418, 721, 1292, 421, 1331, 36, + 925, 1579, 920, 427, 428, 429, 242, 1200, 45, 433, + 47, 774, 781, 418, 1617, 1217, 421, 54, 654, 56, + 57, 899, 900, 918, 602, 939, 200, 345, 433, 124, + 1309, 945, 1586, 70, 3, 4, 5, 6, 1565, 1617, + 1176, 1598, -1, 80, 1534, 469, 1596, 471, 1000, 473, + 474, 475, 1325, 90, 478, -1, 93, 94, -1, -1, + 484, 485, 486, 647, 469, 489, 471, -1, -1, 493, + -1, -1, 41, -1, 1370, -1, -1, 1517, 992, 484, + -1, -1, -1, 507, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 62, -1, -1, -1, 3, 4, 5, + 6, 70, 686, 687, 688, 689, 1020, 1403, -1, -1, + 534, 80, -1, 537, 3, 4, 5, -1, 1032, 88, + 4, 5, -1, -1, 93, 9, -1, -1, 552, 553, + 554, -1, 38, 39, -1, 41, -1, 107, 108, -1, + 319, 1210, 1211, 567, 1213, 1214, -1, 1216, 54, 733, + 56, 57, 1066, 737, 1068, 3, 4, 5, 1, -1, + 3, 4, 5, 6, 7, 8, 9, 56, 57, -1, + 54, 14, 56, 57, 1470, -1, -1, -1, 357, -1, + 1476, 1477, 766, -1, 768, 28, 70, 30, 31, 773, + 774, 775, -1, 36, -1, -1, 80, 781, 41, -1, + 1496, -1, 45, -1, 628, 48, -1, 47, 56, 57, + 94, 54, -1, 56, 57, -1, -1, 60, -1, -1, + -1, 3, 4, 5, 648, -1, -1, 70, -1, 1107, + -1, -1, 3, 4, 5, -1, -1, 80, -1, 1153, + 3, 4, 5, 6, -1, 88, 86, 87, -1, -1, + 93, 91, 92, 93, 94, -1, -1, -1, -1, -1, + -1, 1557, -1, 687, -1, 689, 690, -1, 1182, -1, + -1, -1, 1341, 1342, 56, 57, -1, 1573, 41, -1, + 459, 460, -1, 4, 5, 56, 57, -1, 467, -1, + -1, 54, -1, 56, 57, -1, -1, 60, -1, 1595, + -1, -1, 1180, 1181, -1, -1, 1602, 70, -1, 733, + 3, 4, 5, -1, 7, 8, 9, 80, -1, -1, + 744, 745, -1, 747, -1, 88, 47, -1, -1, -1, + 93, 755, -1, 54, 758, 56, 57, -1, 31, 744, + 745, -1, 747, 36, -1, -1, -1, -1, -1, 70, + 774, -1, 531, 532, -1, -1, 780, -1, 328, 80, + -1, -1, -1, 56, 57, -1, -1, -1, -1, 90, + -1, -1, 93, 94, 1443, 1444, 1445, -1, -1, 803, + -1, 193, 194, 195, -1, 564, -1, 566, -1, -1, + 569, 570, -1, 572, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, -1, 592, -1, -1, -1, -1, -1, 598, + -1, 1299, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 401, -1, 1502, 1503, -1, -1, -1, -1, 1023, + -1, -1, -1, -1, -1, 3, 4, 5, 6, 628, + -1, -1, -1, 14, -1, -1, 635, 4, 5, -1, + -1, 22, 9, -1, 3, 4, 5, 6, -1, -1, + 9, -1, -1, 1057, -1, 899, 900, 901, 657, 658, + -1, -1, -1, 41, -1, -1, -1, -1, -1, 47, + -1, -1, 31, -1, 673, -1, 54, 467, 56, 57, + 47, 1570, 41, -1, 65, -1, -1, 54, 47, 56, + 57, -1, 70, -1, 938, 54, -1, 56, 57, 943, + 944, 945, 80, 70, -1, -1, -1, -1, -1, -1, + 88, 70, 90, 80, -1, 93, 94, -1, -1, 944, + -1, 80, 721, 90, -1, -1, 93, 94, -1, 88, + -1, 90, -1, -1, 93, 94, -1, -1, 3, 4, + 5, 6, -1, 124, 534, -1, -1, 537, 992, -1, + -1, 541, 542, 543, 544, 545, 7, 8, 9, -1, + -1, -1, -1, 14, 554, -1, 765, 148, 3, 4, + 5, 6, -1, -1, -1, -1, 41, 567, -1, 1513, + 31, 1025, 1026, 48, -1, 36, 785, 786, -1, 788, + -1, 56, 57, -1, 45, -1, 1494, 1495, -1, -1, + -1, -1, -1, -1, 803, -1, 41, -1, 1212, 60, + 1054, -1, -1, 1217, -1, 80, -1, -1, -1, 54, + 460, 56, 57, 88, -1, -1, 825, 467, -1, -1, + -1, 621, -1, -1, -1, -1, -1, 469, 628, 471, + -1, 473, 474, 475, 4, 5, -1, -1, 8, 9, + -1, -1, 484, 88, 14, -1, 237, 238, 857, 858, + -1, -1, -1, 862, 863, -1, -1, -1, 28, 250, + 30, -1, -1, -1, -1, -1, 36, -1, 877, -1, + 879, -1, 881, -1, -1, 45, -1, 47, 7, 8, + 9, -1, 532, -1, 54, 14, 56, 57, -1, -1, + -1, -1, 1306, 1307, 1308, 1149, 1150, 1151, 1152, 1153, + 70, -1, 31, 1157, -1, -1, -1, 36, 917, -1, + 80, -1, -1, -1, 1149, 1150, 45, -1, 927, -1, + 90, -1, 1157, 93, 94, -1, 1180, 1181, 1182, 320, + -1, 60, -1, 942, 7, 8, 9, 737, -1, -1, + -1, 14, 592, -1, -1, -1, 955, -1, 598, -1, + -1, -1, -1, -1, -1, -1, 1210, 1211, 31, 1213, + 1214, -1, 1216, 36, 973, -1, -1, -1, -1, -1, + -1, 362, 45, 78, 79, 80, 81, 82, 83, 84, + 371, -1, -1, 992, 784, 635, -1, -1, -1, -1, + 790, 4, -1, 384, -1, -1, 3, 4, 5, 6, + -1, 14, 9, -1, -1, -1, -1, -1, -1, -1, + -1, 24, -1, 1267, 1268, -1, 1270, 30, 31, -1, + 33, -1, 35, -1, 31, -1, 1035, -1, -1, 42, + -1, -1, 1267, 1268, 41, 1270, -1, -1, -1, -1, + -1, -1, 55, -1, 57, -1, -1, 54, -1, 56, + 57, -1, 65, 1307, 1308, -1, -1, -1, 858, 72, + -1, -1, -1, 70, 4, 5, -1, -1, -1, 9, + 83, 84, -1, 80, -1, -1, 1085, 1086, -1, -1, + 1089, 88, -1, -1, -1, -1, 93, 1341, 1342, -1, + -1, 891, -1, 106, -1, -1, -1, 897, -1, -1, + 1109, 901, 744, 745, 1518, 747, -1, 47, -1, 500, + -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, + -1, 134, -1, 136, -1, -1, -1, 140, 141, -1, + 70, 773, 145, 146, -1, -1, 149, 150, 151, 939, + 80, 941, -1, -1, -1, 945, -1, -1, -1, -1, + 90, -1, 165, 93, 94, -1, 169, 1166, -1, 1168, + -1, 1170, 175, 176, -1, -1, -1, 1421, -1, 1178, + -1, -1, -1, -1, -1, 566, -1, -1, 1187, 1188, + 193, 194, 195, 1192, 3, 4, 5, 6, -1, 1443, + 1444, 1445, 992, -1, -1, -1, -1, -1, -1, 1208, + 1209, -1, -1, -1, -1, 1005, -1, 857, 858, 222, + -1, -1, 31, 863, -1, -1, -1, -1, -1, 610, + 1020, -1, 41, -1, 1233, 238, -1, 877, -1, 879, + -1, 881, 1032, -1, 247, 54, -1, 56, 57, -1, + 1494, 1495, 1496, -1, -1, 258, -1, -1, 1502, 1503, + -1, 70, -1, -1, -1, 1264, -1, -1, -1, -1, + -1, 80, -1, -1, -1, -1, 1066, -1, 1068, 88, + -1, -1, -1, -1, 93, -1, -1, 927, -1, 1288, + -1, -1, -1, 296, 297, 753, -1, -1, 679, -1, + 3, 4, 5, -1, 7, -1, 1096, -1, -1, 690, + -1, 943, 944, 945, 3, 4, 5, 6, -1, -1, + -1, -1, -1, -1, -1, 783, 1570, 30, -1, 1328, + -1, 789, -1, 973, 37, -1, -1, -1, 341, -1, + 721, -1, 345, -1, 347, 348, 349, -1, 1347, -1, + -1, 54, 41, 56, 57, 358, -1, -1, -1, 48, + 992, -1, -1, 1153, -1, -1, -1, 56, 57, -1, + 1369, 4, 5, -1, -1, 8, 9, -1, -1, -1, + -1, 14, -1, -1, -1, -1, -1, -1, -1, 392, + -1, 1023, 1182, -1, -1, -1, -1, -1, 401, 88, + 403, 404, -1, 36, -1, 1195, -1, -1, -1, -1, + -1, -1, 45, -1, 47, 418, -1, -1, 421, -1, + -1, 54, 1421, 56, 57, -1, -1, -1, -1, -1, + 433, -1, -1, -1, 892, -1, 894, 70, 441, -1, + -1, -1, 1441, 1442, -1, -1, -1, 80, -1, -1, + -1, 1450, 3, 4, 5, 6, -1, 90, -1, -1, + 93, 94, 3, 4, 5, 6, 469, -1, 471, -1, + 473, 474, 475, -1, -1, -1, 479, -1, -1, 1478, + -1, 484, -1, -1, 487, -1, -1, -1, -1, -1, + 41, -1, -1, -1, -1, -1, -1, 48, -1, -1, + 41, 504, -1, -1, -1, 56, 57, 48, 3, 4, + 5, 6, -1, -1, 9, 56, 57, 1149, 1150, 1151, + 1152, 1153, -1, -1, -1, 1157, 1166, -1, 1168, 80, + 1170, -1, -1, -1, -1, 1325, 31, 88, -1, 542, + 543, 544, 545, -1, 925, -1, 41, 88, 1180, 1181, + 1182, -1, -1, -1, -1, -1, -1, 938, -1, 54, + -1, 56, 57, -1, -1, -1, 3, 4, 5, 6, + -1, -1, 9, -1, -1, 70, -1, -1, -1, -1, + 1212, -1, -1, -1, -1, 80, 82, -1, 347, 348, + 349, -1, -1, 88, 31, -1, -1, -1, 93, 602, + -1, 604, -1, -1, 41, -1, -1, 1065, 1607, 1067, + 47, -1, -1, 616, -1, 618, 619, 54, 621, 56, + 57, -1, -1, -1, 1264, 628, -1, -1, -1, 632, + -1, -1, -1, 70, -1, 1267, 1268, -1, 1270, -1, + -1, -1, -1, 80, 647, -1, -1, -1, -1, -1, -1, 88, -1, 90, -1, -1, 93, 94, -1, -1, - -1, -1, -1, 4, 1172, -1, 1174, -1, 1176, -1, - 951, -1, 953, 14, 955, 956, 957, -1, -1, -1, - -1, -1, 23, 24, -1, -1, -1, -1, -1, 30, - 31, -1, 33, -1, 35, -1, 3, 4, 5, 6, - -1, 42, 3, 4, 5, 6, 7, 8, 9, -1, - -1, 12, -1, 14, 55, -1, 57, -1, -1, 1000, - -1, -1, -1, -1, 65, -1, -1, 28, -1, 30, - 31, 72, 1013, -1, 41, 36, -1, -1, -1, -1, - 41, -1, -1, 84, 45, 1026, -1, 54, 1029, 56, - 57, -1, -1, 54, -1, 56, 57, 1038, 107, 108, - -1, 1269, -1, 70, -1, -1, -1, -1, -1, 70, - 1051, -1, -1, 80, -1, -1, -1, -1, -1, 80, - -1, 88, 1063, -1, -1, -1, 93, 88, -1, -1, - -1, 1072, 93, 1074, -1, 136, -1, -1, -1, 140, - 141, -1, -1, -1, -1, 146, -1, -1, 149, 150, - 151, 3, 4, 5, 6, -1, -1, -1, -1, -1, - 803, 1102, 805, -1, 165, -1, 1107, 1108, 169, 1110, - -1, 618, 619, -1, 175, 176, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 41, - -1, -1, 193, 194, 195, -1, 48, -1, -1, -1, - -1, -1, -1, -1, 56, 57, -1, -1, -1, -1, - -1, -1, -1, -1, 1155, 1156, 1157, 1158, 1159, 4, - 5, 222, 1163, 8, 9, -1, -1, -1, 80, 14, - -1, -1, -1, -1, 877, 878, 88, 880, -1, 686, - -1, 688, 689, -1, 691, 1186, 1187, 1188, -1, -1, - -1, 36, -1, -1, -1, 1423, -1, -1, 259, -1, - 45, -1, 47, -1, -1, 908, -1, -1, -1, 54, - -1, 56, 57, -1, 4, 5, 1217, 7, 8, 9, - -1, 1222, 12, -1, 14, 70, 733, -1, -1, -1, - 3, 4, 5, 6, -1, 80, 297, 298, 28, -1, - 30, 31, -1, -1, -1, 90, 36, -1, 93, 94, - -1, -1, -1, -1, -1, 45, 959, 47, -1, -1, - 329, -1, -1, -1, 54, -1, 56, 57, 41, -1, - -1, 1272, 1273, -1, 1275, 48, -1, -1, -1, -1, - 70, 342, -1, 56, 57, 346, -1, 348, 349, 350, - 80, -1, -1, -1, 355, -1, -1, -1, 359, -1, - 90, -1, -1, 93, 94, -1, -1, 80, -1, -1, - 1311, 1312, 1313, -1, 821, 88, -1, 3, 4, 5, - 6, -1, 1025, 9, -1, -1, -1, -1, -1, 1330, - -1, -1, 393, 402, 1037, -1, -1, -1, -1, -1, - -1, 402, -1, 404, 405, 31, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 41, -1, -1, 419, -1, - -1, 422, -1, -1, -1, -1, -1, -1, 54, -1, - 56, 57, -1, 434, -1, -1, -1, -1, -1, -1, - -1, 442, -1, -1, 70, -1, -1, 894, -1, 896, - -1, -1, -1, -1, 80, -1, -1, -1, -1, 468, - 907, -1, 88, -1, 911, 912, -1, 93, -1, 470, - -1, 472, -1, 474, 475, 476, -1, -1, -1, 480, - 1123, -1, 1423, -1, 485, -1, -1, 488, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - -1, -1, 503, 504, -1, -1, -1, -1, 955, 956, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1162, - -1, 3, 4, 5, 6, 534, -1, 9, 537, -1, - -1, -1, 541, 542, 543, 544, 545, -1, -1, -1, - -1, 542, 543, 544, 545, 554, -1, -1, -1, 31, - -1, -1, 1493, 1494, 1495, -1, -1, -1, 567, 41, - 1, -1, 3, 4, 5, 6, 7, 8, 9, -1, - -1, 1512, 54, 14, 56, 57, 1517, -1, -1, -1, - -1, -1, 1225, -1, -1, -1, 1229, 28, 70, 30, - 31, 32, -1, -1, -1, 36, -1, -1, 80, -1, - 41, 602, -1, 604, 45, -1, 88, 48, -1, -1, - -1, 93, 621, 54, -1, 56, 57, 618, 619, 628, - 621, 1264, -1, -1, -1, -1, -1, 628, -1, 70, - 3, 4, 5, 6, 7, 8, 9, -1, -1, 80, - 641, 14, -1, -1, -1, -1, 647, 88, -1, -1, - -1, -1, 93, -1, -1, -1, -1, 98, 31, -1, - -1, -1, -1, 36, -1, -1, -1, -1, 41, -1, - 671, -1, 45, -1, 47, -1, -1, -1, 679, -1, - -1, 54, -1, 56, 57, 686, 687, 688, 689, 690, - 691, -1, -1, -1, -1, 1338, -1, 70, -1, 1342, - -1, -1, -1, -1, -1, -1, -1, 80, 1155, 1156, - 1157, 1158, -1, 714, -1, 88, 1163, -1, -1, -1, - 93, 1364, 1365, -1, -1, -1, -1, -1, 737, -1, - -1, -1, 733, -1, -1, -1, 737, -1, -1, 1186, - 1187, -1, -1, 744, 745, -1, 747, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, -1, -1, 9, -1, -1, -1, - -1, -1, -1, -1, 775, -1, -1, 778, -1, 780, - -1, -1, -1, -1, 785, 786, 787, 796, 31, -1, - -1, -1, 793, 802, -1, 796, -1, -1, 41, -1, - -1, 802, -1, -1, -1, -1, -1, -1, 809, 810, - 811, 54, -1, 56, 57, -1, -1, -1, -1, -1, - 821, -1, -1, -1, -1, 1272, 1273, 70, 1275, -1, - -1, -1, -1, -1, -1, -1, -1, 80, 3, 4, - 5, 6, 7, 8, 9, 88, -1, 12, -1, 14, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 870, -1, 28, -1, 30, 31, 348, 349, 350, - -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, - 45, -1, 47, -1, -1, -1, -1, -1, -1, 54, - -1, 56, 57, 894, 903, 896, -1, -1, -1, -1, - 909, -1, 903, -1, 913, 70, 907, -1, 909, 4, - 911, 912, 913, -1, -1, 80, -1, -1, 919, -1, - -1, -1, -1, 88, -1, 90, -1, -1, 93, 94, + -1, -1, -1, 159, 1122, -1, -1, -1, 671, 4, + 5, -1, -1, -1, 9, 678, -1, -1, -1, -1, + -1, -1, -1, 686, 687, 688, 689, 690, 691, -1, + -1, -1, -1, -1, -1, 191, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1086, 1496, -1, 204, -1, + -1, -1, 47, -1, -1, 3, 4, 5, 6, 54, + -1, 56, 57, 1513, -1, -1, 3, 4, 5, 6, + 733, -1, 9, -1, 737, 70, -1, -1, -1, -1, + -1, 744, 745, 1201, 747, 80, -1, -1, 1206, -1, + -1, -1, -1, 41, 31, 90, -1, -1, 93, 94, + 763, -1, -1, 766, 41, 768, 54, -1, 56, 57, + 773, 774, 775, -1, 62, -1, -1, 54, 781, 56, + 57, 784, 70, -1, -1, -1, -1, 790, -1, 1421, + -1, 1172, 80, 70, 797, 798, 799, 1178, -1, 1257, + 88, -1, -1, 80, -1, 93, 809, -1, -1, -1, + -1, 88, -1, -1, -1, -1, 93, -1, 1, 4, + 3, 4, 5, 6, -1, 8, -1, -1, -1, 14, + -1, -1, -1, -1, -1, -1, -1, -1, 23, 24, -1, -1, -1, -1, -1, 30, 31, -1, 33, -1, - 35, -1, 951, -1, 953, -1, -1, 42, 957, -1, - 951, -1, 953, -1, 955, 956, 957, -1, -1, -1, - 55, -1, 57, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, -1, -1, -1, -1, 14, -1, - -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, - -1, 1000, 28, -1, 30, 31, -1, -1, -1, 1000, - 36, -1, -1, -1, 1013, 41, -1, -1, -1, 45, - 1019, -1, 1013, -1, -1, -1, -1, 1026, 54, -1, - 56, 57, -1, 1024, 60, 1026, -1, -1, 1029, 1038, - -1, -1, -1, -1, 70, -1, -1, 1038, 133, 134, - -1, 136, -1, -1, 80, 140, 141, -1, -1, 144, - -1, 146, 88, -1, 149, 150, 151, 93, -1, -1, - -1, 156, 1063, 1072, -1, 1074, -1, -1, -1, -1, - 165, 1072, -1, 1074, 169, 3, 4, 5, 6, -1, - 175, 176, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1102, -1, -1, -1, -1, 193, 194, - 195, 1102, -1, 31, -1, -1, 1107, 1108, 203, 1110, - -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, 222, 56, 57, - -1, -1, -1, -1, -1, -1, -1, 618, 619, -1, - 621, -1, 70, -1, -1, -1, -1, 628, -1, -1, - 1159, -1, 80, -1, 1155, 1156, 1157, 1158, 1159, -1, - 88, -1, 1163, -1, 259, 93, -1, -1, -1, 1170, - -1, 3, 4, 5, 6, 7, 8, 9, -1, 1188, - -1, -1, 14, -1, -1, 1186, 1187, 1188, -1, -1, - -1, -1, -1, -1, -1, -1, 28, -1, 30, 31, - -1, 1202, -1, -1, 36, 686, -1, 688, 689, 41, - 691, -1, -1, 45, -1, 47, 1217, -1, -1, -1, - -1, 1222, 54, -1, 56, 57, -1, -1, -1, 3, - 4, 5, 6, -1, 329, 9, -1, -1, 70, -1, - 3, 4, 5, 6, -1, -1, 9, -1, 80, -1, - -1, 346, 733, -1, -1, -1, 88, 31, 90, 354, - -1, 93, 94, -1, 359, -1, -1, 41, 31, -1, - -1, 1272, 1273, -1, 1275, -1, -1, -1, 41, -1, - 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, - -1, 54, -1, 56, 57, -1, 70, -1, 393, 1300, - -1, -1, -1, -1, -1, -1, 80, 70, -1, 404, - 1311, 1312, 1313, -1, 88, -1, 31, 80, -1, 93, - -1, 1330, -1, -1, 419, 88, -1, 422, -1, 1330, - 93, -1, -1, 428, 429, 430, -1, -1, -1, 434, - 821, -1, -1, -1, -1, -1, -1, 442, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 3, 4, 5, 6, -1, 470, 9, 472, -1, 474, - 475, 476, -1, -1, -1, 480, -1, -1, -1, -1, - 485, -1, -1, 488, -1, -1, -1, -1, 31, -1, + 35, -1, -1, -1, -1, -1, -1, 42, 41, 618, + 619, -1, 1494, 1495, 1496, 48, -1, -1, -1, -1, + 55, 54, 57, 56, 57, -1, -1, -1, -1, 882, + 65, 884, -1, -1, -1, -1, -1, 72, 891, -1, + -1, -1, 895, -1, 897, -1, 899, 900, 901, 84, + -1, -1, 1360, 1361, 907, 88, -1, -1, -1, -1, + -1, -1, 1293, 1294, -1, -1, -1, -1, -1, 1377, + -1, -1, -1, -1, -1, -1, -1, 686, 460, 688, + 689, -1, 691, -1, -1, 467, 939, -1, 941, -1, + 943, 944, 945, -1, -1, -1, -1, -1, -1, -1, + -1, 136, -1, -1, -1, 140, 141, -1, -1, -1, + -1, 146, -1, -1, 149, 150, 151, -1, 3, 4, + 5, 6, -1, -1, 733, -1, -1, -1, 1436, 1437, + 165, 477, -1, -1, 169, -1, 482, -1, -1, 992, + 175, 176, -1, -1, -1, -1, 31, 1455, 1456, -1, + 532, -1, 1005, -1, 1385, -1, 41, -1, 193, 194, + 195, -1, 508, -1, -1, -1, -1, 1020, 514, 54, + 1023, 56, 57, -1, -1, -1, 1407, 1408, -1, 1032, + 526, 527, -1, 529, -1, 70, -1, 222, -1, -1, + -1, -1, 1045, -1, -1, 80, -1, -1, -1, -1, + 809, -1, -1, 88, 1057, -1, -1, -1, 93, -1, + 592, -1, -1, 1066, -1, 1068, 598, -1, -1, -1, + -1, -1, -1, 258, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, 1096, -1, -1, 628, -1, 1101, 1102, + -1, 1104, -1, 635, -1, -1, -1, 1488, -1, -1, + -1, 296, 297, -1, 3, 4, 5, 6, -1, -1, + 9, -1, -1, 882, -1, 884, -1, -1, 624, 625, + -1, -1, -1, 629, -1, -1, 895, -1, -1, -1, + 899, 900, 31, -1, -1, -1, 1149, 1150, 1151, 1152, + 1153, -1, 41, -1, 1157, -1, 341, -1, 47, -1, + 345, -1, 347, 348, 349, 54, -1, 56, 57, 354, + 4, 5, -1, 358, 8, 9, -1, 1180, 1181, 1182, + 14, 70, -1, -1, 943, 944, -1, -1, -1, -1, + -1, 80, -1, -1, 28, -1, 30, -1, -1, 88, + -1, 90, 36, -1, 93, 94, -1, 392, -1, 1212, + -1, 45, -1, -1, 1217, -1, 401, -1, 403, 404, + 54, -1, 56, 57, 3, 4, 5, 6, 7, 8, + 9, -1, -1, 418, -1, 14, 421, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 433, 28, + -1, 30, 31, -1, -1, -1, 441, 36, -1, -1, + -1, -1, 41, -1, 1267, 1268, 45, 1270, 47, -1, + -1, 803, -1, -1, -1, 54, -1, 56, 57, -1, + -1, -1, -1, -1, 469, -1, 471, -1, 473, 474, + 475, 70, -1, -1, 479, 791, -1, 793, -1, 484, + -1, 80, 487, 1306, 1307, 1308, -1, -1, -1, 88, + -1, 90, -1, -1, 93, 94, -1, -1, -1, 504, + -1, -1, 1325, -1, -1, 857, 858, -1, -1, -1, + -1, 863, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, 877, 14, 879, -1, 881, + -1, -1, -1, -1, -1, -1, -1, 542, 543, 544, + 545, -1, -1, 31, -1, -1, -1, -1, 36, 865, + 866, -1, 868, 41, -1, -1, -1, 45, -1, 47, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 1149, 1150, 1151, 1152, -1, 927, -1, -1, 1157, -1, + 896, -1, 70, -1, -1, -1, 347, 348, 349, -1, + -1, -1, 80, 12, -1, -1, -1, 602, 1421, 604, + 88, 1180, 1181, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, 618, 619, -1, 621, -1, -1, -1, + -1, 973, -1, 628, -1, -1, -1, -1, -1, -1, + -1, 947, -1, -1, -1, -1, 641, -1, -1, -1, + 992, -1, 647, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 671, -1, -1, -1, + -1, 1494, 1495, 1496, 679, -1, -1, -1, -1, -1, + -1, 686, 687, 688, 689, 690, 691, -1, 1267, 1268, + 1513, 1270, -1, -1, -1, 1518, -1, -1, -1, -1, + -1, -1, -1, 1019, -1, -1, -1, -1, -1, 714, + -1, -1, -1, -1, -1, 1031, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 4, 5, -1, 733, 8, + 9, -1, 737, -1, -1, 14, -1, -1, -1, 744, + 745, -1, 747, -1, 3, 4, 5, 6, -1, 28, + 9, 30, -1, -1, -1, 760, -1, 36, 763, -1, + -1, 766, -1, 768, -1, -1, 45, -1, 773, 774, + 775, -1, 31, -1, -1, 54, 781, 56, 57, 784, + -1, -1, 41, -1, -1, 790, -1, -1, 47, -1, + -1, -1, 797, 798, 799, 54, -1, 56, 57, -1, + -1, 1117, -1, -1, 809, -1, -1, -1, -1, -1, + -1, 70, 4, -1, 1166, -1, 1168, -1, 1170, -1, + -1, 80, -1, -1, -1, -1, -1, -1, -1, 88, + -1, 90, -1, -1, 93, 94, -1, -1, 30, 31, + 1156, 33, -1, 35, -1, -1, -1, -1, -1, -1, + 42, -1, -1, -1, -1, -1, -1, 618, 619, -1, + 621, -1, -1, 55, -1, 57, -1, 628, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 882, -1, 884, + -1, -1, -1, -1, -1, -1, 891, -1, 80, -1, + 895, -1, 897, -1, 899, 900, 901, -1, -1, -1, + -1, -1, 907, -1, 1220, -1, -1, -1, 1224, -1, + -1, -1, 1264, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 686, -1, 688, 689, -1, + 691, -1, -1, -1, 939, -1, 941, -1, 943, 944, + 945, 133, 134, 1259, 136, -1, -1, -1, 140, 141, + -1, -1, 144, -1, 146, -1, -1, 149, 150, 151, + -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, + -1, -1, 733, 165, -1, -1, -1, 169, -1, -1, + -1, -1, -1, 175, 176, -1, -1, 992, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1005, 193, 194, 195, -1, -1, -1, -1, -1, -1, + -1, 203, -1, -1, -1, 1020, -1, -1, 1023, -1, + 1336, -1, -1, -1, 1340, -1, -1, 1032, -1, -1, + 222, -1, -1, -1, -1, 3, 4, 5, 6, 3, + 4, 5, 6, 7, 8, 9, 1362, 1363, 809, -1, + 14, -1, 1057, -1, -1, -1, -1, -1, -1, -1, + -1, 1066, -1, 1068, -1, -1, 258, 31, -1, 1421, + -1, -1, 36, 41, -1, -1, -1, 41, -1, -1, + -1, 45, -1, 47, -1, -1, 54, -1, 56, 57, + 54, 1096, 56, 57, 62, -1, 1101, 1102, -1, 1104, + -1, -1, 70, -1, -1, -1, 70, -1, -1, -1, + -1, -1, 80, -1, -1, -1, 80, -1, -1, -1, + 88, 882, -1, 884, 88, 93, 90, -1, -1, 93, + 94, -1, -1, -1, 895, -1, 328, -1, 899, 900, + 901, -1, -1, -1, 1149, 1150, 1151, 1152, 1153, -1, + -1, -1, 1157, 345, -1, -1, -1, -1, -1, 1164, + -1, 353, -1, -1, -1, -1, 358, -1, -1, -1, + -1, -1, -1, -1, -1, 1180, 1181, 1182, -1, -1, + -1, -1, 943, 944, 945, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1200, -1, -1, -1, -1, + 392, -1, -1, -1, -1, -1, -1, 1212, -1, -1, + -1, 403, 1217, -1, -1, -1, -1, 1, -1, 3, + 4, 5, 6, 7, 8, 9, 418, -1, -1, 421, + 14, 992, -1, -1, -1, 427, 428, 429, -1, -1, + -1, 433, -1, -1, 28, -1, 30, 31, 32, 441, + -1, -1, 36, -1, -1, -1, -1, 41, -1, -1, + -1, 45, 1267, 1268, 48, 1270, -1, -1, -1, -1, + 54, -1, 56, 57, -1, -1, -1, 469, -1, 471, + -1, 473, 474, 475, 4, 5, 70, 479, 8, 9, + 1295, -1, 484, -1, 14, 487, 80, -1, -1, -1, + -1, 1306, 1307, 1308, 88, -1, -1, -1, 28, 93, + 30, -1, 504, -1, 98, -1, 36, -1, -1, -1, + 1325, -1, -1, -1, -1, 45, 1331, -1, -1, -1, + -1, -1, -1, -1, 54, -1, 56, 57, 58, -1, + -1, -1, 534, -1, -1, 537, -1, -1, 3, 4, + 5, 6, -1, -1, 9, -1, -1, -1, -1, -1, + 552, 553, 554, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 93, -1, 567, 31, -1, -1, 4, + -1, -1, -1, -1, -1, -1, 41, -1, 1149, 1150, + 1151, 1152, 1153, -1, -1, -1, 1157, -1, -1, 54, + -1, 56, 57, -1, -1, 30, 31, -1, 33, -1, + 35, -1, -1, -1, -1, 70, 1421, 42, -1, 1180, + 1181, 1182, -1, 615, 31, 80, -1, -1, -1, -1, + 55, -1, 57, 88, -1, -1, 628, -1, 93, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 647, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, -1, 671, + -1, -1, 3, 4, 5, 6, 678, -1, 9, 1494, + 1495, 1496, -1, -1, 686, 687, 688, 689, -1, -1, + -1, -1, -1, -1, -1, -1, 1267, 1268, 1513, 1270, + 31, 136, -1, 1518, -1, 140, 141, -1, -1, -1, + 41, 146, -1, -1, 149, 150, 151, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, -1, -1, -1, + 165, 733, -1, -1, 169, 737, -1, -1, -1, 70, + 175, 176, 744, 745, -1, 747, -1, -1, -1, 80, + -1, -1, -1, -1, -1, -1, -1, 88, 193, 194, + 195, -1, 93, -1, 766, -1, 768, -1, -1, -1, + -1, 773, 774, 775, -1, -1, -1, -1, -1, 781, + -1, -1, -1, -1, -1, -1, -1, 222, -1, 33, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1, 803, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 55, 13, 14, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 258, -1, -1, -1, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, -1, 60, + 61, -1, 3, 4, 5, 6, 67, -1, 9, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, + 31, -1, 93, -1, -1, -1, -1, 899, 900, 901, + 41, -1, -1, 905, 906, 149, 150, 151, -1, 110, + -1, -1, -1, 54, -1, 56, 57, -1, -1, 354, + -1, -1, -1, 358, -1, -1, -1, -1, -1, 70, + -1, 175, -1, -1, -1, -1, -1, -1, -1, 80, + -1, 943, 944, 945, -1, -1, -1, 88, 950, 193, + 194, 195, 93, -1, -1, -1, -1, -1, -1, -1, + -1, 4, 5, -1, 7, 8, 9, -1, 403, 12, + -1, 14, -1, -1, -1, -1, -1, -1, 222, -1, + -1, -1, -1, 418, -1, 28, 421, 30, 31, -1, + 992, -1, -1, 36, 55, -1, -1, -1, 433, -1, + -1, -1, 45, -1, 47, -1, 441, -1, -1, -1, + -1, 54, -1, 56, 57, -1, -1, -1, -1, 80, + -1, 1023, 83, -1, -1, -1, -1, 70, -1, -1, + 3, 4, 5, 6, 469, -1, 471, 80, 473, 474, + 475, -1, 1044, 104, 479, 106, -1, 90, -1, 484, + 93, 94, 487, 297, -1, 1057, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 504, - -1, -1, -1, 894, 4, 896, -1, -1, -1, -1, - -1, 54, 1423, 56, 57, -1, 907, -1, -1, -1, - 911, 912, 913, -1, -1, -1, -1, 70, -1, 534, - 30, 31, 537, 33, -1, 35, -1, 80, -1, -1, - -1, -1, 42, -1, -1, 88, -1, 552, 553, 554, - 93, -1, -1, -1, -1, 55, -1, 57, -1, -1, - -1, -1, 567, -1, 955, 956, 957, 3, 4, 5, - 6, -1, -1, 9, -1, -1, 1495, -1, 3, 4, - 5, 6, 1493, 1494, 1495, -1, -1, -1, -1, -1, - -1, -1, -1, 1512, -1, 31, -1, -1, -1, -1, - -1, 1512, -1, -1, -1, 41, 1517, -1, -1, 1000, - 615, -1, -1, -1, -1, -1, 41, -1, 54, -1, - 56, 57, -1, 628, -1, -1, -1, -1, -1, 54, - -1, 56, 57, -1, 70, -1, 136, 62, -1, -1, - 140, 141, 647, -1, 80, 70, 146, -1, -1, 149, - 150, 151, 88, -1, -1, 80, -1, 93, -1, 3, - 4, 5, 6, 88, -1, 165, 671, -1, 93, 169, - -1, -1, -1, 678, -1, 175, 176, -1, -1, -1, - -1, 686, 687, 688, 689, -1, -1, 31, -1, -1, - -1, -1, -1, 193, 194, 195, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, - -1, -1, 222, -1, -1, 33, 70, -1, 733, -1, - -1, -1, 737, -1, -1, -1, 80, -1, -1, 744, - 745, -1, 747, -1, 88, -1, -1, 55, -1, 93, - -1, -1, 4, 5, -1, 7, 8, 9, -1, 259, - 12, -1, 14, -1, 1155, 1156, 1157, 1158, 1159, -1, - -1, -1, 1163, 778, -1, 780, 28, -1, 30, 31, - 785, 786, 787, -1, 36, -1, -1, -1, 793, -1, - -1, -1, -1, 45, -1, 1186, 1187, 1188, -1, -1, - -1, -1, 54, -1, 56, 57, -1, -1, -1, 1, - 815, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 14, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 28, -1, 30, 31, - 32, 149, 150, 151, 36, 37, -1, -1, -1, 41, - -1, -1, -1, 45, 46, 355, 48, -1, -1, 359, - -1, -1, 54, -1, 56, 57, -1, 175, 60, -1, - 62, -1, -1, -1, -1, -1, -1, -1, 70, -1, - -1, 1272, 1273, -1, 1275, 193, 194, 195, 80, -1, - -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, 93, -1, -1, 404, -1, 911, 912, 913, -1, - -1, -1, 917, 918, 222, -1, -1, 109, -1, 419, - -1, -1, 422, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, 434, -1, -1, -1, -1, -1, - -1, -1, 442, -1, -1, -1, -1, -1, -1, -1, - 955, 956, 957, -1, -1, -1, -1, 962, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, - 470, -1, 472, -1, 474, 475, 476, -1, -1, -1, - 480, 54, -1, 56, 57, 485, -1, -1, 488, 62, - 298, -1, -1, -1, -1, 1000, -1, 70, -1, -1, - -1, -1, -1, -1, 504, -1, -1, 80, -1, -1, - -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, - 93, -1, -1, -1, 1029, -1, 1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 348, 349, 350, -1, -1, 1050, -1, 3, 4, 5, - 6, -1, -1, 28, 29, 30, 31, 32, 1063, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, -1, 41, 61, -1, 3, 4, - 5, 6, 67, -1, -1, 70, 404, -1, 54, -1, - 56, 57, -1, 78, 79, 80, 62, -1, -1, -1, - -1, 86, 87, 88, 70, 90, 616, -1, 93, 94, - -1, -1, -1, -1, 80, -1, 41, -1, -1, 1134, - -1, -1, 88, -1, -1, 110, -1, 93, -1, 54, - -1, 56, 57, -1, -1, 60, -1, 647, -1, -1, - 1155, 1156, 1157, 1158, 1159, 70, 1161, -1, 1163, -1, - -1, -1, 470, -1, 472, 80, 474, 475, 476, -1, - -1, -1, 480, 88, -1, -1, -1, 485, 93, -1, - 488, 1186, 1187, 1188, -1, -1, 686, 687, 688, 689, - -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, + -1, 54, -1, 56, 57, 3, 4, 5, 6, 7, + 8, 9, -1, -1, 12, -1, 14, 70, -1, -1, + -1, -1, -1, 347, 348, 349, -1, 80, -1, -1, + 28, -1, 30, 31, 175, 88, -1, -1, 36, -1, + 93, -1, -1, 41, -1, -1, 1128, 45, -1, 47, + -1, -1, 193, 194, 195, -1, 54, -1, 56, 57, + -1, -1, 203, -1, -1, -1, -1, 1149, 1150, 1151, + 1152, 1153, 70, 1155, -1, 1157, -1, -1, -1, 403, + -1, 222, 80, -1, -1, 3, 4, 5, 6, -1, + 88, 9, 90, -1, -1, 93, 94, -1, 1180, 1181, + 1182, 616, -1, -1, -1, -1, 247, -1, -1, -1, + -1, -1, -1, 31, -1, 3, 4, 5, 6, -1, + 261, 9, -1, 41, -1, -1, 3, 4, 5, 6, + 1212, -1, 647, -1, -1, 1217, 54, -1, 56, 57, + -1, -1, -1, 31, -1, 469, -1, 471, -1, 473, + 474, 475, 70, 41, -1, 479, -1, -1, -1, -1, + 484, -1, 80, 487, 41, -1, 54, -1, 56, 57, + 88, 686, 687, 688, 689, 93, -1, 54, -1, 56, + 57, -1, 70, 60, -1, 1267, 1268, -1, 1270, -1, + -1, -1, 80, 70, -1, -1, -1, -1, -1, -1, + 88, -1, -1, 80, -1, 93, -1, -1, -1, -1, + -1, 88, 353, 354, -1, -1, 93, -1, 733, -1, + -1, -1, 737, -1, 1306, 1307, 1308, -1, -1, 744, + 745, -1, 747, -1, -1, -1, 3, 4, 5, 6, + 7, 8, 9, -1, -1, -1, -1, 14, -1, -1, + -1, 766, -1, 768, -1, -1, -1, -1, 773, 774, + 775, 28, 403, 30, 31, 32, 781, -1, -1, 36, + -1, -1, -1, -1, 41, -1, -1, -1, 45, -1, + 604, 48, -1, -1, -1, -1, -1, 54, -1, 56, + 57, -1, -1, -1, 618, 619, -1, 621, -1, -1, + -1, -1, -1, 70, 628, -1, -1, -1, -1, -1, + -1, -1, -1, 80, -1, -1, -1, -1, -1, -1, + -1, 88, -1, 647, -1, -1, 93, -1, 469, -1, + 471, 98, 473, 474, 475, -1, -1, -1, 479, 1421, + -1, -1, -1, 484, -1, -1, 487, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, - -1, -1, 1217, -1, -1, -1, -1, 1222, -1, -1, - -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, - -1, 36, 37, 733, -1, -1, 41, 737, -1, -1, - 45, 46, -1, 48, 744, 745, -1, 747, -1, 54, - -1, 56, 57, -1, -1, 60, -1, 62, -1, -1, - -1, -1, -1, -1, -1, 70, -1, 1272, 1273, -1, - 1275, -1, -1, -1, -1, 80, -1, -1, 778, -1, - 780, -1, -1, 88, -1, 785, 786, 787, 93, -1, - -1, -1, -1, 793, -1, -1, 604, -1, -1, -1, - -1, -1, -1, -1, 109, -1, 1311, 1312, 1313, -1, - 618, 619, 55, 621, -1, -1, -1, -1, -1, -1, - 628, -1, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, 14, -1, -1, -1, 80, -1, 647, - 83, -1, -1, -1, -1, -1, -1, 28, -1, 30, - 31, 32, -1, -1, -1, 36, -1, -1, -1, -1, - 41, 104, -1, 106, 45, -1, -1, 48, -1, -1, - -1, -1, -1, 54, -1, 56, 57, -1, 686, -1, - 688, 689, -1, 691, -1, -1, -1, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, - -1, -1, 93, -1, -1, -1, -1, 98, 1423, 919, - -1, -1, -1, -1, -1, 733, -1, -1, -1, -1, - -1, -1, 175, -1, -1, -1, 744, 745, -1, 747, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 193, 194, 195, -1, 14, 955, 956, 957, -1, -1, - 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 31, -1, -1, -1, -1, 36, 785, -1, 222, - -1, 41, -1, -1, -1, 45, -1, 47, 1493, 1494, - 1495, -1, -1, -1, 54, -1, 56, 57, -1, -1, - 1000, 809, 810, 811, -1, 248, -1, -1, -1, -1, - 70, -1, 1517, 821, -1, -1, -1, -1, -1, 262, - 80, -1, -1, -1, -1, -1, -1, -1, 88, 1029, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, - -1, -1, -1, 1063, -1, -1, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, 894, 47, 896, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, 907, - -1, 61, -1, 911, 912, 913, -1, 67, -1, -1, - 70, 354, 355, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 955, 956, 957, - 110, -1, -1, -1, -1, 1155, 1156, 1157, 1158, 1159, - -1, 404, -1, 1163, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, 14, -1, -1, 1186, 1187, 1188, -1, - -1, -1, 1000, -1, -1, -1, -1, 28, -1, 30, - 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, - 41, -1, -1, -1, 45, -1, -1, 1217, -1, -1, - -1, 1029, 1222, 54, -1, 56, 57, 470, -1, 472, - -1, 474, 475, 476, -1, -1, -1, 480, -1, 70, - -1, -1, 485, -1, -1, 488, -1, -1, -1, 80, - -1, -1, 1, -1, -1, 4, 5, 88, -1, 8, - 9, -1, 93, -1, -1, 14, -1, -1, -1, -1, - -1, -1, 1272, 1273, -1, 1275, -1, -1, -1, 28, - -1, 30, -1, -1, -1, -1, -1, 36, -1, 38, - 39, -1, -1, -1, -1, -1, 45, -1, 47, 1107, - 1108, -1, 1110, -1, -1, 54, -1, 56, 57, -1, - 59, 1311, 1312, 1313, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, 86, 87, 88, - -1, -1, 91, -1, -1, 94, -1, 1155, 1156, 1157, - 1158, 1159, -1, -1, -1, 1163, -1, -1, -1, -1, - -1, 110, -1, 1, -1, 3, 4, 5, 6, 7, - 8, 9, -1, -1, -1, -1, 14, -1, 1186, 1187, - 1188, -1, -1, -1, -1, -1, -1, -1, 631, 632, - 28, -1, 30, 31, 32, -1, 14, -1, 36, 37, - -1, -1, -1, 41, 647, 23, 24, 45, 46, 1217, - 48, -1, 30, 31, -1, 33, 54, -1, 56, 57, - -1, -1, 60, 1423, 62, 4, 5, -1, -1, 8, - 9, -1, 70, -1, -1, 14, -1, -1, -1, -1, - -1, -1, 80, 686, -1, 688, 689, 65, -1, 28, - 88, 30, -1, -1, -1, 93, -1, 36, -1, -1, - -1, -1, -1, -1, 1272, 1273, 45, 1275, -1, -1, - -1, 109, -1, -1, -1, 54, -1, 56, 57, -1, + -1, -1, 686, -1, 688, 689, -1, 691, -1, -1, + -1, -1, -1, 28, -1, 30, 31, -1, -1, -1, + -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, + 45, -1, 907, -1, -1, -1, -1, -1, -1, 54, + -1, 56, 57, -1, -1, 60, -1, -1, -1, 733, + -1, -1, 1494, 1495, 1496, 70, -1, -1, -1, -1, + 744, 745, -1, 747, -1, 80, -1, -1, 943, 944, + 945, -1, -1, 88, -1, -1, 1518, -1, 93, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 773, + -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, + 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, + 14, -1, -1, 797, 798, 799, -1, 992, -1, -1, + -1, -1, -1, -1, 28, 809, 30, 31, 32, -1, + 631, 632, 36, 37, -1, -1, -1, 41, -1, -1, + -1, 45, 46, -1, 48, -1, 647, -1, 1023, -1, + 54, -1, 56, 57, -1, -1, 60, -1, 62, -1, + -1, -1, -1, -1, -1, -1, 70, -1, 3, 4, + 5, 6, 7, 8, 9, -1, 80, 12, -1, 14, + -1, -1, 1057, -1, 88, 686, -1, 688, 689, 93, + -1, -1, -1, 28, -1, 30, 31, -1, 882, -1, + 884, 36, -1, -1, -1, 109, 41, -1, -1, -1, + 45, 895, -1, -1, -1, 899, 900, 901, -1, 54, + -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 733, -1, -1, 70, -1, -1, 14, -1, + -1, -1, -1, 744, 745, 80, 747, 23, 24, -1, + -1, -1, -1, 88, 30, 31, -1, 33, 93, 943, + 944, 945, -1, -1, 3, 4, 5, 6, -1, -1, + -1, -1, 773, -1, 1149, 1150, 1151, 1152, 1153, -1, + -1, -1, 1157, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 733, -1, -1, 1493, 1494, 1495, -1, -1, -1, -1, - -1, 744, 745, 1311, 747, 1313, 124, -1, 126, -1, - -1, -1, -1, -1, 93, 133, 134, 1517, -1, -1, - -1, -1, 140, 141, -1, -1, 144, 145, 146, 772, - 148, 149, 150, 151, -1, -1, -1, -1, -1, -1, - -1, -1, 785, -1, 1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, 15, -1, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 58, -1, 60, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, 1423, -1, -1, -1, 237, - 238, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, -1, 93, -1, 95, -1, - -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 109, 110, 67, 68, 69, 70, 71, 72, + -1, -1, 41, -1, -1, 1180, 1181, 1182, 992, 3, + 4, 5, 6, -1, -1, 54, -1, 56, 57, -1, + -1, -1, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 70, -1, -1, -1, -1, -1, 1212, -1, 1023, + -1, 80, 1217, -1, -1, -1, -1, 41, 124, 88, + 126, -1, -1, -1, 93, -1, -1, 133, 134, -1, + 54, -1, 56, 57, 140, 141, -1, -1, 144, 145, + 146, -1, 148, 149, 150, 151, 70, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, + -1, -1, 1267, 1268, 88, 1270, -1, -1, -1, 93, + -1, -1, -1, -1, -1, 906, 907, 908, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1101, 1102, -1, + 1104, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1306, 1307, 1308, -1, -1, -1, -1, -1, -1, + -1, -1, 943, 944, 945, -1, -1, -1, -1, 950, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 237, 238, -1, -1, 1149, 1150, 1151, 1152, 1153, + -1, -1, -1, 1157, -1, -1, -1, -1, -1, 980, + -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, + -1, 992, -1, -1, -1, -1, 1180, 1181, 1182, -1, + -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, + -1, 297, 1023, -1, -1, -1, -1, -1, 1212, -1, + -1, 31, -1, -1, -1, -1, 36, -1, -1, -1, + -1, 41, -1, 1044, -1, 45, 1421, 47, -1, -1, + -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 345, + 70, 347, 348, -1, -1, -1, -1, -1, -1, -1, + 80, -1, -1, 1267, 1268, -1, 1270, -1, 88, -1, + 90, -1, -1, 93, 94, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 918, 919, 920, -1, -1, - 298, -1, 12, -1, -1, 1493, 1494, 1495, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, -1, -1, -1, 1517, - -1, -1, 955, 956, 957, -1, -1, -1, -1, 962, - -1, -1, -1, -1, -1, -1, -1, -1, 346, -1, - 348, 349, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, -1, -1, 1000, -1, -1, - -1, -1, -1, -1, -1, 1, -1, 3, 4, 5, - 6, 7, 8, 9, -1, 393, 12, -1, 14, -1, - -1, -1, -1, -1, -1, -1, 1029, -1, -1, 25, - -1, 27, -1, -1, 412, 31, -1, -1, -1, -1, - 36, 419, -1, -1, 422, 41, -1, 1050, -1, 45, - -1, 47, -1, -1, -1, -1, 434, -1, 54, -1, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, -1, 90, 91, 92, 93, 94, 95, - -1, 97, -1, -1, -1, -1, 102, -1, -1, -1, - -1, 107, 108, 109, -1, 111, -1, -1, -1, -1, - -1, -1, -1, 501, -1, 503, -1, -1, -1, -1, - -1, 1134, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, - 528, -1, 1155, 1156, 1157, 1158, 1159, -1, 1161, -1, - 1163, -1, -1, -1, -1, -1, -1, 1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, -1, -1, 1186, 1187, 1188, -1, -1, -1, -1, - -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - -1, 45, -1, -1, 1217, 49, 50, 51, 52, 53, - 54, -1, 56, 57, -1, -1, 604, 61, -1, -1, - -1, -1, -1, 67, -1, -1, 70, 615, 616, -1, - 618, 619, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, - -1, -1, -1, 4, 5, -1, 7, 8, 9, 1272, - 1273, -1, 1275, 14, 108, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 28, -1, 30, - 31, -1, -1, 671, -1, 36, -1, -1, -1, -1, - 678, 679, -1, -1, 45, -1, -1, 48, 1311, -1, - 1313, -1, 690, 54, -1, 56, 57, -1, -1, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, 714, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, 772, -1, -1, 775, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, -1, 93, -1, 95, -1, -1, -1, -1, - 1423, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, 809, 810, 811, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 821, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, -1, -1, -1, + 83, 84, -1, -1, -1, -1, 392, -1, -1, 1494, + 1495, 1496, 1306, -1, 1308, -1, -1, 1128, -1, -1, + -1, -1, -1, -1, -1, 411, 4, 5, -1, 7, + 8, 9, 418, 1518, 12, 421, 14, -1, 1149, 1150, + 1151, 1152, 1153, -1, 1155, -1, 1157, 433, -1, -1, + 28, -1, 30, 31, -1, -1, -1, -1, 36, -1, + -1, -1, -1, -1, -1, -1, -1, 45, -1, 1180, + 1181, 1182, -1, -1, -1, -1, 54, -1, 56, 57, + -1, -1, -1, -1, 1, -1, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, 1212, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, 500, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, 1421, 45, -1, + -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 57, 58, 528, -1, 61, -1, -1, -1, -1, -1, + 67, -1, -1, 70, -1, -1, 1267, 1268, -1, 1270, + -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, + 87, 88, -1, -1, -1, -1, 93, 94, -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, - 1493, 1494, 1495, 111, -1, -1, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 1517, 45, 894, -1, 896, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, 907, - 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, - 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, - 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, - 79, 80, -1, -1, -1, -1, 1024, 86, 87, 88, - -1, -1, -1, -1, 93, 94, 1, -1, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - 109, 110, -1, 1051, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, 4, 5, 61, -1, 8, 9, - -1, -1, 67, -1, 14, 70, -1, -1, -1, 1107, - 1108, -1, 1110, 78, 79, 80, -1, -1, 28, -1, - 30, 86, 87, 88, -1, -1, 36, -1, 93, -1, - -1, -1, -1, -1, -1, 45, -1, -1, -1, -1, - -1, -1, -1, -1, 54, 110, 56, 57, -1, -1, - 1, -1, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, 1170, -1, -1, -1, -1, 28, 29, 30, - -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, - 51, 52, 53, 54, 1202, 56, 57, 58, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, 1220, -1, 1222, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, - -1, -1, 93, 94, 1, -1, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, 110, + -1, -1, 12, 110, 14, 1306, -1, 1308, -1, -1, + 1494, 1495, 1496, -1, -1, 25, -1, 27, -1, -1, + -1, 31, -1, -1, -1, -1, 36, -1, 604, -1, + -1, 41, -1, -1, 1518, 45, -1, 47, -1, 615, + 616, -1, 618, 619, 54, -1, 56, 57, 58, 59, + 60, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, 86, 87, 88, -1, + 90, 91, 92, 93, 94, 95, -1, 97, -1, -1, + -1, -1, 102, -1, -1, 671, -1, 107, 108, 109, + -1, 111, 678, 679, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 690, -1, -1, -1, -1, 1, + 1421, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, -1, -1, -1, -1, -1, 714, -1, + -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, 47, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, + -1, -1, -1, -1, 760, 67, -1, 763, 70, -1, + -1, -1, -1, 1494, 1495, 1496, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, -1, 90, -1, + -1, 93, 94, -1, -1, -1, -1, 1518, -1, -1, + -1, 797, 798, 799, -1, -1, -1, -1, 110, -1, + -1, -1, -1, 809, -1, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, + -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, 58, -1, 60, 61, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, 882, -1, 884, -1, + -1, -1, 78, 79, 80, -1, -1, -1, -1, 895, + 86, 87, 88, -1, -1, -1, -1, 93, -1, 95, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 109, 110, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, + 45, 46, -1, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, 980, 60, 61, -1, -1, -1, + -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1, 110, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, -1, 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, + -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, + 67, -1, -1, 70, -1, 1101, 1102, -1, 1104, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, 109, 110, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, + 87, 88, -1, 90, -1, -1, 93, 94, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 110, -1, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1164, -1, + -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, 58, -1, -1, 61, -1, -1, -1, -1, - -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, + 56, 57, -1, -1, 1200, 61, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, 1215, + -1, 1217, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, 109, 110, -1, -1, -1, -1, -1, + -1, -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, - 1, -1, 3, 4, 5, 6, 101, 8, 9, 10, - 11, -1, 13, 14, -1, 110, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, - 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, - -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, - 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, - 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, - -1, -1, 61, 62, -1, -1, -1, -1, 67, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, - 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, - -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, + -1, 86, 87, 88, -1, -1, -1, -1, 93, 94, + -1, -1, -1, -1, -1, 1331, -1, -1, -1, -1, + -1, -1, -1, -1, 109, 110, 1, -1, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, + 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, + -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, + 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, + 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, 58, -1, -1, 61, -1, -1, + -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, + -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, 109, 110, -1, -1, -1, + -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, + -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, + 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, + 53, 54, -1, 56, 57, 58, -1, -1, 61, -1, + -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, + -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, + -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, + 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, 109, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, + -1, 93, -1, 1, -1, 3, 4, 5, 6, 101, + 8, 9, 10, 11, -1, 13, 14, -1, 110, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - -1, -1, 60, 61, -1, -1, -1, -1, -1, 67, + 58, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, @@ -3322,16 +3283,16 @@ static const short yycheck[] = { 4, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, + 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, 108, -1, 110, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, + 56, 57, -1, -1, -1, 61, 62, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, @@ -3340,7 +3301,7 @@ static const short yycheck[] = { 4, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, + -1, 56, 57, -1, -1, 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, @@ -3350,191 +3311,152 @@ static const short yycheck[] = { 4, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, - -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, - 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, - 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, - -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, - -1, 1, 70, 3, 4, 5, 6, 7, 8, 9, - 78, 79, 80, -1, 14, -1, -1, -1, 86, 87, - 88, -1, -1, -1, -1, 93, -1, -1, 28, -1, - 30, 31, 32, -1, -1, -1, 36, 37, -1, -1, - -1, 41, 110, 111, -1, 45, 46, -1, 48, -1, - -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, - 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 80, -1, -1, -1, -1, -1, -1, -1, 88, -1, - -1, -1, -1, 93, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, 15, 109, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 58, -1, 60, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, -1, 93, -1, 95, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 109, 110, 3, 4, 5, 6, 7, 8, - 9, 10, 11, -1, 13, 14, 15, -1, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, - 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - -1, 60, 61, -1, -1, -1, -1, -1, 67, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, - 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, - -1, -1, -1, -1, 93, -1, 95, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, - 15, 110, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, - 45, 46, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, -1, 60, 61, -1, -1, -1, + -1, -1, -1, 67, 1, -1, 70, 4, 5, -1, + -1, 8, 9, -1, 78, 79, 80, 14, -1, -1, + -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, + -1, 28, -1, 30, -1, -1, -1, -1, -1, 36, + -1, 38, 39, -1, 108, -1, 110, -1, 45, -1, + 47, -1, -1, -1, -1, -1, -1, 54, -1, 56, + 57, -1, 59, -1, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, -1, -1, 86, + 87, 88, -1, -1, 91, -1, 1, 94, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, + -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, + 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, - 95, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, -1, 13, 14, 15, 110, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, 44, 45, 46, -1, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, -1, -1, 60, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, - -1, -1, 93, -1, 95, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, -1, -1, 110, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, - -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, - -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, - 88, -1, 90, -1, -1, 93, 94, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, - -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, - 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, - -1, 47, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, - -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, - 86, 87, 88, -1, 90, -1, -1, 93, 94, 3, + -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, - 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - -1, 45, -1, 47, -1, 49, 50, 51, 52, 53, - 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, -1, 90, -1, -1, 93, - 94, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, - 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, - 42, 43, -1, 45, -1, 47, -1, 49, 50, 51, - 52, 53, 54, -1, 56, 57, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, - -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, - -1, -1, -1, -1, 86, 87, 88, -1, 90, -1, - -1, 93, 94, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, 110, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, - 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, - 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, + 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, - 54, -1, 56, 57, -1, -1, 60, 61, -1, -1, + 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, - 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, + -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, + -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, - 53, 54, -1, 56, 57, -1, -1, -1, -1, -1, + 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, + -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, + 67, -1, 1, 70, 3, 4, 5, 6, 7, 8, + 9, 78, 79, 80, -1, 14, -1, -1, -1, 86, + 87, 88, -1, -1, -1, -1, 93, -1, -1, 28, + -1, 30, 31, 32, -1, -1, -1, 36, 37, -1, + -1, -1, 41, 110, 111, -1, 45, 46, -1, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 70, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 80, -1, -1, -1, 14, -1, -1, -1, 88, + -1, -1, -1, -1, 93, -1, -1, -1, -1, 28, + -1, 30, 31, 32, -1, -1, -1, 36, 37, -1, + 109, -1, 41, -1, -1, -1, 45, 46, -1, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 70, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 80, -1, -1, -1, 14, -1, -1, -1, 88, + -1, -1, -1, -1, 93, -1, -1, -1, -1, 28, + -1, 30, 31, 32, -1, -1, -1, 36, 37, -1, + 109, -1, 41, -1, -1, -1, 45, 46, -1, 48, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 80, -1, -1, -1, -1, -1, -1, -1, 88, + -1, -1, -1, -1, 93, -1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, + 109, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, 58, -1, 60, 61, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, + 86, 87, 88, -1, -1, -1, -1, 93, -1, 95, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 109, 110, 3, 4, 5, 6, 7, + 8, 9, 10, 11, -1, 13, 14, 15, -1, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, -1, 60, 61, -1, -1, -1, -1, -1, 67, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, + 88, -1, -1, -1, -1, 93, -1, 95, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, + 14, 15, 110, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, 58, -1, 60, 61, -1, -1, + -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, + -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, + -1, 95, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, -1, 13, 14, 15, 110, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, + 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, + -1, -1, -1, 93, -1, 95, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, + 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, + 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, - 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, - -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, 3, 4, - 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, - -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, + 87, 88, -1, 90, -1, -1, 93, 94, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, + 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, - 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, - 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, - -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, - -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, - 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, - 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, - 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 110, -1, -1, -1, 28, 29, 30, -1, 32, + -1, 86, 87, 88, -1, 90, -1, -1, 93, 94, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, - 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, - 53, 54, -1, 56, 57, 58, -1, -1, -1, -1, + 43, -1, 45, -1, 47, -1, 49, 50, 51, 52, + 53, 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, - 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, -1, 93, 94, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, - 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, + -1, -1, -1, 86, 87, 88, -1, 90, -1, -1, + 93, 94, 3, 4, 5, 6, -1, 8, 9, 10, + 11, -1, 13, 14, -1, -1, -1, 110, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 67, -1, -1, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, 90, + -1, -1, 93, 94, 3, 4, 5, 6, -1, 8, + 9, 10, 11, -1, 13, 14, -1, -1, -1, 110, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, + 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, @@ -3542,97 +3464,192 @@ static const short yycheck[] = { 4, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 110, -1, -1, -1, 28, 29, 30, 31, 32, + -1, 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, - 53, 54, -1, 56, 57, -1, -1, -1, -1, -1, + 53, 54, -1, 56, 57, -1, -1, 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, -1, 86, 87, 88, 3, 4, 5, 6, - 93, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, - 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, - -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, 3, 4, - 5, 6, 93, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 110, - -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 67, -1, 1, 70, 3, 4, 5, 6, - 7, 8, 9, 78, 79, 80, -1, 14, -1, -1, - -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, - 27, 28, -1, 30, 31, 32, -1, -1, -1, 36, - -1, -1, -1, -1, 41, 110, -1, 44, 45, 46, - -1, 48, -1, -1, -1, -1, -1, 54, -1, 56, - 57, -1, -1, 60, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, -1, 1, 80, 3, 4, 5, 6, 7, 8, - 9, 88, -1, -1, -1, 14, 93, -1, -1, -1, - -1, 98, -1, -1, -1, -1, -1, -1, -1, 28, - -1, 30, 31, 32, -1, -1, -1, 36, -1, -1, - -1, -1, 41, -1, -1, -1, 45, 46, -1, 48, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, - -1, 70, 3, 4, 5, 6, 7, 8, 9, -1, - -1, 80, -1, 14, -1, -1, -1, -1, -1, 88, - -1, -1, -1, -1, 93, -1, -1, 28, -1, 30, - 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, - 41, -1, -1, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, 56, 57, -1, -1, -1, - -1, 62, -1, -1, -1, -1, -1, -1, -1, 70, - 3, 4, 5, 6, 7, 8, 9, -1, -1, 80, - -1, 14, -1, -1, -1, -1, -1, 88, -1, -1, - -1, -1, 93, -1, -1, 28, -1, 30, 31, -1, - -1, -1, -1, 36, -1, -1, -1, -1, 41, -1, - -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, 54, -1, 56, 57, -1, -1, 60, -1, 3, - 4, 5, 6, 7, 8, 9, -1, 70, -1, -1, - 14, -1, -1, -1, -1, -1, -1, 80, -1, -1, - -1, -1, -1, -1, 28, 88, 30, 31, -1, -1, - 93, -1, 36, -1, -1, -1, -1, 41, -1, -1, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, 56, 57, 4, 5, -1, 7, 8, 9, - -1, -1, 12, -1, 14, -1, 70, 4, 5, -1, - 7, 8, 9, -1, -1, -1, 80, 14, 28, -1, - 30, 31, -1, -1, 88, -1, 36, -1, -1, 93, - -1, 28, -1, 30, 31, 45, -1, -1, -1, 36, - -1, -1, -1, -1, 54, -1, 56, 57, 45, -1, - -1, 4, 5, -1, -1, 8, 9, 54, -1, 56, - 57, 14, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 28, -1, 30, -1, -1, - -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 86, 87, 88, -1, -1, -1, -1, + 93, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, + 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, + -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, + -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, + 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, + 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 110, -1, -1, -1, 28, 29, + 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, + -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, + 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, + 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, + -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, + -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, + 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, + 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, + -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, + -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, + 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 110, -1, -1, -1, 28, 29, 30, -1, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, + 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, + -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, + -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, + 86, 87, 88, -1, -1, -1, -1, 93, 94, 3, + 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, + 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, + -1, -1, 86, 87, 88, 3, 4, 5, 6, 93, + 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, + 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, + -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, + -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, + 88, 3, 4, 5, 6, 93, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 110, -1, -1, -1, 28, 29, 30, 31, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, 3, 4, 5, + 6, 93, 8, 9, 10, 11, -1, 13, 14, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, + -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, + -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, + 86, 87, 88, 3, 4, 5, 6, 93, 8, 9, + 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 110, -1, -1, -1, 28, 29, + 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, -1, -1, -1, -1, -1, 86, 87, 88, 3, + 4, 5, 6, 93, 8, 9, 10, 11, -1, 13, + 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 110, -1, -1, -1, 28, 29, 30, -1, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 67, -1, 1, 70, 3, 4, 5, + 6, 7, 8, 9, 78, 79, 80, -1, 14, -1, + -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, + -1, 27, 28, -1, 30, 31, 32, -1, -1, -1, + 36, -1, -1, -1, -1, 41, 110, -1, 44, 45, + 46, -1, 48, -1, -1, -1, -1, -1, 54, -1, + 56, 57, -1, -1, 60, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, -1, 1, 80, 3, 4, 5, 6, 7, + 8, 9, 88, -1, -1, -1, 14, 93, -1, -1, + -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, + 28, -1, 30, 31, 32, -1, -1, -1, 36, -1, + -1, -1, -1, 41, -1, -1, -1, 45, 46, -1, + 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, + -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, + -1, -1, 70, 3, 4, 5, 6, 7, 8, 9, + -1, -1, 80, -1, 14, -1, -1, -1, -1, -1, + 88, -1, -1, -1, -1, 93, -1, -1, 28, -1, + 30, 31, -1, -1, -1, -1, 36, -1, -1, -1, + -1, 41, -1, -1, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, + -1, -1, 62, -1, -1, -1, -1, -1, -1, -1, + 70, 3, 4, 5, 6, 7, 8, 9, -1, -1, + 80, -1, 14, -1, -1, -1, -1, -1, 88, -1, + -1, -1, -1, 93, -1, -1, 28, -1, 30, 31, + -1, -1, -1, -1, 36, -1, -1, -1, -1, 41, + -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, + 3, 4, 5, 6, 7, 8, 9, -1, 70, -1, + -1, 14, -1, -1, -1, -1, -1, -1, 80, -1, + -1, -1, -1, -1, -1, 28, 88, 30, 31, -1, + -1, 93, -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, 54, -1, 56, 57, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, 59, -1, -1, 107, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 62, 63, 64, 65, 66, 67, 68, 69, + -1, 54, -1, 56, 57, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, 14, 70, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, + 28, -1, 30, 31, -1, 88, -1, -1, 36, -1, + 93, -1, -1, 41, -1, -1, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 4, 5, -1, 7, 8, 9, -1, -1, -1, -1, + 14, -1, 70, 4, 5, -1, 7, 8, 9, -1, + -1, 12, 80, 14, 28, -1, 30, 31, -1, -1, + 88, -1, 36, -1, -1, 93, -1, 28, -1, 30, + 31, 45, -1, -1, 48, 36, -1, -1, -1, -1, + 54, -1, 56, 57, 45, -1, -1, 4, 5, -1, + 7, 8, 9, 54, -1, 56, 57, 14, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, -1, 30, 31, -1, -1, -1, -1, 36, + -1, -1, -1, -1, -1, -1, -1, -1, 45, -1, + -1, -1, -1, -1, -1, -1, -1, 54, -1, 56, + 57, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, -1, -1, -1, -1, 111, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 59, -1, -1, 107, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, -1, - 76, 77, 78, 79, 80, 81, 82, 83, 84 + 68, 69, 70, 71, 72, 73, 74, -1, 76, 77, + 78, 79, 80, 81, 82, 83, 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 3 "/usr/lib/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -3825,7 +3842,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 196 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -5364,93 +5381,66 @@ case 319: case 320: #line 1435 "parse.y" { - tree type = NULL_TREE; - tree id = yyval.ttype; + /* This is a C cast in C++'s `functional' notation + using the "implicit int" extension so that: + `const (3)' is equivalent to `const int (3)'. */ + tree type; - /* This is a C cast in C++'s `functional' notation. */ if (yyvsp[-1].ttype == error_mark_node) { yyval.ttype = error_mark_node; break; } -#if 0 - if (yyvsp[-1].ttype == NULL_TREE) - { - error ("cannot cast null list to type `%s'", - IDENTIFIER_POINTER (TYPE_NAME (id))); - yyval.ttype = error_mark_node; - break; - } -#endif -#if 0 - /* type is not set! (mrs) */ - if (type == error_mark_node) - yyval.ttype = error_mark_node; - else -#endif - { - if (id == ridpointers[(int) RID_CONST]) - type = build_type_variant (integer_type_node, 1, 0); - else if (id == ridpointers[(int) RID_VOLATILE]) - type = build_type_variant (integer_type_node, 0, 1); -#if 0 - /* should not be able to get here (mrs) */ - else if (id == ridpointers[(int) RID_FRIEND]) - { - error ("cannot cast expression to `friend' type"); - yyval.ttype = error_mark_node; - break; - } -#endif - else my_friendly_abort (79); - yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype)); - } + + type = cp_build_qualified_type (integer_type_node, + cp_type_qual_from_rid (yyvsp[-3].ttype)); + yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype)); ; break;} case 322: -#line 1480 "parse.y" +#line 1453 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("dynamic_cast", yyvsp[-4].ftype); yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ; break;} case 323: -#line 1484 "parse.y" +#line 1457 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("static_cast", yyvsp[-4].ftype); yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ; break;} case 324: -#line 1488 "parse.y" +#line 1461 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype); yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ; break;} case 325: -#line 1492 "parse.y" +#line 1465 "parse.y" { tree type = groktypename (yyvsp[-4].ftype.t); check_for_new_type ("const_cast", yyvsp[-4].ftype); yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ; break;} case 326: -#line 1496 "parse.y" +#line 1469 "parse.y" { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ; break;} case 327: -#line 1498 "parse.y" +#line 1471 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); check_for_new_type ("typeid", yyvsp[-1].ftype); yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ; break;} case 328: -#line 1502 "parse.y" +#line 1475 "parse.y" { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ; break;} case 329: -#line 1504 "parse.y" +#line 1477 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 330: -#line 1506 "parse.y" +#line 1479 "parse.y" { got_scope = NULL_TREE; if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) @@ -5460,102 +5450,102 @@ case 330: ; break;} case 331: -#line 1514 "parse.y" +#line 1487 "parse.y" { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ; break;} case 332: -#line 1516 "parse.y" +#line 1489 "parse.y" { yyval.ttype = finish_qualified_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 333: -#line 1518 "parse.y" +#line 1491 "parse.y" { yyval.ttype = finish_qualified_call_expr (yyvsp[-1].ttype, NULL_TREE); ; break;} case 334: -#line 1520 "parse.y" +#line 1493 "parse.y" { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 335: -#line 1524 "parse.y" +#line 1497 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 336: -#line 1526 "parse.y" +#line 1499 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 337: -#line 1528 "parse.y" +#line 1501 "parse.y" { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ; break;} case 338: -#line 1530 "parse.y" +#line 1503 "parse.y" { if (processing_template_decl) yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype)); else yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ; break;} case 339: -#line 1535 "parse.y" +#line 1508 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 340: -#line 1537 "parse.y" +#line 1510 "parse.y" { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 341: -#line 1539 "parse.y" +#line 1512 "parse.y" { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 342: -#line 1541 "parse.y" +#line 1514 "parse.y" { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} case 343: -#line 1544 "parse.y" +#line 1517 "parse.y" { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 344: -#line 1546 "parse.y" +#line 1519 "parse.y" { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ; break;} case 345: -#line 1548 "parse.y" +#line 1521 "parse.y" { yyval.ttype = error_mark_node; ; break;} case 346: -#line 1593 "parse.y" +#line 1566 "parse.y" { yyval.itype = 0; ; break;} case 347: -#line 1595 "parse.y" +#line 1568 "parse.y" { got_scope = NULL_TREE; yyval.itype = 1; ; break;} case 348: -#line 1600 "parse.y" +#line 1573 "parse.y" { yyval.itype = 0; ; break;} case 349: -#line 1602 "parse.y" +#line 1575 "parse.y" { got_scope = NULL_TREE; yyval.itype = 1; ; break;} case 350: -#line 1607 "parse.y" +#line 1580 "parse.y" { yyval.ttype = boolean_true_node; ; break;} case 351: -#line 1609 "parse.y" +#line 1582 "parse.y" { yyval.ttype = boolean_false_node; ; break;} case 353: -#line 1616 "parse.y" +#line 1589 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} case 354: -#line 1621 "parse.y" +#line 1594 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); @@ -5567,18 +5557,18 @@ case 354: ; break;} case 355: -#line 1634 "parse.y" +#line 1607 "parse.y" { got_object = TREE_TYPE (yyval.ttype); ; break;} case 356: -#line 1636 "parse.y" +#line 1609 "parse.y" { yyval.ttype = build_x_arrow (yyval.ttype); got_object = TREE_TYPE (yyval.ttype); ; break;} case 357: -#line 1644 "parse.y" +#line 1617 "parse.y" { resume_momentary (yyvsp[-1].itype); if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t))) @@ -5586,138 +5576,138 @@ case 357: ; break;} case 358: -#line 1650 "parse.y" +#line 1623 "parse.y" { resume_momentary (yyvsp[-1].itype); note_list_got_semicolon (yyvsp[-2].ftype.t); ; break;} case 359: -#line 1655 "parse.y" +#line 1628 "parse.y" { resume_momentary (yyvsp[-1].itype); ; break;} case 360: -#line 1657 "parse.y" +#line 1630 "parse.y" { shadow_tag (yyvsp[-1].ftype.t); note_list_got_semicolon (yyvsp[-1].ftype.t); ; break;} case 361: -#line 1662 "parse.y" +#line 1635 "parse.y" { warning ("empty declaration"); ; break;} case 362: -#line 1664 "parse.y" +#line 1637 "parse.y" { pedantic = yyvsp[-1].itype; ; break;} case 365: -#line 1678 "parse.y" +#line 1651 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (), NULL_TREE, NULL_TREE); ; break;} case 366: -#line 1681 "parse.y" +#line 1654 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE, NULL_TREE); ; break;} case 367: -#line 1688 "parse.y" +#line 1661 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 368: -#line 1691 "parse.y" +#line 1664 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 369: -#line 1694 "parse.y" +#line 1667 "parse.y" { yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 370: -#line 1697 "parse.y" +#line 1670 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 371: -#line 1700 "parse.y" +#line 1673 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 374: -#line 1716 "parse.y" +#line 1689 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 375: -#line 1719 "parse.y" +#line 1692 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 376: -#line 1722 "parse.y" +#line 1695 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 377: -#line 1725 "parse.y" +#line 1698 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 378: -#line 1728 "parse.y" +#line 1701 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 379: -#line 1731 "parse.y" +#line 1704 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 380: -#line 1738 "parse.y" +#line 1711 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyval.ttype)); yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ; break;} case 381: -#line 1743 "parse.y" +#line 1716 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ; break;} case 382: -#line 1745 "parse.y" +#line 1718 "parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 383: -#line 1750 "parse.y" +#line 1723 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 384: -#line 1752 "parse.y" +#line 1725 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 385: -#line 1762 "parse.y" +#line 1735 "parse.y" { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ; break;} case 386: -#line 1764 "parse.y" +#line 1737 "parse.y" { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ; break;} case 387: -#line 1766 "parse.y" +#line 1739 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 388: -#line 1769 "parse.y" +#line 1742 "parse.y" { if (extra_warnings && TREE_STATIC (yyval.ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); @@ -5725,61 +5715,61 @@ case 388: TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 389: -#line 1775 "parse.y" +#line 1748 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 390: -#line 1777 "parse.y" +#line 1750 "parse.y" { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 391: -#line 1788 "parse.y" +#line 1761 "parse.y" { yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 392: -#line 1791 "parse.y" +#line 1764 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} case 393: -#line 1794 "parse.y" +#line 1767 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} case 394: -#line 1797 "parse.y" +#line 1770 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; break;} case 395: -#line 1803 "parse.y" +#line 1776 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} case 396: -#line 1805 "parse.y" +#line 1778 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ; break;} case 398: -#line 1815 "parse.y" +#line 1788 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 399: -#line 1817 "parse.y" +#line 1790 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 400: -#line 1819 "parse.y" +#line 1792 "parse.y" { yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; ; break;} case 401: -#line 1822 "parse.y" +#line 1795 "parse.y" { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; ; break;} case 402: -#line 1825 "parse.y" +#line 1798 "parse.y" { tree type = TREE_TYPE (yyvsp[-1].ttype); yyval.ftype.new_type_flag = 0; @@ -5796,7 +5786,7 @@ case 402: ; break;} case 403: -#line 1840 "parse.y" +#line 1813 "parse.y" { tree type = groktypename (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = 0; @@ -5813,200 +5803,200 @@ case 403: ; break;} case 404: -#line 1860 "parse.y" +#line 1833 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 405: -#line 1862 "parse.y" +#line 1835 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; break;} case 408: -#line 1869 "parse.y" +#line 1842 "parse.y" { check_multiple_declarators (); ; break;} case 410: -#line 1875 "parse.y" +#line 1848 "parse.y" { check_multiple_declarators (); ; break;} case 412: -#line 1881 "parse.y" +#line 1854 "parse.y" { check_multiple_declarators (); ; break;} case 413: -#line 1886 "parse.y" +#line 1859 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 414: -#line 1888 "parse.y" +#line 1861 "parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 415: -#line 1893 "parse.y" +#line 1866 "parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); ; break;} case 416: -#line 1897 "parse.y" +#line 1870 "parse.y" { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ; break;} case 417: -#line 1899 "parse.y" +#line 1872 "parse.y" { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 418: -#line 1912 "parse.y" +#line 1885 "parse.y" { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype, 1, &yyval.ttype); ; break;} case 419: -#line 1917 "parse.y" +#line 1890 "parse.y" { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); yyval.itype = yyvsp[-2].itype; ; break;} case 420: -#line 1921 "parse.y" +#line 1894 "parse.y" { tree d; yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d); cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 421: -#line 1928 "parse.y" +#line 1901 "parse.y" { yyval.itype = yyvsp[0].itype; ; break;} case 422: -#line 1932 "parse.y" +#line 1905 "parse.y" { yyval.itype = yyvsp[0].itype; ; break;} case 423: -#line 1937 "parse.y" +#line 1910 "parse.y" { /* Set things up as initdcl0_innards expects. */ yyvsp[0].ttype = yyvsp[-1].ttype; yyvsp[-1].ttype = NULL_TREE; ; break;} case 424: -#line 1941 "parse.y" +#line 1914 "parse.y" {; break;} case 425: -#line 1943 "parse.y" +#line 1916 "parse.y" { tree d; parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d); cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; break;} case 426: -#line 1952 "parse.y" +#line 1925 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 427: -#line 1954 "parse.y" +#line 1927 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 428: -#line 1959 "parse.y" +#line 1932 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 429: -#line 1961 "parse.y" +#line 1934 "parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 430: -#line 1966 "parse.y" +#line 1939 "parse.y" { yyval.ttype = yyvsp[-2].ttype; ; break;} case 431: -#line 1971 "parse.y" +#line 1944 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 432: -#line 1973 "parse.y" +#line 1946 "parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 433: -#line 1978 "parse.y" +#line 1951 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 434: -#line 1980 "parse.y" +#line 1953 "parse.y" { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 435: -#line 1982 "parse.y" +#line 1955 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 436: -#line 1984 "parse.y" +#line 1957 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; break;} case 437: -#line 1986 "parse.y" +#line 1959 "parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 442: -#line 2002 "parse.y" +#line 1975 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 443: -#line 2004 "parse.y" +#line 1977 "parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 444: -#line 2009 "parse.y" +#line 1982 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 445: -#line 2011 "parse.y" +#line 1984 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 447: -#line 2019 "parse.y" +#line 1992 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 448: -#line 2022 "parse.y" +#line 1995 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 449: -#line 2025 "parse.y" +#line 1998 "parse.y" { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; break;} case 450: -#line 2028 "parse.y" +#line 2001 "parse.y" { yyval.ttype = NULL_TREE; ; break;} case 451: -#line 2035 "parse.y" +#line 2008 "parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ; break;} case 452: -#line 2037 "parse.y" +#line 2010 "parse.y" { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} case 453: -#line 2040 "parse.y" +#line 2013 "parse.y" { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 454: -#line 2042 "parse.y" +#line 2015 "parse.y" { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ; break;} case 455: -#line 2044 "parse.y" +#line 2017 "parse.y" { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ; break;} case 456: -#line 2049 "parse.y" +#line 2022 "parse.y" { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype), NULL_TREE, 1); reinit_parse_for_function (); ; break;} case 457: -#line 2055 "parse.y" +#line 2028 "parse.y" { int nested = (hack_decl_function_context (current_function_decl) != NULL_TREE); @@ -6015,37 +6005,37 @@ case 457: ; break;} case 458: -#line 2062 "parse.y" +#line 2035 "parse.y" { process_next_inline (yyvsp[-2].ttype); ; break;} case 459: -#line 2064 "parse.y" +#line 2037 "parse.y" { process_next_inline (yyvsp[-2].ttype); ; break;} case 462: -#line 2076 "parse.y" +#line 2049 "parse.y" { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 463: -#line 2078 "parse.y" +#line 2051 "parse.y" { replace_defarg (yyvsp[-2].ttype, error_mark_node); ; break;} case 465: -#line 2083 "parse.y" +#line 2056 "parse.y" { do_pending_defargs (); ; break;} case 466: -#line 2085 "parse.y" +#line 2058 "parse.y" { do_pending_defargs (); ; break;} case 467: -#line 2090 "parse.y" +#line 2063 "parse.y" { yyvsp[0].itype = suspend_momentary (); yyval.ttype = current_enum_type; current_enum_type = start_enum (yyvsp[-1].ttype); ; break;} case 468: -#line 2094 "parse.y" +#line 2067 "parse.y" { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; @@ -6054,19 +6044,19 @@ case 468: check_for_missing_semicolon (yyval.ftype.t); ; break;} case 469: -#line 2101 "parse.y" +#line 2074 "parse.y" { yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype)); yyval.ftype.new_type_flag = 1; check_for_missing_semicolon (yyval.ftype.t); ; break;} case 470: -#line 2105 "parse.y" +#line 2078 "parse.y" { yyvsp[0].itype = suspend_momentary (); yyval.ttype = current_enum_type; current_enum_type = start_enum (make_anon_name ()); ; break;} case 471: -#line 2109 "parse.y" +#line 2082 "parse.y" { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.new_type_flag = 1; @@ -6075,30 +6065,30 @@ case 471: check_for_missing_semicolon (yyval.ftype.t); ; break;} case 472: -#line 2116 "parse.y" +#line 2089 "parse.y" { yyval.ftype.t = finish_enum (start_enum (make_anon_name())); yyval.ftype.new_type_flag = 1; check_for_missing_semicolon (yyval.ftype.t); ; break;} case 473: -#line 2120 "parse.y" +#line 2093 "parse.y" { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); yyval.ftype.new_type_flag = 0; ; break;} case 474: -#line 2123 "parse.y" +#line 2096 "parse.y" { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); yyval.ftype.new_type_flag = 0; ; break;} case 475: -#line 2126 "parse.y" +#line 2099 "parse.y" { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; if (!processing_template_decl) cp_pedwarn ("using `typename' outside of template"); ; break;} case 476: -#line 2133 "parse.y" +#line 2106 "parse.y" { int semi; @@ -6110,17 +6100,17 @@ case 476: ; break;} case 477: -#line 2143 "parse.y" +#line 2116 "parse.y" { finish_default_args (); ; break;} case 478: -#line 2145 "parse.y" +#line 2118 "parse.y" { yyval.ftype.t = yyvsp[-3].ttype; yyval.ftype.new_type_flag = 1; begin_inline_definitions (); ; break;} case 479: -#line 2149 "parse.y" +#line 2122 "parse.y" { yyval.ftype.new_type_flag = 0; if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE) @@ -6140,88 +6130,88 @@ case 479: ; break;} case 483: -#line 2176 "parse.y" +#line 2149 "parse.y" { if (pedantic && !in_system_header) pedwarn ("comma at end of enumerator list"); ; break;} case 485: -#line 2183 "parse.y" +#line 2156 "parse.y" { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 486: -#line 2185 "parse.y" +#line 2158 "parse.y" { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 487: -#line 2187 "parse.y" +#line 2160 "parse.y" { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; break;} case 488: -#line 2189 "parse.y" +#line 2162 "parse.y" { error ("no body nor ';' separates two class, struct or union declarations"); ; break;} case 489: -#line 2191 "parse.y" +#line 2164 "parse.y" { yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 490: -#line 2196 "parse.y" +#line 2169 "parse.y" { current_aggr = yyvsp[-1].ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 491: -#line 2204 "parse.y" +#line 2177 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 492: -#line 2206 "parse.y" +#line 2179 "parse.y" { yyungetc ('{', 1); ; break;} case 493: -#line 2208 "parse.y" +#line 2181 "parse.y" { yyungetc (':', 1); ; break;} case 494: -#line 2213 "parse.y" +#line 2186 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 495: -#line 2218 "parse.y" +#line 2191 "parse.y" { current_aggr = yyvsp[-3].ttype; yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 496: -#line 2223 "parse.y" +#line 2196 "parse.y" { current_aggr = yyvsp[-2].ttype; yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); ; break;} case 497: -#line 2228 "parse.y" +#line 2201 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 498: -#line 2230 "parse.y" +#line 2203 "parse.y" { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} case 499: -#line 2235 "parse.y" +#line 2208 "parse.y" { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ; break;} case 500: -#line 2237 "parse.y" +#line 2210 "parse.y" { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; break;} case 501: -#line 2239 "parse.y" +#line 2214 "parse.y" { yyval.ttype = yyvsp[-1].ttype; if (yyvsp[0].ttype) @@ -6229,9 +6219,14 @@ case 501: ; break;} case 502: -#line 2245 "parse.y" +#line 2220 "parse.y" +{ push_scope (CP_DECL_CONTEXT (yyvsp[0].ttype)); ; + break;} +case 503: +#line 2222 "parse.y" { - yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); + pop_scope (CP_DECL_CONTEXT (yyvsp[-2].ttype)); + yyval.ttype = TREE_TYPE (yyvsp[-2].ttype); if (TREE_INT_CST_LOW (current_aggr) == union_type && TREE_CODE (yyval.ttype) != UNION_TYPE) cp_pedwarn ("`union' tag used in declaring `%#T'", yyval.ttype); @@ -6241,49 +6236,49 @@ case 502: if (yyvsp[0].ttype) { maybe_process_partial_specialization (yyval.ttype); - xref_basetypes (current_aggr, yyvsp[-1].ttype, yyval.ttype, yyvsp[0].ttype); + xref_basetypes (current_aggr, yyvsp[-2].ttype, yyval.ttype, yyvsp[0].ttype); } ; break;} -case 503: -#line 2263 "parse.y" +case 504: +#line 2241 "parse.y" { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0); yyungetc ('{', 1); ; break;} -case 506: -#line 2274 "parse.y" +case 507: +#line 2252 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 507: -#line 2276 "parse.y" +case 508: +#line 2254 "parse.y" { yyungetc(':', 1); yyval.ttype = NULL_TREE; ; break;} -case 508: -#line 2278 "parse.y" +case 509: +#line 2256 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 510: -#line 2284 "parse.y" +case 511: +#line 2262 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 511: -#line 2289 "parse.y" +case 512: +#line 2267 "parse.y" { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} -case 512: -#line 2293 "parse.y" +case 513: +#line 2271 "parse.y" { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, current_aggr == signature_type_node); ; break;} -case 513: -#line 2300 "parse.y" +case 514: +#line 2278 "parse.y" { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ; break;} -case 515: -#line 2303 "parse.y" +case 516: +#line 2281 "parse.y" { if (current_aggr == signature_type_node) { @@ -6305,8 +6300,8 @@ case 515: } ; break;} -case 516: -#line 2324 "parse.y" +case 517: +#line 2302 "parse.y" { if (current_aggr == signature_type_node) { @@ -6328,14 +6323,14 @@ case 516: } ; break;} -case 518: -#line 2349 "parse.y" +case 519: +#line 2327 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); yyval.ttype = access_default_virtual_node; ; break;} -case 519: -#line 2353 "parse.y" +case 520: +#line 2331 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); @@ -6347,8 +6342,8 @@ case 519: yyval.ttype = access_private_virtual_node; ; break;} -case 520: -#line 2364 "parse.y" +case 521: +#line 2342 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) @@ -6361,18 +6356,18 @@ case 520: error ("multiple `virtual' specifiers"); ; break;} -case 521: -#line 2379 "parse.y" +case 522: +#line 2357 "parse.y" { yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; break;} -case 522: -#line 2384 "parse.y" +case 523: +#line 2362 "parse.y" { finish_member_declaration (build_self_reference ()); ; break;} -case 527: -#line 2398 "parse.y" +case 528: +#line 2376 "parse.y" { if (current_aggr == signature_type_node) { @@ -6383,50 +6378,50 @@ case 527: current_access_specifier = yyvsp[-1].ttype; ; break;} -case 528: -#line 2413 "parse.y" +case 529: +#line 2391 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 529: -#line 2417 "parse.y" +case 530: +#line 2395 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 531: -#line 2425 "parse.y" +case 532: +#line 2403 "parse.y" { error ("missing ';' before right brace"); yyungetc ('}', 0); ; break;} -case 532: -#line 2430 "parse.y" -{ yyval.ttype = finish_method (yyval.ttype); ; - break;} case 533: -#line 2432 "parse.y" +#line 2408 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 534: -#line 2434 "parse.y" +#line 2410 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 535: -#line 2436 "parse.y" +#line 2412 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 536: -#line 2438 "parse.y" -{ yyval.ttype = NULL_TREE; ; +#line 2414 "parse.y" +{ yyval.ttype = finish_method (yyval.ttype); ; break;} case 537: -#line 2440 "parse.y" +#line 2416 "parse.y" +{ yyval.ttype = NULL_TREE; ; + break;} +case 538: +#line 2418 "parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} -case 538: -#line 2443 "parse.y" +case 539: +#line 2421 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6437,15 +6432,15 @@ case 538: finish_template_decl (yyvsp[-1].ttype); ; break;} -case 539: -#line 2453 "parse.y" +case 540: +#line 2431 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ; break;} -case 540: -#line 2464 "parse.y" +case 541: +#line 2442 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call @@ -6467,54 +6462,54 @@ case 540: yyval.ttype = NULL_TREE; ; break;} -case 541: -#line 2485 "parse.y" +case 542: +#line 2463 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ttype); yyval.ttype = NULL_TREE; ; break;} -case 542: -#line 2491 "parse.y" +case 543: +#line 2469 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 543: -#line 2494 "parse.y" +case 544: +#line 2472 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 544: -#line 2497 "parse.y" +case 545: +#line 2475 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} -case 545: -#line 2499 "parse.y" +case 546: +#line 2477 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 546: -#line 2510 "parse.y" +case 547: +#line 2488 "parse.y" { tree specs, attrs; split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs); yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, attrs)); ; break;} -case 547: -#line 2515 "parse.y" +case 548: +#line 2493 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 548: -#line 2518 "parse.y" +case 549: +#line 2496 "parse.y" { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; break;} -case 549: -#line 2524 "parse.y" +case 550: +#line 2502 "parse.y" { yyval.itype = 0; ; break;} -case 550: -#line 2526 "parse.y" +case 551: +#line 2504 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6522,8 +6517,8 @@ case 550: yyval.itype = 1; ; break;} -case 551: -#line 2533 "parse.y" +case 552: +#line 2511 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6532,12 +6527,12 @@ case 551: yyval.itype = 2; ; break;} -case 552: -#line 2544 "parse.y" +case 553: +#line 2522 "parse.y" { yyval.itype = 0; ; break;} -case 553: -#line 2546 "parse.y" +case 554: +#line 2524 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6545,8 +6540,8 @@ case 553: yyval.itype = 1; ; break;} -case 554: -#line 2553 "parse.y" +case 555: +#line 2531 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6555,103 +6550,103 @@ case 554: yyval.itype = 2; ; break;} -case 559: -#line 2574 "parse.y" +case 560: +#line 2552 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 560: -#line 2580 "parse.y" +case 561: +#line 2558 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 561: -#line 2589 "parse.y" +case 562: +#line 2567 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 562: -#line 2595 "parse.y" +case 563: +#line 2573 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 563: -#line 2601 "parse.y" +case 564: +#line 2579 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 564: -#line 2607 "parse.y" +case 565: +#line 2585 "parse.y" { split_specs_attrs (yyvsp[-3].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-3].ttype = current_declspecs; yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 565: -#line 2616 "parse.y" +case 566: +#line 2594 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 566: -#line 2619 "parse.y" +case 567: +#line 2597 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 567: -#line 2625 "parse.y" +case 568: +#line 2603 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 568: -#line 2628 "parse.y" +case 569: +#line 2606 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 569: -#line 2631 "parse.y" +case 570: +#line 2609 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 571: -#line 2642 "parse.y" +case 572: +#line 2620 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 572: -#line 2647 "parse.y" +case 573: +#line 2625 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; break;} -case 573: -#line 2649 "parse.y" +case 574: +#line 2627 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; break;} -case 574: -#line 2655 "parse.y" +case 575: +#line 2633 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 575: -#line 2658 "parse.y" +case 576: +#line 2636 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 576: -#line 2665 "parse.y" +case 577: +#line 2643 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); @@ -6660,72 +6655,72 @@ case 576: yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ; break;} -case 577: -#line 2676 "parse.y" +case 578: +#line 2654 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 578: -#line 2678 "parse.y" +case 579: +#line 2656 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 579: -#line 2683 "parse.y" +case 580: +#line 2661 "parse.y" { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 580: -#line 2686 "parse.y" +case 581: +#line 2664 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 581: -#line 2695 "parse.y" -{ yyval.itype = suspend_momentary (); ; - break;} case 582: -#line 2700 "parse.y" -{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; +#line 2673 "parse.y" +{ yyval.itype = suspend_momentary (); ; break;} case 583: -#line 2706 "parse.y" -{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; +#line 2678 "parse.y" +{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; break;} case 584: -#line 2708 "parse.y" +#line 2684 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 585: -#line 2710 "parse.y" -{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; +#line 2686 "parse.y" +{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 586: -#line 2712 "parse.y" -{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; +#line 2688 "parse.y" +{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; break;} case 587: -#line 2719 "parse.y" -{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 2690 "parse.y" +{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; break;} case 588: -#line 2721 "parse.y" -{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 2697 "parse.y" +{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 589: -#line 2723 "parse.y" -{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; +#line 2699 "parse.y" +{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} case 590: -#line 2725 "parse.y" -{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; +#line 2701 "parse.y" +{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} case 591: -#line 2727 "parse.y" +#line 2703 "parse.y" +{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; + break;} +case 592: +#line 2705 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 593: -#line 2735 "parse.y" +case 594: +#line 2713 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { @@ -6743,8 +6738,8 @@ case 593: yyval.ttype = yyvsp[0].ttype; ; break;} -case 594: -#line 2752 "parse.y" +case 595: +#line 2730 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -6753,161 +6748,161 @@ case 594: got_scope = NULL_TREE; ; break;} -case 597: -#line 2765 "parse.y" +case 598: +#line 2743 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 598: -#line 2770 "parse.y" +case 599: +#line 2748 "parse.y" { yyval.ttype = get_type_decl (yyvsp[0].ttype); ; break;} -case 599: -#line 2775 "parse.y" +case 600: +#line 2753 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 600: -#line 2777 "parse.y" +case 601: +#line 2755 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 601: -#line 2779 "parse.y" +case 602: +#line 2757 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 602: -#line 2781 "parse.y" +case 603: +#line 2759 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 603: -#line 2783 "parse.y" +case 604: +#line 2761 "parse.y" { push_nested_class (yyvsp[-1].ttype, 3); yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ; break;} -case 606: -#line 2795 "parse.y" +case 607: +#line 2773 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} -case 607: -#line 2804 "parse.y" +case 608: +#line 2782 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 608: -#line 2806 "parse.y" +case 609: +#line 2784 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 609: -#line 2808 "parse.y" +case 610: +#line 2786 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 610: -#line 2810 "parse.y" +case 611: +#line 2788 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 611: -#line 2812 "parse.y" +case 612: +#line 2790 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 613: -#line 2820 "parse.y" +case 614: +#line 2798 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 614: -#line 2822 "parse.y" +case 615: +#line 2800 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 615: -#line 2824 "parse.y" +case 616: +#line 2802 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 616: -#line 2826 "parse.y" +case 617: +#line 2804 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 617: -#line 2828 "parse.y" +case 618: +#line 2806 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 619: -#line 2836 "parse.y" +case 620: +#line 2814 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 620: -#line 2838 "parse.y" +case 621: +#line 2816 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 621: -#line 2840 "parse.y" +case 622: +#line 2818 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 622: -#line 2842 "parse.y" +case 623: +#line 2820 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 623: -#line 2844 "parse.y" +case 624: +#line 2822 "parse.y" { enter_scope_of (yyvsp[0].ttype); ; break;} -case 624: -#line 2846 "parse.y" +case 625: +#line 2824 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ; break;} -case 625: -#line 2854 "parse.y" +case 626: +#line 2832 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 626: -#line 2857 "parse.y" +case 627: +#line 2835 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 627: -#line 2863 "parse.y" +case 628: +#line 2841 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 628: -#line 2866 "parse.y" +case 629: +#line 2844 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 630: -#line 2873 "parse.y" +case 631: +#line 2851 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 631: -#line 2878 "parse.y" +case 632: +#line 2856 "parse.y" { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 632: -#line 2880 "parse.y" +case 633: +#line 2858 "parse.y" { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 633: -#line 2882 "parse.y" +case 634: +#line 2860 "parse.y" { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 638: -#line 2893 "parse.y" +case 639: +#line 2871 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 639: -#line 2895 "parse.y" +case 640: +#line 2873 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 640: -#line 2902 "parse.y" +case 641: +#line 2880 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { @@ -6922,32 +6917,32 @@ case 640: got_scope = yyval.ttype = TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype)); ; break;} -case 641: -#line 2916 "parse.y" +case 642: +#line 2894 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ; break;} -case 642: -#line 2922 "parse.y" +case 643: +#line 2900 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 643: -#line 2928 "parse.y" +case 644: +#line 2906 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; break;} -case 645: -#line 2944 "parse.y" +case 646: +#line 2922 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 646: -#line 2949 "parse.y" +case 647: +#line 2927 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -6961,27 +6956,27 @@ case 646: } ; break;} -case 647: -#line 2962 "parse.y" +case 648: +#line 2940 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; break;} -case 648: -#line 2964 "parse.y" +case 649: +#line 2942 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 649: -#line 2966 "parse.y" +case 650: +#line 2944 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} -case 650: -#line 2971 "parse.y" +case 651: +#line 2949 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); ; break;} -case 651: -#line 2976 "parse.y" +case 652: +#line 2954 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -6995,16 +6990,16 @@ case 651: } ; break;} -case 652: -#line 2989 "parse.y" +case 653: +#line 2967 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} -case 653: -#line 2991 "parse.y" +case 654: +#line 2969 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 654: -#line 2996 "parse.y" +case 655: +#line 2974 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyvsp[-1].ttype = lastiddecl; @@ -7017,32 +7012,32 @@ case 654: cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ; break;} -case 655: -#line 3008 "parse.y" +case 656: +#line 2986 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 656: -#line 3014 "parse.y" +case 657: +#line 2992 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 659: -#line 3018 "parse.y" +case 660: +#line 2996 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 660: -#line 3027 "parse.y" +case 661: +#line 3005 "parse.y" { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 661: -#line 3032 "parse.y" +case 662: +#line 3010 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -7051,149 +7046,149 @@ case 661: got_scope = NULL_TREE; ; break;} -case 663: -#line 3041 "parse.y" +case 664: +#line 3019 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 664: -#line 3046 "parse.y" +case 665: +#line 3024 "parse.y" { got_scope = NULL_TREE; ; break;} -case 665: -#line 3048 "parse.y" +case 666: +#line 3026 "parse.y" { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; break;} -case 666: -#line 3055 "parse.y" +case 667: +#line 3033 "parse.y" { got_scope = void_type_node; ; break;} -case 667: -#line 3061 "parse.y" +case 668: +#line 3039 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 668: -#line 3063 "parse.y" +case 669: +#line 3041 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 669: -#line 3065 "parse.y" +case 670: +#line 3043 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 670: -#line 3067 "parse.y" +case 671: +#line 3045 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 671: -#line 3069 "parse.y" +case 672: +#line 3047 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 672: -#line 3073 "parse.y" +case 673: +#line 3051 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 674: -#line 3082 "parse.y" +case 675: +#line 3060 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 675: -#line 3084 "parse.y" +case 676: +#line 3062 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 676: -#line 3090 "parse.y" +case 677: +#line 3068 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 677: -#line 3092 "parse.y" +case 678: +#line 3070 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 678: -#line 3094 "parse.y" +case 679: +#line 3072 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 679: -#line 3096 "parse.y" +case 680: +#line 3074 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; break;} -case 680: -#line 3098 "parse.y" +case 681: +#line 3076 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 681: -#line 3100 "parse.y" +case 682: +#line 3078 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 682: -#line 3102 "parse.y" +case 683: +#line 3080 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 683: -#line 3104 "parse.y" +case 684: +#line 3082 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; break;} -case 684: -#line 3106 "parse.y" +case 685: +#line 3084 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 685: -#line 3110 "parse.y" +case 686: +#line 3088 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 687: -#line 3119 "parse.y" +case 688: +#line 3097 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 689: -#line 3123 "parse.y" -{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; - break;} case 690: -#line 3125 "parse.y" -{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3101 "parse.y" +{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 691: -#line 3127 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; +#line 3103 "parse.y" +{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 692: -#line 3129 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; +#line 3105 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} case 693: -#line 3131 "parse.y" -{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3107 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} case 694: -#line 3133 "parse.y" -{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; +#line 3109 "parse.y" +{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 695: -#line 3135 "parse.y" +#line 3111 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 696: -#line 3137 "parse.y" -{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; +#line 3113 "parse.y" +{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 697: -#line 3139 "parse.y" +#line 3115 "parse.y" +{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; + break;} +case 698: +#line 3117 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} -case 704: -#line 3162 "parse.y" +case 705: +#line 3140 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids label declarations"); ; break;} -case 707: -#line 3173 "parse.y" +case 708: +#line 3151 "parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -7203,226 +7198,226 @@ case 707: } ; break;} -case 708: -#line 3187 "parse.y" +case 709: +#line 3165 "parse.y" {; break;} -case 710: -#line 3193 "parse.y" +case 711: +#line 3171 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 711: -#line 3195 "parse.y" +case 712: +#line 3173 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 712: -#line 3200 "parse.y" +case 713: +#line 3178 "parse.y" { yyval.ttype = begin_if_stmt (); cond_stmt_keyword = "if"; ; break;} -case 713: -#line 3205 "parse.y" +case 714: +#line 3183 "parse.y" { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 714: -#line 3207 "parse.y" +case 715: +#line 3185 "parse.y" { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; break;} -case 716: -#line 3212 "parse.y" +case 717: +#line 3190 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 717: -#line 3214 "parse.y" +case 718: +#line 3192 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 718: -#line 3219 "parse.y" +case 719: +#line 3197 "parse.y" {; break;} -case 720: -#line 3225 "parse.y" +case 721: +#line 3203 "parse.y" { finish_stmt (); ; break;} -case 721: -#line 3227 "parse.y" +case 722: +#line 3205 "parse.y" { finish_expr_stmt (yyvsp[-1].ttype); ; break;} -case 722: -#line 3229 "parse.y" +case 723: +#line 3207 "parse.y" { begin_else_clause (); ; break;} -case 723: -#line 3231 "parse.y" +case 724: +#line 3209 "parse.y" { finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ; break;} -case 724: -#line 3236 "parse.y" +case 725: +#line 3214 "parse.y" { finish_if_stmt (); ; break;} -case 725: -#line 3238 "parse.y" +case 726: +#line 3216 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ; break;} -case 726: -#line 3243 "parse.y" +case 727: +#line 3221 "parse.y" { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 727: -#line 3245 "parse.y" +case 728: +#line 3223 "parse.y" { finish_while_stmt (yyvsp[-3].ttype); ; break;} -case 728: -#line 3247 "parse.y" +case 729: +#line 3225 "parse.y" { yyval.ttype = begin_do_stmt (); ; break;} -case 729: -#line 3249 "parse.y" +case 730: +#line 3227 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ; break;} -case 730: -#line 3254 "parse.y" +case 731: +#line 3232 "parse.y" { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 731: -#line 3256 "parse.y" +case 732: +#line 3234 "parse.y" { yyval.ttype = begin_for_stmt (); ; break;} -case 732: -#line 3258 "parse.y" +case 733: +#line 3236 "parse.y" { finish_for_init_stmt (yyvsp[-2].ttype); ; break;} -case 733: -#line 3260 "parse.y" +case 734: +#line 3238 "parse.y" { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 734: -#line 3262 "parse.y" +case 735: +#line 3240 "parse.y" { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; break;} -case 735: -#line 3264 "parse.y" +case 736: +#line 3242 "parse.y" { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; break;} -case 736: -#line 3266 "parse.y" +case 737: +#line 3244 "parse.y" { begin_switch_stmt (); ; break;} -case 737: -#line 3268 "parse.y" +case 738: +#line 3246 "parse.y" { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; break;} -case 738: -#line 3270 "parse.y" +case 739: +#line 3248 "parse.y" { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 739: -#line 3272 "parse.y" +case 740: +#line 3250 "parse.y" { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; break;} -case 741: -#line 3275 "parse.y" +case 742: +#line 3253 "parse.y" { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 743: -#line 3278 "parse.y" +case 744: +#line 3256 "parse.y" { finish_case_label (NULL_TREE, NULL_TREE); ; break;} -case 745: -#line 3281 "parse.y" +case 746: +#line 3259 "parse.y" { finish_break_stmt (); ; break;} -case 746: -#line 3283 "parse.y" +case 747: +#line 3261 "parse.y" { finish_continue_stmt (); ; break;} -case 747: -#line 3285 "parse.y" +case 748: +#line 3263 "parse.y" { finish_return_stmt (NULL_TREE); ; break;} -case 748: -#line 3287 "parse.y" +case 749: +#line 3265 "parse.y" { finish_return_stmt (yyvsp[-1].ttype); ; break;} -case 749: -#line 3289 "parse.y" +case 750: +#line 3267 "parse.y" { finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ; break;} -case 750: -#line 3295 "parse.y" +case 751: +#line 3273 "parse.y" { finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} -case 751: -#line 3301 "parse.y" +case 752: +#line 3279 "parse.y" { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} -case 752: -#line 3305 "parse.y" +case 753: +#line 3283 "parse.y" { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} -case 753: -#line 3307 "parse.y" +case 754: +#line 3285 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids computed gotos"); finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 754: -#line 3313 "parse.y" +case 755: +#line 3291 "parse.y" { finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 755: -#line 3315 "parse.y" +case 756: +#line 3293 "parse.y" { finish_stmt (); ; break;} -case 756: -#line 3317 "parse.y" +case 757: +#line 3295 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); finish_stmt (); ; break;} -case 757: -#line 3321 "parse.y" +case 758: +#line 3299 "parse.y" { finish_stmt (); ; break;} -case 760: -#line 3325 "parse.y" +case 761: +#line 3303 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ; break;} -case 762: -#line 3331 "parse.y" +case 763: +#line 3309 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); expand_start_early_try_stmts (); ; break;} -case 763: -#line 3337 "parse.y" +case 764: +#line 3315 "parse.y" { expand_start_all_catch (); ; break;} -case 764: -#line 3341 "parse.y" +case 765: +#line 3319 "parse.y" { int nested = (hack_decl_function_context (current_function_decl) != NULL_TREE); @@ -7430,42 +7425,42 @@ case 764: finish_function (lineno, (int)yyvsp[-3].itype, nested); ; break;} -case 765: -#line 3351 "parse.y" +case 766: +#line 3329 "parse.y" { yyval.ttype = begin_try_block (); ; break;} -case 766: -#line 3353 "parse.y" +case 767: +#line 3331 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} -case 767: -#line 3355 "parse.y" +case 768: +#line 3333 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} -case 770: -#line 3365 "parse.y" +case 771: +#line 3343 "parse.y" { yyval.ttype = begin_handler(); ; break;} -case 771: -#line 3367 "parse.y" +case 772: +#line 3345 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} -case 772: -#line 3369 "parse.y" +case 773: +#line 3347 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} -case 775: -#line 3379 "parse.y" +case 776: +#line 3357 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} -case 776: -#line 3395 "parse.y" +case 777: +#line 3373 "parse.y" { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t), TREE_VALUE (yyvsp[-1].ftype.t)); ; break;} -case 777: -#line 3402 "parse.y" +case 778: +#line 3380 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); @@ -7473,99 +7468,99 @@ case 777: expand_label (label); ; break;} -case 778: -#line 3409 "parse.y" -{ goto do_label; ; - break;} case 779: -#line 3411 "parse.y" +#line 3387 "parse.y" { goto do_label; ; break;} case 780: -#line 3413 "parse.y" +#line 3389 "parse.y" { goto do_label; ; break;} case 781: -#line 3418 "parse.y" +#line 3391 "parse.y" +{ goto do_label; ; + break;} +case 782: +#line 3396 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} -case 783: -#line 3421 "parse.y" +case 784: +#line 3399 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} -case 784: -#line 3430 "parse.y" +case 785: +#line 3408 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} -case 785: -#line 3433 "parse.y" +case 786: +#line 3411 "parse.y" { emit_line_note (input_filename, lineno); ; break;} -case 786: -#line 3438 "parse.y" +case 787: +#line 3416 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 788: -#line 3441 "parse.y" +case 789: +#line 3419 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 789: -#line 3448 "parse.y" +case 790: +#line 3426 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 792: -#line 3455 "parse.y" +case 793: +#line 3433 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 793: -#line 3460 "parse.y" +case 794: +#line 3438 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} -case 794: -#line 3465 "parse.y" +case 795: +#line 3443 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} -case 795: -#line 3467 "parse.y" +case 796: +#line 3445 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 796: -#line 3478 "parse.y" +case 797: +#line 3456 "parse.y" { yyval.ttype = empty_parms(); ; break;} -case 798: -#line 3483 "parse.y" +case 799: +#line 3461 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); check_for_new_type ("inside parameter list", yyvsp[0].ftype); ; break;} -case 799: -#line 3491 "parse.y" -{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ; - break;} case 800: -#line 3493 "parse.y" -{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; +#line 3469 "parse.y" +{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} case 801: -#line 3496 "parse.y" +#line 3471 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} case 802: -#line 3498 "parse.y" +#line 3474 "parse.y" +{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; + break;} +case 803: +#line 3476 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} -case 803: -#line 3501 "parse.y" +case 804: +#line 3479 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} -case 804: -#line 3503 "parse.y" +case 805: +#line 3481 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7576,8 +7571,8 @@ case 804: yychar = ')'; ; break;} -case 805: -#line 3513 "parse.y" +case 806: +#line 3491 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7589,99 +7584,99 @@ case 805: yychar = ')'; ; break;} -case 806: -#line 3528 "parse.y" +case 807: +#line 3506 "parse.y" { maybe_snarf_defarg (); ; break;} -case 807: -#line 3530 "parse.y" +case 808: +#line 3508 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 810: -#line 3541 "parse.y" +case 811: +#line 3519 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} -case 811: -#line 3544 "parse.y" +case 812: +#line 3522 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ; break;} -case 812: -#line 3547 "parse.y" +case 813: +#line 3525 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} -case 813: -#line 3550 "parse.y" +case 814: +#line 3528 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} -case 814: -#line 3552 "parse.y" +case 815: +#line 3530 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} -case 816: -#line 3558 "parse.y" +case 817: +#line 3536 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ; break;} -case 817: -#line 3568 "parse.y" +case 818: +#line 3546 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ; break;} -case 818: -#line 3572 "parse.y" +case 819: +#line 3550 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 819: -#line 3575 "parse.y" +case 820: +#line 3553 "parse.y" { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 820: -#line 3578 "parse.y" +case 821: +#line 3556 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 821: -#line 3582 "parse.y" +case 822: +#line 3560 "parse.y" { tree specs = strip_attrs (yyvsp[0].ftype.t); yyval.ftype.t = build_tree_list (specs, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 822: -#line 3586 "parse.y" +case 823: +#line 3564 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 823: -#line 3593 "parse.y" +case 824: +#line 3571 "parse.y" { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 824: -#line 3596 "parse.y" +case 825: +#line 3574 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 827: -#line 3607 "parse.y" +case 828: +#line 3585 "parse.y" { see_typename (); ; break;} -case 828: -#line 3612 "parse.y" +case 829: +#line 3590 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} -case 829: -#line 3617 "parse.y" +case 830: +#line 3595 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF @@ -7691,194 +7686,194 @@ case 829: yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ; break;} -case 830: -#line 3629 "parse.y" +case 831: +#line 3607 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 831: -#line 3631 "parse.y" +case 832: +#line 3609 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 832: -#line 3633 "parse.y" +case 833: +#line 3611 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} -case 833: -#line 3638 "parse.y" +case 834: +#line 3616 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} -case 835: -#line 3644 "parse.y" +case 836: +#line 3622 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 836: -#line 3652 "parse.y" +case 837: +#line 3630 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 837: -#line 3654 "parse.y" +case 838: +#line 3632 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 838: -#line 3656 "parse.y" +case 839: +#line 3634 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 839: -#line 3658 "parse.y" +case 840: +#line 3636 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 840: -#line 3665 "parse.y" -{ got_scope = NULL_TREE; ; - break;} case 841: -#line 3670 "parse.y" -{ yyval.ttype = ansi_opname[MULT_EXPR]; ; +#line 3643 "parse.y" +{ got_scope = NULL_TREE; ; break;} case 842: -#line 3672 "parse.y" -{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; +#line 3648 "parse.y" +{ yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} case 843: -#line 3674 "parse.y" -{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; +#line 3650 "parse.y" +{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} case 844: -#line 3676 "parse.y" -{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; +#line 3652 "parse.y" +{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} case 845: -#line 3678 "parse.y" -{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; +#line 3654 "parse.y" +{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} case 846: -#line 3680 "parse.y" -{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; +#line 3656 "parse.y" +{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} case 847: -#line 3682 "parse.y" -{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; +#line 3658 "parse.y" +{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} case 848: -#line 3684 "parse.y" -{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; +#line 3660 "parse.y" +{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} case 849: -#line 3686 "parse.y" -{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; +#line 3662 "parse.y" +{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} case 850: -#line 3688 "parse.y" -{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; +#line 3664 "parse.y" +{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} case 851: -#line 3690 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3666 "parse.y" +{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} case 852: -#line 3692 "parse.y" -{ yyval.ttype = ansi_opname[LT_EXPR]; ; +#line 3668 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 853: -#line 3694 "parse.y" -{ yyval.ttype = ansi_opname[GT_EXPR]; ; +#line 3670 "parse.y" +{ yyval.ttype = ansi_opname[LT_EXPR]; ; break;} case 854: -#line 3696 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3672 "parse.y" +{ yyval.ttype = ansi_opname[GT_EXPR]; ; break;} case 855: -#line 3698 "parse.y" -{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; +#line 3674 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 856: -#line 3700 "parse.y" -{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; +#line 3676 "parse.y" +{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} case 857: -#line 3702 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3678 "parse.y" +{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} case 858: -#line 3704 "parse.y" +#line 3680 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 859: -#line 3706 "parse.y" -{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; +#line 3682 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 860: -#line 3708 "parse.y" -{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; +#line 3684 "parse.y" +{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} case 861: -#line 3710 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; +#line 3686 "parse.y" +{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} case 862: -#line 3712 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; +#line 3688 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} case 863: -#line 3714 "parse.y" -{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; +#line 3690 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} case 864: -#line 3716 "parse.y" -{ yyval.ttype = ansi_opname[COND_EXPR]; ; +#line 3692 "parse.y" +{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} case 865: -#line 3718 "parse.y" -{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; +#line 3694 "parse.y" +{ yyval.ttype = ansi_opname[COND_EXPR]; ; break;} case 866: -#line 3720 "parse.y" -{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; +#line 3696 "parse.y" +{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} case 867: -#line 3722 "parse.y" -{ yyval.ttype = ansi_opname[MEMBER_REF]; ; +#line 3698 "parse.y" +{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} case 868: -#line 3724 "parse.y" -{ yyval.ttype = ansi_opname[CALL_EXPR]; ; +#line 3700 "parse.y" +{ yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} case 869: -#line 3726 "parse.y" -{ yyval.ttype = ansi_opname[ARRAY_REF]; ; +#line 3702 "parse.y" +{ yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} case 870: -#line 3728 "parse.y" -{ yyval.ttype = ansi_opname[NEW_EXPR]; ; +#line 3704 "parse.y" +{ yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} case 871: -#line 3730 "parse.y" -{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; +#line 3706 "parse.y" +{ yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} case 872: -#line 3732 "parse.y" -{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; +#line 3708 "parse.y" +{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} case 873: -#line 3734 "parse.y" -{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; +#line 3710 "parse.y" +{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} case 874: -#line 3737 "parse.y" -{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; +#line 3712 "parse.y" +{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} case 875: -#line 3739 "parse.y" +#line 3715 "parse.y" +{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; + break;} +case 876: +#line 3717 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 498 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -8074,7 +8069,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 3742 "parse.y" +#line 3720 "parse.y" #ifdef SPEW_DEBUG diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 2aba4a5fea0..025b81327af 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -1433,47 +1433,20 @@ primary: { $$ = finish_this_expr (); } | CV_QUALIFIER '(' nonnull_exprlist ')' { - tree type = NULL_TREE; - tree id = $$; + /* This is a C cast in C++'s `functional' notation + using the "implicit int" extension so that: + `const (3)' is equivalent to `const int (3)'. */ + tree type; - /* This is a C cast in C++'s `functional' notation. */ if ($3 == error_mark_node) { $$ = error_mark_node; break; } -#if 0 - if ($3 == NULL_TREE) - { - error ("cannot cast null list to type `%s'", - IDENTIFIER_POINTER (TYPE_NAME (id))); - $$ = error_mark_node; - break; - } -#endif -#if 0 - /* type is not set! (mrs) */ - if (type == error_mark_node) - $$ = error_mark_node; - else -#endif - { - if (id == ridpointers[(int) RID_CONST]) - type = build_type_variant (integer_type_node, 1, 0); - else if (id == ridpointers[(int) RID_VOLATILE]) - type = build_type_variant (integer_type_node, 0, 1); -#if 0 - /* should not be able to get here (mrs) */ - else if (id == ridpointers[(int) RID_FRIEND]) - { - error ("cannot cast expression to `friend' type"); - $$ = error_mark_node; - break; - } -#endif - else my_friendly_abort (79); - $$ = build_c_cast (type, build_compound_expr ($3)); - } + + type = cp_build_qualified_type (integer_type_node, + cp_type_qual_from_rid ($1)); + $$ = build_c_cast (type, build_compound_expr ($3)); } | functional_cast | DYNAMIC_CAST '<' type_id '>' '(' expr ')' diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 11c89df5c16..ec1b5af46d6 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -2598,10 +2598,8 @@ convert_nontype_argument (type, expr) template-argument, which must be an lvalue. */ if (!comptypes (TYPE_MAIN_VARIANT (expr_type), TYPE_MAIN_VARIANT (type), 1) - || (TYPE_READONLY (expr_type) > - TYPE_READONLY (type_referred_to)) - || (TYPE_VOLATILE (expr_type) > - TYPE_VOLATILE (type_referred_to)) + || !at_least_as_qualified_p (type_referred_to, + expr_type) || !real_lvalue_p (expr)) return error_mark_node; else @@ -4872,8 +4870,7 @@ tsubst_aggr_type (t, args, in_decl, entering_scope) { tree r = build_ptrmemfunc_type (tsubst (TYPE_PTRMEMFUNC_FN_TYPE (t), args, in_decl)); - return cp_build_type_variant (r, TYPE_READONLY (t), - TYPE_VOLATILE (t)); + return cp_build_qualified_type (r, TYPE_QUALS (t)); } /* else fall through */ @@ -4907,8 +4904,7 @@ tsubst_aggr_type (t, args, in_decl, entering_scope) r = lookup_template_class (t, argvec, in_decl, context, entering_scope); - return cp_build_type_variant (r, TYPE_READONLY (t), - TYPE_VOLATILE (t)); + return cp_build_qualified_type (r, TYPE_QUALS (t)); } else /* This is not a template type, so there's nothing to do. */ @@ -5559,9 +5555,8 @@ tsubst (t, args, in_decl) { my_friendly_assert (TREE_CODE_CLASS (TREE_CODE (arg)) == 't', 0); - return cp_build_type_variant - (arg, TYPE_READONLY (arg) || TYPE_READONLY (t), - TYPE_VOLATILE (arg) || TYPE_VOLATILE (t)); + return cp_build_qualified_type + (arg, CP_TYPE_QUALS (arg) | CP_TYPE_QUALS (t)); } else if (TREE_CODE (t) == TEMPLATE_TEMPLATE_PARM) { @@ -5585,8 +5580,7 @@ tsubst (t, args, in_decl) argvec, in_decl, DECL_CONTEXT (arg), /*entering_scope=*/0); - return cp_build_type_variant (r, TYPE_READONLY (t), - TYPE_VOLATILE (t)); + return cp_build_qualified_type (r, TYPE_QUALS (t)); } else /* We are processing a template argument list. */ @@ -5736,7 +5730,7 @@ tsubst (t, args, in_decl) r = build_pointer_type (type); else r = build_reference_type (type); - r = cp_build_type_variant (r, TYPE_READONLY (t), TYPE_VOLATILE (t)); + r = cp_build_qualified_type (r, TYPE_QUALS (t)); /* Will this ever be needed for TYPE_..._TO values? */ layout_type (r); @@ -5766,10 +5760,7 @@ tsubst (t, args, in_decl) = build_cplus_method_type (TREE_TYPE (TREE_VALUE (arg_types)), type, TREE_CHAIN (arg_types)); - - fntype = build_type_variant (fntype, - TYPE_READONLY (t), - TYPE_VOLATILE (t)); + fntype = build_qualified_type (fntype, TYPE_QUALS (t)); /* Substitue the exception specification. */ raises = TYPE_RAISES_EXCEPTIONS (t); @@ -5820,9 +5811,9 @@ tsubst (t, args, in_decl) return error_mark_node; f = make_typename_type (ctx, f); - return cp_build_type_variant - (f, TYPE_READONLY (f) || TYPE_READONLY (t), - TYPE_VOLATILE (f) || TYPE_VOLATILE (t)); + return cp_build_qualified_type (f, + CP_TYPE_QUALS (f) + | CP_TYPE_QUALS (t)); } case INDIRECT_REF: @@ -7085,11 +7076,9 @@ check_cv_quals_for_unify (strict, arg, parm) tree parm; { return !((!(strict & UNIFY_ALLOW_MORE_CV_QUAL) - && (TYPE_READONLY (arg) < TYPE_READONLY (parm) - || TYPE_VOLATILE (arg) < TYPE_VOLATILE (parm))) + && !at_least_as_qualified_p (arg, parm)) || (!(strict & UNIFY_ALLOW_LESS_CV_QUAL) - && (TYPE_READONLY (arg) > TYPE_READONLY (parm) - || TYPE_VOLATILE (arg) > TYPE_VOLATILE (parm)))); + && (!at_least_as_qualified_p (parm, arg)))); } /* Takes parameters as for type_unification. Returns 0 if the @@ -7249,9 +7238,9 @@ unify (tparms, targs, parm, arg, strict, explicit_mask) /* Consider the case where ARG is `const volatile int' and PARM is `const T'. Then, T should be `volatile int'. */ arg = - cp_build_type_variant (arg, - TYPE_READONLY (arg) > TYPE_READONLY (parm), - TYPE_VOLATILE (arg) > TYPE_VOLATILE (parm)); + cp_build_qualified_type (arg, + CP_TYPE_QUALS (arg) + & ~CP_TYPE_QUALS (parm)); } /* Simple cases: Value already set, does match or doesn't. */ diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c index 63a734db399..b9c94980218 100644 --- a/gcc/cp/rtti.c +++ b/gcc/cp/rtti.c @@ -65,7 +65,8 @@ init_rtti_processing () pop_namespace (); tinfo_fn_id = get_identifier ("__tf"); tinfo_fn_type = build_function_type - (build_reference_type (build_type_variant (type_info_type_node, 1, 0)), + (build_reference_type (build_qualified_type (type_info_type_node, + TYPE_QUAL_CONST)), void_list_node); } @@ -123,8 +124,8 @@ build_headof (exp) else offset = build_component_ref (aref, delta_identifier, NULL_TREE, 0); - type = build_type_variant (ptr_type_node, TREE_READONLY (exp), - TREE_THIS_VOLATILE (exp)); + type = build_qualified_type (ptr_type_node, + CP_TYPE_QUALS (TREE_TYPE (exp))); return build (PLUS_EXPR, type, exp, cp_convert (ptrdiff_type_node, offset)); } @@ -302,7 +303,7 @@ get_tinfo_var (type) /* Figure out how much space we need to allocate for the type_info object. If our struct layout or the type_info classes are changed, this will need to be modified. */ - if (TYPE_VOLATILE (type) || TYPE_READONLY (type)) + if (TYPE_QUALS (type) != TYPE_UNQUALIFIED) size = 3 * POINTER_SIZE + INT_TYPE_SIZE; else if (TREE_CODE (type) == POINTER_TYPE && ! (TREE_CODE (TREE_TYPE (type)) == OFFSET_TYPE @@ -467,8 +468,8 @@ build_dynamic_cast_1 (type, expr) goto fail; if (TYPE_SIZE (complete_type (TREE_TYPE (exprtype))) == NULL_TREE) goto fail; - if (TREE_READONLY (TREE_TYPE (exprtype)) - && ! TYPE_READONLY (TREE_TYPE (type))) + if (!at_least_as_qualified_p (TREE_TYPE (type), + TREE_TYPE (exprtype))) goto fail; if (TYPE_MAIN_VARIANT (TREE_TYPE (type)) == void_type_node) break; @@ -487,8 +488,6 @@ build_dynamic_cast_1 (type, expr) /* Apply trivial conversion T -> T& for dereferenced ptrs. */ if (ec == RECORD_TYPE) { - exprtype = build_type_variant (exprtype, TREE_READONLY (expr), - TREE_THIS_VOLATILE (expr)); exprtype = build_reference_type (exprtype); expr = convert_to_reference (exprtype, expr, CONV_IMPLICIT, LOOKUP_NORMAL, NULL_TREE); @@ -503,8 +502,8 @@ build_dynamic_cast_1 (type, expr) goto fail; if (TYPE_SIZE (complete_type (TREE_TYPE (exprtype))) == NULL_TREE) goto fail; - if (TREE_READONLY (TREE_TYPE (exprtype)) - && ! TYPE_READONLY (TREE_TYPE (type))) + if (!at_least_as_qualified_p (TREE_TYPE (type), + TREE_TYPE (exprtype))) goto fail; } @@ -766,7 +765,9 @@ expand_class_desc (tdecl, type) /* Actually const __user_type_info * */ fields [0] = build_lang_field_decl (FIELD_DECL, NULL_TREE, - build_pointer_type (build_type_variant (type_info_type_node, 1, 0))); + build_pointer_type (build_qualified_type + (type_info_type_node, + TYPE_QUAL_CONST))); fields [1] = build_lang_field_decl (FIELD_DECL, NULL_TREE, unsigned_intSI_type_node); DECL_BIT_FIELD (fields[1]) = 1; @@ -967,8 +968,7 @@ expand_attr_desc (tdecl, type) tree elems, t, fn; char *name = build_overload_name (type, 1, 1); tree name_string = combine_strings (build_string (strlen (name)+1, name)); - tree attrval = build_int_2 - (TYPE_READONLY (type) | TYPE_VOLATILE (type) * 2, 0); + tree attrval = build_int_2 (TYPE_QUALS (type), 0); expand_expr_stmt (get_typeid_1 (TYPE_MAIN_VARIANT (type))); t = decay_conversion (get_tinfo_var (TYPE_MAIN_VARIANT (type))); @@ -1091,7 +1091,7 @@ synthesize_tinfo_fn (fndecl) expand_generic_desc (tdecl, type, "__rtti_func"); else if (TREE_CODE (type) == ARRAY_TYPE) expand_generic_desc (tdecl, type, "__rtti_array"); - else if (TYPE_VOLATILE (type) || TYPE_READONLY (type)) + else if (TYPE_QUALS (type) != TYPE_UNQUALIFIED) expand_attr_desc (tdecl, type); else if (TREE_CODE (type) == POINTER_TYPE) { diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 50afeeebb87..5af1c7d67c4 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1752,8 +1752,7 @@ covariant_return_p (brettype, drettype) if (! (TREE_CODE (brettype) == TREE_CODE (drettype) && (TREE_CODE (brettype) == POINTER_TYPE || TREE_CODE (brettype) == REFERENCE_TYPE) - && TYPE_READONLY (brettype) == TYPE_READONLY (drettype) - && TYPE_VOLATILE (brettype) == TYPE_VOLATILE (drettype))) + && TYPE_QUALS (brettype) == TYPE_QUALS (drettype))) return 0; if (! can_convert (brettype, drettype)) @@ -1849,15 +1848,19 @@ get_matching_virtual (binfo, fndecl, dtorp) btypes = TYPE_ARG_TYPES (TREE_TYPE (tmp)); if (instptr_type == NULL_TREE) { - if (compparms (TREE_CHAIN (btypes), dtypes, 3)) + if (compparms (TREE_CHAIN (btypes), dtypes)) /* Caller knows to give error in this case. */ return tmp; return NULL_TREE; } - if ((TYPE_READONLY (TREE_TYPE (TREE_VALUE (btypes))) - == TYPE_READONLY (instptr_type)) - && compparms (TREE_CHAIN (btypes), TREE_CHAIN (dtypes), 3)) + if (/* The first parameter is the `this' parameter, + which has POINTER_TYPE, and we can therefore + safely use TYPE_QUALS, rather than + CP_TYPE_QUALS. */ + (TYPE_QUALS (TREE_TYPE (TREE_VALUE (btypes))) + == TYPE_QUALS (instptr_type)) + && compparms (TREE_CHAIN (btypes), TREE_CHAIN (dtypes))) { tree brettype = TREE_TYPE (TREE_TYPE (tmp)); if (comptypes (brettype, drettype, 1)) @@ -2603,8 +2606,9 @@ expand_upcast_fixups (binfo, addr, orig_addr, vbase, vbase_addr, t, TREE_READONLY (new_delta) = 0; TREE_TYPE (new_delta) = - cp_build_type_variant (TREE_TYPE (new_delta), /*constp=*/0, - TYPE_VOLATILE (TREE_TYPE (new_delta))); + cp_build_qualified_type (TREE_TYPE (new_delta), + CP_TYPE_QUALS (TREE_TYPE (new_delta)) + & ~TYPE_QUAL_CONST); expand_expr_stmt (build_modify_expr (new_delta, NOP_EXPR, old_delta)); } diff --git a/gcc/cp/sig.c b/gcc/cp/sig.c index 6f8d14dd19d..9a7b57f1ddd 100644 --- a/gcc/cp/sig.c +++ b/gcc/cp/sig.c @@ -40,11 +40,11 @@ static tree build_sptr_ref PROTO((tree)); static tree build_member_function_pointer PROTO((tree)); static void undo_casts PROTO((tree)); static tree build_signature_pointer_or_reference_name - PROTO((tree, int, int, int)); + PROTO((tree, int, int)); static void build_signature_pointer_or_reference_decl PROTO((tree, tree)); static tree build_signature_pointer_or_reference_type - PROTO((tree, int, int, int)); + PROTO((tree, int, int)); static tree get_sigtable_name PROTO((tree, tree)); static tree build_signature_table_constructor PROTO((tree, tree)); static int match_method_types PROTO((tree, tree)); @@ -58,25 +58,31 @@ static int global_sigtable_name_counter; can use it's name in function name mangling. */ static tree -build_signature_pointer_or_reference_name (to_type, constp, volatilep, refp) +build_signature_pointer_or_reference_name (to_type, type_quals, refp) tree to_type; - int constp, volatilep, refp; + int type_quals; + int refp; { char * sig_name = TYPE_NAME_STRING (to_type); - int name_len = TYPE_NAME_LENGTH (to_type) + constp + volatilep; + int name_len = TYPE_NAME_LENGTH (to_type) + 3 /* Enough room for + C,V,R. */; char * name; + char *const_rep = (type_quals & TYPE_QUAL_CONST) ? "C" : ""; + char *restrict_rep = (type_quals & TYPE_QUAL_RESTRICT) ? "R" : ""; + char *volatile_rep = (type_quals & TYPE_QUAL_VOLATILE) ? "C" : ""; + if (refp) { name = (char *) alloca (name_len + sizeof (SIGNATURE_REFERENCE_NAME) +2); sprintf (name, SIGNATURE_REFERENCE_NAME_FORMAT, - constp ? "C" : "", volatilep ? "V": "", sig_name); + const_rep, volatile_rep, restrict_rep, sig_name); } else { name = (char *) alloca (name_len + sizeof (SIGNATURE_POINTER_NAME) + 2); sprintf (name, SIGNATURE_POINTER_NAME_FORMAT, - constp ? "C" : "", volatilep ? "V": "", sig_name); + const_rep, volatile_rep, restrict_rep, sig_name); } return get_identifier (name); } @@ -98,21 +104,22 @@ build_signature_pointer_or_reference_decl (type, name) TREE_CHAIN (type) = decl; } -/* Construct, lay out and return the type of pointers or references - to signature TO_TYPE. If such a type has already been constructed, - reuse it. If CONSTP or VOLATILEP is specified, make the `optr' const - or volatile, respectively. If we are constructing a const/volatile - type variant and the main type variant doesn't exist yet, it is built - as well. If REFP is 1, we construct a signature reference, otherwise - a signature pointer is constructed. +/* Construct, lay out and return the type of pointers or references to + signature TO_TYPE. If such a type has already been constructed, + reuse it. If TYPE_QUALS are specified, qualify the `optr'. If we + are constructing a const/volatile type variant and the main type + variant doesn't exist yet, it is built as well. If REFP is 1, we + construct a signature reference, otherwise a signature pointer is + constructed. This function is a subroutine of `build_signature_pointer_type' and `build_signature_reference_type'. */ static tree -build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) +build_signature_pointer_or_reference_type (to_type, type_quals, refp) tree to_type; - int constp, volatilep, refp; + int type_quals; + int refp; { register tree t, m; register struct obstack *ambient_obstack = current_obstack; @@ -121,13 +128,11 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) m = refp ? SIGNATURE_REFERENCE_TO (to_type) : SIGNATURE_POINTER_TO (to_type); /* If we don't have the main variant yet, construct it. */ - if (m == NULL_TREE - && (constp || volatilep)) - m = build_signature_pointer_or_reference_type (to_type, 0, 0, refp); + if (m == NULL_TREE && type_quals != TYPE_UNQUALIFIED) + m = build_signature_pointer_or_reference_type (to_type, + TYPE_UNQUALIFIED, refp); /* Treat any nonzero argument as 1. */ - constp = !!constp; - volatilep = !!volatilep; refp = !!refp; /* If not generating auxiliary info, search the chain of variants to see @@ -141,8 +146,8 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) if (m && !flag_gen_aux_info) for (t = m; t; t = TYPE_NEXT_VARIANT (t)) - if (constp == TYPE_READONLY (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (t)))) - && volatilep == TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (t))))) + if (type_quals == CP_TYPE_QUALS (TREE_TYPE (TREE_TYPE + (TYPE_FIELDS (t))))) return t; /* We need a new one. If TO_TYPE is permanent, make this permanent too. */ @@ -170,7 +175,7 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) t = make_lang_type (RECORD_TYPE); { - tree obj_type = build_type_variant (void_type_node, constp, volatilep); + tree obj_type = build_qualified_type (void_type_node, type_quals); tree optr_type = build_pointer_type (obj_type); tree optr, sptr; @@ -185,7 +190,8 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) sptr = TREE_CHAIN (TYPE_FIELDS (m)); else { - tree sig_tbl_type = cp_build_type_variant (to_type, 1, 0); + tree sig_tbl_type = + cp_build_qualified_type (to_type, TYPE_QUAL_CONST); sptr = build_lang_field_decl (FIELD_DECL, get_identifier (SIGNATURE_SPTR_NAME), @@ -207,8 +213,9 @@ build_signature_pointer_or_reference_type (to_type, constp, volatilep, refp) } { - tree name = build_signature_pointer_or_reference_name (to_type, constp, - volatilep, refp); + tree name = build_signature_pointer_or_reference_name (to_type, + type_quals, + refp); /* Build a DECL node for this type, so the debugger has access to it. */ build_signature_pointer_or_reference_decl (t, name); @@ -255,8 +262,7 @@ build_signature_pointer_type (to_type) { return build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type), - TYPE_READONLY (to_type), - TYPE_VOLATILE (to_type), 0); + CP_TYPE_QUALS (to_type), 0); } /* Construct, lay out and return the type of pointers to signature TO_TYPE. */ @@ -267,8 +273,7 @@ build_signature_reference_type (to_type) { return build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type), - TYPE_READONLY (to_type), - TYPE_VOLATILE (to_type), 1); + CP_TYPE_QUALS (to_type), 1); } /* Return the name of the signature table (as an IDENTIFIER_NODE) @@ -420,8 +425,7 @@ match_method_types (sig_mtype, class_mtype) /* If a signature method's `this' is const or volatile, so has to be the corresponding class method's `this.' */ - if ((TYPE_READONLY (sig_this) && ! TYPE_READONLY (class_this)) - || (TYPE_VOLATILE (sig_this) && ! TYPE_VOLATILE (class_this))) + if (!at_least_as_qualified_p (class_this, sig_this)) return 0; } @@ -429,7 +433,7 @@ match_method_types (sig_mtype, class_mtype) class_arg_types = TREE_CHAIN (class_arg_types); /* The number of arguments and the argument types have to be the same. */ - return compparms (sig_arg_types, class_arg_types, 3); + return compparms (sig_arg_types, class_arg_types); } /* Undo casts of opaque type variables to the RHS types. */ @@ -884,7 +888,7 @@ build_signature_pointer_constructor (lhs, rhs) } else { - if (TREE_READONLY (lhs) || TYPE_READONLY (lhstype)) + if (TREE_READONLY (lhs) || CP_TYPE_CONST_P (lhstype)) readonly_error (lhs, "assignment", 0); optr_expr = build_modify_expr (build_optr_ref (lhs), NOP_EXPR, @@ -978,9 +982,8 @@ build_signature_method_call (function, parms) tree old_this = TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))); TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))) - = build_type_variant (build_pointer_type (basetype), - TYPE_READONLY (old_this), - TYPE_VOLATILE (old_this)); + = build_qualified_type (build_pointer_type (basetype), + TYPE_QUALS (old_this)); direct_call = build_function_call (pfn, new_parms); diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 15be5d798d2..db9f139b387 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -442,14 +442,14 @@ build_cplus_array_type (elt_type, index_type) tree index_type; { tree t; - int constp = TYPE_READONLY (elt_type); - int volatilep = TYPE_VOLATILE (elt_type); + int type_quals = CP_TYPE_QUALS (elt_type); + elt_type = TYPE_MAIN_VARIANT (elt_type); t = build_cplus_array_type_1 (elt_type, index_type); - if (constp || volatilep) - t = cp_build_type_variant (t, constp, volatilep); + if (type_quals != TYPE_UNQUALIFIED) + t = cp_build_qualified_type (t, type_quals); return t; } @@ -458,21 +458,32 @@ build_cplus_array_type (elt_type, index_type) down to the element type of an array. */ tree -cp_build_type_variant (type, constp, volatilep) +cp_build_qualified_type (type, type_quals) tree type; - int constp, volatilep; + int type_quals; { if (type == error_mark_node) return type; + /* A restrict-qualified pointer type must be a pointer (or reference) + to object or incomplete type. */ + if ((type_quals & TYPE_QUAL_RESTRICT) + && (!POINTER_TYPE_P (type) + || TYPE_PTRMEM_P (type) + || TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)) + { + cp_error ("`%T' cannot be `restrict'-qualified", type); + type_quals &= ~TYPE_QUAL_RESTRICT; + } + if (TREE_CODE (type) == ARRAY_TYPE) { tree real_main_variant = TYPE_MAIN_VARIANT (type); push_obstacks (TYPE_OBSTACK (real_main_variant), TYPE_OBSTACK (real_main_variant)); - type = build_cplus_array_type_1 (cp_build_type_variant - (TREE_TYPE (type), constp, volatilep), + type = build_cplus_array_type_1 (cp_build_qualified_type + (TREE_TYPE (type), type_quals), TYPE_DOMAIN (type)); /* TYPE must be on same obstack as REAL_MAIN_VARIANT. If not, @@ -489,7 +500,7 @@ cp_build_type_variant (type, constp, volatilep) pop_obstacks (); return type; } - return build_type_variant (type, constp, volatilep); + return build_qualified_type (type, type_quals); } /* Returns the canonical version of TYPE. In other words, if TYPE is @@ -501,8 +512,7 @@ tree canonical_type_variant (t) tree t; { - return cp_build_type_variant (TYPE_MAIN_VARIANT (t), CP_TYPE_READONLY (t), - CP_TYPE_VOLATILE (t)); + return cp_build_qualified_type (TYPE_MAIN_VARIANT (t), CP_TYPE_QUALS (t)); } /* Add OFFSET to all base types of T. @@ -1448,13 +1458,11 @@ build_exception_variant (type, raises) tree raises; { tree v = TYPE_MAIN_VARIANT (type); - int constp = TYPE_READONLY (type); - int volatilep = TYPE_VOLATILE (type); + int type_quals = TYPE_QUALS (type); for (; v; v = TYPE_NEXT_VARIANT (v)) { - if (TYPE_READONLY (v) != constp - || TYPE_VOLATILE (v) != volatilep) + if (TYPE_QUALS (v) != type_quals) continue; /* @@ This should do set equality, not exact match. */ @@ -1931,31 +1939,31 @@ mapcar (t, func) case POINTER_TYPE: tmp = build_pointer_type (mapcar (TREE_TYPE (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case REFERENCE_TYPE: tmp = build_reference_type (mapcar (TREE_TYPE (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case FUNCTION_TYPE: tmp = build_function_type (mapcar (TREE_TYPE (t), func), mapcar (TYPE_ARG_TYPES (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case ARRAY_TYPE: tmp = build_cplus_array_type (mapcar (TREE_TYPE (t), func), mapcar (TYPE_DOMAIN (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, CP_TYPE_QUALS (t)); case INTEGER_TYPE: tmp = build_index_type (mapcar (TYPE_MAX_VALUE (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case OFFSET_TYPE: tmp = build_offset_type (mapcar (TYPE_OFFSET_BASETYPE (t), func), mapcar (TREE_TYPE (t), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case METHOD_TYPE: tmp = build_cplus_method_type (mapcar (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (t))), func), mapcar (TREE_TYPE (t), func), mapcar (TREE_CHAIN (TYPE_ARG_TYPES (t)), func)); - return cp_build_type_variant (tmp, TYPE_READONLY (t), TYPE_VOLATILE (t)); + return cp_build_qualified_type (tmp, TYPE_QUALS (t)); case COMPLEX_CST: t = copy_node (t); diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 7a748190389..254bc394d3d 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -239,10 +239,9 @@ static tree qualify_type (type, like) tree type, like; { - int constflag = TYPE_READONLY (type) || TYPE_READONLY (like); - int volflag = TYPE_VOLATILE (type) || TYPE_VOLATILE (like); /* @@ Must do member pointers here. */ - return cp_build_type_variant (type, constflag, volflag); + return cp_build_qualified_type (type, (CP_TYPE_QUALS (type) + | CP_TYPE_QUALS (like))); } /* Return the common type of two parameter lists. @@ -498,10 +497,8 @@ common_type (t1, t2) { tree tt1 = TYPE_MAIN_VARIANT (TREE_TYPE (t1)); tree tt2 = TYPE_MAIN_VARIANT (TREE_TYPE (t2)); - int constp - = TYPE_READONLY (TREE_TYPE (t1)) || TYPE_READONLY (TREE_TYPE (t2)); - int volatilep - = TYPE_VOLATILE (TREE_TYPE (t1)) || TYPE_VOLATILE (TREE_TYPE (t2)); + int type_quals = (CP_TYPE_QUALS (TREE_TYPE (t1)) + | CP_TYPE_QUALS (TREE_TYPE (t2))); tree target; if (tt1 == tt2) @@ -515,7 +512,7 @@ common_type (t1, t2) else target = common_type (tt1, tt2); - target = cp_build_type_variant (target, constp, volatilep); + target = cp_build_qualified_type (target, type_quals); if (code1 == POINTER_TYPE) t1 = build_pointer_type (target); else @@ -776,9 +773,7 @@ comptypes (type1, type2, strict) /* Qualifiers must match. */ - if (TYPE_READONLY (t1) != TYPE_READONLY (t2)) - return 0; - if (TYPE_VOLATILE (t1) != TYPE_VOLATILE (t2)) + if (CP_TYPE_QUALS (t1) != CP_TYPE_QUALS (t2)) return 0; if (strict > 0 && TYPE_FOR_JAVA (t1) != TYPE_FOR_JAVA (t2)) return 0; @@ -845,8 +840,7 @@ comptypes (type1, type2, strict) but not vice-versa! */ val = (comptypes (TREE_TYPE (t1), TREE_TYPE (t2), strict) - && compparms (TYPE_ARG_TYPES (t1), - TYPE_ARG_TYPES (t2), strict)); + && compparms (TYPE_ARG_TYPES (t1), TYPE_ARG_TYPES (t2))); break; case POINTER_TYPE: @@ -888,7 +882,7 @@ comptypes (type1, type2, strict) val = ((TREE_TYPE (t1) == TREE_TYPE (t2) || comptypes (TREE_TYPE (t1), TREE_TYPE (t2), strict)) - && compparms (TYPE_ARG_TYPES (t1), TYPE_ARG_TYPES (t2), strict)); + && compparms (TYPE_ARG_TYPES (t1), TYPE_ARG_TYPES (t2))); break; case ARRAY_TYPE: @@ -920,17 +914,18 @@ comp_cv_target_types (ttl, ttr, nptrs) int nptrs; { int t; - int c = TYPE_READONLY (ttl) - TYPE_READONLY (ttr); - int v = TYPE_VOLATILE (ttl) - TYPE_VOLATILE (ttr); - if ((c > 0 && v < 0) || (c < 0 && v > 0)) + if (!at_least_as_qualified_p (ttl, ttr) + && !at_least_as_qualified_p (ttr, ttl)) + /* The qualifications are incomparable. */ return 0; if (TYPE_MAIN_VARIANT (ttl) == TYPE_MAIN_VARIANT (ttr)) - return (c + v < 0) ? -1 : 1; + return more_qualified_p (ttr, ttl) ? -1 : 1; t = comp_target_types (ttl, ttr, nptrs); - if ((t == 1 && c + v >= 0) || (t == -1 && c + v <= 0)) + if ((t == 1 && at_least_as_qualified_p (ttl, ttr)) + || (t == -1 && at_least_as_qualified_p (ttr, ttl))) return t; return 0; @@ -1115,6 +1110,29 @@ comp_target_types (ttl, ttr, nptrs) return 0; } +/* Returns 1 if TYPE1 is at least as qualified as TYPE2. */ + +int +at_least_as_qualified_p (type1, type2) + tree type1; + tree type2; +{ + /* All qualifiers for TYPE2 must also appear in TYPE1. */ + return ((CP_TYPE_QUALS (type1) & CP_TYPE_QUALS (type2)) + == CP_TYPE_QUALS (type2)); +} + +/* Returns 1 if TYPE1 is more qualified than TYPE2. */ + +int +more_qualified_p (type1, type2) + tree type1; + tree type2; +{ + return (CP_TYPE_QUALS (type1) != CP_TYPE_QUALS (type2) + && at_least_as_qualified_p (type1, type2)); +} + /* Returns 1 if TYPE1 is more cv-qualified than TYPE2, -1 if TYPE2 is more cv-qualified that TYPE1, and 0 otherwise. */ @@ -1123,16 +1141,13 @@ comp_cv_qualification (type1, type2) tree type1; tree type2; { - if (TYPE_READONLY (type1) == TYPE_READONLY (type2) - && TYPE_VOLATILE (type1) == TYPE_VOLATILE (type2)) + if (CP_TYPE_QUALS (type1) == CP_TYPE_QUALS (type2)) return 0; - if (TYPE_READONLY (type1) >= TYPE_READONLY (type2) - && TYPE_VOLATILE (type1) >= TYPE_VOLATILE (type2)) + if (at_least_as_qualified_p (type1, type2)) return 1; - if (TYPE_READONLY (type2) >= TYPE_READONLY (type1) - && TYPE_VOLATILE (type2) >= TYPE_VOLATILE (type1)) + else if (at_least_as_qualified_p (type2, type1)) return -1; return 0; @@ -1220,9 +1235,8 @@ common_base_type (tt1, tt2) STRICT is no longer used. */ int -compparms (parms1, parms2, strict) +compparms (parms1, parms2) tree parms1, parms2; - int strict ATTRIBUTE_UNUSED; { register tree t1 = parms1, t2 = parms2; @@ -1774,11 +1788,8 @@ inline_conversion (exp) tree exp; { if (TREE_CODE (exp) == FUNCTION_DECL) - { - tree type = build_type_variant - (TREE_TYPE (exp), TREE_READONLY (exp), TREE_THIS_VOLATILE (exp)); - exp = build1 (ADDR_EXPR, build_pointer_type (type), exp); - } + exp = build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (exp)), exp); + return exp; } @@ -1802,7 +1813,7 @@ string_conv_p (totype, exp, warn) if (TREE_CODE (exp) != STRING_CST) { - t = build_pointer_type (build_type_variant (t, 1, 0)); + t = build_pointer_type (build_qualified_type (t, TYPE_QUAL_CONST)); if (! comptypes (TREE_TYPE (exp), t, 1)) return 0; STRIP_NOPS (exp); @@ -1947,8 +1958,7 @@ build_component_ref (datum, component, basetype_path, protect) register tree field = NULL; register tree ref; tree field_type; - int constp; - int volatilep; + int type_quals; if (processing_template_decl) return build_min_nt (COMPONENT_REF, datum, component); @@ -2167,8 +2177,7 @@ build_component_ref (datum, component, basetype_path, protect) } /* Compute the type of the field, as described in [expr.ref]. */ - constp = 0; - volatilep = 0; + type_quals = TYPE_UNQUALIFIED; field_type = TREE_TYPE (field); if (TREE_CODE (field_type) == REFERENCE_TYPE) /* The standard says that the type of the result should be the @@ -2177,17 +2186,16 @@ build_component_ref (datum, component, basetype_path, protect) ; else { + type_quals = (CP_TYPE_QUALS (field_type) + | CP_TYPE_QUALS (TREE_TYPE (datum))); + /* A field is const (volatile) if the enclosing object, or the field itself, is const (volatile). But, a mutable field is not const, even within a const object. */ - constp = (!(DECL_LANG_SPECIFIC (field) - && DECL_MUTABLE_P (field)) - && (TYPE_READONLY (field_type) - || TYPE_READONLY (TREE_TYPE (datum)))); - volatilep = (TYPE_VOLATILE (field_type) - || TYPE_VOLATILE (TREE_TYPE (datum))); + if (DECL_LANG_SPECIFIC (field) && DECL_MUTABLE_P (field)) + type_quals &= ~TYPE_QUAL_CONST; if (!IS_SIGNATURE (field_type)) - field_type = cp_build_type_variant (field_type, constp, volatilep); + field_type = cp_build_qualified_type (field_type, type_quals); } ref = fold (build (COMPONENT_REF, field_type, @@ -2196,9 +2204,9 @@ build_component_ref (datum, component, basetype_path, protect) /* Mark the expression const or volatile, as appropriate. Even though we've dealt with the type above, we still have to mark the expression itself. */ - if (constp) + if (type_quals & TYPE_QUAL_CONST) TREE_READONLY (ref) = 1; - else if (volatilep) + else if (type_quals & TYPE_QUAL_VOLATILE) TREE_THIS_VOLATILE (ref) = 1; return ref; @@ -2286,8 +2294,8 @@ build_indirect_ref (ptr, errorstring) /* We *must* set TREE_READONLY when dereferencing a pointer to const, so that we get the proper error message if the result is used to assign to. Also, &* is supposed to be a no-op. */ - TREE_READONLY (ref) = TYPE_READONLY (t); - TREE_THIS_VOLATILE (ref) = TYPE_VOLATILE (t); + TREE_READONLY (ref) = CP_TYPE_CONST_P (t); + TREE_THIS_VOLATILE (ref) = CP_TYPE_VOLATILE_P (t); TREE_SIDE_EFFECTS (ref) = (TREE_THIS_VOLATILE (ref) || TREE_SIDE_EFFECTS (pointer) || flag_volatile); @@ -2406,11 +2414,11 @@ build_array_ref (array, idx) /* Array ref is const/volatile if the array elements are or if the array is.. */ TREE_READONLY (rval) - |= (TYPE_READONLY (type) | TREE_READONLY (array)); + |= (CP_TYPE_CONST_P (type) | TREE_READONLY (array)); TREE_SIDE_EFFECTS (rval) - |= (TYPE_VOLATILE (type) | TREE_SIDE_EFFECTS (array)); + |= (CP_TYPE_VOLATILE_P (type) | TREE_SIDE_EFFECTS (array)); TREE_THIS_VOLATILE (rval) - |= (TYPE_VOLATILE (type) | TREE_THIS_VOLATILE (array)); + |= (CP_TYPE_VOLATILE_P (type) | TREE_THIS_VOLATILE (array)); return require_complete_type (fold (rval)); } @@ -4449,7 +4457,7 @@ build_unary_op (code, xarg, noconvert) /* Report something read-only. */ - if (TYPE_READONLY (TREE_TYPE (arg)) + if (CP_TYPE_CONST_P (TREE_TYPE (arg)) || TREE_READONLY (arg)) readonly_error (arg, ((code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR) @@ -5075,10 +5083,9 @@ build_conditional_expr (ifexp, op1, op2) else if (TREE_READONLY_DECL_P (op2)) op2 = decl_constant_value (op2); if (type1 != type2) - type1 = cp_build_type_variant - (type1, - TYPE_READONLY (op1) || TYPE_READONLY (op2), - TYPE_VOLATILE (op1) || TYPE_VOLATILE (op2)); + type1 = cp_build_qualified_type + (type1, (CP_TYPE_QUALS (TREE_TYPE (op1)) + | CP_TYPE_QUALS (TREE_TYPE (op2)))); /* ??? This is a kludge to deal with the fact that we don't sort out integers and enums properly, yet. */ result = fold (build (COND_EXPR, type1, ifexp, op1, op2)); @@ -5151,10 +5158,10 @@ build_conditional_expr (ifexp, op1, op2) if (type1 == type2) result_type = type1; else - result_type = cp_build_type_variant - (type1, - TREE_READONLY (op1) || TREE_READONLY (op2), - TREE_THIS_VOLATILE (op1) || TREE_THIS_VOLATILE (op2)); + result_type = + cp_build_qualified_type (type1, + CP_TYPE_QUALS (TREE_TYPE (op1)) + | CP_TYPE_QUALS (TREE_TYPE (op2))); } else if ((code1 == INTEGER_TYPE || code1 == REAL_TYPE) && (code2 == INTEGER_TYPE || code2 == REAL_TYPE)) @@ -5247,7 +5254,10 @@ build_conditional_expr (ifexp, op1, op2) tree tmp; if (code2 == POINTER_TYPE) tmp = build_pointer_type - (build_type_variant (TREE_TYPE (type2), 1, 1)); + (cp_build_qualified_type (TREE_TYPE (type2), + TYPE_QUAL_CONST + | TYPE_QUAL_VOLATILE + | TYPE_QUAL_RESTRICT)); else tmp = type2; tmp = build_type_conversion (CONVERT_EXPR, tmp, op1, 0); @@ -5269,7 +5279,10 @@ build_conditional_expr (ifexp, op1, op2) tree tmp; if (code1 == POINTER_TYPE) tmp = build_pointer_type - (build_type_variant (TREE_TYPE (type1), 1, 1)); + (cp_build_qualified_type (TREE_TYPE (type1), + TYPE_QUAL_CONST + | TYPE_QUAL_VOLATILE + | TYPE_QUAL_RESTRICT)); else tmp = type1; @@ -5454,10 +5467,8 @@ build_static_cast (type, expr) { tree binfo; if (IS_AGGR_TYPE (TREE_TYPE (type)) && IS_AGGR_TYPE (TREE_TYPE (intype)) - && (TYPE_READONLY (TREE_TYPE (type)) - >= TYPE_READONLY (TREE_TYPE (intype))) - && (TYPE_VOLATILE (TREE_TYPE (type)) - >= TYPE_VOLATILE (TREE_TYPE (intype))) + && at_least_as_qualified_p (TREE_TYPE (type), + TREE_TYPE (intype)) && (binfo = get_binfo (TREE_TYPE (intype), TREE_TYPE (type), 0)) && ! TREE_VIA_VIRTUAL (binfo)) ok = 1; @@ -5466,10 +5477,8 @@ build_static_cast (type, expr) { if (comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (type))), TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (intype))), 1) - && (TYPE_READONLY (TREE_TYPE (TREE_TYPE (type))) - >= TYPE_READONLY (TREE_TYPE (TREE_TYPE (intype)))) - && (TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (type))) - >= TYPE_VOLATILE (TREE_TYPE (TREE_TYPE (intype)))) + && at_least_as_qualified_p (TREE_TYPE (TREE_TYPE (type)), + TREE_TYPE (TREE_TYPE (intype))) && (binfo = get_binfo (TYPE_OFFSET_BASETYPE (TREE_TYPE (type)), TYPE_OFFSET_BASETYPE (TREE_TYPE (intype)), 0)) && ! TREE_VIA_VIRTUAL (binfo)) @@ -5770,17 +5779,10 @@ build_c_cast (type, expr) if (warn_cast_qual && TREE_CODE (type) == POINTER_TYPE - && TREE_CODE (otype) == POINTER_TYPE) - { - /* For C++ we make these regular warnings, rather than - softening them into pedwarns. */ - if (TYPE_VOLATILE (TREE_TYPE (otype)) - && ! TYPE_VOLATILE (TREE_TYPE (type))) - warning ("cast discards `volatile' from pointer target type"); - if (TYPE_READONLY (TREE_TYPE (otype)) - && ! TYPE_READONLY (TREE_TYPE (type))) - warning ("cast discards `const' from pointer target type"); - } + && TREE_CODE (otype) == POINTER_TYPE + && !at_least_as_qualified_p (TREE_TYPE (type), + TREE_TYPE (otype))) + cp_warning ("cast discards qualifiers from pointer target type"); /* Warn about possible alignment problems. */ if (STRICT_ALIGNMENT && warn_cast_align @@ -6067,7 +6069,7 @@ build_modify_expr (lhs, modifycode, rhs) && ! (TREE_CODE (lhs) == COMPONENT_REF && (IS_SIGNATURE_POINTER (TREE_TYPE (TREE_OPERAND (lhs, 0))) || IS_SIGNATURE_REFERENCE (TREE_TYPE (TREE_OPERAND (lhs, 0))))) - && (TREE_READONLY (lhs) || TYPE_READONLY (lhstype) + && (TREE_READONLY (lhs) || CP_TYPE_CONST_P (lhstype) /* Functions are not modifiable, even though they are lvalues. */ || TREE_CODE (TREE_TYPE (lhs)) == FUNCTION_TYPE @@ -6075,7 +6077,7 @@ build_modify_expr (lhs, modifycode, rhs) || TREE_CODE (lhstype) == UNION_TYPE) && C_TYPE_FIELDS_READONLY (lhstype)) || (TREE_CODE (lhstype) == REFERENCE_TYPE - && TYPE_READONLY (TREE_TYPE (lhstype))))) + && CP_TYPE_CONST_P (TREE_TYPE (lhstype))))) readonly_error (lhs, "assignment", 0); /* If storing into a structure or union member, @@ -6751,22 +6753,13 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum) if (binfo == 0) return error_not_base_type (ttl, ttr); - if (! TYPE_READONLY (ttl) && TYPE_READONLY (ttr)) + if (!at_least_as_qualified_p (ttl, ttr)) { if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards const", + cp_error ("passing `%T' as argument %P of `%D' discards qualifiers", rhstype, parmnum, fndecl); else - cp_error ("%s to `%T' from `%T' discards const", - errtype, type, rhstype); - } - if (! TYPE_VOLATILE (ttl) && TYPE_VOLATILE (ttr)) - { - if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards volatile", - rhstype, parmnum, fndecl); - else - cp_error ("%s to `%T' from `%T' discards volatile", + cp_error ("%s to `%T' from `%T' discards qualifiers", errtype, type, rhstype); } } @@ -6815,24 +6808,15 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum) error ("%s between pointer to members converting across virtual baseclasses", errtype); return error_mark_node; } - else if (! TYPE_READONLY (ttl) && TYPE_READONLY (ttr)) + else if (!at_least_as_qualified_p (ttl, ttr)) { if (string_conv_p (type, rhs, 1)) /* converting from string constant to char *, OK. */; else if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards const", + cp_error ("passing `%T' as argument %P of `%D' discards qualifiers", rhstype, parmnum, fndecl); else - cp_error ("%s to `%T' from `%T' discards const", - errtype, type, rhstype); - } - else if (! TYPE_VOLATILE (ttl) && TYPE_VOLATILE (ttr)) - { - if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards volatile", - rhstype, parmnum, fndecl); - else - cp_error ("%s to `%T' from `%T' discards volatile", + cp_error ("%s to `%T' from `%T' discards qualifiers", errtype, type, rhstype); } else if (TREE_CODE (ttl) == TREE_CODE (ttr) @@ -6849,7 +6833,8 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum) } else { - int add_quals = 0, const_parity = 0, volatile_parity = 0; + int add_quals = 0; + int drops_quals = 0; int left_const = 1; int unsigned_parity; int nptrs = 0; @@ -6858,12 +6843,10 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum) for (; ; ttl = TREE_TYPE (ttl), ttr = TREE_TYPE (ttr)) { nptrs -= 1; - const_parity |= (TYPE_READONLY (ttl) < TYPE_READONLY (ttr)); - volatile_parity |= (TYPE_VOLATILE (ttl) < TYPE_VOLATILE (ttr)); + drops_quals |= !at_least_as_qualified_p (ttl, ttr); if (! left_const - && (TYPE_READONLY (ttl) > TYPE_READONLY (ttr) - || TYPE_VOLATILE (ttl) > TYPE_VOLATILE (ttr))) + && !at_least_as_qualified_p (ttr, ttl)) add_quals = 1; left_const &= TYPE_READONLY (ttl); @@ -6891,24 +6874,15 @@ convert_for_assignment (type, rhs, errtype, fndecl, parmnum) cp_pedwarn ("%s to `%T' from `%T' adds cv-quals without intervening `const'", errtype, type, rhstype); } - if (const_parity) + if (drops_quals) { if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards const", + cp_error ("passing `%T' as argument %P of `%D' discards qualifiers", rhstype, parmnum, fndecl); else - cp_error ("%s to `%T' from `%T' discards const", + cp_error ("%s to `%T' from `%T' discards qualifiers", errtype, type, rhstype); } - if (volatile_parity) - { - if (fndecl) - cp_error ("passing `%T' as argument %P of `%D' discards volatile", - rhstype, parmnum, fndecl); - else - cp_error ("%s to `%T' from `%T' discards volatile", - errtype, type, rhstype); - } if (unsigned_parity > 0) { if (fndecl) @@ -7215,7 +7189,7 @@ c_expand_asm_operands (string, outputs, inputs, clobbers, vol, filename, line) else { tree type = TREE_TYPE (o[i]); - if (TYPE_READONLY (type) + if (CP_TYPE_CONST_P (type) || ((TREE_CODE (type) == RECORD_TYPE || TREE_CODE (type) == UNION_TYPE) && C_TYPE_FIELDS_READONLY (type))) @@ -7532,12 +7506,10 @@ comp_ptr_ttypes_real (to, from, constp) so the usual checks are not appropriate. */ if (TREE_CODE (to) != FUNCTION_TYPE && TREE_CODE (to) != METHOD_TYPE) { - if (TYPE_READONLY (from) > TYPE_READONLY (to) - || TYPE_VOLATILE (from) > TYPE_VOLATILE (to)) + if (!at_least_as_qualified_p (to, from)) return 0; - if (TYPE_READONLY (to) > TYPE_READONLY (from) - || TYPE_VOLATILE (to) > TYPE_VOLATILE (from)) + if (!at_least_as_qualified_p (from, to)) { if (constp == 0) return 0; @@ -7633,13 +7605,11 @@ comp_ptr_ttypes_reinterpret (to, from) so the usual checks are not appropriate. */ if (TREE_CODE (to) != FUNCTION_TYPE && TREE_CODE (to) != METHOD_TYPE) { - if (TYPE_READONLY (from) > TYPE_READONLY (to) - || TYPE_VOLATILE (from) > TYPE_VOLATILE (to)) + if (!at_least_as_qualified_p (to, from)) return 0; if (! constp - && (TYPE_READONLY (to) > TYPE_READONLY (from) - || TYPE_VOLATILE (to) > TYPE_READONLY (from))) + && !at_least_as_qualified_p (from, to)) return 0; constp &= TYPE_READONLY (to); } @@ -7648,3 +7618,15 @@ comp_ptr_ttypes_reinterpret (to, from) return 1; } } + +/* Returns the type-qualifier set corresponding to TYPE. */ + +int +cp_type_quals (type) + tree type; +{ + while (TREE_CODE (type) == ARRAY_TYPE) + type = TREE_TYPE (type); + + return TYPE_QUALS (type); +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/const1.C b/gcc/testsuite/g++.old-deja/g++.other/const1.C new file mode 100644 index 00000000000..7c26da1aea3 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/const1.C @@ -0,0 +1,9 @@ +// Build don't link: + +struct S +{ + void f() + { + const int i; // ERROR - uninitialized const + } +}; diff --git a/gcc/testsuite/g++.old-deja/g++.other/dcast1.C b/gcc/testsuite/g++.old-deja/g++.other/dcast1.C new file mode 100644 index 00000000000..d9dd6575aec --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/dcast1.C @@ -0,0 +1,15 @@ +// Build don't link: + +class C { +public: + virtual void f(); +}; + +extern volatile C* cp; +extern volatile C& cr; + +void f () +{ + dynamic_cast(cp); // ERROR - cannot dynamic_cast + dynamic_cast(cr); // ERROR - cannot dynamic_cast +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/init8.C b/gcc/testsuite/g++.old-deja/g++.other/init8.C index 1771fe4c3fa..80df498e6e1 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/init8.C +++ b/gcc/testsuite/g++.old-deja/g++.other/init8.C @@ -7,5 +7,5 @@ void f() { - const int var [ 10 ]; // ERROR - missing initializer - XFAIL *-*-* + const int var [ 10 ]; // ERROR - missing initializer } diff --git a/gcc/testsuite/g++.old-deja/g++.other/virtual2.C b/gcc/testsuite/g++.old-deja/g++.other/virtual2.C new file mode 100644 index 00000000000..a3ebbcd40e1 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/virtual2.C @@ -0,0 +1,19 @@ +struct B +{ + virtual int f() volatile + { return 0; } +}; + + +struct D : public B +{ + virtual int f() + { return 1; } +}; + +int main() +{ + volatile D d; + volatile B& b = d; + return b.f(); +} diff --git a/gcc/testsuite/g++.old-deja/g++.other/virtual3.C b/gcc/testsuite/g++.old-deja/g++.other/virtual3.C new file mode 100644 index 00000000000..b9a77191030 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/virtual3.C @@ -0,0 +1,24 @@ +struct B +{ + virtual int f() volatile + { return 1; } +}; + +struct D : public B +{ + int f() + { return 0; } +}; + +struct D2 : public D +{ + int f() + { return 2; } +}; + +int main() +{ + D2 d2; + D& d = d2; + return d.f(); +} diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 35e49384ad2..4a4a12965e5 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -126,8 +126,7 @@ struct work_stuff int constructor; int destructor; int static_type; /* A static member function */ - int const_type; /* A const member function */ - int volatile_type; /* A volatile member function */ + int type_quals; /* The type qualifiers. */ int dllimported; /* Symbol imported from a PE DLL */ char **tmpl_argvec; /* Template function arguments. */ int ntmpl_args; /* The number of template function arguments. */ @@ -392,6 +391,24 @@ static int demangle_template_value_parm PARAMS ((struct work_stuff*, const char**, string*, type_kind_t)); +/* There is a TYPE_QUAL value for each type qualifier. They can be + combined by bitwise-or to form the complete set of qualifiers for a + type. */ + +#define TYPE_UNQUALIFIED 0x0 +#define TYPE_QUAL_CONST 0x1 +#define TYPE_QUAL_VOLATILE 0x2 +#define TYPE_QUAL_RESTRICT 0x4 + +static int +code_for_qualifier PARAMS ((char)); + +static const char* +qualifier_string PARAMS ((int)); + +static const char* +demangle_qualifier PARAMS ((char)); + /* Translate count to integer, consuming tokens in the process. Conversion terminates on the first non-digit character. Trying to consume something that isn't a count results in @@ -448,6 +465,84 @@ consume_count_with_underscores (mangled) return idx; } +/* C is the code for a type-qualifier. Return the TYPE_QUAL + corresponding to this qualifier. */ + +static int +code_for_qualifier (c) + char c; +{ + switch (c) + { + case 'C': + return TYPE_QUAL_CONST; + + case 'V': + return TYPE_QUAL_VOLATILE; + + case 'u': + return TYPE_QUAL_RESTRICT; + + default: + break; + } + + /* C was an invalid qualifier. */ + abort (); +} + +/* Return the string corresponding to the qualifiers given by + TYPE_QUALS. */ + +static const char* +qualifier_string (type_quals) + int type_quals; +{ + switch (type_quals) + { + case TYPE_UNQUALIFIED: + return ""; + + case TYPE_QUAL_CONST: + return "const"; + + case TYPE_QUAL_VOLATILE: + return "volatile"; + + case TYPE_QUAL_RESTRICT: + return "__restrict"; + + case TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE: + return "const volatile"; + + case TYPE_QUAL_CONST | TYPE_QUAL_RESTRICT: + return "const __restrict"; + + case TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT: + return "volatile __restrict"; + + case TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT: + return "const volatile __restrict"; + + default: + break; + } + + /* TYPE_QUALS was an invalid qualifier set. */ + abort (); +} + +/* C is the code for a type-qualifier. Return the string + corresponding to this qualifier. This function should only be + called with a valid qualifier code. */ + +static const char* +demangle_qualifier (c) + char c; +{ + return qualifier_string (code_for_qualifier (c)); +} + int cplus_demangle_opname (opname, result, options) const char *opname; @@ -664,15 +759,12 @@ internal_cplus_demangle (work, mangled) int success = 0; char *demangled = NULL; int s1,s2,s3,s4; - int saved_volatile_type; s1 = work->constructor; s2 = work->destructor; s3 = work->static_type; - s4 = work->const_type; - saved_volatile_type = work->volatile_type; + s4 = work->type_quals; work->constructor = work->destructor = 0; - work->static_type = work->const_type = 0; - work->volatile_type = 0; + work->type_quals = TYPE_UNQUALIFIED; work->dllimported = 0; if ((mangled != NULL) && (*mangled != '\0')) @@ -718,8 +810,7 @@ internal_cplus_demangle (work, mangled) work->constructor = s1; work->destructor = s2; work->static_type = s3; - work->const_type = s4; - work->volatile_type = saved_volatile_type; + work->type_quals = s4; return (demangled); } @@ -871,10 +962,8 @@ demangle_signature (work, mangled, declp) case 'C': case 'V': - if (**mangled == 'C') - work -> const_type = 1; - else - work->volatile_type = 1; + case 'u': + work->type_quals |= code_for_qualifier (**mangled); /* a qualified member function */ if (oldmangled == NULL) @@ -1056,12 +1145,16 @@ demangle_signature (work, mangled, declp) success = demangle_args (work, mangled, declp); } } - if (success && work -> static_type && PRINT_ARG_TYPES) - string_append (declp, " static"); - if (success && work -> const_type && PRINT_ARG_TYPES) - string_append (declp, " const"); - else if (success && work->volatile_type && PRINT_ARG_TYPES) - string_append (declp, " volatile"); + if (success && PRINT_ARG_TYPES) + { + if (work->static_type) + string_append (declp, " static"); + if (work->type_quals != TYPE_UNQUALIFIED) + { + APPEND_BLANK (declp); + string_append (declp, qualifier_string (work->type_quals)); + } + } return (success); } @@ -1345,6 +1438,8 @@ demangle_template_value_parm (work, mangled, s, tk) p [symbol_len] = '\0'; q = internal_cplus_demangle (work, p); string_appendn (s, "&", 1); + /* FIXME: Pointer-to-member constants should get a + qualifying class name here. */ if (q) { string_append (s, q); @@ -2481,8 +2576,7 @@ do_type (work, mangled, result) int success; string decl; const char *remembered_type; - int constp; - int volatilep; + int type_quals; string btype; type_kind_t tk = tk_none; @@ -2574,8 +2668,7 @@ do_type (work, mangled, result) case 'M': case 'O': { - constp = 0; - volatilep = 0; + type_quals = TYPE_UNQUALIFIED; member = **mangled == 'M'; (*mangled)++; @@ -2615,16 +2708,19 @@ do_type (work, mangled, result) string_prepend (&decl, "("); if (member) { - if (**mangled == 'C') - { - (*mangled)++; - constp = 1; - } - if (**mangled == 'V') + switch (**mangled) { + case 'C': + case 'V': + case 'u': + type_quals |= code_for_qualifier (**mangled); (*mangled)++; - volatilep = 1; + break; + + default: + break; } + if (*(*mangled)++ != 'F') { success = 0; @@ -2642,15 +2738,10 @@ do_type (work, mangled, result) { break; } - if (constp) + if (type_quals != TYPE_UNQUALIFIED) { APPEND_BLANK (&decl); - string_append (&decl, "const"); - } - if (volatilep) - { - APPEND_BLANK (&decl); - string_append (&decl, "volatile"); + string_append (&decl, qualifier_string (type_quals)); } break; } @@ -2660,18 +2751,13 @@ do_type (work, mangled, result) case 'C': case 'V': - /* - if ((*mangled)[1] == 'P') - { - */ + case 'u': if (PRINT_ANSI_QUALIFIERS) { if (!STRING_EMPTY (&decl)) - { - string_prepend (&decl, " "); - } - string_prepend (&decl, - (**mangled) == 'C' ? "const" : "volatile"); + string_prepend (&decl, " "); + + string_prepend (&decl, demangle_qualifier (**mangled)); } (*mangled)++; break; @@ -2794,11 +2880,13 @@ demangle_fund_type (work, mangled, result) switch (**mangled) { case 'C': + case 'V': + case 'u': (*mangled)++; if (PRINT_ANSI_QUALIFIERS) { APPEND_BLANK (result); - string_append (result, "const"); + string_append (result, demangle_qualifier (**mangled)); } break; case 'U': @@ -2811,14 +2899,6 @@ demangle_fund_type (work, mangled, result) APPEND_BLANK (result); string_append (result, "signed"); break; - case 'V': - (*mangled)++; - if (PRINT_ANSI_QUALIFIERS) - { - APPEND_BLANK (result); - string_append (result, "volatile"); - } - break; case 'J': (*mangled)++; APPEND_BLANK (result); -- 2.30.2