From 6eabb2412f6c4c8306fb2f8fd05abf608e29caa9 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 11 Aug 1999 20:22:41 +0000 Subject: extend.texi (C++ Signatures): Remove node. * extend.texi (C++ Signatures): Remove node. * invoke.texi: Remove discussion of -fhandle-signatures, signature, sigof, __signature__, and __sigof__. * Make-lang.in (CXX_SRCS): Remove sig.c. * Makefile.in (CXX_OBJS): Remove sig.o. (sig.o): Remove. * cp-tree.h (CPTI_OPAQUE_TYPE): Remove. (CPTI_SIGNATURE_TYPE): Likewise. (CPTI_SIGTABLE_ENTRY_TYPE): Likewise. (opaque_type_node): Likewise. (signature_type_node): Likewise. (sigtable_entry_type): Likewise. (flag_handle_signatures): Likewise. (lang_type): Remove is_signature, is_signature_pointer, is_signature_reference, has_opaque_typedecls, sigtables_has_been_generated. Adjust dummy. Remove signature, signature_pointer_to, signature_reference_to. (IS_SIGNATURE): Remove. (SET_SIGNATURE): Remove. (CLEAR_SIGNATURE): Remove. (IS_SIGNATURE_POINTER): Remove. (IS_SIGNATURE_REFERENCE): Remove. (SIGNATURE_HAS_OPAQUE_TYPEDECLS): Remove. (SIGTABLE_HAS_BEEN_GENERATED): Remove. (CLASSTYPE_SIGNATURE): Remove. (SIGNATURE_TYPE): Remove. (SIGNATURE_METHOD_VEC): Remove. (SIGNATURE_POINTER_TO): Remove. (SIGNATURE_REFERENCE_TO): Remove. (lang_decl_flags): Remove is_default_implementation. Rename memfunc_pointer_to to saved_tree. (IS_DEFAULT_IMPLEMENTATION): Remove. (DECL_MEMFUNC_POINTER_TO): Remove. (DECL_MEMFUNC_POINTING_TO): Remove. (DECL_SAVED_TREE): Adjust definition. (tag_types): Remove signature_type_node. (SIGNATURE_FIELD_NAME): Remove. (SIGNATURE_FIELD_NAME_FORMAT): Likewise. (SIGNATURE_OPTR_NAME): Likewise. (SIGNATURE_SPTR_NAME): Likewise. (SIGNATURE_POINTER_NAME): Likewise. (SIGNATURE_POINTER_NAME_FORMAT): Likewise. (SIGNATURE_REFERENCE_NAME): Likewise. (SIGNATURE_REFERNECE_NAME_FORMAT): Likewise. (SIGTABLE_PTR_TYPE): Likewise. (SIGTABLE_NAME_FORMAT): Likewise. (SIGTABLE_NAME_FORMAT_LONG): Likewise. (SIGTABLE_TAG_NAME): Likewise. (SIGTABLE_VB_OFF_NAME): Likewise. (SIGTABLE_VT_OFF_NAME): Likewise. (finish_base_specifiers): Change prototype. (build_signature_pointer_type): Remove. (build_signature_reference_type): Remove. (build_signature_pointer_constructor): Remove. (build_signature_method_call): Remove. (build_optr_ref): Likewise. (append_signature_fields): Likewise. (signature_error): Likewise. * call.c (build_this): Remove signature support. (build_over_call): Likewise. (build_new_method_call): Likewise. * class.c (add_implicitly_declared_members): Likewise. (finish_struct_1): Likewise. (finish_struct): Likewise. * cvt.c (cp_convert_to_pointer): Likewise. (convert_to_pointer_force): Likewise. (ocp_convert): Likewise. * decl.c (sigtable_decl_p): Remove. (init_decl_processing): Remove support for signatures. (cp_finish_decl): Likewise. (grokdeclarator): Likewise. (grokparms): Likewise. (xref_tag): Likewise. (start_function): Likewise. (start_method): Likewise. * decl2.c (finish_sigtable_vardecl): Remove. (flag_handle_signatures): Remove. (lang_f_options): Remove handle-signatures. (grokfield): Remove support for signatures. (grokbitfield): Likewise. (finish_file): Likewise. (reparse_absdcl_as_casts): Likewise. * error.c (dump_type_real): Likewise. (dump_function_decl): Likewise. * friend.c (make_friend_class): Likewise. * gxx.gperf: Remove __signature__, signature, __sigof__, sigof. * hash.h: Regenerated. * init.c (build_new_1): Remove support for signatures. * lang-options.h: Remove -fhandle-signatures, -fno-handle-signatures. * lex.c (init_parse): Remove support for signatures. (yyprint): Likewise. * lex.h (rid): Remove RID_SIGNATURE. * method.c (build_decl_overload_real): Remove support for signatures. (hack_identifier): Likewise. * parse.y (base_class): Likewise. (base_class.1): Likewise. (access_specifier): Likewise. * search.c (lookup_member): Likewise. * semantics.c (finish_qualified_object_call_expr): Likewise. (finish_template_type_parm): Likewise. (begin_class_definition): Likewise. (finish_base_specifier): Likewise. * sig.c: Remove. * tree.c (build_cplus_method_type): Remove support for signatures. * typeck.c (require_complete_type): Likewise. (c_sizeof): Likewise. (c_alignof): Likewise. (build_object_ref): Likewise. (build_component_ref): Likewise. (build_indirect_ref): Likewise. (build_c_cast): Likewise. (build_modify_expr): Likewise. (convert_for_initialization): Likewise. * typeck2.c (signature_error): Remove. (store_init_value): Remove support for signatures. (digest_init): Likewise. (build_x_arrow): Likewise. (build_functional_cast): Likewise. * xref.c (GNU_xref_decl): Likewise. From-SVN: r28677 --- gcc/ChangeLog | 6 + gcc/cp/Make-lang.in | 2 +- gcc/cp/Makefile.in | 4 +- gcc/cp/call.c | 30 +- gcc/cp/class.c | 34 +- gcc/cp/cp-tree.h | 122 +- gcc/cp/cvt.c | 36 - gcc/cp/decl.c | 259 +- gcc/cp/decl2.c | 64 +- gcc/cp/error.c | 26 +- gcc/cp/friend.c | 7 +- gcc/cp/gxx.gperf | 4 - gcc/cp/hash.h | 278 +- gcc/cp/init.c | 6 - gcc/cp/lang-options.h | 2 - gcc/cp/lex.c | 14 - gcc/cp/lex.h | 1 - gcc/cp/method.c | 10 +- gcc/cp/parse.c | 6651 ++++++++++++++--------------- gcc/cp/parse.y | 56 +- gcc/cp/search.c | 2 - gcc/cp/semantics.c | 72 +- gcc/cp/sig.c | 1067 ----- gcc/cp/tree.c | 5 +- gcc/cp/typeck.c | 56 +- gcc/cp/typeck2.c | 68 +- gcc/cp/xref.c | 4 +- gcc/extend.texi | 141 - gcc/invoke.texi | 15 +- gcc/testsuite/g++.old-deja/g++.gb/sig01.C | 33 - gcc/testsuite/g++.old-deja/g++.gb/sig02.C | 45 - gcc/testsuite/g++.old-deja/g++.gb/sig03.C | 33 - gcc/testsuite/g++.old-deja/g++.gb/sig04.C | 46 - gcc/testsuite/g++.old-deja/g++.gb/sig05.C | 31 - gcc/testsuite/g++.old-deja/g++.gb/sig06.C | 31 - gcc/testsuite/g++.old-deja/g++.gb/sig07.C | 29 - gcc/testsuite/g++.old-deja/g++.gb/sig08.C | 40 - gcc/testsuite/g++.old-deja/g++.gb/sig09.C | 34 - gcc/testsuite/g++.old-deja/g++.gb/sig10.C | 38 - gcc/testsuite/g++.old-deja/g++.gb/sig11.C | 34 - gcc/testsuite/g++.old-deja/g++.gb/sig12.C | 40 - gcc/testsuite/g++.old-deja/g++.gb/sig13.C | 38 - gcc/testsuite/g++.old-deja/g++.gb/sig14.C | 55 - gcc/testsuite/g++.old-deja/g++.gb/sig15.C | 35 - gcc/testsuite/g++.old-deja/g++.gb/sig16.C | 44 - gcc/testsuite/g++.old-deja/g++.gb/sig17.C | 54 - gcc/testsuite/g++.old-deja/g++.gb/sig18.C | 33 - gcc/testsuite/g++.old-deja/g++.gb/sig19.C | 38 - gcc/testsuite/g++.old-deja/g++.gb/sig20.C | 38 - gcc/testsuite/g++.old-deja/g++.gb/sig21.C | 56 - gcc/testsuite/g++.old-deja/g++.gb/sig22.C | 59 - gcc/testsuite/g++.old-deja/g++.gb/sig23.C | 53 - gcc/testsuite/g++.old-deja/g++.gb/sig24.C | 36 - gcc/testsuite/g++.old-deja/g++.gb/sig25.C | 33 - gcc/testsuite/g++.old-deja/g++.gb/sig26.C | 34 - gcc/testsuite/g++.old-deja/g++.gb/sig27.C | 38 - gcc/testsuite/g++.old-deja/g++.gb/sig28.C | 46 - gcc/testsuite/g++.old-deja/g++.gb/sig29.C | 46 - gcc/testsuite/g++.old-deja/g++.gb/sig30.C | 48 - gcc/testsuite/g++.old-deja/g++.gb/sig31.C | 52 - 60 files changed, 3541 insertions(+), 6771 deletions(-) delete mode 100644 gcc/cp/sig.c delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig01.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig02.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig03.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig04.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig05.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig06.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig07.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig08.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig09.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig10.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig11.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig12.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig13.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig14.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig15.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig16.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig17.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig18.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig19.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig20.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig21.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig22.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig23.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig24.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig25.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig26.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig27.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig28.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig29.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig30.C delete mode 100644 gcc/testsuite/g++.old-deja/g++.gb/sig31.C (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index de83657..080fc15 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Aug 11 12:59:37 1999 Mark Mitchell + + * extend.texi (C++ Signatures): Remove node. + * invoke.texi: Remove discussion of -fhandle-signatures, + signature, sigof, __signature__, and __sigof__. + Wed Aug 11 03:38:25 1999 Jeffrey A Law (law@cygnus.com) * Makefile.in (JAVAGC): Removed. diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in index 2e681b8..0322855 100644 --- a/gcc/cp/Make-lang.in +++ b/gcc/cp/Make-lang.in @@ -116,7 +116,7 @@ CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/decl2.c \ $(srcdir)/cp/errfn.c $(srcdir)/cp/rtti.c $(srcdir)/cp/method.c \ $(srcdir)/cp/search.c $(srcdir)/cp/typeck.c $(srcdir)/cp/decl.c \ $(srcdir)/cp/error.c $(srcdir)/cp/friend.c $(srcdir)/cp/init.c \ - $(srcdir)/cp/parse.y $(srcdir)/cp/sig.c $(srcdir)/cp/typeck2.c \ + $(srcdir)/cp/parse.y $(srcdir)/cp/typeck2.c \ $(srcdir)/cp/repo.c $(srcdir)/cp/semantics.c \ $(srcdir)/cp/dump.c diff --git a/gcc/cp/Makefile.in b/gcc/cp/Makefile.in index c8be4d6..5860d3d 100644 --- a/gcc/cp/Makefile.in +++ b/gcc/cp/Makefile.in @@ -185,7 +185,7 @@ INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir) # Language-specific object files for g++ -CXX_OBJS = call.o decl.o errfn.o expr.o pt.o sig.o typeck2.o \ +CXX_OBJS = call.o decl.o errfn.o expr.o pt.o typeck2.o \ class.o decl2.o error.o lex.o parse.o ptree.o rtti.o spew.o typeck.o cvt.o \ except.o friend.o init.o method.o search.o semantics.o tree.o xref.o \ repo.o dump.o @extra_cxx_objs@ @@ -302,8 +302,6 @@ error.o : error.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \ $(srcdir)/../toplev.h errfn.o : errfn.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \ $(srcdir)/../toplev.h -sig.o : sig.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \ - $(srcdir)/../system.h $(srcdir)/../toplev.h repo.o : repo.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \ $(srcdir)/../toplev.h semantics.o: semantics.c $(CONFIG_H) $(CXX_TREE_H) lex.h \ diff --git a/gcc/cp/call.c b/gcc/cp/call.c index fb8f129..a4ed95b 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -2191,11 +2191,7 @@ build_this (obj) tree obj; { /* Fix this to work on non-lvalues. */ - if (IS_SIGNATURE_POINTER (TREE_TYPE (obj)) - || IS_SIGNATURE_REFERENCE (TREE_TYPE (obj))) - return obj; - else - return build_unary_op (ADDR_EXPR, obj, 0); + return build_unary_op (ADDR_EXPR, obj, 0); } static void @@ -3899,11 +3895,8 @@ build_over_call (cand, args, flags) So we can assume that anything passed as 'this' is non-null, and optimize accordingly. */ - if (TREE_CODE (parmtype) == POINTER_TYPE) - t = convert_pointer_to_real (TREE_TYPE (parmtype), TREE_VALUE (arg)); - else - /* This happens with signatures. */ - t = convert_force (parmtype, TREE_VALUE (arg), CONV_C_CAST); + my_friendly_assert (TREE_CODE (parmtype) == POINTER_TYPE, 19990811); + t = convert_pointer_to_real (TREE_TYPE (parmtype), TREE_VALUE (arg)); converted_args = expr_tree_cons (NULL_TREE, t, converted_args); parm = TREE_CHAIN (parm); arg = TREE_CHAIN (arg); @@ -4084,9 +4077,7 @@ build_over_call (cand, args, flags) mark_used (fn); - if (DECL_CLASS_SCOPE_P (fn) && IS_SIGNATURE (DECL_CONTEXT (fn))) - return build_signature_method_call (fn, converted_args); - else if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0) + if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0) { tree t, *p = &TREE_VALUE (converted_args); tree binfo = get_binfo @@ -4182,10 +4173,7 @@ build_new_method_call (instance, name, args, basetype_path, flags) basetype = TYPE_MAIN_VARIANT (TREE_TYPE (instance)); /* XXX this should be handled before we get here. */ - if (! IS_AGGR_TYPE (basetype) - && ! (TYPE_LANG_SPECIFIC (basetype) - && (IS_SIGNATURE_POINTER (basetype) - || IS_SIGNATURE_REFERENCE (basetype)))) + if (! IS_AGGR_TYPE (basetype)) { if ((flags & LOOKUP_COMPLAIN) && basetype != error_mark_node) cp_error ("request for member `%D' in `%E', which is of non-aggregate type `%T'", @@ -4193,14 +4181,6 @@ build_new_method_call (instance, name, args, basetype_path, flags) return error_mark_node; } - - /* If `instance' is a signature pointer/reference and `name' is - not a constructor, we are calling a signature member function. - In that case set the `basetype' to the signature type. */ - if ((IS_SIGNATURE_POINTER (basetype) - || IS_SIGNATURE_REFERENCE (basetype)) - && TYPE_IDENTIFIER (basetype) != name) - basetype = SIGNATURE_TYPE (basetype); } if (basetype_path == NULL_TREE) diff --git a/gcc/cp/class.c b/gcc/cp/class.c index a33c889..bc1d581 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -3153,8 +3153,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor, tree *f; /* Destructor. */ - if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t) - && !IS_SIGNATURE (t)) + if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t)) { default_fn = cons_up_default_function (t, name, 0); check_for_override (default_fn, t); @@ -3174,8 +3173,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor, TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_HAS_DESTRUCTOR (t); /* Default constructor. */ - if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor - && ! IS_SIGNATURE (t)) + if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor) { default_fn = cons_up_default_function (t, name, 2); TREE_CHAIN (default_fn) = implicit_fns; @@ -3183,7 +3181,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor, } /* Copy constructor. */ - if (! TYPE_HAS_INIT_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) + if (! TYPE_HAS_INIT_REF (t) && ! TYPE_FOR_JAVA (t)) { /* ARM 12.18: You get either X(X&) or X(const X&), but not both. --Chip */ @@ -3194,7 +3192,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor, } /* Assignment operator. */ - if (! TYPE_HAS_ASSIGN_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t)) + if (! TYPE_HAS_ASSIGN_REF (t) && ! TYPE_FOR_JAVA (t)) { default_fn = cons_up_default_function (t, name, 5 + cant_have_assignment); @@ -3332,16 +3330,6 @@ finish_struct_1 (t) TYPE_SIZE (t) = NULL_TREE; CLASSTYPE_GOT_SEMICOLON (t) = 0; -#if 0 - /* This is in general too late to do this. I moved the main case up to - left_curly, what else needs to move? */ - if (! IS_SIGNATURE (t)) - { - my_friendly_assert (CLASSTYPE_INTERFACE_ONLY (t) == interface_only, 999); - my_friendly_assert (CLASSTYPE_INTERFACE_KNOWN (t) == ! interface_unknown, 999); - } -#endif - old = suspend_momentary (); /* Install struct as DECL_FIELD_CONTEXT of each field decl. @@ -3578,8 +3566,7 @@ finish_struct_1 (t) cant_have_default_ctor = 1; TYPE_HAS_COMPLEX_ASSIGN_REF (t) = 1; - if (! TYPE_HAS_CONSTRUCTOR (t) && !IS_SIGNATURE (t) - && extra_warnings) + if (! TYPE_HAS_CONSTRUCTOR (t) && extra_warnings) { if (DECL_NAME (x)) cp_warning_at ("non-static const member `%#D' in class without a constructor", x); @@ -3706,10 +3693,6 @@ finish_struct_1 (t) make it through without complaint. */ abstract_virtuals_error (x, type); - /* Don't let signatures make it through either. */ - if (IS_SIGNATURE (type)) - signature_error (x, type); - if (code == UNION_TYPE) { const char *fie = NULL; @@ -3799,8 +3782,7 @@ finish_struct_1 (t) TYPE_NEEDS_CONSTRUCTING (t) |= (TYPE_HAS_CONSTRUCTOR (t) || TYPE_USES_VIRTUAL_BASECLASSES (t) || has_virtual || any_default_members); - if (! IS_SIGNATURE (t)) - CLASSTYPE_NON_AGGREGATE (t) + CLASSTYPE_NON_AGGREGATE (t) = ! aggregate || has_virtual || TYPE_HAS_CONSTRUCTOR (t); CLASSTYPE_NON_POD_P (t) = non_pod_class || CLASSTYPE_NON_AGGREGATE (t) @@ -4347,10 +4329,6 @@ tree finish_struct (t, attributes) tree t, attributes; { - /* Append the fields we need for constructing signature tables. */ - if (IS_SIGNATURE (t)) - append_signature_fields (t); - /* Now that we've got all the field declarations, reverse everything as necessary. */ unreverse_member_declarations (t); diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index d43009a..1f9a0b2 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -377,9 +377,6 @@ enum cp_tree_index CPTI_UNION_TYPE, CPTI_ENUM_TYPE, CPTI_UNKNOWN_TYPE, - CPTI_OPAQUE_TYPE, - CPTI_SIGNATURE_TYPE, - CPTI_SIGTABLE_ENTRY_TYPE, CPTI_VTBL_TYPE, CPTI_VTBL_PTR_TYPE, CPTI_STD, @@ -423,9 +420,6 @@ extern tree cp_global_trees[CPTI_MAX]; #define union_type_node cp_global_trees[CPTI_UNION_TYPE] #define enum_type_node cp_global_trees[CPTI_ENUM_TYPE] #define unknown_type_node cp_global_trees[CPTI_UNKNOWN_TYPE] -#define opaque_type_node cp_global_trees[CPTI_OPAQUE_TYPE] -#define signature_type_node cp_global_trees[CPTI_SIGNATURE_TYPE] -#define sigtable_entry_type cp_global_trees[CPTI_SIGTABLE_ENTRY_TYPE] #define vtbl_type_node cp_global_trees[CPTI_VTBL_TYPE] #define vtbl_ptr_type_node cp_global_trees[CPTI_VTBL_PTR_TYPE] #define std_node cp_global_trees[CPTI_STD] @@ -582,10 +576,6 @@ extern int flag_elide_constructors; extern int flag_ansi; -/* Nonzero means recognize and handle signature language constructs. */ - -extern int flag_handle_signatures; - /* Nonzero means that member functions defined in class scope are inline by default. */ @@ -785,24 +775,20 @@ struct lang_type unsigned use_template : 2; unsigned got_semicolon : 1; unsigned ptrmemfunc_flag : 1; - unsigned is_signature : 1; - - unsigned is_signature_pointer : 1; - unsigned is_signature_reference : 1; - unsigned has_opaque_typedecls : 1; - unsigned sigtable_has_been_generated : 1; unsigned was_anonymous : 1; + unsigned has_real_assign_ref : 1; unsigned has_const_init_ref : 1; unsigned has_complex_init_ref : 1; - unsigned has_complex_assign_ref : 1; unsigned has_abstract_assign_ref : 1; unsigned non_aggregate : 1; unsigned is_partial_instantiation : 1; unsigned has_mutable : 1; + unsigned com_interface : 1; unsigned non_pod_class : 1; + /* When adding a flag here, consider whether or not it ought to apply to a template instance if it applies to the template. If so, make sure to copy it in instantiate_class_template! */ @@ -810,7 +796,7 @@ struct lang_type /* The MIPS compiler gets it wrong if this struct also does not fill out to a multiple of 4 bytes. Add a member `dummy' with new bits if you go over the edge. */ - unsigned dummy : 9; + unsigned dummy : 14; } type_flags; int vsize; @@ -835,9 +821,6 @@ struct lang_type union tree_node *methods; - union tree_node *signature; - union tree_node *signature_pointer_to; - union tree_node *signature_reference_to; union tree_node *template_info; tree befriending_classes; }; @@ -888,45 +871,6 @@ struct lang_type convenient, don't reprocess any methods that appear in its redefinition. */ #define TYPE_REDEFINED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.redefined) -/* Nonzero means that this type is a signature. */ -# define IS_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)?TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature:0) -# define SET_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature=1) -# define CLEAR_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature=0) - -/* Nonzero means that this type is a signature pointer type. */ -# define IS_SIGNATURE_POINTER(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature_pointer) - -/* Nonzero means that this type is a signature reference type. */ -# define IS_SIGNATURE_REFERENCE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature_reference) - -/* Nonzero means that this signature contains opaque type declarations. */ -#define SIGNATURE_HAS_OPAQUE_TYPEDECLS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_opaque_typedecls) - -/* Nonzero means that a signature table has been generated - for this signature. */ -#define SIGTABLE_HAS_BEEN_GENERATED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.sigtable_has_been_generated) - -/* If NODE is a class, this is the signature type that contains NODE's - signature after it has been computed using sigof(). */ -#define CLASSTYPE_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature) - -/* If NODE is a signature pointer or signature reference, this is the - signature type the pointer/reference points to. */ -#define SIGNATURE_TYPE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature) - -/* If NODE is a signature, this is a vector of all methods defined - in the signature or in its base types together with their default - implementations. */ -#define SIGNATURE_METHOD_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature) - -/* If NODE is a signature, this is the _TYPE node that contains NODE's - signature pointer type. */ -#define SIGNATURE_POINTER_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_pointer_to) - -/* If NODE is a signature, this is the _TYPE node that contains NODE's - signature reference type. */ -#define SIGNATURE_REFERENCE_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_reference_to) - /* The is the basetype that contains NODE's rtti. */ #define CLASSTYPE_RTTI(NODE) (TYPE_LANG_SPECIFIC(NODE)->rtti) @@ -1229,30 +1173,27 @@ struct lang_decl_flags unsigned static_function : 1; unsigned const_memfunc : 1; unsigned volatile_memfunc : 1; - unsigned abstract_virtual : 1; unsigned permanent_attr : 1 ; + unsigned constructor_for_vbase_attr : 1; unsigned mutable_flag : 1; - unsigned is_default_implementation : 1; unsigned saved_inline : 1; unsigned use_template : 2; - unsigned nonconverting : 1; unsigned declared_inline : 1; unsigned not_really_extern : 1; + unsigned needs_final_overrider : 1; unsigned bitfield : 1; unsigned defined_in_class : 1; - unsigned dummy : 4; + unsigned dummy : 5; tree access; tree context; - /* In a template FUNCTION_DECL, this is DECL_SAVED_TREE. - In a non-template FUNCTION_DECL, this is DECL_MEMFUNC_POINTER_TO. - In a FIELD_DECL, this is DECL_MEMFUNC_POINTING_TO. */ - tree memfunc_pointer_to; + /* In a template FUNCTION_DECL, this is DECL_SAVED_TREE. */ + tree saved_tree; union { /* In a FUNCTION_DECL, this is DECL_TEMPLATE_INFO. */ @@ -1323,10 +1264,6 @@ struct lang_decl #define SET_DECL_TINFO_FN_P(NODE) \ (DECL_LANG_SPECIFIC((NODE))->decl_flags.mutable_flag = 1) -/* For FUNCTION_DECLs: nonzero means that this function is a default - implementation of a signature method. */ -#define IS_DEFAULT_IMPLEMENTATION(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.is_default_implementation) - /* Nonzero for _DECL means that this decl appears in (or will appear in) as a member in a RECORD_TYPE or UNION_TYPE node. It is also for detecting circularity in case members are multiply defined. In the @@ -1477,15 +1414,6 @@ struct lang_decl #define DECL_SAVED_INLINE(DECL) \ (DECL_LANG_SPECIFIC(DECL)->decl_flags.saved_inline) -/* For a FUNCTION_DECL: if this function was declared inside a signature - declaration, this is the corresponding member function pointer that was - created for it. */ -#define DECL_MEMFUNC_POINTER_TO(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.memfunc_pointer_to) - -/* For a FIELD_DECL: this points to the signature member function from - which this signature member function pointer was created. */ -#define DECL_MEMFUNC_POINTING_TO(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.memfunc_pointer_to) - /* For a VAR_DECL or FUNCTION_DECL: template-specific information. */ #define DECL_TEMPLATE_INFO(NODE) \ (DECL_LANG_SPECIFIC(NODE)->decl_flags.u.template_info) @@ -1573,7 +1501,8 @@ struct lang_decl /* In a template FUNCTION_DECL, the tree structure that will be substituted into to obtain instantiations. */ -#define DECL_SAVED_TREE(NODE) DECL_MEMFUNC_POINTER_TO (NODE) +#define DECL_SAVED_TREE(NODE) \ + (DECL_LANG_SPECIFIC ((NODE))->decl_flags.saved_tree) #define COMPOUND_STMT_NO_SCOPE(NODE) TREE_LANG_FLAG_0 (NODE) #define NEW_EXPR_USE_GLOBAL(NODE) TREE_LANG_FLAG_0 (NODE) @@ -2201,8 +2130,7 @@ extern int flag_new_for_scope; (TREE_COMPLEXITY ((NODE))) /* An enumeration of the kind of tags that C++ accepts. */ -enum tag_types { record_type, class_type, union_type, enum_type, - signature_type }; +enum tag_types { record_type, class_type, union_type, enum_type }; /* The various kinds of lvalues we distinguish. */ typedef enum cp_lvalue_kind { @@ -2492,21 +2420,6 @@ extern int current_function_parms_stored; #define VTABLE_PFN_NAME "__pfn" #define VTABLE_DELTA2_NAME "__delta2" -#define SIGNATURE_FIELD_NAME "__s_" -#define SIGNATURE_FIELD_NAME_FORMAT "__s_%s" -#define SIGNATURE_OPTR_NAME "__optr" -#define SIGNATURE_SPTR_NAME "__sptr" -#define SIGNATURE_POINTER_NAME "__sp_" -#define SIGNATURE_POINTER_NAME_FORMAT "__%s%s%ssp_%s" -#define SIGNATURE_REFERENCE_NAME "__sr_" -#define SIGNATURE_REFERENCE_NAME_FORMAT "__%s%s%ssr_%s" - -#define SIGTABLE_PTR_TYPE "__sigtbl_ptr_type" -#define SIGTABLE_NAME_FORMAT "__st_%s_%s" -#define SIGTABLE_NAME_FORMAT_LONG "__st_%s_%s_%d" -#define SIGTABLE_TAG_NAME "__tag" -#define SIGTABLE_VB_OFF_NAME "__vb_off" -#define SIGTABLE_VT_OFF_NAME "__vt_off" #define EXCEPTION_CLEANUP_NAME "exception cleanup" #define THIS_NAME_P(ID_NODE) (strcmp(IDENTIFIER_POINTER (ID_NODE), "this") == 0) @@ -3423,19 +3336,11 @@ extern tree finish_member_class_template PROTO((tree)); extern void finish_template_decl PROTO((tree)); extern tree finish_template_type PROTO((tree, tree, int)); extern void enter_scope_of PROTO((tree)); -extern tree finish_base_specifier PROTO((tree, tree, int)); +extern tree finish_base_specifier PROTO((tree, tree)); extern void finish_member_declaration PROTO((tree)); extern void check_multiple_declarators PROTO((void)); extern tree finish_typeof PROTO((tree)); -/* in sig.c */ -extern tree build_signature_pointer_type PROTO((tree)); -extern tree build_signature_reference_type PROTO((tree)); -extern tree build_signature_pointer_constructor PROTO((tree, tree)); -extern tree build_signature_method_call PROTO((tree, tree)); -extern tree build_optr_ref PROTO((tree)); -extern void append_signature_fields PROTO((tree)); - /* in spew.c */ extern void init_spew PROTO((void)); extern int peekyylex PROTO((void)); @@ -3612,7 +3517,6 @@ extern tree error_not_base_type PROTO((tree, tree)); extern tree binfo_or_else PROTO((tree, tree)); extern void readonly_error PROTO((tree, const char *, int)); extern int abstract_virtuals_error PROTO((tree, tree)); -extern void signature_error PROTO((tree, tree)); extern void incomplete_type_error PROTO((tree, tree)); extern void my_friendly_abort PROTO((int)) ATTRIBUTE_NORETURN; diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index 72cbcaf..388c7b8 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -234,10 +234,6 @@ cp_convert_to_pointer (type, expr) my_friendly_assert (form != OFFSET_TYPE, 186); - if (TYPE_LANG_SPECIFIC (intype) - && (IS_SIGNATURE_POINTER (intype) || IS_SIGNATURE_REFERENCE (intype))) - return convert_to_pointer (type, build_optr_ref (expr)); - if (integer_zerop (expr)) { if (TYPE_PTRMEMFUNC_P (type)) @@ -287,15 +283,6 @@ convert_to_pointer_force (type, expr) return expr; } - /* Convert signature pointer/reference to `void *' first. */ - if (form == RECORD_TYPE - && (IS_SIGNATURE_POINTER (intype) || IS_SIGNATURE_REFERENCE (intype))) - { - expr = build_optr_ref (expr); - intype = TREE_TYPE (expr); - form = TREE_CODE (intype); - } - if (form == POINTER_TYPE) { intype = TYPE_MAIN_VARIANT (intype); @@ -801,29 +788,6 @@ ocp_convert (type, expr, convtype, flags) dtype = TYPE_MAIN_VARIANT (dtype); - /* Conversion of object pointers or signature pointers/references - to signature pointers/references. */ - - if (TYPE_LANG_SPECIFIC (type) - && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type))) - { - tree constructor = build_signature_pointer_constructor (type, expr); - tree sig_ty = SIGNATURE_TYPE (type); - tree sig_ptr; - - if (constructor == error_mark_node) - return error_mark_node; - - sig_ptr = get_temp_name (type, 1); - DECL_INITIAL (sig_ptr) = constructor; - CLEAR_SIGNATURE (sig_ty); - cp_finish_decl (sig_ptr, constructor, NULL_TREE, 0, 0); - SET_SIGNATURE (sig_ty); - TREE_READONLY (sig_ptr) = 1; - - return sig_ptr; - } - /* Conversion between aggregate types. New C++ semantics allow objects of derived type to be cast to objects of base type. Old semantics only allowed this between pointers. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index c628ebf..3dd53e9 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -239,8 +239,6 @@ tree error_mark_list; tree class_star_type_node; tree class_type_node, record_type_node, union_type_node, enum_type_node; tree unknown_type_node; - tree opaque_type_node, signature_type_node; - tree sigtable_entry_type; Array type `vtable_entry_type[]' @@ -1809,18 +1807,6 @@ vtype_decl_p (t, data) && CLASSTYPE_VSIZE (TREE_TYPE (t))); } -/* Returns non-zero if T is a signature table. */ - -int -sigtable_decl_p (t, data) - tree t; - void *data ATTRIBUTE_UNUSED; -{ - return (TREE_CODE (t) == VAR_DECL - && TREE_TYPE (t) != error_mark_node - && IS_SIGNATURE (TREE_TYPE (t))); -} - /* Return the declarations that are members of the namespace NS. */ tree @@ -6119,7 +6105,6 @@ init_decl_processing () tree fields[20]; int wchar_type_size; tree array_domain_type; - tree vb_off_identifier = NULL_TREE; /* Have to make these distinct before we try using them. */ lang_name_cplusplus = get_identifier ("C++"); @@ -6197,12 +6182,6 @@ init_decl_processing () delta_identifier = get_identifier (VTABLE_DELTA_NAME); delta2_identifier = get_identifier (VTABLE_DELTA2_NAME); pfn_or_delta2_identifier = get_identifier ("__pfn_or_delta2"); - if (flag_handle_signatures) - { - tag_identifier = get_identifier (SIGTABLE_TAG_NAME); - vb_off_identifier = get_identifier (SIGTABLE_VB_OFF_NAME); - vt_off_identifier = get_identifier (SIGTABLE_VT_OFF_NAME); - } /* Define `int' and `char' first so that dbx will output them first. */ @@ -6449,11 +6428,6 @@ init_decl_processing () TYPE_POINTER_TO (unknown_type_node) = unknown_type_node; TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node; - /* This is for handling opaque types in signatures. */ - opaque_type_node = copy_node (ptr_type_node); - TYPE_MAIN_VARIANT (opaque_type_node) = opaque_type_node; - record_builtin_type (RID_MAX, 0, opaque_type_node); - /* This is special for C++ so functions can be overloaded. */ wchar_type_node = TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (get_identifier (WCHAR_TYPE))); @@ -6520,44 +6494,6 @@ init_decl_processing () layout_type (vtbl_ptr_type_node); record_builtin_type (RID_MAX, NULL_PTR, vtbl_ptr_type_node); - /* Simplify life by making a "sigtable_entry_type". Give its - fields names so that the debugger can use them. */ - - if (flag_handle_signatures) - { - sigtable_entry_type = make_lang_type (RECORD_TYPE); - fields[0] = build_lang_field_decl (FIELD_DECL, tag_identifier, - delta_type_node); - fields[1] = build_lang_field_decl (FIELD_DECL, vb_off_identifier, - delta_type_node); - fields[2] = build_lang_field_decl (FIELD_DECL, delta_identifier, - delta_type_node); - fields[3] = build_lang_field_decl (FIELD_DECL, index_identifier, - delta_type_node); - fields[4] = build_lang_field_decl (FIELD_DECL, pfn_identifier, - ptr_type_node); - - /* Set the alignment to the max of the alignment of ptr_type_node and - delta_type_node. Double alignment wastes a word on the Sparc. */ - finish_builtin_type (sigtable_entry_type, SIGTABLE_PTR_TYPE, fields, 4, - (TYPE_ALIGN (ptr_type_node) > TYPE_ALIGN (delta_type_node)) - ? ptr_type_node - : delta_type_node); - - /* Make this part of an invisible union. */ - fields[5] = copy_node (fields[4]); - TREE_TYPE (fields[5]) = delta_type_node; - DECL_NAME (fields[5]) = vt_off_identifier; - DECL_MODE (fields[5]) = TYPE_MODE (delta_type_node); - DECL_SIZE (fields[5]) = TYPE_SIZE (delta_type_node); - TREE_UNSIGNED (fields[5]) = 0; - TREE_CHAIN (fields[4]) = fields[5]; - - sigtable_entry_type = build_qualified_type (sigtable_entry_type, - TYPE_QUAL_CONST); - record_builtin_type (RID_MAX, SIGTABLE_PTR_TYPE, sigtable_entry_type); - } - std_node = build_decl (NAMESPACE_DECL, get_identifier (flag_honor_std ? "fake std":"std"), void_type_node); @@ -7544,8 +7480,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) init = NULL_TREE; else if (DECL_EXTERNAL (decl)) ; - else if (TREE_CODE (type) == REFERENCE_TYPE - || (TYPE_LANG_SPECIFIC (type) && IS_SIGNATURE_REFERENCE (type))) + else if (TREE_CODE (type) == REFERENCE_TYPE) { if (TREE_STATIC (decl)) make_decl_rtl (decl, NULL_PTR, @@ -7902,14 +7837,6 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) || TREE_CODE (type) == METHOD_TYPE)) abstract_virtuals_error (decl, TREE_TYPE (type)); - if (TYPE_LANG_SPECIFIC (core_type) && IS_SIGNATURE (core_type)) - signature_error (decl, core_type); - else if ((TREE_CODE (type) == FUNCTION_TYPE - || TREE_CODE (type) == METHOD_TYPE) - && TYPE_LANG_SPECIFIC (TREE_TYPE (type)) - && IS_SIGNATURE (TREE_TYPE (type))) - signature_error (decl, TREE_TYPE (type)); - if (TREE_CODE (decl) == FUNCTION_DECL) ; else if (DECL_EXTERNAL (decl) @@ -8994,7 +8921,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) int explicit_int = 0; int explicit_char = 0; int defaulted_int = 0; - int opaque_typedef = 0; tree typedef_decl = NULL_TREE; const char *name; tree typedef_type = NULL_TREE; @@ -9484,10 +9410,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) typedef_type = type; /* No type at all: default to `int', and set DEFAULTED_INT - because it was not a user-defined typedef. - Except when we have a `typedef' inside a signature, in - which case the type defaults to `unknown type' and is - instantiated when assigning to a signature pointer or ref. */ + because it was not a user-defined typedef. */ if (type == NULL_TREE && (RIDBIT_SETP (RID_SIGNED, specbits) @@ -9509,15 +9432,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) type = build_pointer_type (ctor_return_type); else if (return_type == return_conversion) type = ctor_return_type; - else if (current_class_type - && IS_SIGNATURE (current_class_type) - && RIDBIT_SETP (RID_TYPEDEF, specbits) - && (decl_context == FIELD || decl_context == NORMAL)) - { - explicit_int = 0; - opaque_typedef = 1; - type = copy_node (opaque_type_node); - } else { /* We handle `main' specially here, because 'main () { }' is so @@ -9799,37 +9713,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) && ANON_AGGR_TYPE_P (TREE_VALUE (declspecs))) decl_context = FIELD; - /* Give error if `const,' `volatile,' `inline,' `friend,' or `virtual' - is used in a signature member function declaration. */ - if (decl_context == FIELD - && IS_SIGNATURE (current_class_type) - && RIDBIT_NOTSETP (RID_TYPEDEF, specbits)) - { - if (type_quals != TYPE_UNQUALIFIED) - { - error ("type qualifiers specified for signature member function `%s'", name); - type_quals = TYPE_UNQUALIFIED; - } - if (inlinep) - { - error ("`inline' specified for signature member function `%s'", name); - /* Later, we'll make signature member functions inline. */ - inlinep = 0; - } - if (friendp) - { - error ("`friend' declaration in signature definition"); - friendp = 0; - } - if (virtualp) - { - error ("`virtual' specified for signature member function `%s'", - name); - /* Later, we'll make signature member functions virtual. */ - virtualp = 0; - } - } - /* Warn about storage classes that are invalid for certain kinds of declarations (parameters, typenames, etc.). */ @@ -9844,7 +9727,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) else if (RIDBIT_SETP (RID_TYPEDEF, specbits)) ; else if (decl_context == FIELD - && ! IS_SIGNATURE (current_class_type) /* C++ allows static class elements */ && RIDBIT_SETP (RID_STATIC, specbits)) /* C++ also allows inlines and signed and unsigned elements, @@ -9867,11 +9749,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) op = IDENTIFIER_OPNAME_P (tmp); } error ("storage class specified for %s `%s'", - IS_SIGNATURE (current_class_type) - ? (op - ? "signature member operator" - : "signature member function") - : (op ? "member operator" : "field"), + op ? "member operator" : "field", op ? operator_name_string (tmp) : name); } else @@ -9881,12 +9759,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) RIDBIT_RESET (RID_REGISTER, specbits); RIDBIT_RESET (RID_AUTO, specbits); RIDBIT_RESET (RID_EXTERN, specbits); - - if (decl_context == FIELD && IS_SIGNATURE (current_class_type)) - { - RIDBIT_RESET (RID_STATIC, specbits); - staticp = 0; - } } } else if (RIDBIT_SETP (RID_EXTERN, specbits) && initialized && !funcdef_flag) @@ -10290,13 +10162,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) error ("return value type specifier for constructor ignored"); } type = build_pointer_type (ctype); - if (decl_context == FIELD - && IS_SIGNATURE (current_class_type)) - { - error ("constructor not allowed in signature"); - return void_type_node; - } - else if (decl_context == FIELD) + if (decl_context == FIELD) { if (! member_function_or_else (ctype, current_class_type, "constructor for alien class `%s' cannot be member")) @@ -10403,31 +10269,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) but to the target of the pointer. */ type_quals = TYPE_UNQUALIFIED; - if (IS_SIGNATURE (type)) - { - if (TREE_CODE (declarator) == ADDR_EXPR) - { - if (CLASSTYPE_METHOD_VEC (type) == NULL_TREE - && TYPE_SIZE (type)) - cp_warning ("empty signature `%T' used in signature reference declaration", - type); -#if 0 - type = build_signature_reference_type (type); -#else - sorry ("signature reference"); - return NULL_TREE; -#endif - } - else - { - if (CLASSTYPE_METHOD_VEC (type) == NULL_TREE - && TYPE_SIZE (type)) - cp_warning ("empty signature `%T' used in signature pointer declaration", - type); - type = build_signature_pointer_type (type); - } - } - else if (TREE_CODE (declarator) == ADDR_EXPR) + if (TREE_CODE (declarator) == ADDR_EXPR) { if (TREE_CODE (type) == VOID_TYPE) error ("invalid type: `void &'"); @@ -10736,8 +10578,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) cp_pedwarn ("ANSI C++ forbids nested type `%D' with same name as enclosing class", declarator); decl = build_lang_decl (TYPE_DECL, declarator, type); - if (IS_SIGNATURE (current_class_type) && opaque_typedef) - SIGNATURE_HAS_OPAQUE_TYPEDECLS (current_class_type) = 1; } else { @@ -10851,11 +10691,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) /* Note that the grammar rejects storage classes in typenames, fields or parameters. */ if (type_quals != TYPE_UNQUALIFIED) - { - if (IS_SIGNATURE (type)) - error ("type qualifiers specified for signature type"); - type_quals = TYPE_UNQUALIFIED; - } + type_quals = TYPE_UNQUALIFIED; /* Special case: "friend class foo" looks like a TYPENAME context. */ if (friendp) @@ -10965,16 +10801,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist) bad_specifiers (decl, "parameter", virtualp, quals != NULL_TREE, inlinep, friendp, raises != NULL_TREE); - if (current_class_type - && IS_SIGNATURE (current_class_type)) - { - if (inlinep) - error ("parameter of signature member function declared `inline'"); - if (RIDBIT_SETP (RID_AUTO, specbits)) - error ("parameter of signature member function declared `auto'"); - if (RIDBIT_SETP (RID_REGISTER, specbits)) - error ("parameter of signature member function declared `register'"); - } /* Compute the type actually passed in the parmlist, for the case where there is no prototype. @@ -11671,13 +11497,6 @@ grokparms (first_parm, funcdef_flag) } else if (abstract_virtuals_error (decl, type)) any_error = 1; /* Seems like a good idea. */ - else if (TREE_CODE (type) == RECORD_TYPE - && TYPE_LANG_SPECIFIC (type) - && IS_SIGNATURE (type)) - { - signature_error (decl, type); - any_error = 1; /* Seems like a good idea. */ - } else if (POINTER_TYPE_P (type)) { tree t = type; @@ -12208,8 +12027,6 @@ tag_name (code) return "union "; case enum_type: return "enum"; - case signature_type: - return "signature"; default: my_friendly_abort (981122); } @@ -12255,7 +12072,6 @@ xref_tag (code_type_node, name, globalize) { case record_type: case class_type: - case signature_type: code = RECORD_TYPE; break; case union_type: @@ -12420,17 +12236,6 @@ xref_tag (code_type_node, name, globalize) ref = make_lang_type (code); TYPE_CONTEXT (ref) = context; - if (tag_code == signature_type) - { - SET_SIGNATURE (ref); - /* Since a signature type will be turned into the type - of signature tables, it's not only an interface. */ - CLASSTYPE_INTERFACE_ONLY (ref) = 0; - SET_CLASSTYPE_INTERFACE_KNOWN (ref); - /* A signature doesn't have a vtable. */ - CLASSTYPE_VTABLE_NEEDS_WRITING (ref) = 0; - } - #ifdef NONNESTED_CLASSES /* Class types don't nest the way enums do. */ class_binding_level = (struct binding_level *)0; @@ -12464,7 +12269,7 @@ xref_tag (code_type_node, name, globalize) { if (tag_code == class_type) CLASSTYPE_DECLARED_CLASS (ref) = 1; - else if (tag_code == record_type || tag_code == signature_type) + else if (tag_code == record_type) CLASSTYPE_DECLARED_CLASS (ref) = 0; } @@ -13305,35 +13110,28 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) we keep the consistency between `current_class_type' and `current_class_ptr'. */ tree t = current_function_parms; - + int i; + my_friendly_assert (t != NULL_TREE && TREE_CODE (t) == PARM_DECL, 162); - - if (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE) - { - int i; - - if (! hack_decl_function_context (decl1)) - temporary_allocation (); - i = suspend_momentary (); - - /* Normally, build_indirect_ref returns - current_class_ref whenever current_class_ptr is - dereferenced. This time, however, we want it to - *create* current_class_ref, so we temporarily clear - current_class_ptr to fool it. */ - current_class_ptr = NULL_TREE; - current_class_ref = build_indirect_ref (t, NULL_PTR); - current_class_ptr = t; - - resume_momentary (i); - if (! hack_decl_function_context (decl1)) - end_temporary_allocation (); - } - else - /* We're having a signature pointer here. */ - current_class_ref = current_class_ptr = t; - + my_friendly_assert (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE, + 19990811); + + if (! hack_decl_function_context (decl1)) + temporary_allocation (); + i = suspend_momentary (); + + /* Normally, build_indirect_ref returns current_class_ref + whenever current_class_ptr is dereferenced. This time, + however, we want it to *create* current_class_ref, so we + temporarily clear current_class_ptr to fool it. */ + current_class_ptr = NULL_TREE; + current_class_ref = build_indirect_ref (t, NULL_PTR); + current_class_ptr = t; + + resume_momentary (i); + if (! hack_decl_function_context (decl1)) + end_temporary_allocation (); } } else @@ -14273,9 +14071,6 @@ start_method (declspecs, declarator, attrlist) /* Not a function, tell parser to report parse error. */ return NULL_TREE; - if (IS_SIGNATURE (current_class_type)) - IS_DEFAULT_IMPLEMENTATION (fndecl) = 1; - if (DECL_IN_AGGR_P (fndecl)) { if (IDENTIFIER_ERROR_LOCUS (DECL_ASSEMBLER_NAME (fndecl)) != current_class_type) diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index c5a492f..8141d76 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -73,7 +73,6 @@ static void mark_vtable_entries PROTO((tree)); static void grok_function_init PROTO((tree, tree)); static int finish_vtable_vardecl PROTO((tree *, void *)); static int prune_vtable_vardecl PROTO((tree *, void *)); -static int finish_sigtable_vardecl PROTO((tree *, void *)); static int is_namespace_ancestor PROTO((tree, tree)); static void add_using_namespace PROTO((tree, tree, int)); static tree ambiguous_decl PROTO((tree, tree, tree,int)); @@ -385,10 +384,6 @@ int flag_this_is_variable; int flag_elide_constructors = 1; -/* Nonzero means recognize and handle signature language constructs. */ - -int flag_handle_signatures; - /* Nonzero means that member functions defined in class scope are inline by default. */ @@ -509,7 +504,6 @@ lang_f_options[] = {"for-scope", &flag_new_for_scope, 2}, {"gnu-keywords", &flag_no_gnu_keywords, 0}, {"handle-exceptions", &flag_exceptions, 1}, - {"handle-signatures", &flag_handle_signatures, 1}, {"honor-std", &flag_honor_std, 1}, {"huge-objects", &flag_huge_objects, 1}, {"implement-inlines", &flag_implement_inlines, 1}, @@ -1648,13 +1642,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) return value; } - if (IS_SIGNATURE (current_class_type) - && TREE_CODE (value) != FUNCTION_DECL) - { - error ("field declaration not allowed in signature"); - return void_type_node; - } - if (DECL_IN_AGGR_P (value)) { cp_error ("`%D' is already defined in `%T'", value, @@ -1667,13 +1654,7 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) if (init) { - if (IS_SIGNATURE (current_class_type) - && TREE_CODE (value) == FUNCTION_DECL) - { - error ("function declarations cannot have initializers in signature"); - init = NULL_TREE; - } - else if (TREE_CODE (value) == FUNCTION_DECL) + if (TREE_CODE (value) == FUNCTION_DECL) { grok_function_init (value, init); init = NULL_TREE; @@ -1771,12 +1752,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist) if (DECL_FRIEND_P (value)) return void_type_node; -#if 0 /* Just because a fn is declared doesn't mean we'll try to define it. */ - if (current_function_decl && ! IS_SIGNATURE (current_class_type)) - cp_error ("method `%#D' of local class must be defined in class body", - value); -#endif - DECL_IN_AGGR_P (value) = 1; return value; } @@ -1818,12 +1793,6 @@ grokbitfield (declarator, declspecs, width) return NULL_TREE; } - if (IS_SIGNATURE (current_class_type)) - { - error ("field declaration not allowed in signature"); - return void_type_node; - } - if (DECL_IN_AGGR_P (value)) { cp_error ("`%D' is already defined in the class %T", value, @@ -2729,20 +2698,6 @@ prune_vtable_vardecl (t, data) return 1; } -static int -finish_sigtable_vardecl (t, data) - tree *t; - void *data ATTRIBUTE_UNUSED; -{ - /* We don't need to mark sigtable entries as addressable here as is done - for vtables. Since sigtables, unlike vtables, are always written out, - that was already done in build_signature_table_constructor. */ - - rest_of_decl_compilation (*t, NULL_PTR, 1, 1); - *t = TREE_CHAIN (*t); - return 1; -} - /* Determines the proper settings of TREE_PUBLIC and DECL_EXTERNAL for an inline function or template instantiation at end-of-file. */ @@ -3587,14 +3542,9 @@ finish_file () them now. */ instantiate_pending_templates (); - /* Write out signature-tables and virtual tables as required. - Note that writing out the virtual table for a template class - may cause the instantiation of members of that class. */ - if (flag_handle_signatures - && walk_globals (sigtable_decl_p, - finish_sigtable_vardecl, - /*data=*/0)) - reconsider = 1; + /* Write out virtual tables as required. Note that writing out + the virtual table for a template class may cause the + instantiation of members of that class. */ if (walk_globals (vtable_decl_p, finish_vtable_vardecl, /*data=*/0)) @@ -3800,12 +3750,6 @@ reparse_absdcl_as_casts (decl, expr) type = groktypename (TREE_VALUE (TREE_OPERAND (decl, 1))); decl = TREE_OPERAND (decl, 0); - if (IS_SIGNATURE (type)) - { - error ("cast specifies signature type"); - return error_mark_node; - } - expr = digest_init (type, expr, (tree *) 0); if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0) { diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 0279701..9c911ad 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -227,18 +227,7 @@ dump_type_real (t, v, canonical_name) case RECORD_TYPE: case UNION_TYPE: case ENUMERAL_TYPE: - if (TYPE_LANG_SPECIFIC (t) - && (IS_SIGNATURE_POINTER (t) || IS_SIGNATURE_REFERENCE (t))) - { - dump_qualifiers (t, after); - dump_type_real (SIGNATURE_TYPE (t), v, canonical_name); - if (IS_SIGNATURE_POINTER (t)) - OB_PUTC ('*'); - else - OB_PUTC ('&'); - } - else - dump_aggr_type (t, v, canonical_name); + dump_aggr_type (t, v, canonical_name); break; case TYPE_DECL: @@ -356,8 +345,6 @@ aggr_variety (t) return "union"; else if (TYPE_LANG_SPECIFIC (t) && CLASSTYPE_DECLARED_CLASS (t)) return "class"; - else if (TYPE_LANG_SPECIFIC (t) && IS_SIGNATURE (t)) - return "signature"; else return "struct"; } @@ -1035,15 +1022,8 @@ dump_function_decl (t, v) dump_type_suffix (TREE_TYPE (fntype), 1, 0); if (TREE_CODE (fntype) == METHOD_TYPE) - { - if (IS_SIGNATURE (cname)) - /* We look at the type pointed to by the `optr' field of `this.' */ - dump_qualifiers - (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_VALUE (TYPE_ARG_TYPES (fntype))))), before); - else - dump_qualifiers - (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fntype))), before); - } + dump_qualifiers (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fntype))), + before); if (v >= 2) dump_exception_spec (TYPE_RAISES_EXCEPTIONS (fntype), 0); diff --git a/gcc/cp/friend.c b/gcc/cp/friend.c index a2d0c4d..410eaf5 100644 --- a/gcc/cp/friend.c +++ b/gcc/cp/friend.c @@ -243,12 +243,7 @@ make_friend_class (type, friend_type) tree classes; int is_template_friend; - if (IS_SIGNATURE (type)) - { - error ("`friend' declaration in signature definition"); - return; - } - if (IS_SIGNATURE (friend_type) || ! IS_AGGR_TYPE (friend_type)) + if (! IS_AGGR_TYPE (friend_type)) { cp_error ("invalid type `%T' declared `friend'", friend_type); return; diff --git a/gcc/cp/gxx.gperf b/gcc/cp/gxx.gperf index d18014b..4c191c5 100644 --- a/gcc/cp/gxx.gperf +++ b/gcc/cp/gxx.gperf @@ -25,10 +25,8 @@ __real, REALPART, RID_UNUSED __real__, REALPART, RID_UNUSED __restrict, CV_QUALIFIER, RID_RESTRICT __restrict__, CV_QUALIFIER, RID_RESTRICT -__signature__, AGGR, RID_SIGNATURE /* Extension */, __signed, TYPESPEC, RID_SIGNED __signed__, TYPESPEC, RID_SIGNED -__sigof__, SIGOF, RID_UNUSED /* Extension */, __typeof, TYPEOF, RID_UNUSED __typeof__, TYPEOF, RID_UNUSED __volatile, CV_QUALIFIER, RID_VOLATILE @@ -84,9 +82,7 @@ register, SCSPEC, RID_REGISTER, reinterpret_cast, REINTERPRET_CAST, RID_UNUSED, return, RETURN_KEYWORD, RID_UNUSED, short, TYPESPEC, RID_SHORT, -signature, AGGR, RID_SIGNATURE /* Extension */, signed, TYPESPEC, RID_SIGNED, -sigof, SIGOF, RID_UNUSED /* Extension */, sizeof, SIZEOF, RID_UNUSED, static, SCSPEC, RID_STATIC, static_cast, STATIC_CAST, RID_UNUSED, diff --git a/gcc/cp/hash.h b/gcc/cp/hash.h index 047243f..4d7fac7 100644 --- a/gcc/cp/hash.h +++ b/gcc/cp/hash.h @@ -1,14 +1,14 @@ -/* C code produced by gperf version 2.7 */ -/* Command-line: gperf -L C -F , 0, 0 -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../../egcs/gcc/cp/gxx.gperf */ +/* C code produced by gperf version 2.7.1 (19981006 egcs) */ +/* Command-line: gperf -L 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 { const char *name; short token; enum rid rid;}; -#define TOTAL_KEYWORDS 107 +#define TOTAL_KEYWORDS 103 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 16 #define MIN_HASH_VALUE 4 -#define MAX_HASH_VALUE 244 -/* maximum key range = 241, duplicates = 0 */ +#define MAX_HASH_VALUE 274 +/* maximum key range = 271, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -18,34 +18,34 @@ hash (str, len) register const char *str; register unsigned int len; { - static unsigned char asso_values[] = + static unsigned short asso_values[] = { - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 0, 245, 92, 3, 3, - 0, 0, 75, 24, 0, 90, 245, 10, 31, 49, - 23, 74, 0, 24, 30, 37, 6, 77, 10, 19, - 5, 4, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245 + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 0, 275, 97, 1, 19, + 40, 0, 12, 68, 0, 74, 275, 0, 11, 67, + 27, 0, 70, 6, 96, 43, 6, 37, 3, 10, + 8, 104, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, + 275, 275, 275, 275, 275, 275 }; register int hval = len; @@ -79,156 +79,158 @@ is_reserved_word (str, len) { {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"else", ELSE, RID_UNUSED,}, - {"", 0, 0}, - {"delete", DELETE, RID_UNUSED,}, - {"case", CASE, RID_UNUSED,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"__real__", REALPART, RID_UNUSED}, - {"double", TYPESPEC, RID_DOUBLE,}, + {"", 0, 0}, {"true", CXX_TRUE, RID_UNUSED,}, - {"catch", CATCH, RID_UNUSED,}, - {"typeid", TYPEID, RID_UNUSED,}, - {"try", TRY, RID_UNUSED,}, - {"void", TYPESPEC, RID_VOID,}, - {"", 0, 0}, {"", 0, 0}, - {"private", VISSPEC, RID_PRIVATE,}, + {"or_eq", ASSIGN, RID_UNUSED,}, + {"export", SCSPEC, RID_EXPORT,}, {"", 0, 0}, {"", 0, 0}, - {"template", TEMPLATE, RID_TEMPLATE,}, - {"protected", VISSPEC, RID_PROTECTED,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"__const__", CV_QUALIFIER, RID_CONST}, + {"__volatile", CV_QUALIFIER, RID_VOLATILE}, + {"__real", REALPART, RID_UNUSED}, + {"__volatile__", CV_QUALIFIER, RID_VOLATILE}, + {"__const", CV_QUALIFIER, RID_CONST}, + {"xor_eq", ASSIGN, RID_UNUSED,}, + {"throw", THROW, RID_UNUSED,}, + {"__complex__", TYPESPEC, RID_COMPLEX}, + {"case", CASE, RID_UNUSED,}, + {"typeof", TYPEOF, RID_UNUSED,}, + {"", 0, 0}, + {"while", WHILE, RID_UNUSED,}, + {"bool", TYPESPEC, RID_BOOL,}, + {"__complex", TYPESPEC, RID_COMPLEX}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"extern", SCSPEC, RID_EXTERN,}, {"", 0, 0}, {"", 0, 0}, {"not", '!', RID_UNUSED,}, - {"", 0, 0}, {"", 0, 0}, - {"xor_eq", ASSIGN, RID_UNUSED,}, + {"typedef", SCSPEC, RID_TYPEDEF,}, + {"virtual", SCSPEC, RID_VIRTUAL,}, + {"not_eq", EQCOMPARE, RID_UNUSED,}, + {"new", NEW, RID_UNUSED,}, {"", 0, 0}, - {"__real", REALPART, RID_UNUSED}, - {"xor", '^', RID_UNUSED,}, - {"compl", '~', RID_UNUSED,}, - {"public", VISSPEC, RID_PUBLIC,}, + {"do", DO, RID_UNUSED,}, + {"catch", CATCH, RID_UNUSED,}, + {"", 0, 0}, {"", 0, 0}, + {"delete", DELETE, RID_UNUSED,}, + {"double", TYPESPEC, RID_DOUBLE,}, {"__extension__", EXTENSION, RID_UNUSED}, - {"__restrict__", CV_QUALIFIER, RID_RESTRICT}, - {"", 0, 0}, + {"__alignof__", ALIGNOF, RID_UNUSED}, {"__asm__", ASM_KEYWORD, RID_UNUSED}, - {"new", NEW, RID_UNUSED,}, - {"__restrict", CV_QUALIFIER, RID_RESTRICT}, {"", 0, 0}, - {"__wchar_t", TYPESPEC, RID_WCHAR /* Unique to ANSI C++ */,}, - {"switch", SWITCH, RID_UNUSED,}, + {"typeid", TYPEID, RID_UNUSED,}, {"", 0, 0}, - {"const", CV_QUALIFIER, RID_CONST,}, - {"static", SCSPEC, RID_STATIC,}, - {"not_eq", EQCOMPARE, RID_UNUSED,}, + {"__null", CONSTANT, RID_NULL}, + {"switch", SWITCH, RID_UNUSED,}, + {"", 0, 0}, {"", 0, 0}, + {"friend", SCSPEC, RID_FRIEND,}, + {"__alignof", ALIGNOF, RID_UNUSED}, + {"false", CXX_FALSE, RID_UNUSED,}, + {"sizeof", SIZEOF, RID_UNUSED,}, {"__inline", SCSPEC, RID_INLINE}, - {"while", WHILE, RID_UNUSED,}, + {"", 0, 0}, {"__inline__", SCSPEC, RID_INLINE}, - {"__imag__", IMAGPART, RID_UNUSED}, {"", 0, 0}, - {"const_cast", CONST_CAST, RID_UNUSED,}, {"static_cast", STATIC_CAST, RID_UNUSED,}, {"", 0, 0}, {"", 0, 0}, + {"union", AGGR, RID_UNION,}, + {"continue", CONTINUE, RID_UNUSED,}, + {"", 0, 0}, + {"goto", GOTO, RID_UNUSED,}, + {"const", CV_QUALIFIER, RID_CONST,}, + {"static", SCSPEC, RID_STATIC,}, + {"__imag__", IMAGPART, RID_UNUSED}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"private", VISSPEC, RID_PRIVATE,}, {"typename", TYPENAME_KEYWORD, RID_UNUSED,}, {"", 0, 0}, - {"__alignof__", ALIGNOF, RID_UNUSED}, - {"signed", TYPESPEC, RID_SIGNED,}, - {"char", TYPESPEC, RID_CHAR,}, + {"int", TYPESPEC, RID_INT,}, + {"__signed__", TYPESPEC, RID_SIGNED}, + {"", 0, 0}, {"", 0, 0}, + {"void", TYPESPEC, RID_VOID,}, + {"if", IF, RID_UNUSED,}, {"", 0, 0}, - {"bool", TYPESPEC, RID_BOOL,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"do", DO, RID_UNUSED,}, + {"template", TEMPLATE, RID_TEMPLATE,}, + {"__attribute", ATTRIBUTE, RID_UNUSED}, + {"struct", AGGR, RID_RECORD,}, + {"__attribute__", ATTRIBUTE, RID_UNUSED}, + {"", 0, 0}, {"", 0, 0}, + {"this", THIS, RID_UNUSED,}, + {"const_cast", CONST_CAST, RID_UNUSED,}, + {"or", OROR, RID_UNUSED,}, + {"explicit", SCSPEC, RID_EXPLICIT,}, {"", 0, 0}, - {"short", TYPESPEC, RID_SHORT,}, - {"__imag", IMAGPART, RID_UNUSED}, + {"auto", SCSPEC, RID_AUTO,}, + {"bitor", '|', RID_UNUSED,}, + {"break", BREAK, RID_UNUSED,}, {"", 0, 0}, - {"friend", SCSPEC, RID_FRIEND,}, + {"compl", '~', RID_UNUSED,}, + {"public", VISSPEC, RID_PUBLIC,}, + {"xor", '^', RID_UNUSED,}, + {"__restrict__", CV_QUALIFIER, RID_RESTRICT}, + {"and_eq", ASSIGN, RID_UNUSED,}, {"class", AGGR, RID_CLASS,}, - {"long", TYPESPEC, RID_LONG,}, - {"this", THIS, RID_UNUSED,}, - {"virtual", SCSPEC, RID_VIRTUAL,}, - {"export", SCSPEC, RID_EXPORT,}, - {"typeof", TYPEOF, RID_UNUSED,}, + {"for", FOR, RID_UNUSED,}, + {"__restrict", CV_QUALIFIER, RID_RESTRICT}, + {"try", TRY, RID_UNUSED,}, {"__typeof__", TYPEOF, RID_UNUSED}, - {"__const__", CV_QUALIFIER, RID_CONST}, - {"__volatile", CV_QUALIFIER, RID_VOLATILE}, {"__asm", ASM_KEYWORD, RID_UNUSED}, - {"__volatile__", CV_QUALIFIER, RID_VOLATILE}, - {"__const", CV_QUALIFIER, RID_CONST}, - {"continue", CONTINUE, RID_UNUSED,}, - {"and", ANDAND, RID_UNUSED,}, - {"", 0, 0}, {"", 0, 0}, + {"signed", TYPESPEC, RID_SIGNED,}, + {"__label__", LABEL, RID_UNUSED}, + {"", 0, 0}, + {"volatile", CV_QUALIFIER, RID_VOLATILE,}, + {"float", TYPESPEC, RID_FLOAT,}, + {"", 0, 0}, {"__signed", TYPESPEC, RID_SIGNED}, - {"int", TYPESPEC, RID_INT,}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"bitand", '&', RID_UNUSED,}, - {"enum", ENUM, RID_UNUSED,}, - {"or_eq", ASSIGN, RID_UNUSED,}, - {"throw", THROW, RID_UNUSED,}, - {"reinterpret_cast", REINTERPRET_CAST, RID_UNUSED,}, - {"or", OROR, RID_UNUSED,}, - {"__attribute", ATTRIBUTE, RID_UNUSED}, - {"for", FOR, RID_UNUSED,}, - {"__attribute__", ATTRIBUTE, RID_UNUSED}, - {"break", BREAK, RID_UNUSED,}, - {"default", DEFAULT, RID_UNUSED,}, - {"bitor", '|', RID_UNUSED,}, - {"dynamic_cast", DYNAMIC_CAST, RID_UNUSED,}, - {"__null", CONSTANT, RID_NULL}, {"", 0, 0}, - {"__complex__", TYPESPEC, RID_COMPLEX}, - {"false", CXX_FALSE, RID_UNUSED,}, - {"sizeof", SIZEOF, RID_UNUSED,}, - {"__complex", TYPESPEC, RID_COMPLEX}, + {"__typeof", TYPEOF, RID_UNUSED}, {"", 0, 0}, {"", 0, 0}, - {"and_eq", ASSIGN, RID_UNUSED,}, {"__builtin_va_arg", VA_ARG, RID_UNUSED}, - {"namespace", NAMESPACE, RID_UNUSED,}, - {"", 0, 0}, - {"struct", AGGR, RID_RECORD,}, {"", 0, 0}, {"", 0, 0}, + {"__wchar_t", TYPESPEC, RID_WCHAR /* Unique to ANSI C++ */,}, + {"protected", VISSPEC, RID_PROTECTED,}, + {"", 0, 0}, + {"namespace", NAMESPACE, RID_UNUSED,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"using", USING, RID_UNUSED,}, - {"", 0, 0}, {"", 0, 0}, - {"__label__", LABEL, RID_UNUSED}, - {"", 0, 0}, {"", 0, 0}, - {"explicit", SCSPEC, RID_EXPLICIT,}, - {"return", RETURN_KEYWORD, RID_UNUSED,}, + {"enum", ENUM, RID_UNUSED,}, {"", 0, 0}, - {"__alignof", ALIGNOF, RID_UNUSED}, + {"and", ANDAND, RID_UNUSED,}, + {"__imag", IMAGPART, RID_UNUSED}, {"", 0, 0}, {"", 0, 0}, - {"volatile", CV_QUALIFIER, RID_VOLATILE,}, + {"bitand", '&', RID_UNUSED,}, + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"short", TYPESPEC, RID_SHORT,}, + {"long", TYPESPEC, RID_LONG,}, {"", 0, 0}, {"", 0, 0}, - {"asm", ASM_KEYWORD, RID_UNUSED,}, - {"", 0, 0}, - {"signature", AGGR, RID_SIGNATURE /* Extension */,}, + {"inline", SCSPEC, RID_INLINE,}, {"", 0, 0}, - {"mutable", SCSPEC, RID_MUTABLE,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"register", SCSPEC, RID_REGISTER,}, + {"default", DEFAULT, RID_UNUSED,}, {"", 0, 0}, {"", 0, 0}, - {"__typeof", TYPEOF, RID_UNUSED}, - {"", 0, 0}, - {"typedef", SCSPEC, RID_TYPEDEF,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"if", IF, RID_UNUSED,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__sigof__", SIGOF, RID_UNUSED /* Extension */,}, {"unsigned", TYPESPEC, RID_UNSIGNED,}, - {"goto", GOTO, RID_UNUSED,}, - {"", 0, 0}, - {"float", TYPESPEC, RID_FLOAT,}, - {"union", AGGR, RID_UNION,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"inline", SCSPEC, RID_INLINE,}, - {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"sigof", SIGOF, RID_UNUSED /* Extension */,}, + {"return", RETURN_KEYWORD, RID_UNUSED,}, + {"asm", ASM_KEYWORD, RID_UNUSED,}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, - {"__signature__", AGGR, RID_SIGNATURE /* Extension */,}, + {"mutable", SCSPEC, RID_MUTABLE,}, + {"", 0, 0}, {"", 0, 0}, + {"dynamic_cast", DYNAMIC_CAST, RID_UNUSED,}, {"", 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}, {"operator", OPERATOR, RID_UNUSED,}, {"", 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}, + {"char", TYPESPEC, RID_CHAR,}, + {"", 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}, + {"reinterpret_cast", REINTERPRET_CAST, RID_UNUSED,}, + {"", 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}, - {"auto", SCSPEC, RID_AUTO,} + {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, + {"register", SCSPEC, RID_REGISTER,} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 90e9d90..3a70672 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2214,12 +2214,6 @@ build_new_1 (exp) if (abstract_virtuals_error (NULL_TREE, true_type)) return error_mark_node; - if (TYPE_LANG_SPECIFIC (true_type) && IS_SIGNATURE (true_type)) - { - signature_error (NULL_TREE, true_type); - return error_mark_node; - } - /* When we allocate an array, and the corresponding deallocation function takes a second argument of type size_t, and that's the "usual deallocation function", we allocate some extra space at diff --git a/gcc/cp/lang-options.h b/gcc/cp/lang-options.h index e919965..c0a4a34 100644 --- a/gcc/cp/lang-options.h +++ b/gcc/cp/lang-options.h @@ -56,8 +56,6 @@ DEFINE_LANG_NAME ("C++") { "-fno-gnu-keywords", "Do not recognise GNU defined keywords" }, { "-fhandle-exceptions", "" }, { "-fno-handle-exceptions", "" }, - { "-fhandle-signatures", "Handle signature language constructs" }, - { "-fno-handle-signatures", "" }, { "-fhonor-std", "Treat the namespace `std' as a normal namespace" }, { "-fno-honor-std", "" }, { "-fhuge-objects", "Enable support for huge objects" }, diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 81ec12e..30eaa85 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -733,11 +733,6 @@ init_parse (filename) /* This is for ANSI C++. */ ridpointers[(int) RID_MUTABLE] = get_identifier ("mutable"); - /* Signature handling extensions. */ - signature_type_node = build_int_2 (signature_type, 0); - TREE_TYPE (signature_type_node) = signature_type_node; - ridpointers[(int) RID_SIGNATURE] = signature_type_node; - /* Create the built-in __null node. Note that we can't yet call for type_for_size here because integer_type_node and so forth are not set up. Therefore, we don't set the type of these nodes until @@ -850,13 +845,6 @@ init_parse (filename) UNSET_RESERVED_WORD ("headof"); } - if (! flag_handle_signatures || flag_no_gnu_keywords) - { - /* Easiest way to not recognize signature - handling extensions... */ - UNSET_RESERVED_WORD ("signature"); - UNSET_RESERVED_WORD ("sigof"); - } if (flag_no_asm || flag_no_gnu_keywords) UNSET_RESERVED_WORD ("typeof"); if (! flag_operator_names) @@ -941,8 +929,6 @@ yyprint (file, yychar, yylval) fprintf (file, " `union'"); else if (yylval.ttype == enum_type_node) fprintf (file, " `enum'"); - else if (yylval.ttype == signature_type_node) - fprintf (file, " `signature'"); else my_friendly_abort (80); break; diff --git a/gcc/cp/lex.h b/gcc/cp/lex.h index 5c2a1d1..8f997ad 100644 --- a/gcc/cp/lex.h +++ b/gcc/cp/lex.h @@ -76,7 +76,6 @@ enum rid RID_PROTECTED, RID_EXCEPTION, RID_TEMPLATE, - RID_SIGNATURE, RID_NULL, /* Before adding enough to get up to 64, the RIDBIT_* macros will have to be changed a little. */ diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 3cc4df2..4fb10a8 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1654,12 +1654,7 @@ build_decl_overload_real (dname, parms, ret_type, tparms, targs, if (for_method) { - tree this_type = TREE_VALUE (parms); - - if (TREE_CODE (this_type) == RECORD_TYPE) /* a signature pointer */ - this_type = SIGNATURE_TYPE (this_type); - else - this_type = TREE_TYPE (this_type); + tree this_type = TREE_TYPE (TREE_VALUE (parms)); build_mangled_name_for_type (this_type); @@ -1948,9 +1943,6 @@ hack_identifier (value, name) if (TREE_CODE (value) == OVERLOAD) value = OVL_CURRENT (value); - if (IS_SIGNATURE (DECL_CLASS_CONTEXT (value))) - return value; - decl = maybe_dummy_object (DECL_CLASS_CONTEXT (value), 0); value = build_component_ref (decl, name, NULL_TREE, 1); } diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c index 15c67d0..6dccedc 100644 --- a/gcc/cp/parse.c +++ b/gcc/cp/parse.c @@ -215,7 +215,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) -#define YYFINAL 1673 +#define YYFINAL 1667 #define YYFLAG -32768 #define YYNTBASE 112 @@ -312,43 +312,43 @@ static const short yyprhs[] = { 0, 1606, 1608, 1609, 1611, 1612, 1614, 1616, 1619, 1622, 1625, 1628, 1631, 1634, 1637, 1640, 1643, 1647, 1652, 1656, 1659, 1663, 1665, 1666, 1670, 1673, 1676, 1678, 1680, 1681, 1684, - 1688, 1690, 1695, 1697, 1701, 1703, 1705, 1710, 1715, 1718, - 1721, 1725, 1729, 1730, 1732, 1736, 1739, 1742, 1744, 1747, - 1750, 1753, 1756, 1759, 1762, 1765, 1767, 1770, 1773, 1777, - 1780, 1783, 1788, 1793, 1796, 1798, 1804, 1809, 1811, 1812, - 1814, 1818, 1819, 1821, 1825, 1827, 1829, 1831, 1833, 1838, - 1843, 1848, 1853, 1858, 1862, 1867, 1872, 1877, 1882, 1886, - 1889, 1891, 1893, 1897, 1899, 1903, 1906, 1908, 1916, 1917, - 1920, 1922, 1925, 1926, 1929, 1934, 1939, 1942, 1947, 1949, - 1952, 1956, 1960, 1963, 1966, 1970, 1972, 1977, 1982, 1986, - 1990, 1993, 1995, 1997, 2000, 2002, 2004, 2007, 2010, 2012, - 2015, 2019, 2023, 2026, 2029, 2033, 2035, 2039, 2043, 2046, - 2049, 2053, 2055, 2060, 2064, 2069, 2073, 2075, 2078, 2081, - 2084, 2087, 2090, 2092, 2095, 2100, 2105, 2108, 2110, 2112, - 2114, 2116, 2119, 2124, 2127, 2130, 2133, 2136, 2138, 2141, - 2144, 2147, 2150, 2154, 2156, 2159, 2163, 2168, 2171, 2174, - 2177, 2180, 2183, 2186, 2191, 2194, 2196, 2199, 2202, 2206, - 2208, 2212, 2215, 2219, 2222, 2225, 2229, 2231, 2235, 2240, - 2242, 2245, 2249, 2252, 2255, 2257, 2261, 2264, 2267, 2269, - 2272, 2276, 2278, 2282, 2289, 2294, 2299, 2303, 2309, 2313, - 2317, 2321, 2324, 2326, 2328, 2331, 2334, 2337, 2338, 2340, - 2342, 2345, 2349, 2351, 2354, 2355, 2359, 2360, 2361, 2367, - 2369, 2370, 2373, 2375, 2377, 2379, 2382, 2383, 2388, 2390, - 2391, 2392, 2398, 2399, 2400, 2408, 2409, 2410, 2411, 2412, - 2425, 2426, 2427, 2435, 2436, 2442, 2443, 2451, 2452, 2457, - 2460, 2463, 2466, 2470, 2477, 2486, 2497, 2510, 2515, 2519, - 2522, 2525, 2527, 2529, 2531, 2533, 2535, 2536, 2537, 2544, - 2545, 2546, 2552, 2554, 2557, 2558, 2559, 2565, 2567, 2569, - 2573, 2577, 2580, 2583, 2586, 2589, 2592, 2594, 2597, 2598, - 2600, 2601, 2603, 2605, 2606, 2608, 2610, 2614, 2619, 2621, - 2625, 2626, 2628, 2630, 2632, 2635, 2638, 2641, 2643, 2646, - 2649, 2650, 2654, 2656, 2658, 2660, 2663, 2666, 2669, 2674, - 2677, 2680, 2683, 2686, 2689, 2692, 2694, 2697, 2699, 2702, - 2704, 2706, 2707, 2708, 2710, 2711, 2716, 2719, 2721, 2723, - 2727, 2728, 2732, 2736, 2740, 2742, 2745, 2748, 2751, 2754, - 2757, 2760, 2763, 2766, 2769, 2772, 2775, 2778, 2781, 2784, - 2787, 2790, 2793, 2796, 2799, 2802, 2805, 2808, 2811, 2815, - 2818, 2821, 2824, 2827, 2831, 2834, 2837, 2842, 2847, 2851 + 1688, 1690, 1695, 1697, 1701, 1703, 1705, 1708, 1711, 1715, + 1719, 1720, 1722, 1726, 1729, 1732, 1734, 1737, 1740, 1743, + 1746, 1749, 1752, 1755, 1757, 1760, 1763, 1767, 1770, 1773, + 1778, 1783, 1786, 1788, 1794, 1799, 1801, 1802, 1804, 1808, + 1809, 1811, 1815, 1817, 1819, 1821, 1823, 1828, 1833, 1838, + 1843, 1848, 1852, 1857, 1862, 1867, 1872, 1876, 1879, 1881, + 1883, 1887, 1889, 1893, 1896, 1898, 1906, 1907, 1910, 1912, + 1915, 1916, 1919, 1924, 1929, 1932, 1937, 1939, 1942, 1946, + 1950, 1953, 1956, 1960, 1962, 1967, 1972, 1976, 1980, 1983, + 1985, 1987, 1990, 1992, 1994, 1997, 2000, 2002, 2005, 2009, + 2013, 2016, 2019, 2023, 2025, 2029, 2033, 2036, 2039, 2043, + 2045, 2050, 2054, 2059, 2063, 2065, 2068, 2071, 2074, 2077, + 2080, 2082, 2085, 2090, 2095, 2098, 2100, 2102, 2104, 2106, + 2109, 2114, 2117, 2120, 2123, 2126, 2128, 2131, 2134, 2137, + 2140, 2144, 2146, 2149, 2153, 2158, 2161, 2164, 2167, 2170, + 2173, 2176, 2181, 2184, 2186, 2189, 2192, 2196, 2198, 2202, + 2205, 2209, 2212, 2215, 2219, 2221, 2225, 2230, 2232, 2235, + 2239, 2242, 2245, 2247, 2251, 2254, 2257, 2259, 2262, 2266, + 2268, 2272, 2279, 2284, 2289, 2293, 2299, 2303, 2307, 2311, + 2314, 2316, 2318, 2321, 2324, 2327, 2328, 2330, 2332, 2335, + 2339, 2341, 2344, 2345, 2349, 2350, 2351, 2357, 2359, 2360, + 2363, 2365, 2367, 2369, 2372, 2373, 2378, 2380, 2381, 2382, + 2388, 2389, 2390, 2398, 2399, 2400, 2401, 2402, 2415, 2416, + 2417, 2425, 2426, 2432, 2433, 2441, 2442, 2447, 2450, 2453, + 2456, 2460, 2467, 2476, 2487, 2500, 2505, 2509, 2512, 2515, + 2517, 2519, 2521, 2523, 2525, 2526, 2527, 2534, 2535, 2536, + 2542, 2544, 2547, 2548, 2549, 2555, 2557, 2559, 2563, 2567, + 2570, 2573, 2576, 2579, 2582, 2584, 2587, 2588, 2590, 2591, + 2593, 2595, 2596, 2598, 2600, 2604, 2609, 2611, 2615, 2616, + 2618, 2620, 2622, 2625, 2628, 2631, 2633, 2636, 2639, 2640, + 2644, 2646, 2648, 2650, 2653, 2656, 2659, 2664, 2667, 2670, + 2673, 2676, 2679, 2682, 2684, 2687, 2689, 2692, 2694, 2696, + 2697, 2698, 2700, 2701, 2706, 2709, 2711, 2713, 2717, 2718, + 2722, 2726, 2730, 2732, 2735, 2738, 2741, 2744, 2747, 2750, + 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, + 2783, 2786, 2789, 2792, 2795, 2798, 2801, 2805, 2808, 2811, + 2814, 2817, 2821, 2824, 2827, 2832, 2837, 2841 }; static const short yyrhs[] = { -1, @@ -522,8 +522,7 @@ static const short yyrhs[] = { -1, 277, 0, 269, 59, 0, 275, 0, 273, 0, 0, 63, 393, 0, 63, 393, 278, 0, 279, 0, 278, 60, 393, 279, 0, 280, 0, 281, 393, 280, 0, - 321, 0, 307, 0, 30, 93, 186, 108, 0, 30, - 93, 225, 108, 0, 38, 393, 0, 7, 393, 0, + 321, 0, 307, 0, 38, 393, 0, 7, 393, 0, 281, 38, 393, 0, 281, 7, 393, 0, 0, 284, 0, 282, 283, 284, 0, 282, 283, 0, 38, 63, 0, 285, 0, 284, 285, 0, 286, 61, 0, 286, @@ -695,43 +694,43 @@ static const short yyrline[] = { 0, 2160, 2184, 2186, 2189, 2191, 2196, 2198, 2200, 2202, 2204, 2206, 2210, 2218, 2221, 2223, 2227, 2234, 2240, 2246, 2252, 2262, 2268, 2272, 2279, 2307, 2317, 2323, 2326, 2329, 2331, - 2335, 2337, 2341, 2346, 2352, 2355, 2356, 2377, 2400, 2402, - 2406, 2417, 2431, 2432, 2433, 2434, 2437, 2452, 2457, 2463, - 2465, 2470, 2472, 2474, 2476, 2478, 2480, 2483, 2493, 2500, - 2525, 2531, 2534, 2537, 2539, 2550, 2555, 2558, 2563, 2566, - 2573, 2583, 2586, 2593, 2603, 2605, 2608, 2610, 2613, 2620, - 2628, 2635, 2641, 2647, 2655, 2659, 2664, 2668, 2671, 2676, - 2678, 2686, 2688, 2692, 2695, 2700, 2704, 2710, 2721, 2724, - 2728, 2732, 2740, 2745, 2751, 2754, 2756, 2758, 2764, 2766, - 2775, 2778, 2780, 2782, 2784, 2788, 2791, 2794, 2796, 2798, - 2800, 2804, 2807, 2818, 2828, 2830, 2831, 2835, 2843, 2845, - 2853, 2856, 2858, 2860, 2862, 2866, 2869, 2872, 2874, 2876, - 2878, 2882, 2885, 2888, 2890, 2892, 2894, 2896, 2903, 2907, - 2912, 2916, 2921, 2923, 2927, 2930, 2932, 2935, 2937, 2938, - 2941, 2943, 2945, 2951, 2962, 2968, 2974, 2988, 2990, 2994, - 3008, 3010, 3012, 3016, 3022, 3035, 3037, 3041, 3054, 3060, - 3062, 3063, 3064, 3072, 3077, 3086, 3087, 3091, 3094, 3100, - 3106, 3109, 3111, 3113, 3115, 3119, 3123, 3127, 3130, 3134, - 3136, 3145, 3148, 3150, 3152, 3154, 3156, 3158, 3160, 3162, - 3166, 3170, 3174, 3178, 3180, 3182, 3184, 3186, 3188, 3190, - 3192, 3194, 3202, 3204, 3205, 3206, 3209, 3215, 3217, 3222, - 3224, 3227, 3241, 3244, 3247, 3251, 3254, 3261, 3263, 3266, - 3268, 3270, 3273, 3276, 3279, 3282, 3284, 3287, 3291, 3293, - 3299, 3301, 3302, 3304, 3309, 3311, 3313, 3315, 3317, 3320, - 3321, 3323, 3326, 3327, 3330, 3330, 3333, 3333, 3336, 3336, - 3338, 3340, 3342, 3344, 3350, 3356, 3359, 3362, 3368, 3370, - 3372, 3376, 3378, 3379, 3380, 3382, 3385, 3388, 3391, 3397, - 3401, 3403, 3406, 3408, 3411, 3415, 3417, 3420, 3422, 3425, - 3442, 3448, 3456, 3458, 3460, 3464, 3467, 3468, 3476, 3480, - 3484, 3487, 3488, 3494, 3497, 3500, 3502, 3506, 3511, 3514, - 3524, 3529, 3530, 3537, 3540, 3543, 3545, 3548, 3550, 3560, - 3574, 3578, 3581, 3583, 3587, 3591, 3594, 3597, 3599, 3603, - 3605, 3612, 3619, 3622, 3626, 3630, 3634, 3640, 3644, 3649, - 3651, 3654, 3659, 3665, 3676, 3679, 3681, 3685, 3693, 3696, - 3700, 3703, 3705, 3707, 3713, 3718, 3721, 3723, 3725, 3727, - 3729, 3731, 3733, 3735, 3737, 3739, 3741, 3743, 3745, 3747, - 3749, 3751, 3753, 3755, 3757, 3759, 3761, 3763, 3765, 3767, - 3769, 3771, 3773, 3775, 3777, 3779, 3781, 3783, 3786, 3788 + 2335, 2337, 2341, 2344, 2348, 2351, 2354, 2356, 2360, 2371, + 2385, 2386, 2387, 2388, 2391, 2400, 2405, 2411, 2413, 2418, + 2420, 2422, 2424, 2426, 2428, 2431, 2441, 2448, 2473, 2479, + 2482, 2485, 2487, 2498, 2503, 2506, 2511, 2514, 2521, 2531, + 2534, 2541, 2551, 2553, 2556, 2558, 2561, 2568, 2576, 2583, + 2589, 2595, 2603, 2607, 2612, 2616, 2619, 2624, 2626, 2634, + 2636, 2640, 2643, 2648, 2652, 2658, 2669, 2672, 2676, 2680, + 2688, 2693, 2699, 2702, 2704, 2706, 2712, 2714, 2723, 2726, + 2728, 2730, 2732, 2736, 2739, 2742, 2744, 2746, 2748, 2752, + 2755, 2766, 2776, 2778, 2779, 2783, 2791, 2793, 2801, 2804, + 2806, 2808, 2810, 2814, 2817, 2820, 2822, 2824, 2826, 2830, + 2833, 2836, 2838, 2840, 2842, 2844, 2851, 2855, 2860, 2864, + 2869, 2871, 2875, 2878, 2880, 2883, 2885, 2886, 2889, 2891, + 2893, 2899, 2910, 2916, 2922, 2936, 2938, 2942, 2956, 2958, + 2960, 2964, 2970, 2983, 2985, 2989, 3002, 3008, 3010, 3011, + 3012, 3020, 3025, 3034, 3035, 3039, 3042, 3048, 3054, 3057, + 3059, 3061, 3063, 3067, 3071, 3075, 3078, 3082, 3084, 3093, + 3096, 3098, 3100, 3102, 3104, 3106, 3108, 3110, 3114, 3118, + 3122, 3126, 3128, 3130, 3132, 3134, 3136, 3138, 3140, 3142, + 3150, 3152, 3153, 3154, 3157, 3163, 3165, 3170, 3172, 3175, + 3189, 3192, 3195, 3199, 3202, 3209, 3211, 3214, 3216, 3218, + 3221, 3224, 3227, 3230, 3232, 3235, 3239, 3241, 3247, 3249, + 3250, 3252, 3257, 3259, 3261, 3263, 3265, 3268, 3269, 3271, + 3274, 3275, 3278, 3278, 3281, 3281, 3284, 3284, 3286, 3288, + 3290, 3292, 3298, 3304, 3307, 3310, 3316, 3318, 3320, 3324, + 3326, 3327, 3328, 3330, 3333, 3336, 3339, 3345, 3349, 3351, + 3354, 3356, 3359, 3363, 3365, 3368, 3370, 3373, 3390, 3396, + 3404, 3406, 3408, 3412, 3415, 3416, 3424, 3428, 3432, 3435, + 3436, 3442, 3445, 3448, 3450, 3454, 3459, 3462, 3472, 3477, + 3478, 3485, 3488, 3491, 3493, 3496, 3498, 3508, 3522, 3526, + 3529, 3531, 3535, 3539, 3542, 3545, 3547, 3551, 3553, 3560, + 3567, 3570, 3574, 3578, 3582, 3588, 3592, 3597, 3599, 3602, + 3607, 3613, 3624, 3627, 3629, 3633, 3641, 3644, 3648, 3651, + 3653, 3655, 3661, 3666, 3669, 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, 3734, 3736 }; #endif @@ -859,43 +858,43 @@ static const short yyr1[] = { 0, 261, 267, 267, 268, 268, 269, 269, 269, 269, 269, 269, 270, 271, 271, 271, 272, 272, 272, 272, 272, 273, 274, 273, 273, 275, 276, 276, 277, 277, 277, - 278, 278, 279, 279, 280, 280, 280, 280, 281, 281, - 281, 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, 298, 298, 298, 299, 299, - 300, 300, 301, 302, 303, 303, 303, 303, 304, 304, - 305, 305, 305, 305, 305, 305, 306, 306, 306, 306, - 306, 306, 307, 307, 308, 308, 308, 309, 310, 310, - 311, 311, 311, 311, 311, 311, 312, 312, 312, 312, - 312, 312, 313, 313, 313, 313, 313, 313, 314, 314, - 315, 315, 316, 316, 317, 317, 317, 318, 318, 318, - 319, 319, 319, 320, 320, 320, 320, 321, 321, 322, - 322, 322, 322, 323, 323, 323, 323, 324, 324, 324, - 324, 324, 324, 325, 326, 326, 326, 327, 327, 328, - 329, 329, 329, 329, 329, 329, 329, 330, 330, 331, - 331, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 334, 334, 334, 334, 335, 336, 336, 337, - 337, 338, 339, 339, 341, 340, 343, 344, 342, 345, - 346, 345, 347, 347, 348, 348, 349, 348, 348, 350, - 351, 348, 352, 353, 348, 354, 355, 356, 357, 348, - 358, 359, 348, 360, 348, 361, 348, 362, 348, 348, + 278, 278, 279, 279, 280, 280, 281, 281, 281, 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, 298, 298, 298, 299, 299, 300, 300, + 301, 302, 303, 303, 303, 303, 304, 304, 305, 305, + 305, 305, 305, 305, 306, 306, 306, 306, 306, 306, + 307, 307, 308, 308, 308, 309, 310, 310, 311, 311, + 311, 311, 311, 311, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 314, 314, 315, 315, + 316, 316, 317, 317, 317, 318, 318, 318, 319, 319, + 319, 320, 320, 320, 320, 321, 321, 322, 322, 322, + 322, 323, 323, 323, 323, 324, 324, 324, 324, 324, + 324, 325, 326, 326, 326, 327, 327, 328, 329, 329, + 329, 329, 329, 329, 329, 330, 330, 331, 331, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 334, 334, 334, 334, 335, 336, 336, 337, 337, 338, + 339, 339, 341, 340, 343, 344, 342, 345, 346, 345, + 347, 347, 348, 348, 349, 348, 348, 350, 351, 348, + 352, 353, 348, 354, 355, 356, 357, 348, 358, 359, + 348, 360, 348, 361, 348, 362, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 364, 365, 363, 367, - 368, 366, 369, 369, 371, 372, 370, 373, 373, 374, - 374, 375, 375, 375, 375, 376, 376, 376, 377, 377, - 378, 378, 378, 379, 379, 380, 380, 381, 382, 382, - 383, 383, 383, 384, 384, 384, 384, 384, 384, 384, - 386, 385, 387, 387, 388, 388, 388, 388, 388, 389, - 389, 390, 390, 390, 390, 390, 390, 391, 391, 392, - 392, 393, 394, 394, 395, 395, 395, 396, 397, 397, - 398, 398, 398, 398, 399, 400, 400, 400, 400, 400, + 348, 348, 348, 348, 364, 365, 363, 367, 368, 366, + 369, 369, 371, 372, 370, 373, 373, 374, 374, 375, + 375, 375, 375, 376, 376, 376, 377, 377, 378, 378, + 378, 379, 379, 380, 380, 381, 382, 382, 383, 383, + 383, 384, 384, 384, 384, 384, 384, 384, 386, 385, + 387, 387, 388, 388, 388, 388, 388, 389, 389, 390, + 390, 390, 390, 390, 390, 391, 391, 392, 392, 393, + 394, 394, 395, 395, 395, 396, 397, 397, 398, 398, + 398, 398, 399, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 400 + 400, 400, 400, 400, 400, 400, 400, 400 }; static const short yyr2[] = { 0, @@ -950,1440 +949,1415 @@ static const short yyr2[] = { 0, 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, 0, 1, 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, 2, - 1, 1, 3, 1, 3, 2, 1, 7, 0, 2, - 1, 2, 0, 2, 4, 4, 2, 4, 1, 2, - 3, 3, 2, 2, 3, 1, 4, 4, 3, 3, - 2, 1, 1, 2, 1, 1, 2, 2, 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, 1, - 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, - 3, 1, 3, 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, + 1, 4, 1, 3, 1, 1, 2, 2, 3, 3, + 0, 1, 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, 2, 1, 1, + 3, 1, 3, 2, 1, 7, 0, 2, 1, 2, + 0, 2, 4, 4, 2, 4, 1, 2, 3, 3, + 2, 2, 3, 1, 4, 4, 3, 3, 2, 1, + 1, 2, 1, 1, 2, 2, 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, 1, 2, 3, + 2, 2, 1, 3, 2, 2, 1, 2, 3, 1, + 3, 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, 3, 2, - 2, 2, 2, 3, 2, 2, 4, 4, 3, 2 + 2, 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, 282, 638, 639, 0, - 389, 401, 581, 0, 11, 0, 0, 0, 10, 486, - 845, 0, 0, 0, 167, 670, 283, 284, 83, 0, - 0, 832, 0, 45, 0, 0, 13, 25, 0, 27, - 8, 0, 16, 15, 89, 110, 86, 0, 640, 171, - 303, 280, 304, 616, 0, 376, 0, 375, 394, 0, + 12, 12, 5, 0, 4, 0, 282, 636, 637, 0, + 389, 401, 579, 0, 11, 0, 0, 0, 10, 486, + 843, 0, 0, 0, 167, 668, 283, 284, 83, 0, + 0, 830, 0, 45, 0, 0, 13, 25, 0, 27, + 8, 0, 16, 15, 89, 110, 86, 0, 638, 171, + 303, 280, 304, 614, 0, 376, 0, 375, 394, 0, 414, 393, 431, 400, 0, 501, 502, 508, 507, 506, - 481, 388, 605, 402, 606, 108, 302, 627, 603, 0, - 641, 579, 0, 0, 281, 81, 82, 178, 644, 178, - 645, 178, 285, 167, 140, 141, 142, 143, 144, 472, - 474, 0, 666, 0, 475, 0, 0, 0, 0, 141, + 481, 388, 603, 402, 604, 108, 302, 625, 601, 0, + 639, 577, 0, 0, 281, 81, 82, 178, 642, 178, + 643, 178, 285, 167, 140, 141, 142, 143, 144, 472, + 474, 0, 664, 0, 475, 0, 0, 0, 0, 141, 142, 143, 144, 23, 0, 0, 0, 0, 0, 0, - 0, 476, 648, 0, 654, 0, 0, 0, 37, 0, - 0, 31, 0, 0, 47, 0, 178, 646, 0, 0, - 0, 614, 609, 0, 0, 0, 613, 0, 0, 0, - 0, 303, 0, 294, 583, 0, 0, 302, 579, 28, + 0, 476, 646, 0, 652, 0, 0, 0, 37, 0, + 0, 31, 0, 0, 47, 0, 178, 644, 0, 0, + 0, 612, 607, 0, 0, 0, 611, 0, 0, 0, + 0, 303, 0, 294, 581, 0, 0, 302, 577, 28, 0, 26, 3, 46, 0, 64, 389, 0, 0, 8, 67, 63, 66, 89, 0, 0, 0, 400, 90, 14, - 0, 429, 0, 0, 447, 87, 79, 647, 583, 0, - 579, 80, 0, 0, 0, 106, 0, 410, 366, 596, - 367, 602, 0, 579, 391, 390, 78, 109, 377, 0, + 0, 429, 0, 0, 447, 87, 79, 645, 581, 0, + 577, 80, 0, 0, 0, 106, 0, 410, 366, 594, + 367, 600, 0, 577, 391, 390, 78, 109, 377, 0, 412, 392, 107, 383, 407, 408, 378, 396, 398, 387, 409, 0, 75, 432, 487, 488, 489, 490, 505, 149, 148, 150, 492, 493, 172, 499, 491, 0, 0, 494, - 495, 508, 832, 504, 477, 582, 395, 0, 426, 639, - 0, 668, 171, 631, 632, 628, 608, 642, 0, 607, - 604, 0, 880, 876, 875, 873, 855, 860, 861, 0, - 867, 866, 852, 853, 851, 870, 859, 856, 857, 858, - 862, 863, 849, 850, 846, 847, 848, 872, 864, 865, - 854, 871, 0, 868, 778, 394, 779, 841, 285, 282, - 581, 307, 355, 0, 0, 0, 0, 0, 351, 349, + 495, 508, 830, 504, 477, 580, 395, 0, 426, 637, + 0, 666, 171, 629, 630, 626, 606, 640, 0, 605, + 602, 0, 878, 874, 873, 871, 853, 858, 859, 0, + 865, 864, 850, 851, 849, 868, 857, 854, 855, 856, + 860, 861, 847, 848, 844, 845, 846, 870, 862, 863, + 852, 869, 0, 866, 776, 394, 777, 839, 285, 282, + 579, 307, 355, 0, 0, 0, 0, 0, 351, 349, 322, 353, 354, 0, 0, 0, 0, 0, 283, 284, 276, 0, 0, 186, 185, 0, 187, 188, 0, 0, 189, 0, 0, 179, 180, 0, 250, 0, 253, 184, 306, 215, 0, 0, 308, 309, 0, 182, 373, 394, - 374, 633, 334, 324, 0, 0, 0, 0, 178, 0, - 484, 470, 0, 667, 665, 0, 190, 191, 0, 0, - 0, 436, 3, 21, 29, 662, 658, 659, 661, 663, - 660, 140, 141, 142, 0, 143, 144, 650, 651, 655, - 652, 649, 0, 292, 293, 291, 630, 629, 33, 32, - 49, 0, 157, 0, 0, 394, 155, 0, 0, 610, - 612, 0, 611, 141, 142, 278, 279, 298, 0, 620, - 297, 0, 619, 0, 305, 283, 284, 0, 0, 0, - 296, 295, 624, 0, 0, 12, 0, 167, 9, 9, + 374, 631, 334, 324, 0, 0, 0, 0, 178, 0, + 484, 470, 0, 665, 663, 0, 190, 191, 0, 0, + 0, 436, 3, 21, 29, 660, 656, 657, 659, 661, + 658, 140, 141, 142, 0, 143, 144, 648, 649, 653, + 650, 647, 0, 292, 293, 291, 628, 627, 33, 32, + 49, 0, 157, 0, 0, 394, 155, 0, 0, 608, + 610, 0, 609, 141, 142, 278, 279, 298, 0, 618, + 297, 0, 617, 0, 305, 283, 284, 0, 0, 0, + 296, 295, 622, 0, 0, 12, 0, 167, 9, 9, 70, 0, 65, 0, 0, 71, 74, 0, 428, 430, - 122, 93, 127, 767, 0, 85, 84, 92, 125, 0, - 0, 123, 88, 626, 0, 0, 587, 0, 835, 0, - 0, 594, 589, 0, 593, 0, 0, 0, 0, 0, - 579, 429, 0, 77, 583, 579, 601, 0, 380, 381, + 122, 93, 127, 765, 0, 85, 84, 92, 125, 0, + 0, 123, 88, 624, 0, 0, 585, 0, 833, 0, + 0, 592, 587, 0, 591, 0, 0, 0, 0, 0, + 577, 429, 0, 77, 581, 577, 599, 0, 380, 381, 0, 76, 429, 385, 384, 386, 379, 399, 416, 415, 178, 496, 500, 498, 0, 503, 509, 0, 397, 429, - 579, 94, 0, 0, 0, 0, 579, 100, 580, 615, - 639, 669, 171, 0, 0, 869, 874, 396, 579, 579, - 0, 579, 879, 178, 0, 0, 0, 222, 0, 0, + 577, 94, 0, 0, 0, 0, 577, 100, 578, 613, + 637, 667, 171, 0, 0, 867, 872, 396, 577, 577, + 0, 577, 877, 178, 0, 0, 0, 222, 0, 0, 224, 237, 238, 0, 0, 0, 0, 0, 0, 277, 221, 218, 217, 219, 0, 0, 0, 0, 0, 306, 0, 0, 0, 216, 176, 177, 300, 0, 220, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, 0, 318, 320, 321, 359, - 358, 0, 0, 241, 241, 0, 226, 577, 0, 234, - 356, 348, 0, 0, 832, 337, 340, 341, 0, 0, - 368, 689, 685, 0, 583, 579, 579, 579, 370, 692, - 0, 637, 372, 0, 0, 371, 336, 0, 331, 350, - 332, 352, 634, 0, 333, 175, 175, 0, 165, 0, - 394, 163, 485, 574, 571, 0, 484, 572, 484, 0, + 358, 0, 0, 241, 241, 0, 226, 575, 0, 234, + 356, 348, 0, 0, 830, 337, 340, 341, 0, 0, + 368, 687, 683, 0, 581, 577, 577, 577, 370, 690, + 0, 635, 372, 0, 0, 371, 336, 0, 331, 350, + 332, 352, 632, 0, 333, 175, 175, 0, 165, 0, + 394, 163, 485, 572, 569, 0, 484, 570, 484, 0, 403, 0, 0, 404, 405, 406, 442, 443, 444, 441, - 0, 434, 437, 0, 3, 0, 653, 178, 656, 0, - 41, 42, 0, 53, 0, 0, 57, 61, 50, 831, - 826, 0, 373, 394, 53, 374, 830, 59, 168, 153, - 151, 168, 175, 301, 618, 617, 305, 0, 621, 0, + 0, 434, 437, 0, 3, 0, 651, 178, 654, 0, + 41, 42, 0, 53, 0, 0, 57, 61, 50, 829, + 824, 0, 373, 394, 53, 374, 828, 59, 168, 153, + 151, 168, 175, 301, 616, 615, 305, 0, 619, 0, 18, 20, 89, 9, 9, 73, 72, 0, 128, 357, - 0, 715, 91, 713, 453, 0, 449, 448, 214, 0, - 213, 584, 625, 0, 808, 0, 803, 394, 0, 802, - 804, 833, 815, 0, 0, 623, 590, 592, 591, 0, - 0, 0, 0, 0, 0, 579, 600, 0, 424, 423, - 411, 599, 0, 835, 595, 382, 413, 425, 429, 0, - 497, 638, 639, 832, 0, 832, 640, 510, 511, 513, - 832, 516, 515, 0, 545, 639, 0, 536, 0, 0, - 548, 0, 121, 116, 0, 171, 549, 552, 0, 0, - 528, 0, 119, 427, 835, 801, 178, 178, 643, 178, - 835, 801, 579, 97, 579, 103, 878, 877, 841, 841, - 841, 0, 0, 0, 0, 637, 0, 0, 0, 0, - 0, 394, 0, 0, 0, 312, 0, 310, 311, 0, - 248, 181, 282, 638, 639, 283, 284, 0, 0, 454, - 482, 0, 275, 274, 793, 792, 0, 272, 271, 269, - 270, 268, 267, 266, 263, 264, 265, 261, 262, 256, - 257, 258, 259, 260, 254, 255, 0, 0, 0, 0, - 0, 241, 228, 245, 0, 0, 227, 579, 579, 0, - 579, 576, 677, 0, 0, 0, 0, 0, 339, 0, - 343, 0, 345, 0, 0, 688, 687, 680, 684, 683, - 831, 393, 0, 0, 702, 0, 0, 835, 369, 835, - 690, 579, 801, 583, 689, 685, 0, 0, 579, 0, - 393, 0, 0, 0, 0, 170, 174, 286, 168, 161, - 159, 168, 0, 473, 485, 570, 0, 212, 211, 210, - 209, 436, 0, 0, 24, 0, 0, 657, 0, 38, - 44, 43, 55, 52, 53, 0, 48, 0, 0, 689, - 685, 0, 822, 579, 825, 827, 0, 823, 824, 54, - 492, 0, 158, 168, 168, 156, 169, 299, 17, 19, - 69, 89, 417, 145, 133, 146, 147, 0, 126, 129, - 0, 0, 0, 0, 714, 708, 450, 0, 124, 588, - 585, 807, 821, 810, 0, 586, 806, 820, 809, 805, - 834, 817, 828, 818, 811, 816, 837, 0, 0, 0, - 0, 421, 598, 597, 420, 175, 520, 0, 519, 832, - 832, 832, 0, 579, 801, 544, 537, 549, 538, 429, - 429, 534, 535, 532, 533, 579, 801, 282, 638, 0, - 416, 117, 540, 550, 555, 556, 416, 416, 0, 0, - 416, 115, 541, 553, 416, 0, 429, 0, 529, 530, - 531, 429, 96, 0, 0, 0, 0, 102, 0, 835, - 801, 835, 801, 843, 842, 844, 287, 323, 223, 225, - 0, 329, 330, 0, 0, 0, 0, 311, 314, 0, - 0, 0, 0, 249, 0, 315, 317, 319, 0, 0, - 0, 0, 229, 247, 0, 0, 674, 672, 0, 675, - 583, 235, 0, 0, 178, 346, 0, 0, 0, 681, - 686, 682, 693, 579, 701, 699, 700, 691, 835, 0, - 697, 0, 0, 635, 636, 689, 685, 0, 0, 335, - 166, 168, 168, 164, 575, 573, 471, 435, 433, 282, - 0, 22, 30, 664, 56, 51, 58, 62, 0, 688, - 684, 689, 685, 0, 393, 603, 0, 579, 690, 60, - 154, 152, 68, 0, 131, 0, 135, 0, 137, 0, - 139, 0, 768, 0, 202, 716, 0, 709, 710, 0, - 451, 689, 685, 0, 306, 0, 633, 829, 0, 0, - 838, 839, 0, 0, 0, 0, 0, 0, 418, 173, - 0, 0, 0, 522, 521, 514, 835, 0, 539, 447, - 447, 835, 0, 0, 0, 429, 429, 0, 429, 429, - 0, 429, 0, 527, 478, 0, 447, 579, 289, 288, - 290, 579, 99, 0, 105, 0, 0, 0, 0, 0, - 0, 0, 457, 0, 455, 252, 273, 243, 242, 240, - 230, 0, 244, 246, 673, 671, 678, 676, 0, 236, - 0, 0, 338, 342, 344, 835, 695, 579, 696, 162, - 160, 0, 438, 440, 0, 688, 684, 689, 685, 0, - 579, 608, 690, 132, 130, 0, 0, 0, 0, 445, - 0, 0, 282, 638, 639, 717, 730, 733, 736, 741, - 0, 0, 0, 0, 0, 0, 0, 0, 283, 762, - 770, 0, 789, 766, 765, 764, 0, 725, 0, 0, - 394, 0, 704, 723, 729, 703, 724, 763, 0, 711, - 452, 0, 636, 819, 813, 814, 812, 0, 836, 422, - 0, 517, 518, 512, 112, 579, 543, 547, 114, 579, - 429, 429, 564, 447, 282, 638, 0, 551, 557, 558, - 416, 416, 447, 447, 0, 447, 554, 467, 542, 835, - 835, 579, 579, 239, 0, 0, 0, 0, 456, 0, - 0, 231, 232, 679, 347, 288, 698, 835, 0, 688, - 684, 0, 690, 134, 136, 138, 775, 769, 773, 0, - 712, 707, 205, 782, 784, 785, 0, 0, 721, 0, - 0, 0, 748, 750, 751, 752, 0, 0, 0, 0, - 0, 0, 0, 783, 0, 365, 790, 0, 726, 363, - 416, 0, 364, 0, 416, 0, 0, 0, 203, 706, - 705, 727, 761, 760, 311, 840, 419, 835, 835, 563, - 560, 562, 0, 0, 429, 429, 429, 559, 561, 546, - 0, 95, 101, 835, 835, 325, 326, 327, 328, 458, - 0, 233, 694, 439, 689, 685, 0, 0, 0, 774, - 446, 194, 0, 718, 731, 720, 0, 0, 0, 0, - 0, 744, 0, 753, 0, 759, 39, 144, 34, 144, - 0, 35, 771, 0, 361, 362, 0, 0, 0, 360, - 204, 721, 111, 113, 429, 429, 569, 447, 447, 469, - 0, 468, 463, 98, 104, 578, 393, 0, 776, 201, - 0, 394, 0, 721, 0, 734, 722, 708, 787, 737, - 0, 0, 0, 0, 749, 758, 40, 36, 0, 0, - 728, 568, 566, 565, 567, 0, 0, 480, 0, 0, - 0, 195, 416, 719, 206, 732, 208, 0, 788, 0, - 786, 742, 746, 745, 772, 794, 0, 466, 465, 459, - 86, 89, 780, 781, 777, 429, 708, 192, 0, 0, - 198, 0, 197, 721, 0, 0, 0, 795, 796, 754, - 0, 464, 0, 207, 0, 735, 738, 743, 747, 0, - 794, 0, 0, 462, 0, 461, 199, 193, 0, 0, - 0, 755, 797, 460, 0, 0, 798, 0, 0, 200, - 739, 799, 0, 756, 0, 0, 0, 740, 800, 757, - 0, 0, 0 + 0, 713, 91, 711, 453, 0, 449, 448, 214, 0, + 213, 582, 623, 0, 806, 0, 801, 394, 0, 800, + 802, 831, 813, 0, 0, 621, 588, 590, 589, 0, + 0, 0, 0, 0, 0, 577, 598, 0, 424, 423, + 411, 597, 0, 833, 593, 382, 413, 425, 429, 0, + 497, 636, 637, 830, 830, 638, 510, 511, 513, 830, + 516, 515, 0, 543, 637, 0, 534, 0, 0, 546, + 0, 121, 116, 0, 171, 547, 550, 0, 0, 526, + 0, 119, 427, 833, 799, 178, 178, 641, 178, 833, + 799, 577, 97, 577, 103, 876, 875, 839, 839, 839, + 0, 0, 0, 0, 635, 0, 0, 0, 0, 0, + 394, 0, 0, 0, 312, 0, 310, 311, 0, 248, + 181, 282, 636, 637, 283, 284, 0, 0, 454, 482, + 0, 275, 274, 791, 790, 0, 272, 271, 269, 270, + 268, 267, 266, 263, 264, 265, 261, 262, 256, 257, + 258, 259, 260, 254, 255, 0, 0, 0, 0, 0, + 241, 228, 245, 0, 0, 227, 577, 577, 0, 577, + 574, 675, 0, 0, 0, 0, 0, 339, 0, 343, + 0, 345, 0, 0, 686, 685, 678, 682, 681, 829, + 393, 0, 0, 700, 0, 0, 833, 369, 833, 688, + 577, 799, 581, 687, 683, 0, 0, 577, 0, 393, + 0, 0, 0, 0, 170, 174, 286, 168, 161, 159, + 168, 0, 473, 485, 568, 0, 212, 211, 210, 209, + 436, 0, 0, 24, 0, 0, 655, 0, 38, 44, + 43, 55, 52, 53, 0, 48, 0, 0, 687, 683, + 0, 820, 577, 823, 825, 0, 821, 822, 54, 492, + 0, 158, 168, 168, 156, 169, 299, 17, 19, 69, + 89, 417, 145, 133, 146, 147, 0, 126, 129, 0, + 0, 0, 0, 712, 706, 450, 0, 124, 586, 583, + 805, 819, 808, 0, 584, 804, 818, 807, 803, 832, + 815, 826, 816, 809, 814, 835, 0, 0, 0, 0, + 421, 596, 595, 420, 175, 518, 517, 830, 830, 830, + 0, 577, 799, 542, 535, 547, 536, 429, 429, 532, + 533, 530, 531, 577, 799, 282, 636, 0, 416, 117, + 538, 548, 553, 554, 416, 416, 0, 0, 416, 115, + 539, 551, 416, 0, 429, 0, 527, 528, 529, 429, + 96, 0, 0, 0, 0, 102, 0, 833, 799, 833, + 799, 841, 840, 842, 287, 323, 223, 225, 0, 329, + 330, 0, 0, 0, 0, 311, 314, 0, 0, 0, + 0, 249, 0, 315, 317, 319, 0, 0, 0, 0, + 229, 247, 0, 0, 672, 670, 0, 673, 581, 235, + 0, 0, 178, 346, 0, 0, 0, 679, 684, 680, + 691, 577, 699, 697, 698, 689, 833, 0, 695, 0, + 0, 633, 634, 687, 683, 0, 0, 335, 166, 168, + 168, 164, 573, 571, 471, 435, 433, 282, 0, 22, + 30, 662, 56, 51, 58, 62, 0, 686, 682, 687, + 683, 0, 393, 601, 0, 577, 688, 60, 154, 152, + 68, 0, 131, 0, 135, 0, 137, 0, 139, 0, + 766, 0, 202, 714, 0, 707, 708, 0, 451, 687, + 683, 0, 306, 0, 631, 827, 0, 0, 836, 837, + 0, 0, 0, 0, 0, 0, 418, 173, 0, 520, + 519, 514, 833, 0, 537, 447, 447, 833, 0, 0, + 0, 429, 429, 0, 429, 429, 0, 429, 0, 525, + 478, 0, 447, 577, 289, 288, 290, 577, 99, 0, + 105, 0, 0, 0, 0, 0, 0, 0, 457, 0, + 455, 252, 273, 243, 242, 240, 230, 0, 244, 246, + 671, 669, 676, 674, 0, 236, 0, 0, 338, 342, + 344, 833, 693, 577, 694, 162, 160, 0, 438, 440, + 0, 686, 682, 687, 683, 0, 577, 606, 688, 132, + 130, 0, 0, 0, 0, 445, 0, 0, 282, 636, + 637, 715, 728, 731, 734, 739, 0, 0, 0, 0, + 0, 0, 0, 0, 283, 760, 768, 0, 787, 764, + 763, 762, 0, 723, 0, 0, 394, 0, 702, 721, + 727, 701, 722, 761, 0, 709, 452, 0, 634, 817, + 811, 812, 810, 0, 834, 422, 0, 512, 112, 577, + 541, 545, 114, 577, 429, 429, 562, 447, 282, 636, + 0, 549, 555, 556, 416, 416, 447, 447, 0, 447, + 552, 467, 540, 833, 833, 577, 577, 239, 0, 0, + 0, 0, 456, 0, 0, 231, 232, 677, 347, 288, + 696, 833, 0, 686, 682, 0, 688, 134, 136, 138, + 773, 767, 771, 0, 710, 705, 205, 780, 782, 783, + 0, 0, 719, 0, 0, 0, 746, 748, 749, 750, + 0, 0, 0, 0, 0, 0, 0, 781, 0, 365, + 788, 0, 724, 363, 416, 0, 364, 0, 416, 0, + 0, 0, 203, 704, 703, 725, 759, 758, 311, 838, + 419, 833, 833, 561, 558, 560, 0, 0, 429, 429, + 429, 557, 559, 544, 0, 95, 101, 833, 833, 325, + 326, 327, 328, 458, 0, 233, 692, 439, 687, 683, + 0, 0, 0, 772, 446, 194, 0, 716, 729, 718, + 0, 0, 0, 0, 0, 742, 0, 751, 0, 757, + 39, 144, 34, 144, 0, 35, 769, 0, 361, 362, + 0, 0, 0, 360, 204, 719, 111, 113, 429, 429, + 567, 447, 447, 469, 0, 468, 463, 98, 104, 576, + 393, 0, 774, 201, 0, 394, 0, 719, 0, 732, + 720, 706, 785, 735, 0, 0, 0, 0, 747, 756, + 40, 36, 0, 0, 726, 566, 564, 563, 565, 0, + 0, 480, 0, 0, 0, 195, 416, 717, 206, 730, + 208, 0, 786, 0, 784, 740, 744, 743, 770, 792, + 0, 466, 465, 459, 86, 89, 778, 779, 775, 429, + 706, 192, 0, 0, 198, 0, 197, 719, 0, 0, + 0, 793, 794, 752, 0, 464, 0, 207, 0, 733, + 736, 741, 745, 0, 792, 0, 0, 462, 0, 461, + 199, 193, 0, 0, 0, 753, 795, 460, 0, 0, + 796, 0, 0, 200, 737, 797, 0, 754, 0, 0, + 0, 738, 798, 755, 0, 0, 0 }; -static const short yydefgoto[] = { 1671, +static const short yydefgoto[] = { 1665, 436, 2, 437, 165, 712, 332, 181, 3, 4, 37, - 675, 373, 1344, 676, 791, 1345, 1346, 393, 1452, 680, - 41, 792, 402, 686, 963, 687, 688, 689, 43, 172, - 173, 44, 455, 184, 180, 45, 46, 806, 1091, 812, - 1093, 47, 794, 795, 185, 186, 456, 719, 999, 1000, - 654, 1001, 234, 48, 985, 984, 702, 699, 1163, 1162, - 942, 939, 136, 983, 49, 236, 50, 936, 567, 333, - 334, 335, 336, 1347, 1620, 1514, 1622, 1561, 1655, 1206, - 1596, 1617, 367, 928, 337, 1281, 880, 606, 887, 338, + 675, 373, 1340, 676, 790, 1341, 1342, 393, 1446, 680, + 41, 791, 402, 686, 962, 687, 688, 689, 43, 172, + 173, 44, 455, 184, 180, 45, 46, 805, 1089, 811, + 1091, 47, 793, 794, 185, 186, 456, 719, 998, 999, + 654, 1000, 234, 48, 984, 983, 702, 699, 1161, 1160, + 941, 938, 136, 982, 49, 236, 50, 935, 567, 333, + 334, 335, 336, 1343, 1614, 1508, 1616, 1555, 1649, 1204, + 1590, 1611, 367, 927, 337, 1277, 879, 606, 886, 338, 339, 368, 341, 359, 52, 255, 681, 418, 154, 53, - 54, 342, 562, 343, 344, 345, 346, 457, 347, 1348, - 499, 627, 348, 1349, 56, 217, 692, 349, 218, 539, - 219, 197, 210, 60, 482, 500, 1371, 759, 1228, 198, - 211, 61, 510, 760, 62, 63, 671, 672, 673, 1321, - 462, 850, 851, 1611, 1612, 1588, 1552, 1491, 64, 659, - 361, 508, 1398, 1553, 1113, 655, 65, 66, 67, 68, - 69, 242, 70, 71, 244, 778, 779, 780, 781, 799, - 1078, 800, 801, 802, 1063, 1073, 1064, 1388, 1065, 1066, - 1389, 1390, 656, 657, 658, 607, 918, 351, 465, 466, + 54, 342, 562, 343, 344, 345, 346, 457, 347, 1344, + 499, 627, 348, 1345, 56, 217, 692, 349, 218, 539, + 219, 197, 210, 60, 482, 500, 1367, 759, 1226, 198, + 211, 61, 510, 760, 62, 63, 671, 672, 673, 1317, + 462, 849, 850, 1605, 1606, 1582, 1546, 1485, 64, 659, + 361, 508, 1392, 1547, 1111, 655, 65, 66, 67, 68, + 69, 242, 70, 71, 244, 777, 778, 779, 780, 798, + 1076, 799, 800, 801, 1061, 1071, 1062, 1382, 1063, 1064, + 1383, 1384, 656, 657, 658, 607, 917, 351, 465, 466, 191, 480, 473, 200, 73, 74, 75, 142, 143, 157, - 77, 132, 352, 353, 354, 79, 355, 81, 783, 123, - 124, 125, 515, 105, 82, 356, 892, 893, 913, 908, - 630, 1352, 1353, 1207, 1208, 1209, 723, 1354, 1006, 1355, - 1437, 1564, 1517, 1518, 1356, 1357, 1542, 1438, 1565, 1439, - 1598, 1440, 1600, 1649, 1665, 1441, 1624, 1574, 1625, 1523, - 458, 720, 1319, 1358, 1455, 1579, 1428, 1429, 1509, 1591, - 1563, 1559, 1359, 1570, 1458, 857, 1627, 1628, 1629, 1663, - 739, 914, 1026, 1220, 1367, 741, 742, 743, 1022, 744, - 148, 1024, 746, 1222, 1223, 533, 84, 85 + 77, 132, 352, 353, 354, 79, 355, 81, 782, 123, + 124, 125, 515, 105, 82, 356, 891, 892, 912, 907, + 630, 1348, 1349, 1205, 1206, 1207, 723, 1350, 1005, 1351, + 1431, 1558, 1511, 1512, 1352, 1353, 1536, 1432, 1559, 1433, + 1592, 1434, 1594, 1643, 1659, 1435, 1618, 1568, 1619, 1517, + 458, 720, 1315, 1354, 1449, 1573, 1422, 1423, 1503, 1585, + 1557, 1553, 1355, 1564, 1452, 856, 1621, 1622, 1623, 1657, + 739, 913, 1025, 1218, 1363, 741, 742, 743, 1021, 744, + 148, 1023, 746, 1220, 1221, 533, 84, 85 }; -static const short yypact[] = { 139, - 143,-32768,-32768, 5151,-32768, 160, 75, 170, 427, 171, - 239,-32768,-32768, 1485,-32768, 172, 199, 237,-32768,-32768, --32768, 1423, 1651, 1270, 285,-32768, 328, 476,-32768, 3953, - 3953,-32768, 580,-32768, 5151, 326,-32768,-32768, 372,-32768, - 72, 4716,-32768,-32768, 368, 834, 431, 463, 437,-32768, --32768,-32768,-32768, 333, 3529,-32768, 6663,-32768, 1406, 439, --32768, 495,-32768,-32768, 926, 178,-32768, 494,-32768,-32768, - 507, 5858,-32768,-32768,-32768, 1135,-32768,-32768,-32768, 1904, --32768,-32768, 533, 3674, 525,-32768,-32768, 11333,-32768, 11333, --32768, 11333,-32768,-32768,-32768, 170, 427, 328, 560,-32768, - 569, 437,-32768, 461,-32768, 533, 11424, 11424, 563,-32768, --32768,-32768,-32768,-32768, 625, 603, 493, 548, 624, 611, - 643,-32768,-32768, 1626,-32768, 950, 170, 427,-32768, 328, - 560,-32768, 2368, 1524, 645, 8527, 11333,-32768, 11333, 4209, - 4918,-32768,-32768, 2975, 589, 4918,-32768, 1212, 5212, 5212, - 580, 618, 626,-32768, 629, 1201, 657, 675,-32768,-32768, - 726,-32768, 639,-32768, 6539,-32768,-32768, 285, 4339, 683, --32768,-32768,-32768, 368, 7613, 12313, 709, 748,-32768,-32768, - 718, 495, 813, 115, 515, 772,-32768,-32768, 725, 121, --32768,-32768, 5419, 5419, 4518, 1135, 715,-32768,-32768, 349, --32768,-32768, 3093,-32768,-32768,-32768,-32768,-32768, 1406, 737, --32768, 495, 1135,-32768,-32768,-32768, 1541, 1406,-32768, 495, --32768, 7613,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 770,-32768, 437,-32768, 495, 1738, 1711,-32768, --32768, 494,-32768,-32768,-32768,-32768, 838, 533,-32768, 593, - 1925,-32768, 174,-32768,-32768,-32768,-32768,-32768, 5819,-32768, --32768, 286,-32768, 762, 765,-32768,-32768,-32768,-32768, 800, +static const short yypact[] = { 131, + 215,-32768,-32768, 6330,-32768, 67, 149, 64, 151, 163, + 102,-32768,-32768, 1060,-32768, 152, 177, 201,-32768,-32768, +-32768, 862, 986, 2200, 241,-32768, 296, 404,-32768, 3864, + 3864,-32768, 8054,-32768, 6330, 288,-32768,-32768, 326,-32768, + 49, 6732,-32768,-32768, 315, 876, 357, 350, 385,-32768, +-32768,-32768,-32768, 402, 5747,-32768, 4343,-32768, 2560, 763, +-32768, 445,-32768,-32768, 1626, 366,-32768, 391,-32768,-32768, + 421, 2404,-32768,-32768,-32768, 947,-32768,-32768,-32768, 1656, +-32768,-32768, 795, 4628, 419,-32768,-32768, 10831,-32768, 10831, +-32768, 10831,-32768,-32768,-32768, 64, 151, 296, 446,-32768, + 469, 385,-32768, 1423,-32768, 795, 10922, 10922, 442,-32768, +-32768,-32768,-32768,-32768, 79, 457, 418, 756, 771, 496, + 507,-32768,-32768, 1220,-32768, 1200, 64, 151,-32768, 296, + 446,-32768, 1278, 518, 489, 11976, 10831,-32768, 10831, 12155, + 4022,-32768,-32768, 2368, 1154, 4022,-32768, 1384, 4238, 4238, + 8054, 464, 486,-32768, 504, 633, 497, 524,-32768,-32768, + 615,-32768, 529,-32768, 3682,-32768,-32768, 241, 7725, 547, +-32768,-32768,-32768, 315, 5451, 12021, 802, 586,-32768,-32768, + 561, 445, 660, 94, 196, 611,-32768,-32768, 570, 272, +-32768,-32768, 5510, 5510, 12176, 947, 908,-32768,-32768, 515, +-32768,-32768, 3323,-32768,-32768,-32768,-32768,-32768, 2560, 919, +-32768, 445, 947,-32768,-32768,-32768, 2762, 2560,-32768, 445, +-32768, 5451,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 621,-32768, 385,-32768, 445, 1288, 1540,-32768, +-32768, 391,-32768,-32768,-32768,-32768, 831, 795,-32768, 625, + 1480,-32768, 304,-32768,-32768,-32768,-32768,-32768, 6066,-32768, +-32768, 770,-32768, 631, 638,-32768,-32768,-32768,-32768, 644, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 761,-32768,-32768, 838, 5858, 246,-32768,-32768, - 781,-32768,-32768, 12062, 12153, 12244, 12244, 793,-32768,-32768, --32768,-32768,-32768, 799, 822, 829, 831, 833, 850, 560, - 11515, 1835, 12244,-32768,-32768, 12244,-32768,-32768, 12244, 9006, --32768, 12244, 219, 852,-32768, 12244,-32768, 11606,-32768, 12308, - 235, 1053, 1673, 11697,-32768, 907, 2813,-32768, 1062, 2659, - 4116,-32768, 271,-32768, 2540, 2147, 219, 219, 11333, 8527, - 941,-32768, 1835,-32768,-32768, 816, 881, 8333, 844, 848, - 853, 1453, 639,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 603, 493, 548, 1835, 624, 611, 894, 643,-32768, - 915,-32768, 1222, 170, 427,-32768,-32768,-32768,-32768,-32768, --32768, 4631,-32768, 7613, 8107, 2220,-32768, 219, 438,-32768, --32768, 678,-32768, 898, 899,-32768,-32768,-32768, 4918,-32768, --32768, 4918,-32768, 867,-32768,-32768,-32768, 1201, 1201, 1201, --32768,-32768,-32768, 5819, 85, 868, 871,-32768,-32768,-32768, --32768, 8527,-32768, 854, 860,-32768,-32768, 726,-32768, 495, --32768,-32768,-32768,-32768, 133,-32768,-32768,-32768,-32768, 9558, - 11515,-32768,-32768,-32768, 11515, 875,-32768, 8821, 104, 4951, - 6784,-32768,-32768, 6784,-32768, 6875, 6875, 4518, 6997, 874, --32768, 495, 7613,-32768, 877,-32768,-32768, 7348, 1541, 1406, - 7613,-32768, 495,-32768,-32768, 495, 1541,-32768, 960,-32768, - 11333, 770,-32768,-32768, 1738,-32768, 3300, 3998, 838, 495, --32768,-32768, 918, 920, 945, 921,-32768,-32768,-32768,-32768, - 699,-32768, 377, 892, 905,-32768,-32768, 838,-32768,-32768, - 1022,-32768,-32768, 11333, 11515, 781, 9006,-32768, 386, 9006, --32768,-32768,-32768, 11515, 11424, 6459, 6459, 6459, 6459, 12432, --32768,-32768,-32768,-32768, 909, 11789, 11789, 9006, 910, 74, - 925, 969, 927,-32768,-32768,-32768,-32768, 11333,-32768, 9097, - 9006,-32768, 11515, 11515, 9649, 11515, 11515, 11515, 11515, 11515, - 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, - 11515, 11515, 11515, 11515,-32768, 11515,-32768,-32768,-32768,-32768, --32768, 11515, 11515,-32768,-32768, 2473, 517, 1393, 10195,-32768, --32768,-32768, 982, 1925, 1030, 402, 465, 484, 2871, 589, --32768, 2259, 2259, 5052, 929, 962, 995,-32768,-32768, 571, - 10693, 306,-32768, 1057, 533,-32768,-32768, 11515,-32768,-32768, --32768,-32768,-32768, 102, 525,-32768,-32768, 219,-32768, 7613, - 2278,-32768,-32768, 983,-32768, 947, 997,-32768, 941, 894, --32768, 9922, 10013,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 80,-32768, 972, 963, 639, 1222, 1018, 11333,-32768, 1014, --32768,-32768, 1524, 1747, 1046, 262, 1019, 1020,-32768,-32768, - 2004, 12313, 2004, 3372, 926, 7003,-32768, 1023,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 987, 988,-32768, 1039, --32768,-32768, 368,-32768,-32768,-32768,-32768, 91, 227, 1041, - 969,-32768,-32768,-32768,-32768, 8912, 12432,-32768, 881, 999, - 8333,-32768,-32768, 1003,-32768, 1015, 423, 6401, 1017,-32768, - 208, 7151, 1040, 1063, 583,-32768,-32768,-32768,-32768, 6784, - 6784, 7531, 7531, 6997, 1057,-32768,-32768, 7348,-32768, 1065, --32768,-32768, 1016, 104,-32768, 1541,-32768,-32768, 495, 1061, --32768, 493, 548,-32768, 1049,-32768, 643, 1079,-32768,-32768, - 366,-32768,-32768, 1867,-32768, 702, 1335,-32768, 11515, 5922, --32768, 5922, 216, 216, 253, 585, 3892, 7274, 92, 4410, --32768, 191, 216,-32768, 104, 6607, 11333, 11333,-32768, 11333, - 104, 6607,-32768,-32768,-32768,-32768,-32768,-32768, 1932, 1932, - 1932, 219, 1044, 1045, 10969, 995, 1051, 12387, 1052, 1056, - 1093, 2767, 1095, 1097, 1102,-32768, 1073,-32768,-32768, 1074, --32768,-32768, 1124, 83, 89, 497, 90, 11515, 1127,-32768, - 1133, 1090, 12432, 12432,-32768,-32768, 1138, 8146, 12360, 10219, - 5760, 2602, 5270, 4057, 3214, 3214, 3214, 2414, 2414, 1410, - 1410, 309, 309, 309,-32768,-32768, 1094, 1100, 1103, 11515, - 11424,-32768, 517,-32768, 9558, 11515,-32768,-32768,-32768, 11515, --32768,-32768, 1111, 12244, 1108, 1122, 1148, 1183,-32768, 11515, --32768, 11515,-32768, 11515, 809, 3450,-32768,-32768, 3450,-32768, - 99, 809, 1125, 1126,-32768, 1128, 6459, 104,-32768, 104, - 5229,-32768, 6607, 1136, 7995, 7995, 8286, 1130, 11606, 1141, - 2025, 3563, 2147, 1077, 1142,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 11515,-32768, 1835,-32768, 1137,-32768, 12432,-32768, - 12432, 1453, 1143, 11880,-32768, 1145, 1196,-32768, 219,-32768, --32768,-32768,-32768,-32768, 1911, 4631,-32768, 6459, 11333, 2529, - 2529, 2212,-32768,-32768,-32768,-32768, 3093,-32768,-32768,-32768, - 994, 11515,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 368,-32768, 603,-32768, 624, 611, 11515, 1184,-32768, - 602, 615, 694, 969,-32768, 103,-32768, 67,-32768,-32768, --32768,-32768,-32768,-32768, 10785,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1063, 1195,-32768,-32768,-32768, 6459, 1751, 1751, - 1842,-32768,-32768,-32768, 1213,-32768,-32768, 11424,-32768,-32768, --32768,-32768, 1719,-32768, 6607, 12432,-32768, 3193,-32768, 495, - 495,-32768,-32768,-32768,-32768,-32768, 6607, 665, 454, 11515, - 960,-32768, 1221,-32768,-32768,-32768, 554, 666, 1904, 589, - 705, 216, 1223,-32768, 884, 1224, 495, 4820,-32768,-32768, --32768, 495,-32768, 1176, 219, 219, 219,-32768, 1177, 104, - 6607, 104, 6607,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 6459,-32768,-32768, 1202, 1203, 1206, 1208, 987,-32768, 8174, - 9558, 9191, 1179,-32768, 11515,-32768,-32768,-32768, 1199, 1197, - 1204, 6459,-32768,-32768, 1205, 101, 374, 374, 1207, 374, --32768,-32768, 12244, 1302, 11333,-32768, 1209, 1211, 1214,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 104, 1216, --32768, 1210, 2025,-32768,-32768, 2706, 2706, 3546, 4016,-32768, --32768,-32768,-32768,-32768, 12432,-32768,-32768,-32768,-32768, 206, - 1229,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 3832, 2965, - 2965, 3082, 3082, 2212, 3852, 125, 3093,-32768, 3391, 12308, --32768,-32768,-32768, 1234,-32768, 227,-32768, 11515,-32768, 11515, --32768, 11515,-32768, 1835,-32768,-32768, 8634, 1283,-32768, 9282, --32768, 10877, 10877, 8727, 238, 1236, 359,-32768, 9558, 9373, --32768,-32768, 242, 2099, 2099, 2350, 2350, 9558,-32768,-32768, - 1239, 1241, 3300,-32768,-32768,-32768, 104, 1248,-32768, 1267, - 1267, 104, 1251, 11515, 11515, 7646, 495, 6138, 495, 495, - 1172, 495, 6330,-32768,-32768, 5737, 1267,-32768,-32768, 1305, --32768,-32768,-32768, 1255,-32768, 1257, 1260, 11515, 11515, 11515, - 11515, 9558,-32768, 1309,-32768,-32768, 12432,-32768,-32768,-32768, - 559, 1204,-32768,-32768,-32768,-32768,-32768,-32768, 1262,-32768, - 1328, 219,-32768,-32768,-32768, 104,-32768,-32768,-32768,-32768, --32768, 11515,-32768,-32768, 3852, 2965, 2965, 3773, 3773, 6855, --32768, 412, 3391,-32768,-32768, 1269, 1272, 1273, 1286,-32768, - 876, 268, 1321, 764, 775,-32768,-32768,-32768,-32768,-32768, - 11515, 1322, 1325, 1330, 11060, 955, 1835, 622, 692,-32768, --32768, 11151, 1385,-32768,-32768,-32768, 1334,-32768, 7172, 7408, - 2356, 8429,-32768,-32768, 1383,-32768,-32768,-32768, 10304,-32768, --32768, 1292, 1818,-32768,-32768,-32768,-32768, 6459,-32768,-32768, - 9558,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 7646, 7646,-32768, 1267, 703, 826, 11515,-32768,-32768,-32768, - 960, 960, 1267, 1267, 699, 1267,-32768,-32768,-32768, 104, - 104,-32768,-32768,-32768, 1294, 1299, 1300, 1303,-32768, 9558, - 11515,-32768, 559,-32768,-32768,-32768,-32768, 104, 1304, 5387, - 5387, 1057, 6024,-32768,-32768,-32768,-32768, 1286,-32768, 1835, --32768,-32768,-32768,-32768,-32768,-32768, 697, 697, 969, 1323, - 1324, 6698,-32768,-32768,-32768,-32768, 1357, 11515, 1369, 1379, - 1408, 2106, 2120,-32768, 969,-32768,-32768, 1341,-32768,-32768, - 960, 878,-32768, 889, 960, 11242, 906, 300,-32768,-32768, --32768,-32768,-32768,-32768, 441,-32768,-32768, 104, 104,-32768, --32768,-32768, 11515, 11515, 7646, 495, 495,-32768,-32768,-32768, - 6180,-32768,-32768, 104, 104,-32768,-32768,-32768,-32768,-32768, - 1354,-32768,-32768,-32768, 6274, 6274, 5993, 1348, 1375,-32768, --32768,-32768, 11424,-32768,-32768,-32768, 1454, 10600, 5587, 11424, - 11515,-32768, 10412,-32768, 1414,-32768,-32768, 1421,-32768, 1408, - 2106,-32768,-32768, 726,-32768,-32768, 11971, 11971, 9467,-32768, --32768, 969,-32768,-32768, 7646, 7646,-32768, 1267, 1267,-32768, - 10104,-32768,-32768,-32768,-32768,-32768, 1348, 7731,-32768,-32768, - 1371, 432, 7613, 969, 10506,-32768,-32768, 103,-32768,-32768, - 1416, 1377, 12410, 10412,-32768,-32768,-32768,-32768, 1286, 108, --32768,-32768,-32768,-32768,-32768, 1376, 12343, 1400, 1391, 1392, - 969,-32768, 960,-32768,-32768,-32768,-32768, 708,-32768, 9740, --32768,-32768,-32768,-32768, 1286, 1491, 1443,-32768,-32768,-32768, - 431, 368,-32768,-32768,-32768, 495, 103,-32768, 11515, 1444, --32768, 1452,-32768, 969, 10412, 1428, 145, 1463,-32768,-32768, - 154,-32768, 1461,-32768, 1424,-32768,-32768,-32768,-32768, 11515, - 1491, 1470, 1491,-32768, 133,-32768,-32768,-32768, 9831, 1429, - 201,-32768,-32768,-32768, 9558, 1431,-32768, 1525, 1490,-32768, --32768,-32768, 329,-32768, 10506, 1535, 1492,-32768,-32768,-32768, - 1556, 1557,-32768 +-32768,-32768, 629,-32768,-32768, 831, 2404, 182,-32768,-32768, + 690,-32768,-32768, 11560, 11651, 11742, 11742, 701,-32768,-32768, +-32768,-32768,-32768, 722, 678, 745, 755, 767, 943, 446, + 11013, 1764, 11742,-32768,-32768, 11742,-32768,-32768, 11742, 8412, +-32768, 11742, 543, 800,-32768, 11742,-32768, 11104,-32768, 12433, + 369, 1553, 2934, 11195,-32768, 853, 3244,-32768, 1595, 4989, + 5987,-32768, 410,-32768, 1793, 2656, 543, 543, 10831, 11976, + 535,-32768, 1764,-32768,-32768, 778, 815, 12340, 781, 786, + 805, 1400, 529,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 457, 418, 756, 1764, 771, 496, 803, 507,-32768, + 860,-32768, 868, 64, 151,-32768,-32768,-32768,-32768,-32768, +-32768, 6108,-32768, 5451, 2178, 1839,-32768, 543, 577,-32768, +-32768, 812,-32768, 859, 872,-32768,-32768,-32768, 4022,-32768, +-32768, 4022,-32768, 820,-32768,-32768,-32768, 633, 633, 633, +-32768,-32768,-32768, 6066, 72, 841, 849,-32768,-32768,-32768, +-32768, 11976,-32768, 1018, 1020,-32768,-32768, 615,-32768, 445, +-32768,-32768,-32768,-32768, 114,-32768,-32768,-32768,-32768, 8964, + 11013,-32768,-32768,-32768, 11013, 854,-32768, 7021, 112, 12196, + 6441,-32768,-32768, 6441,-32768, 7262, 7262, 12176, 12237, 879, +-32768, 445, 5451,-32768, 873,-32768,-32768, 12094, 2762, 2560, + 5451,-32768, 445,-32768,-32768, 445, 2762,-32768, 982,-32768, + 10831, 621,-32768,-32768, 1288,-32768, 1189, 4503, 831, 445, +-32768,-32768, 951, 954, 959, 958,-32768,-32768,-32768,-32768, + 1007,-32768, 420, 883, 926,-32768,-32768, 831,-32768,-32768, + 896,-32768,-32768, 10831, 11013, 690, 8412,-32768, 423, 8412, +-32768,-32768,-32768, 11013, 10922, 3179, 3179, 3179, 3179, 12411, +-32768,-32768,-32768,-32768, 932, 11287, 11287, 8412, 941, 61, + 946, 988, 950,-32768,-32768,-32768,-32768, 10831,-32768, 8503, + 8412,-32768, 11013, 11013, 9055, 11013, 11013, 11013, 11013, 11013, + 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, + 11013, 11013, 11013, 11013,-32768, 11013,-32768,-32768,-32768,-32768, +-32768, 11013, 11013,-32768,-32768, 3082, 337, 833, 9601,-32768, +-32768,-32768, 1013, 1480, 1078, 444, 520, 563, 1860, 1154, +-32768, 1421, 1421, 5141, 962, 999, 1046,-32768,-32768, 600, + 10099, 1711,-32768, 939, 795,-32768,-32768, 11013,-32768,-32768, +-32768,-32768,-32768, 264, 419,-32768,-32768, 543,-32768, 5451, + 2853,-32768,-32768, 1031,-32768, 995, 1047,-32768, 535, 803, +-32768, 9328, 9419,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 103,-32768, 1016, 1005, 529, 868, 1068, 10831,-32768, 1067, +-32768,-32768, 518, 1319, 1095, 273, 1071, 1091,-32768,-32768, + 2743, 12021, 2743, 3527, 1626, 11811,-32768, 1098,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1036, 1057,-32768, 1105, +-32768,-32768, 315,-32768,-32768,-32768,-32768, 96, 331, 1104, + 988,-32768,-32768,-32768,-32768, 8318, 12411,-32768, 815, 1063, + 12340,-32768,-32768, 1064,-32768, 1069, 170, 4146, 1072,-32768, + 189, 11871, 1116, 1120, 575,-32768,-32768,-32768,-32768, 6441, + 6441, 12135, 12135, 12237, 939,-32768,-32768, 12094,-32768, 1122, +-32768,-32768, 1058, 112,-32768, 2762,-32768,-32768, 445, 1113, +-32768, 418, 756,-32768,-32768, 507, 1130,-32768,-32768, 321, +-32768,-32768, 1979,-32768, 1197, 501,-32768, 11013, 5403,-32768, + 5403, 99, 99, 336, 583, 2287, 7135, 53, 5058,-32768, + 186, 99,-32768, 112, 6496, 10831, 10831,-32768, 10831, 112, + 6496,-32768,-32768,-32768,-32768,-32768,-32768, 967, 967, 967, + 543, 1090, 1092, 10467, 1046, 1102, 12366, 1107, 1108, 1137, + 5728, 1141, 1143, 1150,-32768, 1121,-32768,-32768, 1123,-32768, +-32768, 1167, 406, 634, 77, 567, 11013, 1169,-32768, 1146, + 1126, 12411, 12411,-32768,-32768, 1175, 12451, 7304, 8078, 4526, + 4063, 3194, 4207, 2423, 2423, 2423, 2363, 2363, 1527, 1527, + 915, 915, 915,-32768,-32768, 1131, 1132, 1139, 11013, 10922, +-32768, 337,-32768, 8964, 11013,-32768,-32768,-32768, 11013,-32768, +-32768, 1149, 11742, 1140, 1164, 1181, 1218,-32768, 11013,-32768, + 11013,-32768, 11013, 389, 2977,-32768,-32768, 2977,-32768, 115, + 389, 1159, 1162,-32768, 1163, 3179, 112,-32768, 112, 3446, +-32768, 6496, 1165, 10283, 10283, 5878, 1171, 11104, 1177, 2159, + 4339, 2656, 978, 1187,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 11013,-32768, 1764,-32768, 1180,-32768, 12411,-32768, 12411, + 1400, 1190, 11378,-32768, 1188, 1212,-32768, 543,-32768,-32768, +-32768,-32768,-32768, 1749, 6108,-32768, 3179, 10831, 1883, 1883, + 4805,-32768,-32768,-32768,-32768, 3323,-32768,-32768,-32768, 1070, + 11013,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 315,-32768, 457,-32768, 771, 496, 11013, 1239,-32768, 593, + 612, 622, 988,-32768, 84,-32768, 123,-32768,-32768,-32768, +-32768,-32768,-32768, 10191,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 1120, 1236,-32768,-32768,-32768, 3179, 1948, 1948, 2223, +-32768,-32768,-32768, 1240,-32768,-32768,-32768,-32768,-32768,-32768, + 1470,-32768, 6496, 12411,-32768, 3756,-32768, 445, 445,-32768, +-32768,-32768,-32768,-32768, 6496, 553, 658, 11013, 982,-32768, + 1248,-32768,-32768,-32768, 195, 640, 1656, 1154, 657, 99, + 1252,-32768, 723, 1251, 445, 6586,-32768,-32768,-32768, 445, +-32768, 1207, 543, 543, 543,-32768, 1213, 112, 6496, 112, + 6496,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 3179,-32768, +-32768, 1232, 1238, 1250, 1254, 1036,-32768, 12274, 8964, 8597, + 1224,-32768, 11013,-32768,-32768,-32768, 1241, 1244, 1245, 3179, +-32768,-32768, 1246, 355, 653, 653, 1255, 653,-32768,-32768, + 11742, 1347, 10831,-32768, 1257, 1262, 1267,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 112, 1274,-32768, 1270, + 2159,-32768,-32768, 2048, 2048, 6891, 4726,-32768,-32768,-32768, +-32768,-32768, 12411,-32768,-32768,-32768,-32768, 207, 1276,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 3303, 2078, 2078, 2304, + 2304, 4805, 3372, 166, 3323,-32768, 2674, 12433,-32768,-32768, +-32768, 1282,-32768, 331,-32768, 11013,-32768, 11013,-32768, 11013, +-32768, 1764,-32768,-32768, 8167, 1329,-32768, 8688,-32768, 10375, + 10375, 7983, 297, 1284, 320,-32768, 8964, 8779,-32768,-32768, + 223, 2550, 2550, 1093, 1093, 8964,-32768,-32768, 1189,-32768, +-32768,-32768, 112, 1285,-32768, 1298, 1298, 112, 1287, 11013, + 11013, 8214, 445, 6285, 445, 445, 1012, 445, 6486,-32768, +-32768, 7823, 1298,-32768,-32768, 1343,-32768,-32768,-32768, 1293, +-32768, 1294, 1307, 11013, 11013, 11013, 11013, 8964,-32768, 1353, +-32768,-32768, 12411,-32768,-32768,-32768, 541, 1245,-32768,-32768, +-32768,-32768,-32768,-32768, 1306,-32768, 1372, 543,-32768,-32768, +-32768, 112,-32768,-32768,-32768,-32768,-32768, 11013,-32768,-32768, + 3372, 2078, 2078, 3076, 3076, 7405,-32768, 348, 2674,-32768, +-32768, 1313, 1321, 1324, 1338,-32768, 1061, 235, 1373, 696, + 766,-32768,-32768,-32768,-32768,-32768, 11013, 1380, 1374, 1386, + 10558, 522, 1764, 904, 686,-32768,-32768, 10649, 1436,-32768, +-32768,-32768, 1387,-32768, 7486, 11916, 5255, 6192,-32768,-32768, + 1434,-32768,-32768,-32768, 9710,-32768,-32768, 1345, 424,-32768, +-32768,-32768,-32768, 3179,-32768,-32768, 8964,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 8214, 8214,-32768, 1298, 734, 824, + 11013,-32768,-32768,-32768, 982, 982, 1298, 1298, 1007, 1298, +-32768,-32768,-32768, 112, 112,-32768,-32768,-32768, 1348, 1351, + 1352, 1354,-32768, 8964, 11013,-32768, 541,-32768,-32768,-32768, +-32768, 112, 1357, 4445, 4445, 939, 6713,-32768,-32768,-32768, +-32768, 1338,-32768, 1764,-32768,-32768,-32768,-32768,-32768,-32768, + 679, 679, 988, 1358, 1402, 7870,-32768,-32768,-32768,-32768, + 1416, 11013, 1435, 1439, 1445, 1992, 2096,-32768, 988,-32768, +-32768, 1408,-32768,-32768, 982, 1065,-32768, 1079, 982, 10740, + 1094, 263,-32768,-32768,-32768,-32768,-32768,-32768, 426,-32768, +-32768, 112, 112,-32768,-32768,-32768, 11013, 11013, 8214, 445, + 445,-32768,-32768,-32768, 5606,-32768,-32768, 112, 112,-32768, +-32768,-32768,-32768,-32768, 1394,-32768,-32768,-32768, 7452, 7452, + 12076, 2017, 1414,-32768,-32768,-32768, 10922,-32768,-32768,-32768, + 1494, 10006, 7612, 10922, 11013,-32768, 9818,-32768, 1451,-32768, +-32768, 1461,-32768, 1445, 1992,-32768,-32768, 615,-32768,-32768, + 11469, 11469, 8873,-32768,-32768, 988,-32768,-32768, 8214, 8214, +-32768, 1298, 1298,-32768, 9510,-32768,-32768,-32768,-32768,-32768, + 2017, 12279,-32768,-32768, 1409, 220, 5451, 988, 9912,-32768, +-32768, 84,-32768,-32768, 1457, 1412, 12389, 9818,-32768,-32768, +-32768,-32768, 1338, 95,-32768,-32768,-32768,-32768,-32768, 1424, + 12296, 1426, 1422, 1425, 988,-32768, 982,-32768,-32768,-32768, +-32768, 688,-32768, 9146,-32768,-32768,-32768,-32768, 1338, 1523, + 1478,-32768,-32768,-32768, 357, 315,-32768,-32768,-32768, 445, + 84,-32768, 11013, 1485,-32768, 1488,-32768, 988, 9818, 1448, + 680, 1490,-32768,-32768, 122,-32768, 1487,-32768, 1450,-32768, +-32768,-32768,-32768, 11013, 1523, 1492, 1523,-32768, 114,-32768, +-32768,-32768, 9237, 1452, 683,-32768,-32768,-32768, 8964, 1453, +-32768, 1545, 1498,-32768,-32768,-32768, 224,-32768, 9912, 1554, + 1505,-32768,-32768,-32768, 1567, 1569,-32768 }; static const short yypgoto[] = {-32768, - 1558,-32768, -317, 1389, -391, -1, 2, 1561,-32768, 1530, --32768,-32768, 409,-32768, 424,-32768, 487,-32768, 107, 893, - 55, 10,-32768,-32768, -625,-32768,-32768, 613, 65, 1399, - 1146, 1425, -704, -20, -167, 12, 51,-32768,-32768,-32768, --32768,-32768, 795,-32768,-32768,-32768,-32768,-32768,-32768, 399, - 337,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1506, -491, 7450, 1368, -59, -578, -314, 215, - 1468, -522,-32768, 864,-32768, 176,-32768, -1402,-32768, -1431, - -57,-32768, 2609, 1190, -240, 330, -545,-32768, -861, 6999, - -296, 2057, 5377, 1311, -327, -48, -67, 1918, -138, -55, - 241,-32768,-32768,-32768, -336,-32768, -159,-32768,-32768, -1264, - -51, -342, 4047, 70, 1980, -127, 15, 252, -196, -4, - -13, -160, -164, 31, 41, -96,-32768, -234,-32768,-32768, --32768,-32768,-32768, 419, 1544, 1028,-32768, 663,-32768,-32768, - -978, -332, 896,-32768,-32768,-32768,-32768,-32768, 254,-32768, --32768,-32768,-32768,-32768,-32768, 961, -374,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1378,-32768, 390, 576,-32768,-32768, --32768, 547, -729,-32768,-32768,-32768,-32768,-32768,-32768, 828, --32768, 375, 973,-32768, 688, 1029, 4499, 79, 36, -450, - 1436, 1803, 135,-32768, -481,-32768, 9, 1617, 20, -91, - 673, -87, 5957, 1291,-32768, 6634, 3177, 1757, -22, -109, --32768, 1515, -52,-32768, 6329, 4146, -423,-32768, 2481, 640, --32768,-32768, 289,-32768,-32768, 434, 1, -379,-32768,-32768, --32768,-32768, -1422,-32768, -1253, -1439,-32768,-32768,-32768,-32768, + 1573,-32768, -309, 1406, -341, 58, 9, 1576,-32768, 1544, +-32768,-32768, 275,-32768, 417,-32768, 453,-32768, 133, 905, + 43, 10,-32768,-32768, -660,-32768,-32768, 618, 52, 1417, + 1145, 1420, -709, -16, -166, 33, -31,-32768,-32768,-32768, +-32768,-32768, 796,-32768,-32768,-32768,-32768,-32768,-32768, 398, + 47,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1501, -661, 7190, 1364, 7, -590, -307, 76, + 1465, -534,-32768, 662,-32768, 164,-32768, -1398,-32768, -1444, + -45,-32768, 2026, 1438, -284, 338, -556,-32768, -850, 6665, + 31, 1955, 4797, 1322, -331, -60, -97, 2135, -117, -74, + 528,-32768,-32768,-32768, -332,-32768, -160,-32768,-32768, -1267, + -51, -334, 6208, 107, 1546, -142, 23, 342, -207, -4, + -188, -172, -167, -19, -13, -91,-32768, -202,-32768,-32768, +-32768,-32768,-32768, -140, 1273, 830,-32768, 671,-32768,-32768, + -972, -266, 898,-32768,-32768,-32768,-32768,-32768, 1,-32768, +-32768,-32768,-32768,-32768,-32768, 968, -380,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 1390,-32768, 407, 608,-32768,-32768, +-32768, 578, -743,-32768,-32768,-32768,-32768,-32768,-32768, 867, +-32768, 422, 992,-32768, 712, 1066, 2660, 106, 36, -470, + 1467, 2911, 1464,-32768, -488,-32768, 14, 1644, 142, -68, + 613, -79, 5336, 1323,-32768, 6215, 2861, 1736, -18, -114, +-32768, 1549, -58,-32768, 5701, 3829, -196,-32768, 2335, 1088, +-32768,-32768, 339,-32768,-32768, 463, 54, -448,-32768,-32768, +-32768,-32768, -1402,-32768, -1276, -1434,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 16,-32768,-32768,-32768,-32768,-32768, 71, -1347,-32768,-32768, - -45,-32768,-32768,-32768,-32768, -1426, 8,-32768, 14,-32768, - -683, -436, 636,-32768,-32768,-32768,-32768, -397,-32768, -393, - -142,-32768, 1084, 284,-32768, 34,-32768, -209 + 66,-32768,-32768,-32768,-32768,-32768, 121, -1348,-32768,-32768, + -37,-32768,-32768,-32768,-32768, -1436, 69,-32768, 59,-32768, + -713, -372, 684,-32768,-32768,-32768,-32768, -392,-32768, -384, + -184,-32768, 1556, 347,-32768, -63,-32768, -234 }; -#define YYLAST 12517 +#define YYLAST 12536 static const short yytable[] = { 59, - 122, 435, 35, 196, 697, 36, 443, 632, 698, 542, - 543, 445, 490, 42, 444, 1004, 392, 432, 57, 642, - 253, 1123, 103, 76, 256, 782, 552, 695, 641, 553, - 59, 740, 554, 35, 763, 564, 36, 59, 298, 569, - 169, 516, 646, 647, 42, 842, 400, 610, 713, 57, - 509, 42, 209, 174, 76, 674, 176, 420, 423, 881, - 1047, 76, 1049, 538, 541, 398, 399, 247, 937, 980, - 1079, 391, 177, 55, 201, 724, 213, 1456, 1567, 296, - 1510, 489, 72, 350, 397, 350, 182, 350, 256, 190, - 497, 260, 1571, 703, 704, 611, 170, 572, 1471, 528, - 507, 611, 350, 350, 55, 1474, 171, 208, 141, 146, - 1012, 175, 519, 72, 364, 452, 249, 1572, 611, 1581, - 72, 595, 1084, 196, 987, 1597, 1210, 728, 1089, 1076, - 163, 406, 350, 721, 350, 1204, 1599, 89, -1, 952, - 309, 1594, -2, 91, 138, -141, 645, 256, 621, 88, - 405, -142, -144, 528, 1644, 407, 26, 90, 1013, 410, - 59, 1014, 297, 92, 59, 745, 596, 169, 467, 164, - 1606, 209, -602, -357, 916, 1211, 440, 453, 42, 57, - 174, -296, 840, 176, 76, 1634, 403, 953, 76, 199, - 190, 722, 710, 825, 201, 213, 826, 1623, 993, 177, - 1077, 1638, 523, 495, 498, 404, 841, 1641, 1284, 454, - 986, 1205, -357, 468, 72, 1607, 453, -602, -602, 1017, - 86, 517, 1656, 170, 89, 1597, 208, 419, 422, 994, - 772, 773, -602, 171, 55, 190, 240, 1002, 175, 1150, - 241, 201, 15, 72, 90, 93, -416, 72, 454, 127, - 128, 1080, 1642, 493, 1569, 58, 260, 1510, 768, 552, - 553, 1377, 1378, 1658, 107, 1302, 518, 1018, 87, 1575, - 1019, 471, 474, 155, 995, 804, -416, 1052, 1399, 617, - -416, 26, 595, 996, 997, -303, 58, 94, 718, 8, - 521, 108, 247, 58, 565, 178, 566, 608, 616, 1081, - 26, 1368, 130, 131, 357, 682, 358, 642, 1659, 199, - 965, 1053, 221, 1303, -579, 1054, 529, -579, 637, 998, - 1604, 966, 991, 992, -416, 350, 530, 596, 1432, 109, - -303, -303, 677, 938, 363, 295, 1122, 967, 296, 1175, - 432, 1005, 130, 131, 697, -296, 247, 1055, 1023, 1369, - 101, 408, 700, 919, 350, 651, 199, 956, 115, 135, - 1432, 1238, 766, 638, 260, -579, 522, -579, -579, 740, - -579, 1639, 1041, 1243, 405, 740, 1433, 127, 128, 652, - -583, -579, 519, -579, 420, 423, 761, 58, 1666, 155, - 155, 155, 593, 594, 767, 632, -583, 694, -579, -579, - 209, 233, 137, 1042, 516, 1482, -627, 1264, 1541, 1266, - 649, 685, 38, -579, 1488, 1489, 58, 1490, 161, 1412, - 58, 297, 178, 201, 815, -583, 189, 39, 26, 650, - 130, 131, 162, 621, 1012, 155, 1667, 59, 72, 215, - 216, -583, 485, 38, 888, 14, 1178, 1161, 796, 899, - 1164, -627, -627, 715, 889, 183, 176, 1230, 39, -601, - 388, 76, 221, 738, 8, 9, -627, 890, 20, 816, - 221, 221, 177, 1152, 179, 495, 498, 23, 825, 621, - 696, 91, 1013, 495, 416, 1014, 740, -831, -305, 410, - 40, 188, 1191, 1192, 900, 498, 350, 568, 222, 223, - 221, 92, 201, 59, -601, -601, 790, 1097, 89, 363, - 201, 175, 901, 565, 498, 566, 1245, 130, 131, -601, - 72, 40, 798, 187, 825, 18, 1079, 803, 90, 350, - 138, 903, 350, -305, -305, 350, 8, 9, 199, 769, - 350, 832, 832, 832, 832, 990, 696, 377, -299, 221, - 139, 1502, 1124, 350, 750, 751, 243, 902, 793, -143, - 608, 782, 459, 350, 884, 245, 350, 90, 697, 1584, - 1585, 137, 698, 648, 502, 504, 904, 797, -366, 460, - 15, 885, 7, 127, 128, 10, 72, 514, 682, 130, - 131, 695, 127, 128, 295, 962, 642, 1132, 940, 299, - 449, 296, 378, 221, 747, 641, 884, 461, 740, 886, - 18, 58, -366, 747, 138, 961, -366, 199, 922, 694, - 740, 21, 92, 885, 1203, 199, 738, 362, 552, 553, - 1027, 1037, 1056, 1039, 26, 528, 27, 28, 1043, 973, - 511, 978, 979, 260, 1174, 130, 131, 91, -366, 1197, - 149, 886, 1411, 693, 740, 372, 740, 376, 551, 221, - 150, 122, 1199, 923, 924, 380, 129, 92, 32, 201, - 1300, 1301, 151, 350, 392, 1028, 26, 1057, 379, 1451, - 1289, 127, 128, 374, 297, 512, 979, 209, 572, 375, - -367, 247, 15, 58, 1198, 178, 1003, 381, 137, 660, - 906, 909, 696, 1285, 1286, 158, 1288, 1200, 670, 696, - 201, 976, 201, 201, 1002, 770, 155, 155, 155, 693, - 401, 660, 189, 645, -367, -296, 363, 1244, -367, -120, - 796, 15, 796, 425, 130, 131, 303, 694, 796, 88, - 796, 1201, 221, 221, 1512, 1062, 813, -7, 822, 1044, - 221, 782, 495, 91, 1454, 1618, 91, 201, 522, 58, - -367, 1021, 221, -120, 433, 1483, 137, -120, 222, 446, - 1259, 1260, 1261, 92, 483, 484, 92, 88, 1273, 1275, - 164, 221, -622, 826, 199, 59, 1202, 59, 790, 1513, - 790, 814, 432, 209, 1045, 59, 491, 492, 790, -120, - 1619, 694, 350, 350, 798, 350, 798, 694, 447, 803, - 448, 803, 127, 128, 798, 451, 1068, 1075, 89, 803, - 696, 158, 158, 158, 1193, 199, 1435, 199, 199, 91, - 1029, 1030, 463, 1050, 1051, 464, 1290, 1436, 90, 18, - 793, 771, 793, 1082, 501, 215, 216, 1061, 1071, 92, - 793, 14, 1094, 1095, 1096, 524, 621, 295, 525, 797, - 15, 1048, 526, 26, -416, 130, 131, 158, 72, 797, - 72, 527, 199, 535, 20, 693, 350, 1275, 72, 622, - 89, 1126, 693, 23, 696, 544, 1364, 1366, 1484, 623, - 696, 545, 959, -416, -416, 1370, 546, 1233, 1234, 1235, - 90, 624, 625, 547, 221, 548, 849, 549, -118, -183, - 15, 568, 832, 483, 716, 552, 553, 611, 694, 491, - 717, 256, 738, 661, 137, -183, 1645, -183, 95, 96, - 97, 1067, 225, 226, 227, 1430, 1431, 483, 1535, 1409, - 662, 260, -118, 95, 110, 111, -118, 221, 491, 1536, - 897, 664, 116, 117, 118, 665, 18, 95, 110, 111, - 666, 694, 228, 832, 350, 483, 1540, 694, 678, 679, - 366, 370, 90, 92, 707, 685, -6, 1416, -118, 711, - 26, 757, 98, 99, 229, 733, 15, 762, 629, 633, - 636, 221, 807, 693, 808, 810, 1062, 112, 113, 809, - 653, 696, 817, 906, 909, 696, 119, 120, 826, 253, - 738, 112, 113, 256, 432, 818, 836, 838, 796, 221, - 964, 1085, 1086, 832, 1087, 127, 128, 722, 230, 231, - 232, 981, 839, 350, 841, 1448, 896, 898, 1477, 915, - 694, 58, 919, 58, 696, 564, 432, 943, 1180, 1181, - 696, 58, 694, -52, 917, 944, 945, 693, -52, 1516, - 8, 9, 849, 693, 954, 127, 128, 1068, 501, -52, - 363, 955, 958, 59, 960, 1533, 790, 1500, 130, 131, - 8, 9, 20, 968, 969, 221, 694, 982, 694, 224, - 420, 423, 798, 696, -299, 988, 832, 803, 1061, 989, - 597, 1247, 252, 453, -830, 363, 1009, 1249, 1250, 621, - 1010, 1247, 1252, 130, 131, 1250, 26, 832, 130, 131, - 420, 423, 1011, 696, 1016, 363, 1033, 1025, 793, 1032, - 350, 256, 622, 130, 131, 696, 1036, 252, 1040, 598, - 599, 1038, 623, 600, 601, 602, 603, 797, 158, 158, - 158, 1098, 1099, 694, 624, 625, 72, 522, 1100, 1102, - 697, 15, 1516, 1103, 1590, -416, 432, 224, 1104, 696, - 1105, 696, 1106, 1003, 693, 127, 1395, 1107, 693, 694, - 1108, 1109, 1067, 224, 1516, 1464, -140, 1035, 1462, 1111, - 1467, 523, 1112, 559, -416, -416, 796, 1114, 410, -416, - 1115, 1116, 1351, 300, 1131, 1342, 10, 1117, 1343, 738, - 1134, 1615, 155, 1118, 95, 414, 415, 693, 1133, 826, - 363, 1350, 1135, 693, 300, 394, 395, 10, 130, 131, - 1136, 18, 1143, 1144, 906, 909, 696, 1154, 1145, 224, - 552, 553, 21, 1196, 1516, 1167, 1151, 224, 1155, 1160, - 1169, 59, 522, 1172, 790, 155, 1173, 426, 427, 1219, - 1306, 1307, 696, 21, 224, 724, 693, 1392, 98, 113, - 798, 428, 1392, 127, 128, 803, 26, 1229, 27, 320, - 1248, 429, 1253, 1258, 1262, 72, 1254, 1276, 670, 32, - 1306, 1307, 696, 430, 1268, 1269, 693, 1461, 1270, 1461, - 1271, 964, 1029, 1030, 1279, 694, 793, 1278, 693, 1291, - 32, 1280, 1283, 747, 129, 1204, 1293, 1287, 1294, 747, - 1299, 1295, 1660, 1298, 26, 797, 130, 131, 732, 58, - 975, 460, 629, 633, 72, 636, 1304, 1351, 127, 128, - 1342, 1314, 693, 1363, 693, 209, 1372, 1351, 1373, 1292, - 1342, 8, 9, 1343, 1351, 1376, 1350, 1342, 1380, -664, - 1343, 747, 1402, 832, 1403, 528, 1350, 1404, 201, 1465, - 201, 1410, 1414, 1350, 1580, 1415, 1424, 633, 18, 1425, - 1426, 1427, 1391, 1434, 1443, 1444, 1420, 1421, 696, 26, - 1445, 130, 131, 1457, 1459, 621, 127, 128, 1472, 1475, - 559, 1496, 26, 559, 130, 131, 1497, 1498, 829, 693, - 1499, 1504, 214, 215, 216, 1519, 1520, 1524, 1505, 14, - 72, 559, 155, 155, 155, 95, 110, 111, 1506, 1526, - 72, 1486, 1487, 1534, 559, 693, 18, 72, 856, 747, - 1507, 625, 20, 375, 1632, 420, 423, 26, 1274, 130, - 131, 23, 155, 155, 155, 95, 110, 111, 58, 667, - 668, 669, 1527, 888, 1556, 693, 879, 1558, 1240, 1241, - 1566, 633, 895, 889, 1576, 1577, 1601, 224, 1592, 112, - 113, 114, 1608, 199, 1602, 199, 890, 95, 96, 97, - 590, 591, 592, 593, 594, 1255, 1610, 224, 1613, 1614, - 1257, 1626, 694, 1630, 1636, 493, 224, 58, 1562, 112, - 113, 1593, 1637, 1351, 1351, 1562, 1342, 1342, 1351, 1343, - 1640, 1342, 1643, 224, 1343, 1647, 300, 394, 395, 10, - 1652, 1648, 1350, 1350, 350, 1662, 1657, 1350, 1661, 26, - 1320, 98, 99, 100, 1140, 1669, 1274, 494, 215, 216, - 1664, 1140, 1670, 694, 14, 1672, 1673, 1, 442, 1531, - 1351, 693, 5, 1342, 160, 21, 1343, 441, 957, 1351, - 1140, 18, 1342, 140, 140, 1343, 156, 20, 1176, 1350, - 27, 320, 201, 1420, 1421, 696, 23, 714, 1350, 439, - 1631, 297, 1072, 58, 1315, 1562, 72, 72, 297, 360, - 212, 72, 220, 58, 221, 503, 409, 1668, 237, 534, - 58, 1413, 32, 1515, 1168, 750, 751, 946, 1236, 506, - 1351, 1008, 1374, 1342, 1256, 1074, 1343, 1397, 382, 383, - 384, 947, 1166, 1616, 883, 486, 696, 618, 390, 1350, - 1470, 1360, 747, 72, 158, 1654, 1646, 147, 1651, 1605, - 730, 1476, 72, 116, 117, 118, 1653, 736, 1218, 0, - 1351, 0, 0, 1342, 1383, 1384, 1343, 1393, 1394, 0, - 1396, 0, 1449, 1450, 385, 0, 8, 9, 297, 1350, - 12, 13, 386, 387, 140, 0, 14, 158, 0, 140, - 0, 747, 156, 156, 156, 0, 0, 199, 0, 0, - 16, 0, 17, 72, 0, 26, 155, 119, 120, 20, - 0, 0, 0, 95, 96, 97, 0, 0, 23, 212, - 0, 116, 772, 773, 823, 450, 0, 26, 0, 130, - 131, 604, 0, 0, 0, 0, 470, 470, 479, 0, - 95, 96, 97, 72, 0, 0, 0, 0, 775, 382, - 383, 384, 220, 1129, 8, 9, 0, 411, 693, 246, - 496, 220, 413, 0, 295, 605, 1511, 98, 99, 58, - 58, 295, 0, 26, 58, 119, 120, 155, 155, 155, - 0, 18, 0, 0, 0, 877, 363, 0, 1529, 1532, - 559, 878, 1140, 0, 98, 99, 0, 0, 0, 1480, - 1481, 26, 140, 386, 387, 26, 0, 130, 131, 693, - 147, 0, 0, 0, 0, 221, 58, 0, 1140, 0, - 0, 1224, 0, 0, 1140, 58, 0, 935, 0, -305, - 0, 1225, 0, 0, 0, 0, 258, 95, 110, 111, - 0, 0, 0, 1226, -305, 8, 9, 1034, -305, 0, - 519, 295, 0, 0, 158, 158, 158, 0, 0, 0, - 258, 0, 0, 0, 0, -305, 0, 1578, 0, 116, - 772, 773, 18, 156, 0, 520, 58, -305, -305, 0, - -305, 0, -305, 0, 158, 158, 158, 0, 1083, 258, - 0, 112, 113, 0, 1088, 0, 26, 0, 130, 131, - 258, 1231, 0, 1547, 1548, 1549, 7, 8, 250, 10, - -305, -305, 1224, 95, 110, 111, 58, 225, 226, 227, - 0, 0, 1225, 119, 120, -305, 0, 95, 110, 111, - 513, 0, 224, 0, 1226, 127, 128, 0, 0, 224, - 519, 18, 0, 0, 1140, 21, 0, 228, 212, 220, - 153, 0, 251, 0, 0, 0, 0, 0, 224, 258, - 27, 28, 140, 1582, 1583, 140, 21, 112, 113, 0, - 0, 156, 156, 156, 0, 0, 0, 140, 0, 0, - 0, 112, 113, 0, 252, 0, 26, 0, 130, 131, - 0, 0, 32, 0, 258, 472, 475, 0, 0, 0, - 0, 1146, 529, 1147, 0, 0, 7, 8, 9, 10, - 0, 0, 530, 0, 470, 0, 0, 470, 258, 479, - 479, 479, 0, 0, 0, 450, 0, 300, 127, 128, - 10, 470, 496, 220, 1633, 705, 450, 0, 706, 0, - 496, 0, 0, 0, 0, 21, 0, 0, 0, 0, - 709, 621, 0, 450, 0, 18, 0, 0, 26, 0, - 27, 28, 0, 0, 0, 0, 21, 421, 424, 1119, - 1120, 0, 621, 0, 970, 1125, 0, 559, 0, 26, - 156, 27, 320, 156, 971, 0, 0, 411, 0, 1137, - 413, 1138, 32, 1139, 0, 1156, 972, 625, 0, 156, - 156, 156, 8, 9, 520, 1157, 0, 13, 95, 110, - 111, 258, 153, 32, 156, 0, 0, 1158, 625, 0, - 0, 0, 95, 110, 111, 0, 0, 0, 0, 18, - 0, 1405, 1406, 1407, 1408, 0, 0, 0, 158, 0, - 0, 0, 0, 1171, 340, 0, 340, 1140, 340, 639, - 8, 9, 10, 26, 0, 130, 131, 0, 0, 0, - 0, 0, 112, 1528, 0, 905, 905, 912, 258, 1224, - 0, 0, 0, 1263, 931, 1265, 112, 1530, 0, 1225, - 224, 0, 0, 0, 0, 309, 640, 1194, 21, 0, - 0, 1226, 0, 340, 220, 340, 1140, 0, 1447, 0, - 0, 26, 0, 130, 131, 0, 224, 0, 0, 158, - 158, 158, 224, 0, 7, 8, 9, 10, 167, 12, - 13, 0, 0, 735, 0, 14, 214, 215, 216, 0, - 0, 0, 1297, 14, 0, 212, 0, 220, 237, 16, - 0, 17, 18, 0, 0, 0, 0, 561, 20, 0, - 18, 0, 0, 21, 224, 0, 20, 23, 0, 621, - 0, 258, 127, 128, 0, 23, 26, 13, 27, 28, - 0, 0, 0, 748, 1501, 0, 749, 0, 472, 475, - 701, 220, 1182, 0, 214, 215, 216, 258, 0, 18, - 765, 14, 1183, 470, 470, 479, 479, 479, 0, 0, - 32, 470, 0, 0, 1184, 625, 621, 0, 18, 496, - 0, 1525, 450, 26, 20, 130, 131, 0, 0, 0, - 1375, 0, 0, 23, 0, 1379, 0, 0, 0, 622, - 0, 0, 224, 0, 0, 0, 0, 0, 941, 623, - 0, 212, 0, 0, 0, 0, 421, 708, 0, 0, - 0, 624, 625, 8, 9, 0, 0, 0, 7, 8, - 9, 10, 214, 215, 216, 0, 705, 706, 156, 14, - 300, 394, 395, 10, 709, 258, 1560, 550, 0, 1417, - 18, 691, 856, 1560, 0, 0, 18, 1316, 0, 1317, - 258, 1318, 20, 0, 421, 424, 0, 21, 0, 0, - 0, 23, 559, 621, 26, 0, 130, 131, 0, 21, - 26, 0, 27, 28, 0, 340, 251, 0, 0, 0, - 1224, 0, 0, 0, 27, 320, 193, 0, 0, 0, - 1225, 0, 0, 0, 0, 0, 194, 0, 0, 0, - 0, 0, 1226, 0, 32, 0, 0, 691, 1466, 905, - 0, 0, 905, 0, 561, 0, 32, 561, 0, 0, - 0, 0, 0, 1560, 905, 0, 0, 0, 1153, 1153, - 931, 0, 0, 0, 421, 837, 8, 9, 0, 0, - 12, 13, 1635, 1492, 1493, 0, 14, 0, 561, 0, - 0, 1419, 588, 589, 590, 591, 592, 593, 594, 0, - 16, 1503, 17, 1650, 0, 0, 0, 0, 237, 20, - 0, 258, 856, 1179, 1179, 1185, 727, 731, 23, 0, - 0, 0, 0, 0, 731, 0, 0, 26, 0, 130, - 131, 7, 8, 9, 10, 224, 0, 13, 0, 0, - 0, 0, 300, 8, 9, 10, 0, 0, 930, 0, - 0, 0, 748, 749, 472, 475, 0, 340, 1185, 18, - 765, 1543, 1544, 0, 0, 882, 0, 0, 0, 0, - 21, 0, 1227, 1227, 1227, 0, 621, 1554, 1555, 0, - 0, 21, 0, 26, 224, 27, 28, 147, 251, 0, - 340, 731, 0, 450, 450, 0, 27, 320, 0, 970, - 828, 0, 0, 691, 0, 0, 0, 0, 0, 971, - 691, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 450, 972, 625, 0, 340, 450, 727, 0, 32, 853, - 854, 0, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, - 876, 0, 731, 0, 0, 0, 0, 0, 731, 0, - 0, 0, 127, 128, 0, 0, 215, 216, 0, 0, - 421, 708, 14, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 731, 258, 0, - 258, 0, 0, 0, 731, 20, 0, 0, 0, 1153, - 1153, 931, 0, 0, 23, 0, 621, 0, 300, 127, - 128, 10, 0, 26, 13, 130, 131, 0, 949, 951, - 0, 691, 0, 1179, 1179, 1305, 1305, 1185, 0, 622, - 0, 0, 1179, 258, 340, 0, 18, 0, 0, 623, - 0, 0, 930, 0, 0, 0, 0, 21, 0, 0, - 0, 631, 625, 621, 0, 1305, 1305, 1185, 0, 0, - 26, 0, 27, 320, 0, 0, 0, 1227, 1227, 1227, - 127, 128, 472, 475, 215, 216, 1156, 0, 0, 0, - 14, 0, 727, 0, 0, 691, 1157, 0, 0, 450, - 450, 691, 450, 450, 32, 450, 411, 413, 1158, 625, - 0, 0, 0, 20, 0, 520, 0, 0, 0, 0, - 0, 0, 23, 612, 621, 300, 394, 395, 10, 0, - 613, 26, 0, 130, 131, 258, 0, 0, 0, 0, - 0, 748, 749, 765, 0, 0, 0, 622, 0, 0, - 0, 0, 0, 421, 837, 1046, 0, 623, 0, 1179, - 1179, 1305, 1305, 1185, 21, 0, 1179, 0, 0, 624, - 625, 614, 0, 340, 340, 0, 340, 26, 0, 27, - 320, 0, 0, 300, 127, 128, 10, 0, 0, 0, - 0, 731, 0, 0, 0, 0, 0, 0, 0, 153, - 0, 0, 0, 212, 220, 0, 0, 0, 0, 0, - 0, 615, 691, 0, 1110, 0, 691, 0, 0, 0, - 0, 0, 21, 0, 0, 258, 0, 0, 0, 251, - 0, 0, 705, 706, 450, 450, 0, 27, 320, 709, - 0, 0, 1216, 0, 0, 0, 731, 731, 0, 0, - 0, 727, 731, 258, 0, 691, 0, 0, 0, 0, - 0, 691, 0, 0, 0, 0, 731, 0, 731, 32, - 731, 0, 0, 1508, 1508, 0, 1508, 7, 8, 9, - 10, 0, 0, 246, 0, 0, 0, 7, 127, 128, - 10, 0, 748, 749, 472, 475, 0, 0, 0, 0, - 0, 765, 0, 0, 691, 18, 0, 0, 0, 1165, - 0, 0, 0, 0, 0, 0, 21, 258, 0, 479, - 731, 0, 621, 0, 472, 475, 21, 0, 0, 26, - 0, 27, 28, 251, 691, 340, 472, 475, 450, 450, - 450, 27, 28, 0, 0, 970, 691, 0, 1190, 0, - 0, 0, 0, 0, 0, 971, 0, 0, 1508, 1508, - 1557, 0, 0, 32, 731, 252, 0, 972, 625, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 729, - 691, 731, 691, 0, 421, 708, 729, 0, 0, 0, - 479, 479, 479, 0, 7, 8, 9, 10, 450, 450, - 13, 0, 0, 0, 0, 7, 8, 9, 10, 0, - 421, 424, 907, 910, 0, 0, 0, 0, 748, 749, - 472, 475, 18, 0, 0, 765, 1246, 0, 0, 0, - 0, 0, 0, 21, 0, 0, 0, 0, 0, 621, - 421, 1362, 0, 0, 21, 0, 26, 691, 27, 28, - 0, 251, 0, 729, 0, 0, 0, 0, 0, 27, - 28, 0, 1182, 0, 0, 0, 0, 0, 0, 450, - 0, 0, 1183, 691, 0, 0, 0, 727, 727, 0, - 32, 1277, 0, 252, 1184, 625, 0, 0, 258, 0, - 80, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 104, 340, 0, 691, 0, 1058, 1059, 9, 10, 0, - 133, 0, 0, 0, 729, 0, 144, 144, 0, 144, - 729, 80, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 748, 749, 0, 765, 421, 708, 0, 0, - 0, 203, 0, 80, 21, 0, 0, 0, 0, 729, - 0, 238, 0, 0, 0, 0, 729, 26, 104, 27, - 28, 0, 0, 1239, 731, 1060, 731, 0, 731, 262, - 104, 0, 0, 193, 0, 0, 727, 0, 0, 0, - 0, 0, 0, 194, 0, 727, 727, 0, 0, 0, - 0, 32, 104, 0, 727, 195, 0, 0, 0, 691, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 0, - 1381, 1382, 116, 772, 773, 0, 774, 472, 475, 0, - 133, 0, 80, 0, 0, 0, 144, 144, 0, 0, - 0, 412, 144, 0, 0, 144, 144, 144, 727, 775, - 0, 0, 0, 0, 0, 0, 0, 776, 0, 472, - 475, 80, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 203, 80, 0, 26, 0, 119, 120, 731, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 203, 203, 0, 0, 7, 8, 9, 10, 214, 215, - 216, 0, 0, 1216, 0, 14, 1141, 1442, 0, 1142, - 0, 0, 0, 7, 8, 9, 10, 0, 203, 519, - 0, 1148, 18, 0, 0, 907, 910, 0, 20, 0, - 0, 0, 0, 21, 0, 505, 0, 23, 0, 621, - 0, 18, 0, 0, 104, 0, 26, 727, 27, 28, - 0, 0, 21, 729, 0, 144, 0, 0, 621, 0, - 0, 0, 970, 1485, 0, 26, 0, 27, 28, 0, - 907, 910, 971, 127, 128, 421, 1362, 0, 246, 0, - 32, 970, 0, 0, 972, 625, 727, 0, 0, 0, - 0, 971, 0, 104, 531, 0, 0, 0, 0, 32, - 18, 0, 0, 972, 625, 0, 691, 0, 729, 729, - 0, 0, 0, 0, 729, 0, 0, 621, 0, 0, - 0, 0, 0, 0, 26, 0, 130, 131, 729, 0, - 729, 0, 729, 0, 0, 0, 0, 0, 0, 104, - 622, 0, 731, 619, 0, 531, 531, 634, 0, 0, - 623, 7, 8, 9, 10, 0, 80, 691, 0, 1545, - 1546, 0, 624, 625, 0, 0, 0, 0, 300, 8, - 9, 10, 167, 12, 13, 0, 0, 735, 0, 14, - 0, 0, 729, 0, 0, 300, 8, 9, 10, 133, - 21, 0, 0, 16, 0, 17, 18, 1573, 104, 0, - 203, 104, 20, 26, 0, 27, 28, 21, 0, 192, - 0, 23, 0, 621, 0, 144, 0, 0, 144, 193, - 26, 0, 27, 320, 21, 0, 729, 1587, 0, 194, - 144, 251, 0, 0, 0, 0, 1156, 32, 80, 27, - 320, 195, 0, 729, 0, 0, 1157, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 907, 910, 1158, 625, - 0, 0, 0, 252, 0, 0, 203, 203, 0, 0, - 203, 32, 203, 203, 203, 755, 0, 0, 0, 203, - 1141, 1142, 907, 910, 203, 0, 0, 203, 0, 1148, - 0, 0, 0, 0, 263, 0, 0, 8, 9, 0, - 0, 12, 13, 0, 80, 0, 0, 14, 0, 0, - 0, 0, 907, 910, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 0, 0, 0, 0, 0, 0, - 20, 727, 264, 265, 0, 0, 0, 0, 0, 23, - 0, 266, 104, 104, 104, 104, 0, 0, 26, 0, - 130, 131, 0, 267, 0, 0, 0, 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, 292, 0, 0, 293, 0, 0, - 0, 0, 0, 0, 0, 300, 8, 9, 10, 0, - 0, 13, 104, 294, 531, 0, 1141, 1142, 907, 910, - 0, 0, 0, 1148, 0, 0, 619, 0, 531, 531, - 634, 0, 0, 18, 0, 0, 729, 932, 729, 0, - 729, 934, 0, 0, 21, 0, 0, 0, 0, 0, - 621, 0, 0, 0, 0, 0, 203, 26, 0, 27, - 320, 0, 0, 0, 7, 8, 9, 10, 0, 0, - 0, 0, 0, 1308, 0, 0, 0, 0, 0, 0, - 0, 0, 133, 1309, 300, 8, 9, 10, 0, 133, - 0, 32, 18, 0, 0, 1310, 625, 203, 977, 203, - 203, 238, 634, 21, 0, 0, 0, 0, 0, 621, - 0, 0, 18, 0, 0, 0, 26, 0, 27, 28, - 0, 0, 0, 21, 1058, 1059, 9, 10, 0, 621, - 1141, 1142, 970, 1148, 0, 0, 26, 0, 27, 320, - 729, 0, 971, 0, 203, 0, 0, 0, 977, 0, - 32, 0, 1308, 0, 972, 625, 203, 203, 755, 755, - 755, 0, 1309, 21, 203, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 1310, 625, 26, 0, 27, 28, - 0, 0, 0, 0, 1060, 7, 127, 128, 10, 0, - 0, 13, 193, 133, 0, 0, 80, 0, 80, 0, - 0, 0, 194, 1069, 80, 0, 80, 0, 0, 0, - 32, 0, 104, 18, 195, 907, 910, 0, 104, 0, - 0, 0, 0, 0, 21, 531, 531, 531, 785, 0, - 7, 8, 786, 10, 167, 12, 13, 26, 531, 27, - 28, 14, 0, 0, 0, 0, 0, 0, 300, 8, - 9, 10, 0, 30, 0, 16, 0, 17, 18, 19, - 0, 0, 0, 31, 20, -523, 0, 0, 0, 21, - 0, 32, 0, 23, 787, 33, 168, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 21, 788, 0, - 789, 0, 0, 0, 251, 0, 0, 0, 30, 0, - 0, 0, 27, 320, 729, 0, 0, 0, 31, 0, - 0, 531, 531, 0, 0, 531, 32, 0, 531, 0, - 33, 0, 0, 104, 0, 0, 522, 531, 0, 104, - 0, 932, 932, 932, 32, 0, -523, 531, 0, 1159, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, - 9, 0, 0, 12, 246, 0, 0, 0, 0, 14, + 435, 490, 444, 196, 122, 256, 724, 443, 445, 697, + 1003, 392, 36, 42, 763, 632, 516, 698, 781, 538, + 541, 695, 177, 642, 641, 208, 57, 103, 495, 498, + 59, 1121, 182, 841, 979, 398, 399, 59, 432, 509, + 985, 449, 178, 36, 42, 1045, 298, 1047, 880, 646, + 647, 42, 209, 572, 400, 1077, 936, 57, 507, 221, + 101, 35, 249, 674, 176, 391, 489, 247, 115, 256, + 1450, 1465, 397, 1504, 174, 497, 1565, 1561, 1468, 296, + 420, 423, 611, 350, 170, 350, 253, 350, 528, 190, + 1074, 1082, 35, 171, 452, 740, 260, 1087, 713, 169, + 703, 704, 350, 350, 403, 611, 611, 163, 595, 72, + 55, 233, 986, 839, 721, 1566, 1202, 1593, 89, 364, + 519, 645, 1638, 196, 1591, 15, 1011, 86, 256, -416, + -1, 406, 350, 1575, 350, 141, 146, 374, 90, -143, + 72, 55, 528, 375, 208, 76, 164, 72, 175, 177, + 94, 137, -357, 596, 915, 1588, 453, 1600, 405, -416, + 59, 1075, 951, -416, 59, 357, 1628, 358, -296, 178, + 388, 209, 722, 745, 1012, 87, 76, 1013, 42, 710, + -357, 1011, 1208, 76, 453, 127, 128, 57, 454, 297, + 190, 176, 1203, 728, 416, 1617, 201, 440, 213, 493, + 1016, 174, 1601, 992, 825, 91, 1650, -416, 1148, 221, + 952, 170, 408, -600, -2, 1632, 454, 221, 221, -366, + 171, 15, 840, 88, 1591, 92, 169, 215, 216, 1012, + 1001, 1209, 1013, 14, -829, 190, 26, 93, 130, 131, + 1569, 72, 404, 459, 107, 1563, 1078, 221, 1017, 617, + 1504, 1018, 529, -366, 419, 422, 20, -366, -600, -600, + 460, 260, 530, 1371, 1372, 23, 1298, 621, 523, 108, + 72, 55, 1004, -600, 72, 175, 1159, 407, 38, 1162, + 1393, 410, 1364, 1660, 502, 504, 616, 718, 461, -366, + 768, 1598, 247, 109, 1079, 1426, 221, 514, 471, 474, + 495, 498, 309, 1173, 964, 608, 76, 803, 495, 38, + 76, 642, 824, 682, 1299, 135, 201, 213, 26, 467, + 498, 1189, 1190, 1426, 1120, 350, 677, 1039, 649, 1234, + 1365, 1661, 965, 993, 772, 773, 542, 543, 296, 498, + 937, 1239, 1633, 1427, -303, 58, 247, 766, 966, 697, + 221, 517, 700, 552, 350, 651, 553, 1022, 1040, 554, + 1050, 432, 564, 201, 468, 955, 569, -625, 551, 260, + 137, 1535, 990, 991, 610, 1260, 58, 1262, 994, 516, + 161, 183, 405, 58, 883, 26, 162, 995, 996, -303, + -303, 761, 127, 128, 1051, -599, 518, 694, 1052, 767, + 209, 884, 621, 632, -296, 1476, 221, 420, 423, 660, + 187, 685, -625, -625, 1482, 1483, 595, 1484, 670, 18, + 39, 179, 177, 997, 240, 295, 1406, -625, 241, 885, + 1053, 660, 740, 1176, 648, -305, 621, 59, 740, 188, + -599, -599, 178, 26, 1228, 130, 131, 824, 297, -581, + -305, 39, 1150, 243, -305, -599, 40, 637, 138, 622, + 89, 596, 1280, 738, 176, 72, 650, 814, -141, 623, + 621, -305, 377, -305, 715, 18, 792, 58, 139, 245, + 90, 624, 625, -305, -305, 769, -305, 40, -305, 221, + 221, 898, 90, 299, -581, 189, 350, 221, 1296, 1297, + 138, 652, 638, 59, 127, 128, 58, 696, 1077, 221, + 58, 376, 815, 1095, 795, 824, -305, -305, -305, -305, + 300, 394, 395, 10, 95, 110, 111, 362, 221, 350, + 797, -305, 350, -299, 372, 350, 899, 95, 110, 111, + 350, 831, 831, 831, 831, 201, 989, 72, 175, 740, + 380, 771, 781, 350, 1201, 26, 1496, 130, 131, 21, + 155, 381, -581, 350, 401, 789, 350, 900, 608, 1578, + 1579, -296, 697, 696, 27, 320, 770, 495, 112, 113, + 698, 750, 751, 76, 695, 960, 552, 553, 883, 1036, + 1037, 112, 113, 425, 653, 1041, 682, 189, 939, 642, + 641, 296, 1442, 961, 433, 884, 32, -581, 485, 821, + 902, 410, 901, 72, 796, 1240, 848, 1122, 565, 694, + 566, 138, 1026, 528, 201, 303, 738, 88, 1034, -144, + 1054, -620, 201, 885, 1405, 300, 568, -7, 10, 972, + 1195, 977, 978, 572, 164, 158, 447, 921, 260, 802, + 1172, 221, 565, 448, 566, 903, 127, 128, 1285, 1197, + 896, 519, 451, 18, -367, 122, 15, 1027, 392, 1199, + 740, 463, 511, 350, 21, 1055, 155, 155, 155, 91, + 464, -120, 740, 15, 295, 1196, 978, 209, 91, 426, + 427, 247, 922, 923, 221, 501, -142, 645, -367, 92, + 1002, 58, -367, 428, 1198, 1001, 526, 26, 92, 130, + 131, 297, 89, 429, 1200, -120, 740, 512, 740, -120, + 1241, 32, 155, 887, 524, 430, 1506, 905, 908, 696, + 963, 525, 90, 888, -367, 1612, 696, 694, 221, 527, + 781, 980, 1635, 693, 1060, 1652, 889, -118, 1448, 15, + 89, -120, 546, 958, 1092, 1093, 1094, 792, 1429, 792, + 137, 158, 158, 158, 1059, 1069, 221, 792, 366, 370, + 90, 1507, 848, 8, 521, 1255, 1256, 1257, 1048, 1049, + 1613, -118, 535, 58, 59, -118, 59, 1636, 1080, 825, + 1653, 201, 209, 544, 59, 795, 1477, 795, 8, 9, + 694, 350, 350, 795, 350, 795, 694, 158, 88, 693, + 378, 797, 432, 797, 545, 127, 128, -118, 363, 547, + 91, 797, 222, 223, 1191, 379, 130, 131, 1430, 548, + 92, 221, 201, 975, 201, 201, 127, 128, 215, 216, + 92, 549, 1269, 1271, 14, 137, 789, 696, 789, 58, + 522, 130, 131, 1229, 1230, 1231, 789, 1028, 1029, 568, + 363, 222, 446, 611, 95, 110, 111, 20, 130, 131, + 300, 394, 395, 10, 662, 350, 23, 678, 89, 201, + 1124, 1083, 1084, 1020, 1085, 661, 1478, 26, 664, 130, + 131, 224, 522, 665, 72, 796, 72, 1046, 90, 127, + 128, 256, 15, 887, 72, 796, -416, 1236, 1237, 21, + 696, 831, 666, 888, 679, 1639, 696, 694, 112, 113, + 114, 738, 26, 1130, 27, 320, 889, 707, 1281, 1282, + 802, 1284, 802, 90, 1251, -416, -416, 1066, 1073, 1253, + 802, 1271, 8, 9, 363, 260, 92, 295, 129, -6, + 1360, 1362, 130, 131, 552, 553, 32, 711, 26, 1366, + 694, 1445, 831, 350, 733, 693, 694, 483, 484, 224, + 127, 128, 693, 15, 685, 519, 252, -416, 491, 492, + 1410, 8, 9, 762, 1510, 224, 757, 363, 116, 117, + 118, 559, 256, 816, 1060, 130, 131, 670, 593, 594, + 1527, 1403, -183, 155, 155, 155, -416, -416, 15, 738, + 963, -416, 825, 808, 1059, 127, 1389, 137, -183, 252, + -183, 26, 831, 130, 131, 806, 363, 696, 807, 905, + 908, 696, 809, 432, 130, 131, 817, 529, 694, 835, + 26, 224, 119, 120, 792, 1243, 722, 530, 837, 224, + 694, 1245, 1246, 838, 812, 1243, 1248, 840, 522, 1246, + 363, 91, 95, 96, 97, 432, 224, 895, 130, 131, + 696, 59, 914, 253, 1178, 1179, 696, 483, 716, 491, + 717, 92, 795, 693, 694, 897, 694, 1510, 158, 158, + 158, 916, 522, 918, 831, 942, 8, 9, 797, 813, + 1471, 1377, 1378, 943, 1387, 1388, 944, 1390, 953, 1510, + 256, 420, 423, 954, 26, 831, 98, 99, 100, 696, + 1424, 1425, 957, 18, 483, 1529, 732, 959, 350, -52, + 58, 20, 58, 789, -52, 967, 1609, 1494, 491, 1530, + 58, 420, 423, -299, 501, -52, 693, 26, 696, 130, + 131, 694, 693, 483, 1534, 968, 1270, 127, 128, 697, + 696, 1286, 981, 1222, 987, 988, 453, 1584, 1032, 1510, + 1008, 1009, 1456, 1223, 1461, 1002, 1010, 694, 1458, 1015, + -828, 72, 796, 432, 1024, 1224, 1031, 1066, 1035, 1038, + 724, 116, 772, 773, 696, 774, 696, 1096, 559, 1097, + 1347, 559, 116, 117, 118, 1110, 828, 738, 1288, 1098, + 130, 131, 1102, 1339, 1100, 1101, 1103, 802, 1104, 559, + 792, 825, 382, 383, 384, 1105, 775, 1346, 1106, -140, + 1107, 1109, 559, 1112, 1474, 1475, 855, 1113, 1114, 1115, + 552, 553, 1129, 26, 1042, 119, 120, 59, 1316, 1116, + 1131, 91, 1132, 523, 1270, 1133, 119, 120, 795, 905, + 908, 696, 1338, 693, 878, 1134, 1141, 693, 385, 1142, + 894, 92, 1171, 1143, 797, 1149, 386, 387, 1152, 224, + 300, 394, 395, 10, 1153, 1302, 1303, 696, 1165, 1043, + 95, 96, 97, 1455, 1158, 1455, 1170, 1167, 1194, 224, + 1217, 694, 140, 140, 1227, 156, 693, 1244, 224, 789, + 72, 1249, 693, 1250, 1254, 1302, 1303, 696, 410, 21, + 1258, 382, 383, 384, 1264, 224, 251, 1028, 1029, 212, + 1265, 220, 1272, 1347, 27, 320, 363, 237, 1541, 1542, + 1543, 209, 1266, 1347, 98, 99, 1267, 221, 528, 1274, + 1347, 1275, 1276, 1279, 1287, 693, 1339, 72, 796, 831, + 1346, 1202, 460, 1339, 1289, 1283, 32, 1574, 564, 1290, + 1346, 1480, 1481, 26, 1291, 386, 387, 1346, 1443, 1444, + 1295, 1294, 1654, 1300, 693, 1386, 95, 414, 415, 1310, + 1386, 1359, 1370, 802, 1374, 1338, 693, -662, 1576, 1577, + 1396, 1397, 95, 110, 111, 1338, 667, 668, 669, 1414, + 1415, 696, 1338, 140, 1398, 1404, 1408, 58, 140, 1409, + 1418, 156, 156, 156, 127, 128, 8, 9, 1419, 13, + 693, 1420, 693, 1421, 1438, 1428, 629, 633, 636, 1626, + 98, 113, 1437, 72, 1451, 493, 1439, 1453, 212, 1466, + 1513, 18, 1469, 72, 450, 1490, 112, 113, 1491, 1492, + 72, 1493, 420, 423, 1498, 470, 470, 479, 621, 1627, + 1505, 363, 116, 772, 773, 26, 1518, 130, 131, 130, + 131, 220, 95, 110, 111, 513, 201, 1459, 201, 496, + 220, 622, 1523, 1526, 1514, 1520, 694, 693, 155, 1521, + 1528, 623, 1556, 375, 1550, 1587, 1552, 1347, 1347, 1556, + 1560, 1570, 1347, 624, 625, 1571, 1586, 1595, 199, 1596, + 1339, 21, 1604, 693, 26, 1339, 119, 120, 350, 1607, + 1602, 140, 1608, 1620, 1346, 1346, 112, 113, 1624, 1346, + 1634, 155, 95, 96, 97, 1630, 58, 694, 1631, 1637, + 1127, 1641, 1646, 693, 1347, 1656, 221, 1642, 1658, 1651, + 1655, 552, 553, 1347, 1663, 1664, 1666, 1339, 1667, 1338, + 1338, 1572, 1, 1610, 1338, 442, 1339, 5, 160, 1525, + 956, 1346, 1174, 158, 439, 441, 714, 559, 1625, 1556, + 1346, 1311, 1070, 58, 360, 1509, 98, 99, 127, 128, + 597, 503, 156, 409, 1414, 1415, 696, 590, 591, 592, + 593, 594, 297, 1662, 1347, 1407, 1338, 72, 72, 297, + 534, 1166, 72, 1007, 945, 1338, 158, 1339, 95, 96, + 97, 506, 225, 226, 227, 1368, 750, 751, 199, 598, + 599, 1346, 621, 600, 601, 602, 603, 693, 1232, 26, + 946, 130, 131, 1252, 1347, 1164, 18, 696, 7, 8, + 250, 10, 228, 1072, 72, 622, 486, 1339, 1356, 618, + 1391, 882, 390, 72, 147, 623, 1338, 212, 220, 58, + 26, 1346, 98, 99, 229, 199, 1464, 624, 625, 58, + 1640, 140, 1648, 1599, 140, 1647, 58, 21, 201, 297, + 156, 156, 156, 1645, 251, 1216, 140, 155, 155, 155, + 1470, 0, 27, 28, 0, 0, 1338, 0, 0, -577, + 0, 0, -577, 0, 72, 0, 0, 0, 230, 231, + 232, 0, 0, 224, 0, 0, 252, 155, 155, 155, + 224, 0, 0, 470, 32, 0, 470, 0, 479, 479, + 479, 95, 110, 111, 450, 225, 226, 227, 918, 224, + 470, 496, 220, 0, 72, 450, 95, 110, 111, 496, + -577, 0, -577, -577, 0, -577, 0, 0, 974, 18, + 629, 633, 450, 636, 411, 228, -577, 0, -577, 413, + 0, 0, 158, 158, 158, 300, 8, 9, 10, 0, + 0, 0, 0, -577, -577, 112, 113, 0, 0, 156, + 0, 0, 156, 0, 0, 258, 0, 0, -577, 0, + 112, 113, 158, 158, 158, 633, 0, 0, 156, 156, + 156, 0, 0, 0, 21, 0, 0, 147, 0, 258, + 0, 251, 693, 156, 0, 214, 215, 216, 295, 27, + 320, 0, 14, 58, 58, 295, 0, 0, 58, 0, + 0, 0, 300, 127, 128, 10, 0, 199, 258, 18, + 0, 0, 0, 559, 0, 20, 0, 0, 0, 258, + 0, 32, 0, 0, 23, 7, 8, 9, 10, 0, + 0, 13, 0, 693, 904, 904, 911, 0, 730, 701, + 58, 21, 520, 930, 0, 736, 0, 0, 251, 58, + 0, 0, 0, 18, 0, 0, 27, 320, 633, 0, + 0, 0, 0, 220, 21, 1399, 1400, 1401, 1402, 0, + 621, 0, 0, 747, 0, 295, 0, 26, 258, 27, + 28, 0, 747, 0, 0, 0, 199, 691, 32, 0, + 0, 8, 9, 969, 199, 0, 246, 0, 0, 0, + 58, 0, 0, 970, 212, 0, 220, 237, 0, 0, + 0, 32, 822, 258, 0, 971, 625, 0, 18, 0, + 224, 116, 772, 773, 0, 0, 0, 155, 0, 0, + 0, 1138, 1441, 0, 95, 110, 111, 258, 1138, 0, + 58, 0, 26, 0, 130, 131, 224, 0, 0, 0, + 220, 0, 224, 691, 0, 0, 0, 1138, 1222, 0, + 8, 9, 470, 470, 479, 479, 479, 0, 1223, 0, + 470, 0, 0, 876, 0, 119, 120, 0, 496, 877, + 1224, 450, 340, 0, 340, 0, 340, 18, 112, 1522, + 300, 127, 128, 10, 224, 0, 13, 0, 155, 155, + 155, 0, 705, 0, 621, 706, 1495, 0, 0, 212, + 0, 26, 158, 130, 131, 934, 0, 709, 18, 0, + 7, 8, 9, 10, 0, 0, 246, 1499, 0, 21, + 258, 340, 0, 340, 0, 621, 156, 1500, 95, 110, + 111, 0, 26, 1519, 27, 320, 0, 0, 18, 1501, + 625, 0, 0, 199, 411, 0, 0, 413, 1154, 21, + 0, 0, 0, 0, 0, 621, 0, 0, 1155, 0, + 224, 520, 26, 0, 27, 28, 32, 0, 0, 0, + 1156, 625, 0, 158, 158, 158, 0, 258, 969, 0, + 0, 0, 112, 1524, 199, 0, 199, 199, 970, 0, + 0, 300, 127, 128, 10, 0, 32, 153, 1554, 691, + 971, 625, 0, 0, 855, 1554, 691, 904, 0, 0, + 904, 8, 9, 0, 205, 12, 206, 0, 0, 18, + 0, 14, 904, 0, 559, 0, 1151, 1151, 930, 0, + 21, 199, 0, 127, 128, 16, 621, 17, 18, 0, + 0, 0, 0, 26, 20, 27, 320, 0, 0, 0, + 0, 0, 0, 23, 0, 0, 8, 9, 0, 1154, + 0, 519, 26, 0, 130, 131, 237, 0, 1138, 1155, + 258, 1177, 1177, 1183, 129, 0, 0, 32, 0, 0, + 0, 1156, 625, 18, 26, 1554, 130, 131, 0, 1065, + 0, 0, 0, 0, 1138, 0, 258, 0, 0, 0, + 1138, 0, 0, 0, 1629, 550, 0, 26, 0, 130, + 131, 0, 0, 0, 421, 424, 1183, 691, 0, 1056, + 1057, 9, 10, 1222, 0, 1644, 0, 0, 0, 0, + 1225, 1225, 1225, 1223, 855, 0, 7, 8, 9, 10, + 0, 0, 13, 340, 0, 1224, 1117, 1118, 0, 1033, + 450, 450, 1123, 0, 0, 0, 0, 0, 21, 153, + 0, 224, 0, 0, 18, 0, 1135, 0, 1136, 0, + 1137, 26, 0, 27, 28, 21, 0, 450, 0, 1058, + 691, 621, 450, 0, 258, 0, 691, 193, 26, 1081, + 27, 28, 0, 0, 0, 1086, 0, 194, 0, 258, + 7, 127, 128, 10, 1180, 32, 0, 0, 0, 195, + 224, 0, 0, 0, 1181, 0, 0, 0, 1138, 0, + 1169, 0, 32, 705, 706, 0, 1182, 625, 0, 0, + 0, 709, 0, 0, 0, 0, 0, 8, 9, 21, + 0, 12, 246, 0, 727, 731, 251, 14, 0, 0, + 0, 0, 731, 0, 27, 28, 1151, 1151, 930, 0, + 0, 16, 0, 17, 1192, 0, 0, 0, 0, 0, + 20, 588, 589, 590, 591, 592, 593, 594, 252, 23, + 1177, 1177, 1301, 1301, 1183, 340, 32, 0, 26, 1177, + 130, 131, 0, 0, 561, 0, 0, 691, 0, 0, + 0, 691, 1144, 0, 1145, 0, 0, 0, 0, 0, + 0, 0, 1301, 1301, 1183, 0, 729, 0, 340, 731, + 258, 0, 0, 729, 1225, 1225, 1225, 0, 827, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 0, 1065, + 691, 0, 0, 0, 450, 450, 691, 450, 450, 0, + 450, 0, 340, 0, 727, 0, 0, 852, 853, 0, + 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, + 867, 868, 869, 870, 871, 872, 873, 874, 875, 0, + 731, 0, 0, 8, 9, 0, 731, 0, 13, 691, + 729, 0, 0, 421, 708, 0, 214, 215, 216, 0, + 0, 0, 0, 14, 1177, 1177, 1301, 1301, 1183, 0, + 18, 1177, 0, 0, 0, 731, 0, 0, 691, 1138, + 18, 0, 731, 0, 0, 0, 20, 0, 0, 0, + 691, 0, 0, 0, 26, 23, 130, 131, 0, 0, + 0, 421, 424, 147, 0, 0, 948, 950, 212, 220, + 1222, 729, 0, 0, 0, 0, 0, 729, 0, 0, + 1223, 0, 340, 1312, 691, 1313, 691, 1314, 1138, 0, + 747, 0, 1224, 1259, 0, 1261, 747, 450, 450, 0, + 0, 0, 0, 0, 0, 0, 729, 0, 639, 8, + 9, 10, 0, 729, 0, 0, 258, 0, 258, 0, + 0, 561, 0, 0, 561, 0, 7, 8, 9, 10, + 727, 0, 519, 0, 0, 0, 1502, 1502, 747, 1502, + 0, 421, 836, 0, 309, 640, 0, 21, 0, 0, + 0, 691, 1293, 0, 18, 561, 0, 1385, 0, 0, + 26, 258, 130, 131, 0, 21, 0, 0, 0, 0, + 0, 621, 0, 0, 0, 0, 0, 691, 26, 0, + 27, 28, 479, 0, 0, 1413, 0, 0, 0, 0, + 0, 259, 1044, 0, 969, 7, 8, 9, 10, 0, + 0, 450, 450, 450, 970, 0, 0, 691, 0, 0, + 340, 340, 32, 340, 747, 929, 971, 625, 494, 215, + 216, 1502, 1502, 1551, 0, 14, 0, 0, 731, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 1369, 0, + 621, 0, 18, 1373, 0, 0, 0, 26, 20, 27, + 28, 1108, 258, 479, 479, 479, 0, 23, 199, 0, + 199, 450, 450, 969, 0, 0, 0, 0, 434, 0, + 0, 411, 413, 970, 0, 0, 0, 0, 0, 0, + 520, 32, 0, 731, 731, 971, 625, 0, 727, 731, + 0, 0, 0, 0, 0, 0, 0, 1411, 0, 729, + 469, 691, 0, 731, 0, 731, 0, 731, 0, 214, + 215, 216, 0, 488, 80, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, + 0, 0, 450, 18, 133, 0, 0, 421, 708, 20, + 144, 144, 258, 144, 0, 80, 1163, 0, 23, 0, + 0, 0, 80, 0, 729, 729, 0, 731, 0, 0, + 729, 0, 0, 940, 0, 203, 0, 80, 0, 0, + 258, 0, 340, 0, 729, 238, 729, 0, 729, 0, + 0, 0, 104, 0, 0, 1188, 0, 8, 9, 0, + 0, 12, 13, 262, 104, 705, 706, 14, 0, 1486, + 1487, 731, 709, 0, 0, 0, 906, 909, 929, 0, + 0, 16, 0, 17, 0, 747, 104, 1497, 731, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 729, 23, + 127, 128, 258, 0, 0, 246, 0, 0, 26, 0, + 130, 131, 604, 0, 133, 0, 80, 0, 0, 0, + 144, 144, 0, 0, 0, 412, 144, 18, 0, 144, + 144, 144, 1242, 0, 747, 0, 0, 0, 0, 0, + 199, 0, 729, 0, 621, 80, 605, 1537, 1538, 80, + 0, 26, 0, 130, 131, 203, 80, 0, 0, 729, + 0, 0, 0, 1548, 1549, 0, 691, 622, 0, 0, + 0, 0, 0, 203, 203, 203, 0, 623, 0, 421, + 836, 0, 0, 727, 727, 0, 0, 1273, 0, 624, + 625, 0, 0, 0, 0, 0, 0, 0, 300, 8, + 9, 10, 203, 0, 13, 8, 9, 340, 0, 12, + 13, 0, 0, 0, 0, 14, 0, 691, 0, 505, + 0, 0, 0, 472, 475, 153, 18, 0, 104, 16, + 0, 17, 0, 0, 0, 0, 0, 21, 20, 144, + 0, 0, 0, 621, 0, 0, 0, 23, 0, 0, + 26, 0, 27, 320, 0, 0, 26, 0, 130, 131, + 758, 0, 0, 0, 0, 764, 1304, 0, 1214, 0, + 731, 258, 731, 0, 731, 0, 1305, 104, 531, 0, + 0, 0, 727, 0, 32, 0, 0, 0, 1306, 625, + 804, 727, 727, 0, 881, 0, 810, 0, 0, 0, + 727, 0, 8, 9, 0, 0, 12, 13, 818, 819, + 0, 820, 14, 0, 1375, 1376, 0, 0, 0, 0, + 0, 0, 0, 104, 0, 0, 16, 619, 17, 531, + 531, 634, 0, 0, 0, 20, 0, 0, 0, 0, + 80, 729, 727, 729, 23, 729, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 130, 131, 0, 0, 1139, + 0, 0, 1140, 0, 612, 0, 300, 394, 395, 10, + 0, 613, 731, 133, 1146, 0, 0, 0, 906, 909, + 0, 0, 104, 0, 203, 104, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 144, + 0, 1436, 144, 0, 0, 21, 919, 920, 0, 421, + 708, 919, 614, 0, 144, 0, 0, 0, 26, 0, + 27, 320, 80, 906, 909, 7, 8, 9, 10, 0, + 0, 0, 0, 0, 0, 421, 424, 0, 0, 0, + 0, 727, 0, 729, 0, 7, 8, 9, 10, 0, + 203, 203, 615, 18, 203, 1479, 203, 203, 203, 755, + 0, 0, 0, 203, 21, 421, 1358, 0, 203, 0, + 621, 203, 0, 0, 0, 0, 0, 26, 727, 27, + 28, 0, 0, 0, 21, 0, 0, 0, 80, 0, + 0, 251, 0, 969, 300, 8, 9, 10, 0, 27, + 28, 748, 0, 970, 749, 0, 472, 475, 0, 0, + 0, 32, 0, 0, 0, 971, 625, 0, 765, 0, + 0, 0, 18, 252, 0, 0, 104, 104, 104, 104, + 0, 32, 0, 21, 731, 1030, 0, 0, 0, 621, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 320, + 0, 1539, 1540, 0, 0, 0, 0, 0, 0, 421, + 708, 0, 1304, 0, 0, 0, 0, 0, 0, 127, + 128, 0, 1305, 0, 519, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 1306, 625, 104, 0, 531, 1567, + 0, 1088, 0, 1090, 0, 0, 18, 0, 0, 0, + 619, 0, 531, 531, 634, 729, 0, 0, 906, 909, + 0, 931, 0, 621, 0, 933, 0, 0, 0, 1581, + 26, 0, 130, 131, 0, 0, 0, 0, 0, 0, + 203, 0, 1139, 1140, 906, 909, 622, 0, 0, 0, + 0, 1146, 0, 0, 0, 0, 623, 0, 0, 7, + 8, 9, 10, 214, 215, 216, 133, 0, 624, 625, + 14, 0, 0, 133, 906, 909, 1125, 1126, 0, 1128, + 0, 203, 976, 203, 203, 238, 634, 18, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, + 0, 0, 23, 0, 621, 0, 0, 0, 0, 0, + 1147, 26, 0, 27, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1214, 0, 0, 969, 203, 0, + 0, 0, 976, 727, 0, 0, 0, 970, 0, 0, + 203, 203, 755, 755, 755, 32, 0, 0, 203, 971, + 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1187, 0, 0, 0, 1139, 1140, 906, 909, + 0, 0, 0, 1146, 0, 0, 133, 0, 0, 80, + 0, 80, 0, 0, 0, 0, 1067, 80, 0, 80, + 748, 749, 472, 475, 0, 104, 421, 1358, 765, 0, + 0, 104, 0, 0, 0, 0, 0, 0, 531, 531, + 531, 0, 6, 0, 7, 8, 9, 10, 11, 12, + 13, 531, 0, 0, 0, 14, 0, 0, 0, 0, + 0, 1233, 0, 0, 0, 0, 0, 0, 0, 16, + 0, 17, 18, 1238, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, + 438, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 29, 0, 0, 0, 0, 0, 1139, 1140, + 0, 1146, 30, 0, 0, 0, 0, 0, 1056, 1057, + 9, 10, 31, 0, 531, 531, 0, 0, 531, 0, + 32, 531, 0, 0, 33, 0, 104, 0, 0, 0, + 531, 0, 104, 0, 931, 931, 931, 0, 0, 0, + 531, 0, 1157, 0, 0, 0, 0, 21, 0, 0, + 0, 1292, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 27, 28, 0, 0, 1235, 0, 1058, 0, + 0, 0, 0, 0, 0, 104, 193, 104, 0, 203, + 203, 1185, 83, 906, 909, 0, 194, 0, 0, 0, + 0, 0, 106, 0, 32, 1309, 0, 0, 195, 0, + 0, 126, 134, 0, 0, 0, 0, 0, 145, 145, + 0, 145, 0, 83, 0, 0, 7, 127, 128, 10, + 83, 0, 13, 0, 1185, 0, 0, 0, 0, 472, + 475, 0, 0, 145, 0, 83, 0, 104, 755, 755, + 755, 0, 0, 239, 18, 0, 0, 0, 0, 0, + 248, 0, 0, 104, 0, 21, 1067, 0, 0, 0, + 0, 0, 248, 1394, 0, 104, 0, 1395, 26, 0, + 27, 28, 0, 0, 0, 0, 0, 0, 1247, 0, + 0, 0, 0, 0, 30, 0, 80, 0, 748, 749, + 765, 0, 0, 0, 31, 0, 0, 0, 0, 104, + 0, 104, 32, 1412, 0, 0, 33, 0, 0, 104, + 0, 0, 0, 0, 83, 0, 1417, 0, 145, 145, + 0, 0, 0, 0, 145, 0, 0, 145, 145, 145, + 104, 0, 0, 0, 0, 531, 531, 0, 531, 0, + 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, + 0, 0, 0, 145, 83, 0, 0, 0, 0, 0, + 0, 531, 0, 0, 531, 531, 634, 0, 0, 0, + 0, 145, 145, 145, 7, 127, 128, 10, 0, 1472, + 246, 0, 0, 1473, 0, 0, 0, 203, 203, 203, + 203, 203, 1185, 755, 0, 0, 0, 203, 0, 0, + 145, 0, 18, 0, 0, 1488, 1489, 0, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, + 1185, 1185, 1185, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 755, 755, 755, 755, 0, 145, 748, 749, + 472, 475, 30, 0, 0, 0, 0, 765, 0, 0, + 0, 0, 31, 0, 203, 0, 0, 0, 0, 144, + 32, 0, 80, 0, 33, 0, 0, 0, 0, 0, + 472, 475, 0, 0, 0, 248, 145, 0, 0, 0, + 0, 0, 472, 475, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 7, 8, + 9, 10, 214, 215, 216, 0, 0, 0, 0, 14, + 0, 755, 203, 203, 755, 755, 1416, 0, 0, 203, + 0, 248, 0, 0, 0, 620, 18, 145, 145, 635, + 0, 0, 20, 0, 644, 0, 0, 21, 83, 0, + 0, 23, 0, 621, 0, 0, 0, 0, 0, 0, + 26, 0, 27, 28, 0, 203, 976, 203, 0, 0, + 0, 0, 748, 749, 472, 475, 969, 0, 0, 765, + 0, 683, 0, 0, 104, 0, 970, 0, 0, 0, + 248, 0, 145, 248, 32, 0, 0, 0, 1014, 625, + 7, 127, 128, 10, 0, 0, 13, 145, 0, 0, + 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 145, 0, 0, 0, 0, 0, 18, 0, + 83, 0, 0, 0, 755, 755, 0, 755, 0, 21, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 104, 16, 104, 17, 203, 203, 1187, 83, - 0, 0, 20, 369, 371, 0, 0, 0, 0, 106, - 0, 23, 0, 621, 0, 0, 0, 0, 126, 134, - 26, 0, 130, 131, 0, 145, 145, 0, 145, 0, - 83, 0, 0, 0, 0, 0, 622, 83, 0, 0, - 0, 1187, 0, 0, 0, 0, 623, 0, 0, 0, - 145, 0, 83, 0, 104, 755, 755, 755, 624, 625, - 239, 7, 127, 128, 10, 0, 0, 248, 0, 0, - 0, 104, 0, 0, 1069, 0, 0, 0, 0, 248, - 0, 0, 0, 104, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 1251, 0, 0, 0, - 21, 0, 0, 0, 80, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 27, 28, 104, 0, 104, - 0, 0, 0, 0, 0, 0, 0, 104, 0, 30, - 0, 83, 0, 0, 0, 145, 145, 0, 0, 31, - 0, 145, 0, 0, 145, 145, 145, 32, 104, 0, - 0, 33, 0, 531, 531, 0, 531, 0, 0, 0, - 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, - 145, 83, 0, 0, 0, 0, 0, 0, 0, 531, - 0, 0, 531, 531, 634, 0, 0, 0, 145, 145, - 145, 7, 8, 9, 10, 167, 12, 13, 0, 0, - 0, 0, 14, 0, 0, 203, 203, 203, 203, 203, - 1187, 755, 0, 0, 0, 203, 16, 145, 17, 18, - 19, 0, 0, 0, 0, 20, 563, 0, 0, 0, - 21, 0, 0, 0, 23, 0, 0, 168, 1187, 1187, - 1187, 0, 0, 26, 0, 27, 28, 0, 0, 0, - 755, 755, 755, 755, 145, 0, 0, 0, 0, 30, - 785, 0, 7, 8, 786, 10, 167, 12, 13, 31, - 0, 0, 0, 14, 203, 0, 0, 32, 0, 144, - 0, 33, 80, 0, 0, 0, 34, 16, 0, 17, - 18, 19, 248, 145, 0, 0, 20, -524, 690, 0, - 0, 21, 0, 0, 0, 23, 787, 0, 168, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 788, 0, 789, 0, 0, 0, 0, 0, 0, 0, - 30, 755, 203, 203, 755, 755, 1422, 0, 248, 203, - 31, 0, 620, 0, 145, 145, 635, 0, 32, 0, - 0, 644, 33, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 0, 0, 737, 0, 0, 0, -524, 0, - 7, 8, 9, 10, 0, 203, 977, 203, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 683, 0, - 0, 0, 0, 0, 104, 0, 0, 248, 18, 145, - 248, 0, 0, 0, 0, 0, 0, 0, 0, 21, - 0, 0, 0, 0, 145, 0, 0, 145, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 0, 145, - 259, 0, 0, 824, 0, 0, 827, 83, 476, 0, - 0, 830, 831, 833, 834, 835, 755, 755, 477, 755, - 0, 0, 0, 0, 563, 0, 32, 0, 0, 0, - 478, 0, 0, 0, 0, 145, 145, 852, 0, 145, - 0, 145, 145, 145, 145, 0, 0, 0, 145, 0, - 0, 0, 0, 145, 8, 9, 145, 167, 12, 13, - 0, 0, 1187, 0, 14, 0, 0, 0, 0, 0, - 0, 0, 784, 83, 0, 0, 0, 434, 16, 0, - 17, 18, 0, 0, 0, 0, 0, 20, 0, 0, - 911, 0, 0, 0, 0, 0, 684, 911, 0, 168, - 0, 755, 755, 1422, 755, 26, 0, 130, 131, 469, - 0, 248, 248, 248, 248, 0, 0, 0, 0, 0, - 0, 0, 488, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1187, 1187, 1187, 166, 0, 7, 8, - 9, 10, 167, 12, 13, 0, 0, 0, 0, 14, - 0, 0, 0, 755, 104, 0, 0, 0, 0, 203, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 0, 248, 20, 145, 0, 0, 0, 21, 0, 0, - 0, 23, 0, 0, 168, 0, 0, 145, 145, 635, - 26, 0, 27, 28, 0, 0, 933, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 30, 0, 690, 644, - 0, 0, 0, 0, 0, 145, 31, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 33, 0, - 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, - 785, 683, 7, 8, 786, 10, 167, 12, 13, 126, - 0, 0, 0, 14, 0, 0, 145, 635, 145, 145, - 239, 635, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 737, 0, 0, 0, 20, -526, 737, 0, - 0, 21, 0, 0, 784, 23, 787, 0, 168, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 788, 0, 789, 145, 0, 0, 0, 635, 0, 0, - 30, 0, 0, 0, 0, 145, 145, 145, 145, 145, - 31, 0, 0, 145, 0, 0, 0, 0, 32, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, - 7, 127, 128, 10, 0, 0, 246, 1121, -526, 0, - 0, 0, 134, 0, 0, 83, 0, 83, 0, 0, - 0, 0, 1070, 83, 0, 83, 0, 0, 18, 0, - 0, 248, 0, 7, 8, 9, 10, 248, 0, 21, - 0, 0, 0, 852, 145, 145, 145, 0, 0, 737, - 0, 0, 26, 911, 27, 28, 0, 145, 0, 758, - 0, 18, 0, 0, 764, 0, 0, 0, 30, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 26, 32, 27, 28, 805, - 33, 0, 690, 0, 1177, 811, 0, 0, 911, 0, - 0, 193, 0, 0, 0, 0, 0, 819, 820, 0, - 821, 194, 0, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, - 145, 145, 0, 0, 145, 8, 9, 145, 167, 12, - 13, 911, 248, 735, 0, 14, 145, 0, 248, 0, - 933, 933, 933, 0, 1221, 0, 145, 0, 644, 16, - 0, 17, 18, 0, 1232, 0, 0, 0, 20, 0, - 0, 737, 0, 0, 0, 0, 0, 23, 0, 621, - 0, 0, 0, 737, 0, 0, 26, 0, 130, 131, - 0, 248, 0, 248, 0, 145, 145, 635, 0, 0, - 0, 0, 622, 0, 0, 920, 921, 0, 0, 0, - 920, 0, 623, 0, 0, 0, 0, 737, 0, 737, - 0, 0, 0, 0, 624, 625, 0, 1267, 0, 0, - 0, 6, 0, 7, 8, 9, 10, 11, 12, 13, - 933, 0, 0, 0, 14, 0, 0, 0, 1282, 0, - 0, 0, 0, 248, 145, 145, 145, 15, 16, 0, - 17, 18, 19, 0, 0, 0, 0, 20, 784, 0, - 248, 0, 21, 1070, 0, 22, 23, 24, 0, 25, - 0, 0, 248, 0, 911, 26, 0, 27, 28, 0, - 0, 29, 0, 0, 7, 127, 128, 10, 0, 0, - 13, 30, 0, 83, 0, 0, 0, 0, 0, 0, - 911, 31, 127, 128, 0, 0, 248, 519, 248, 32, - 0, 0, 18, 33, 0, 0, 248, 0, 34, 0, - 0, 0, 0, 21, 1031, 0, 0, 0, 0, 18, - 911, 0, 0, 0, 0, 0, 26, 248, 27, 28, - 0, 0, 145, 145, 0, 145, 621, 0, 0, 0, - 0, 0, 149, 26, 0, 130, 131, 0, 0, 0, - 0, 0, 150, 0, 0, 0, 0, 0, 145, 622, - 32, 145, 145, 635, 151, 0, 0, 0, 0, 623, - 0, 1090, 0, 1092, 0, 0, 0, 0, 0, 0, - 0, 624, 625, 0, 145, 145, 145, 145, 145, 635, - 145, 0, 0, 0, 145, 0, 0, 0, 0, 0, - 0, 784, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 0, 911, 933, 933, 933, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, - 145, 145, 145, 0, 0, 0, 0, 0, 784, 0, - 51, 0, 0, 0, 0, 0, 1127, 1128, 0, 1130, - 8, 9, 0, 145, 0, 246, 0, 0, 145, 0, - 0, 83, 0, 0, 0, 0, 51, 51, 0, 152, - 0, 51, 0, 0, 1221, 0, 0, 18, 51, 0, - 1149, 7, 8, 9, 10, 0, 0, 13, 0, 0, - 0, 51, 0, 51, 621, 0, 0, 0, 0, 0, - 0, 26, 0, 130, 131, 0, 0, 0, 0, 18, - 145, 145, 145, 145, 145, 635, 254, 1505, 145, 0, - 21, 0, 0, 0, 0, 0, 0, 1506, 0, 0, - 0, 0, 1189, 26, 0, 27, 28, 0, 0, 1507, - 625, 0, 0, 1453, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 145, 635, 145, 0, 0, 194, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 396, - 396, 195, 51, 248, 0, 0, 51, 51, 0, 0, - 254, 0, 51, 0, 0, 152, 152, 152, 0, 0, - 0, 0, 431, 0, 0, 0, 0, 0, 0, 0, - 0, 51, 1237, 0, 0, 51, 0, 0, 0, 0, - 0, 51, 51, 911, 1242, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 145, 0, 145, 51, - 51, 152, 0, 0, 0, 0, 0, 0, 0, 254, - 0, 0, 0, 0, 0, 563, 0, 855, 0, 300, - 8, 9, 10, 167, 12, 301, 302, 303, 51, 304, - 14, 0, 0, 0, 690, 0, 0, 0, 0, 0, - 0, 933, 0, 0, 16, 305, 17, 18, 19, 0, - 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, - 313, 0, 23, 0, 0, 51, 314, 315, 316, 317, - 318, 26, 1296, 27, 320, 1568, 0, -791, 321, 0, - 145, 145, 635, 145, 322, 0, 0, 323, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 0, 330, - 0, 0, 933, 933, 933, 0, 1313, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, - 0, 0, 145, 248, 0, 0, 560, 0, 145, 0, + 593, 594, 26, 0, 27, 28, 0, 0, 145, 145, + 0, 0, 145, 0, 145, 145, 145, 145, 149, 0, + 0, 145, 0, 0, 0, 0, 145, 0, 150, 145, + 1185, 0, 0, 0, 748, 749, 32, 765, 0, 0, + 151, 0, 0, 0, 0, 783, 83, 0, 0, 0, + 0, 300, 8, 9, 10, 7, 8, 9, 10, 205, + 12, 206, 0, 0, 0, 0, 14, 0, 0, 755, + 755, 1416, 755, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 17, 18, 248, 248, 248, 248, 0, 20, + 21, 0, 0, 0, 21, 0, 0, 251, 23, 0, + 0, 1185, 1185, 1185, 0, 27, 320, 26, 0, 27, + 28, 0, 0, 207, 0, 0, 0, 0, 0, 472, + 475, 755, 104, 30, 0, 0, 0, 203, 0, 252, + 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, + 0, 32, 0, 0, 248, 33, 145, 0, 0, 0, + 0, 472, 475, 0, 0, 0, 0, 0, 8, 9, + 145, 145, 635, 246, 0, 0, 0, 0, 0, 932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 396, 0, 0, 0, 0, 0, 0, - 0, 254, 0, 0, 0, 0, 51, 785, 0, 7, - 8, 786, 10, 167, 12, 13, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 0, 1400, 0, 0, 0, - 1401, 0, 0, 0, 16, 0, 17, 18, 19, 396, - 0, 0, 0, 20, -525, 0, 0, 0, 21, 0, - 51, 0, 23, 787, 0, 168, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 51, 1418, 788, 51, 789, - 0, 0, 0, 0, 431, 431, 431, 30, 0, 1423, - 51, 0, 0, 0, 0, 0, 0, 31, 51, 0, - 0, 7, 127, 128, 10, 32, 0, 519, 0, 33, - 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, -525, 51, 51, 0, 18, - 51, 0, 152, 152, 152, 431, 0, 0, 0, 51, - 21, 8, 9, 0, 51, 12, 246, 51, 0, 0, - 0, 14, 0, 26, 1478, 27, 28, 0, 1479, 0, - 0, 0, 0, 0, 51, 16, 0, 17, 0, 30, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 31, - 1494, 1495, 0, 23, 0, 0, 0, 32, 0, 0, - 0, 33, 26, 560, 130, 131, 560, 0, 0, 0, - 0, 0, 785, 0, 7, 8, 786, 10, 167, 12, - 13, 0, 560, 560, 560, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 560, 0, 16, - 0, 17, 18, 19, 0, 0, 0, 0, 20, 0, - 78, 0, 0, 21, 0, 0, 0, 23, 787, 0, - 168, 0, 0, 0, 0, 0, 26, 0, 27, 28, - 0, 0, 788, 0, 789, 0, 78, 78, 0, 78, - 0, 78, 30, 0, 0, 254, 8, 9, 78, 167, - 12, 13, 31, 0, 735, 0, 14, 560, 0, 0, - 32, 78, 0, 78, 33, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 0, 0, 51, 8, 9, 20, - 0, 0, 519, 0, 0, 0, 0, 0, 23, 0, - 621, 0, 0, 0, 0, 0, 0, 26, 0, 130, - 131, 0, 396, 0, 18, 0, 0, 0, 0, 396, - 0, 0, 0, 1505, 0, 0, 0, 51, 51, 51, - 51, 621, 0, 1506, 0, 0, 0, 0, 26, 0, - 130, 131, 0, 0, 0, 1507, 625, 0, 0, 0, - 0, 0, 78, 0, 1505, 0, 78, 78, 0, 0, - 0, 0, 78, 0, 1506, 78, 78, 78, 0, 0, - 0, 0, 0, 0, 51, 0, 1507, 625, 51, 0, - 0, 78, 0, 0, 0, 78, 51, 51, 431, 431, - 431, 78, 78, 0, 51, 0, 0, 0, 0, 0, - 1385, 1386, 9, 10, 0, 0, 0, 0, 0, 78, - 78, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 51, 0, 51, 0, - 0, 0, 0, 51, 51, 0, 51, 0, 78, 21, - 1550, 0, -479, -479, -479, -479, -479, -479, -479, 0, - 0, -479, 26, -479, 27, 28, 0, 0, 0, 0, - 1387, 560, 0, 0, -479, 0, -479, 0, 193, 0, - -479, 0, 0, 0, 0, 78, -479, 0, 194, 0, - 0, -479, 0, 0, 0, -479, 32, -479, 0, 0, - 195, 0, 0, 0, -479, 0, -479, -479, -479, -479, - -479, 0, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, 0, -479, -479, -479, 0, - -479, -479, -479, -479, -479, 0, -479, 8, 9, 0, - 0, 1551, 13, 0, 0, 0, -479, -479, -479, 0, - -479, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 560, 560, 560, 18, 0, 0, 431, 254, 0, - 0, 0, 643, 0, 0, 0, 78, 0, 0, 0, - 0, 621, 0, 0, 0, 0, 0, 0, 26, 0, - 130, 131, 1385, 127, 128, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 1505, 0, 51, 51, 152, 0, - 0, 0, 0, 254, 1506, 0, 0, 0, 0, 0, - 78, 159, 0, 0, 0, 0, 1507, 625, 0, 0, - 0, 21, 0, 0, 0, 78, 0, 0, 78, 0, - 0, 0, 0, 204, 26, 0, 27, 28, 0, 0, - 78, 1215, 1387, 0, 0, 0, 0, 0, 78, 0, - 30, 0, 0, 7, 8, 9, 10, 214, 215, 216, - 31, 0, 0, 0, 14, 0, 0, 0, 32, 0, - 0, 0, 33, 0, 51, 0, 78, 78, 0, 0, - 78, 18, 78, 78, 78, 0, 0, 20, 0, 78, - 0, 0, 21, 0, 78, 254, 23, 78, 621, 0, - 0, 0, 0, 0, 51, 26, 0, 27, 28, 0, - 0, 0, 8, 9, 78, 0, 12, 13, 0, 0, - 0, 970, 14, 0, 0, 0, 0, 159, 159, 159, - 0, 971, 0, 0, 0, 0, 16, 0, 17, 32, - 0, 0, 0, 1015, 625, 20, 0, 0, 0, 0, - 0, 0, 0, 204, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 130, 131, 0, 0, 0, - 0, 204, 204, 481, 0, 0, 0, 0, 0, 431, - 0, 0, 431, 431, 431, 254, 0, 0, 0, 6, - 0, 7, 8, 9, 10, 11, 12, 13, 0, 0, - 204, 0, 14, 0, 0, 51, 51, 51, 152, 152, - 152, 431, 0, 254, 0, 51, 16, 0, 17, 18, - 0, 0, 0, 0, 0, 20, 643, 0, 0, 0, - 21, 0, 0, 0, 23, 0, 0, 438, 1215, 1215, - 1215, 0, 0, 26, 0, 27, 28, 0, 0, 29, - 0, 0, 0, 0, 0, 0, 78, 0, 0, 30, - 8, 9, 0, 167, 12, 13, 0, 0, 735, 31, - 14, 0, 0, 0, 51, 0, 532, 32, 0, 51, - 0, 33, 51, 0, 16, 0, 17, 18, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 78, 78, 78, - 78, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 0, 130, 131, 7, 8, 9, 10, 205, - 12, 206, 0, 0, 0, 0, 14, 628, 628, 628, - 0, 431, 51, 51, 431, 431, 431, 0, 202, 51, - 16, 0, 17, 18, 78, 0, 0, 0, 78, 20, - 0, 0, 0, 0, 21, 0, 78, 78, 23, 1521, - 0, 0, 0, 257, 78, 0, 261, 26, 0, 27, - 28, 0, 0, 207, 0, 51, 51, 51, 0, 0, - 0, 0, 204, 30, 0, 0, 0, 257, 0, 365, - 0, 0, 0, 31, 0, 0, 78, 0, 78, 0, - 0, 32, 0, 78, 78, 33, 78, 0, 0, 0, - 1522, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 0, 0, 0, 7, 8, 9, 10, - 0, 0, 246, 0, 0, 0, 0, 0, 204, 204, - 0, 0, 204, 0, 481, 481, 481, 756, 202, 0, - 0, 204, 0, 0, 18, 0, 204, 0, 0, 204, - 0, 0, 0, 0, 0, 21, 202, 202, 202, 0, - 0, 0, 0, 0, 0, 0, 487, 0, 26, 0, - 27, 28, 1215, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 202, 0, 300, 8, 9, - 10, 167, 12, 13, 194, 0, 735, 0, 14, 0, - 0, 0, 32, 0, 0, 0, 195, 7, 8, 9, - 10, 261, 16, 13, 17, 18, 0, 0, 0, 643, - 0, 20, 0, 0, 0, 257, 21, 0, 0, 0, - 23, 0, 621, 0, 0, 18, 0, 0, 0, 26, - 0, 27, 320, 1215, 1215, 1215, 21, 0, 0, 0, - 0, 0, 0, 0, 0, 1308, 78, 78, 78, 26, - 0, 27, 28, 0, 0, 1309, 891, 0, 0, 51, - 0, 0, 0, 32, 0, 476, 0, 1310, 625, 0, - 628, 628, 628, 0, 0, 477, 0, 0, 0, 628, - 0, 0, 0, 32, 0, 0, 0, 478, 0, 0, - 0, 1217, 0, 0, 0, 0, 0, 0, 204, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 257, 261, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 8, 9, 10, 0, 78, -388, 8, 9, -388, -388, - 12, 246, 0, 0, 0, 0, 14, 0, 0, 974, - 0, 974, 974, 0, 628, 0, 0, 18, 0, 0, - 16, 0, 17, -388, 78, 0, 0, 202, 21, 20, - 0, 0, 0, 0, -388, 0, 0, 0, 23, 0, - 621, 26, 0, 27, 320, 0, 0, 26, 0, 130, - 131, 0, 0, 0, 0, 0, 974, 752, 0, 0, - 0, 0, 0, 622, 0, 0, 0, 753, 204, 204, - 756, 756, 756, 623, 0, 32, 204, 0, 0, 754, - 0, -388, 0, 0, 0, 624, 625, 0, 0, 0, - 0, 0, 0, 202, 202, 0, 0, 202, 0, 202, - 202, 202, 202, 0, 0, 0, 202, 0, 0, 0, - 0, 202, 0, 0, 202, 204, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 78, 78, 78, 78, - 78, 0, 0, 0, 0, 78, 0, 532, 532, 532, - 0, 0, 0, 7, 8, 9, 10, 167, 12, 13, - 628, 0, 1020, 0, 14, 0, 0, 0, 1217, 1217, - 1217, 0, 0, 0, 7, 8, 9, 10, 16, 0, - 17, 18, 0, 0, 0, 0, 0, 20, 0, 0, - 0, 0, 21, 0, 0, 0, 23, 0, 0, 0, - 0, 0, 0, 0, 78, 26, 0, 27, 28, 78, - 0, 0, 78, 21, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 26, 0, 27, 28, - 0, 31, 1460, 628, 628, 0, 0, 628, 0, 32, - 628, 0, 193, 33, 0, 0, 0, 0, 0, 628, - 0, 0, 194, 628, 628, 628, 0, 0, 0, 628, - 32, 0, 78, 78, 195, 0, 0, 257, 261, 78, - 0, 0, 0, 0, 0, 0, 1058, 8, 786, 10, - 205, 12, 206, 202, 0, 0, 0, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 974, 974, - 1188, 16, 0, 17, 18, 78, 78, 78, 0, 0, - 20, 0, 0, 0, 0, 21, 0, 0, 0, 23, - 0, 0, 0, 0, 202, 0, 202, 202, 26, 0, - 27, 28, 0, 0, 0, 0, 1060, 0, 0, 0, - 0, 0, 0, 1188, 30, 0, 0, 626, 626, 626, - 7, 8, 9, 10, 31, 0, 519, 756, 756, 756, - 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, - 0, 202, 0, 0, 0, 0, 204, 0, 18, 0, - 0, 0, 0, 202, 202, 202, 202, 202, 487, 21, - 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 0, 0, - 7, 8, 9, 10, 205, 12, 206, 261, 193, 0, - 0, 14, 1217, 0, 0, 0, 0, 0, 194, 0, - 202, 0, 0, 0, 0, 16, 32, 17, 18, 0, - 195, 0, 0, 0, 20, 0, 0, 0, 0, 21, - 0, 0, 0, 23, 0, 891, 891, 0, 891, 0, - 0, 0, 26, 102, 27, 28, 0, 0, 1463, 0, - 0, 0, 121, 102, 0, 0, 0, 0, 30, 102, - 102, 628, 102, 0, 628, 628, 628, 0, 31, 0, - 0, 0, 0, 1217, 1217, 1217, 32, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 974, 974, 974, - 1188, 1188, 1188, 1311, 235, 0, 0, 974, 0, 78, + 0, 0, 644, 0, 0, 18, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 8, 9, 10, 0, 0, 13, - 1188, 1188, 1188, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 756, 756, 756, 756, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 257, 261, 257, 0, 0, - 0, 0, 21, 389, 0, 121, 204, 0, 0, 0, - 0, 0, 102, 102, 0, 26, 0, 27, 320, 102, - 102, 0, 0, 102, 102, 102, 0, 417, 102, 102, - 102, 752, 0, 202, 202, 1186, 0, 0, 0, 0, - 257, 753, 0, 0, 0, 7, 8, 9, 10, 32, - 626, 626, 626, 754, 0, 0, 0, 0, 0, 929, - 0, 0, 0, 1311, 974, 974, 1311, 1311, 1311, 0, - 0, 974, 0, 0, 0, 0, 0, 0, 1186, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, - 0, 0, 202, 202, 202, 0, 0, 26, 0, 27, - 28, 0, 0, 0, 0, 0, 18, 204, 0, 204, - 0, 202, 0, 193, 0, 0, 0, 235, 102, 626, - 0, 626, 626, 194, 626, 0, 0, 0, 0, 0, - 0, 32, 487, 0, 0, 195, 0, 0, 102, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 0, 0, 621, 0, 0, 0, 0, 0, 0, 26, + 0, 130, 131, 784, 683, 7, 8, 785, 10, 167, + 12, 13, 126, 0, 0, 1499, 14, 0, 0, 145, + 635, 145, 145, 239, 635, 1500, 0, 0, 0, 0, + 16, 0, 17, 18, 19, 0, 0, 1501, 625, 20, + -521, 0, 0, 0, 21, 0, 0, 783, 23, 786, + 0, 168, 0, 0, 0, 0, 0, 26, 0, 27, + 28, 0, 0, 787, 0, 788, 145, 0, 0, 0, + 635, 0, 0, 30, 0, 0, 0, 0, 145, 145, + 145, 145, 145, 31, 0, 0, 145, 0, 0, 0, + 0, 32, 0, 0, 0, 33, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 0, 0, 0, 8, 9, 626, 167, 12, 13, - 0, 0, 1589, 0, 14, 0, 0, 102, 1311, 1311, - 0, 1311, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 0, 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, 0, - 0, 0, 257, 0, 481, 0, 102, 0, 102, 102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 202, 202, 202, 202, 202, 1186, 202, 0, - 1312, 0, 202, 0, 0, 0, 0, 0, 0, 0, - 626, 0, 0, 1311, 1311, 1311, 1311, 0, 0, 0, - 0, 0, 102, 0, 0, 1186, 1186, 1186, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 202, 202, 202, - 202, 102, 0, 0, 0, 481, 481, 481, 102, 0, - 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 0, 102, 0, 1311, 0, 0, 0, 0, - 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 626, 626, 0, 0, 626, 0, 0, - 626, 0, 0, 0, 0, 0, 0, 0, 0, 626, - 0, 0, 0, 929, 929, 929, 0, 0, 0, 626, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 202, - 202, 202, 202, 1186, 0, 0, 202, 0, 0, 0, - 0, 0, 0, 0, 102, 0, 777, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 626, 626, - 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 0, 202, 0, 202, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 8, 9, - 10, 0, 12, 301, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 929, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, - 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, - 23, 0, 621, 0, 314, 315, 316, 317, 318, 26, - 0, 27, 320, 202, 202, 1312, 202, 102, 0, 0, - 0, 0, 322, 0, 0, 925, 0, 0, 102, 102, - 0, 102, 102, 324, 325, 926, 0, 0, 0, 0, - 0, 327, 328, 329, 0, 0, 0, 927, 625, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1186, - 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, - 8, 9, 0, 205, 12, 206, 0, 0, 0, 0, - 14, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 0, 0, 102, 121, 16, 0, 17, 18, 202, 202, - 1186, 202, 0, 20, 235, 0, 0, 0, 0, 0, - 0, 626, 23, 0, 626, 626, 626, 0, 0, 0, - 0, 26, 0, 130, 131, 0, 0, 0, 777, 0, - 1186, 1186, 1186, 0, 0, 0, 0, 626, 626, 626, - 626, 626, 626, 626, 0, 0, 0, 626, 0, 0, - 202, 0, 0, 0, 0, 0, 202, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 929, 929, 929, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 0, 0, 777, 0, 0, 102, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 593, 594, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, - 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 102, 0, 0, 1272, 0, 555, 0, 300, 8, - 9, 10, 167, 12, 301, 302, 303, 735, 304, 14, - 0, 0, 0, 626, 626, 626, 626, 626, 626, 0, - 0, 626, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, - 0, 23, 0, 621, 0, 314, 315, 316, 317, 318, - 26, 0, 27, 320, -313, 0, 0, 321, 0, 0, - 0, 0, 0, 322, 102, 102, 925, 0, 102, 0, - 0, 102, 0, 0, 324, 325, 926, 0, 0, 0, - 102, 0, 327, 328, 329, 0, 0, 0, 927, 625, - 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 663, 0, 0, 331, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 626, 626, - 0, 626, 0, 0, 0, 0, 0, 0, 0, 1468, - 0, 1323, 1324, 1325, 10, 167, 12, 301, 302, 303, - 0, 304, 14, 1326, 0, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1334, 1335, 1336, 15, 16, 305, 17, 18, - 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, - 21, 312, 313, 1337, 23, 1338, 0, 0, 314, 315, - 316, 317, 318, 26, 0, 1339, 320, 722, 0, 1340, - 321, 0, 777, 0, 0, 0, 322, 0, 0, 323, - 0, 0, 0, 626, 626, 626, 626, 324, 325, 326, - 0, 0, 0, 0, 0, 327, 328, 329, 0, 102, - 0, 330, 0, 1341, 0, 0, 0, 0, 0, 7, - 8, 9, 10, 167, 12, 13, 0, 1469, 331, 0, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 626, 17, 18, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 21, 0, - 0, 0, 23, 0, 0, 0, 102, 102, 0, 102, - 0, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, - 0, 0, 102, 0, 0, 102, 102, 31, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 33, + 594, -521, 0, 0, 134, 0, 0, 83, 0, 83, + 0, 0, 0, 0, 1068, 83, 0, 83, 263, 0, + 0, 8, 9, 248, 0, 12, 13, 0, 0, 248, + 0, 14, 0, 0, 0, 0, 145, 145, 145, 0, + 0, 0, 0, 0, 0, 16, 0, 17, 0, 145, + 0, 0, 0, 0, 20, 0, 264, 265, 0, 0, + 0, 0, 0, 23, 0, 266, 0, 0, 0, 0, + 0, 0, 26, 0, 130, 131, 0, 267, 0, 0, + 0, 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, 292, 0, + 0, 293, 0, 0, 0, 0, 0, 0, 300, 8, + 9, 10, 145, 145, 0, 0, 145, 294, 0, 145, + 0, 0, 0, 0, 248, 0, 0, 0, 145, 0, + 248, 0, 932, 932, 932, 0, 0, 0, 145, 0, + 644, 0, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, + 0, 0, 27, 320, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 248, 0, 248, 0, 145, 145, 635, + 51, 0, 0, 0, 0, 0, 522, 7, 8, 9, + 10, 167, 12, 13, 32, 0, 735, 0, 14, 0, + 0, 0, 0, 0, 0, 0, 51, 51, 0, 152, + 0, 51, 16, 0, 17, 18, 0, 0, 51, 0, + 0, 20, 932, 0, 0, 0, 21, 0, 0, 0, + 23, 51, 621, 51, 0, 248, 145, 145, 145, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 783, + 0, 248, 0, 0, 1068, 1180, 254, 0, 0, 0, + 0, 0, 0, 248, 0, 1181, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 1182, 625, 0, + 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 248, 0, 248, + 0, 0, 0, 0, 0, 0, 0, 248, 0, 396, + 396, 0, 51, 0, 0, 0, 51, 51, 0, 0, + 254, 0, 51, 0, 0, 152, 152, 152, 248, 0, + 0, 0, 431, 145, 145, 0, 145, 0, 0, 0, + 0, 51, 0, 0, 0, 51, 0, 0, 0, 0, + 0, 51, 51, 0, 0, 0, 0, 0, 0, 145, + 0, 0, 145, 145, 635, 0, 0, 0, 0, 51, + 51, 152, 127, 128, 0, 0, 215, 216, 0, 254, + 0, 0, 14, 0, 0, 145, 145, 145, 145, 145, + 635, 145, 0, 0, 0, 145, 0, 0, 51, 0, + 0, 0, 783, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 621, 0, 932, 932, + 932, 0, 0, 26, 0, 130, 131, 0, 0, 0, + 145, 145, 145, 145, 0, 51, 0, 783, 784, 622, + 7, 8, 785, 10, 167, 12, 13, 0, 0, 623, + 0, 14, 145, 0, 0, 0, 0, 145, 0, 0, + 83, 631, 625, 0, 0, 16, 0, 17, 18, 19, + 0, 0, 0, 0, 20, -522, 0, 0, 0, 21, + 0, 0, 0, 23, 786, 0, 168, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 787, 0, + 788, 0, 0, 0, 0, 0, 560, 0, 30, 145, + 145, 145, 145, 145, 635, 0, 0, 145, 31, 0, + 0, 0, 0, 396, 8, 9, 32, 167, 12, 13, + 33, 254, 735, 0, 14, 0, 51, 0, 0, 0, + 0, 0, 1447, 0, 0, 0, -522, 0, 16, 0, + 17, 18, 0, 145, 635, 145, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 621, 396, + 0, 0, 248, 0, 0, 26, 0, 130, 131, 0, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 622, 0, 0, 0, 51, 0, 0, 51, 0, + 0, 623, 0, 0, 431, 431, 431, 0, 0, 0, + 51, 0, 0, 624, 625, 0, 0, 0, 51, 0, + 0, 0, 145, 145, 0, 145, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, + 10, 214, 215, 216, 0, 0, 51, 51, 14, 0, + 51, 0, 152, 152, 152, 431, 0, 0, 0, 51, + 0, 0, 0, 0, 51, 18, 0, 51, 932, 0, + 0, 20, 0, 0, 0, 0, 21, 0, 0, 0, + 23, 0, 621, 0, 51, 0, 0, 0, 0, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 145, 145, 635, + 145, 0, 0, 560, 0, 194, 560, 0, 0, 78, + 0, 0, 0, 32, 0, 0, 0, 1460, 0, 0, + 0, 0, 560, 560, 560, 0, 0, 0, 0, 932, + 932, 932, 0, 0, 0, 78, 78, 560, 78, 0, + 78, 0, 0, 0, 0, 0, 0, 78, 0, 145, + 248, 0, 0, 0, 0, 145, 0, 0, 0, 0, + 78, 0, 78, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 784, 0, 7, 8, 785, 10, 167, + 12, 13, 0, 0, 0, 254, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 560, 0, 0, + 16, 0, 17, 18, 19, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 21, 0, 51, 0, 23, 786, + 0, 168, 0, 7, 8, 9, 10, 26, 0, 27, + 28, 0, 0, 787, 0, 788, 0, 0, 0, 0, + 0, 78, 396, 30, 0, 78, 78, 0, 0, 396, + 0, 78, 0, 31, 78, 78, 78, 51, 51, 51, + 51, 32, 21, 0, 0, 33, 0, 0, 0, 0, + 78, 0, 0, 0, 78, 26, 0, 27, 28, 0, + 78, 78, 7, 8, 9, 10, 0, 0, 13, 0, + 0, 193, 0, 0, 0, 0, 0, 0, 78, 78, + 78, 194, 0, 0, 51, 0, 0, 0, 51, 32, + 18, 0, 0, 195, 0, 0, 51, 51, 431, 431, + 431, 21, 0, 0, 51, 0, 0, 78, 0, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1322, 0, 1323, 1324, 1325, 10, - 167, 12, 301, 302, 303, 777, 304, 14, 1326, 0, - 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, - 15, 16, 305, 17, 18, 19, 0, 306, 307, 308, - 20, 0, 309, 310, 311, 21, 312, 313, 1337, 23, - 1338, 0, 777, 314, 315, 316, 317, 318, 26, 0, - 1339, 320, 722, 0, 1340, 321, 0, 0, 0, 0, - 102, 322, 102, 0, 323, 0, 0, 0, 0, 0, - 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, - 327, 328, 329, 0, 0, 0, 330, 555, 1341, 7, - 8, 9, 10, 167, 12, 301, 302, 303, 735, 304, - 14, 0, 0, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, - 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, - 313, 0, 23, 0, 621, 0, 314, 315, 316, 317, - 318, 26, 0, 27, 28, -313, 0, 0, 321, 0, - 0, 0, 0, 0, 322, 0, 0, 1212, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 1213, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 0, 1214, - 625, 734, 0, 300, 8, 9, 10, 167, 12, 301, - 302, 303, 735, 304, 14, 0, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, + 193, 0, 0, 0, 0, 51, 0, 51, 0, 0, + 194, 0, 51, 51, 78, 51, 0, 0, 32, 0, + 0, 0, 195, 0, 0, 0, 1544, 0, -479, -479, + -479, -479, -479, -479, -479, 0, 0, -479, 0, -479, + 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -479, 0, -479, 0, 0, 0, -479, 0, 0, 0, + 0, 0, -479, 0, 0, 0, 0, -479, 0, 0, + 0, -479, 0, -479, 0, 0, 0, 0, 0, 0, + -479, 0, -479, -479, -479, -479, -479, 0, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, 643, -479, -479, -479, 78, -479, -479, -479, -479, + -479, 0, -479, 0, 0, 0, 0, 1545, 0, 0, + 0, 0, -479, -479, -479, 0, -479, 0, 0, 0, + 560, 560, 560, 0, 0, 0, 431, 254, 0, 0, + 0, 127, 128, 159, 0, 215, 216, 0, 0, 78, + 0, 14, 0, 0, 0, 0, 0, 0, 0, 7, + 8, 9, 10, 0, 78, 204, 0, 78, 0, 0, + 0, 0, 0, 0, 20, 51, 51, 152, 0, 78, + 0, 0, 254, 23, 0, 621, 0, 78, 0, 0, + 0, 0, 26, 0, 130, 131, 0, 0, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, + 0, 26, 0, 27, 28, 78, 78, 192, 623, 78, + 1213, 78, 78, 78, 0, 0, 0, 193, 78, 0, + 624, 625, 0, 78, 0, 0, 78, 194, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 195, + 0, 0, 51, 78, 0, 0, 0, 0, 0, 159, + 159, 159, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 0, 0, 204, 0, 0, 555, 0, + 300, 8, 9, 10, 167, 12, 301, 302, 303, 735, + 304, 14, 0, 204, 204, 481, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 204, 23, 0, 621, 0, 314, 315, 316, + 317, 318, 26, 0, 27, 320, -313, 0, 0, 321, + 0, 0, 0, 0, 0, 322, 0, 431, 924, 0, + 431, 431, 431, 254, 0, 643, 324, 325, 925, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, + 926, 625, 0, 51, 51, 51, 152, 152, 152, 431, + 0, 254, 0, 51, 0, 78, 0, 331, 0, 0, + 8, 9, 0, 0, 12, 246, 0, 0, 532, 0, + 14, 0, 0, 0, 0, 0, 1213, 1213, 1213, 0, + 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 78, 78, 78, 78, + 0, 0, 23, 0, 621, 0, 0, 0, 0, 0, + 51, 26, 0, 130, 131, 51, 0, 0, 51, 628, + 628, 628, 0, 0, 0, 0, 0, 622, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 623, 7, 127, + 128, 10, 0, 78, 519, 0, 0, 78, 0, 624, + 625, 0, 0, 0, 0, 78, 78, 0, 0, 0, + 0, 0, 0, 78, 0, 0, 18, 431, 51, 51, + 431, 431, 431, 0, 204, 51, 0, 21, 0, 0, + 0, 8, 9, 0, 167, 12, 13, 0, 0, 0, + 26, 14, 27, 28, 78, 0, 78, 0, 0, 0, + 0, 78, 78, 0, 78, 16, 30, 17, 18, 0, + 0, 51, 51, 51, 20, 0, 31, 0, 0, 0, + 0, 0, 0, 684, 32, 0, 168, 0, 33, 0, + 0, 0, 26, 0, 130, 131, 0, 0, 0, 0, + 204, 204, 0, 0, 204, 0, 481, 481, 481, 756, + 0, 0, 0, 204, 0, 0, 0, 0, 204, 0, + 0, 204, 1462, 0, 1319, 1320, 1321, 10, 167, 12, + 301, 302, 303, 0, 304, 14, 1322, 0, 1323, 1324, + 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 15, 16, + 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, + 309, 310, 311, 21, 312, 313, 1333, 23, 1334, 0, + 0, 314, 315, 316, 317, 318, 26, 0, 1335, 320, + 722, 0, 1336, 321, 0, 0, 1213, 0, 0, 322, + 0, 0, 323, 0, 0, 0, 0, 643, 0, 202, + 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, + 329, 0, 0, 0, 330, 0, 1337, 1379, 1380, 9, + 10, 0, 0, 0, 257, 0, 0, 261, 0, 0, + 1463, 331, 0, 0, 78, 78, 78, 0, 890, 0, + 0, 0, 0, 0, 369, 371, 0, 0, 257, 0, + 365, 0, 628, 628, 628, 0, 21, 1213, 1213, 1213, + 6, 628, 7, 8, 9, 10, 11, 12, 13, 26, + 0, 27, 28, 14, 0, 0, 0, 1381, 0, 1215, + 204, 0, 0, 51, 0, 193, 15, 16, 0, 17, + 18, 19, 0, 0, 0, 194, 20, 0, 0, 0, + 0, 21, 0, 32, 22, 23, 24, 195, 25, 0, + 0, 78, 0, 0, 26, 0, 27, 28, 0, 202, + 29, 973, 0, 973, 973, 0, 628, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 202, 202, 202, + 31, 78, 0, 0, 0, 0, 0, 487, 32, 0, + 0, 0, 33, 0, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 0, 973, 0, + 0, 0, 0, 7, 8, 9, 10, 0, 0, 246, + 204, 204, 756, 756, 756, 0, 0, 0, 204, 0, + 0, 0, 261, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0, 257, 0, 0, 0, + 0, 0, 21, 0, 0, 0, 0, 0, 1379, 127, + 128, 10, 0, 0, 0, 26, 204, 27, 28, 8, + 9, 0, 167, 12, 13, 0, 0, 735, 0, 14, + 0, 193, 78, 78, 78, 78, 78, 78, 532, 532, + 532, 194, 78, 16, 0, 17, 18, 21, 0, 32, + 0, 628, 20, 195, 0, 0, 0, 563, 0, 0, + 26, 23, 27, 28, 0, 1215, 1215, 1215, 1381, 0, + 26, 0, 130, 131, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 257, + 261, 0, 0, 0, 32, 0, 0, 0, 33, 78, + 0, 0, 0, 0, 78, 0, 784, 78, 7, 8, + 785, 10, 167, 12, 13, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 628, 628, 0, 0, 628, 690, + 0, 628, 0, 16, 0, 17, 18, 19, 202, 0, + 628, 0, 20, -524, 628, 628, 628, 21, 0, 0, + 628, 23, 786, 0, 168, 0, 0, 78, 78, 0, + 26, 0, 27, 28, 78, 0, 787, 0, 788, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, 0, 973, + 973, 1186, 0, 0, 32, 737, 0, 0, 33, 0, + 78, 78, 78, 0, 202, 202, 0, 0, 202, 0, + 202, 202, 202, 202, -524, 0, 0, 202, 0, 0, + 0, 0, 202, 0, 0, 202, 0, 0, 0, 0, + 0, 0, 0, 0, 1186, 0, 8, 9, 0, 0, + 0, 519, 0, 0, 0, 0, 0, 0, 756, 756, + 756, 0, 166, 0, 7, 8, 9, 10, 167, 12, + 13, 0, 0, 18, 823, 14, 204, 826, 0, 0, + 0, 0, 829, 830, 832, 833, 834, 0, 0, 16, + 621, 17, 18, 19, 0, 563, 0, 26, 20, 130, + 131, 0, 0, 21, 0, 0, 0, 23, 851, 0, + 168, 0, 0, 1499, 0, 0, 26, 0, 27, 28, + 0, 0, 0, 1500, 0, 1215, 0, 0, 0, 0, + 0, 0, 30, 0, 0, 1501, 625, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 33, 890, 890, 0, 890, 34, + 0, 910, 0, 0, 0, 0, 0, 0, 910, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 257, 261, + 0, 628, 0, 0, 628, 628, 628, 0, 0, 0, + 0, 0, 0, 0, 202, 0, 1215, 1215, 1215, 0, + 0, 0, 0, 0, 0, 0, 0, 973, 973, 973, + 1186, 1186, 1186, 1307, 0, 0, 0, 973, 0, 0, + 0, 0, 78, 300, 8, 9, 10, 167, 12, 13, + 0, 0, 735, 0, 14, 202, 0, 202, 202, 0, + 1186, 1186, 1186, 0, 0, 0, 0, 0, 16, 0, + 17, 18, 756, 756, 756, 756, 0, 20, 0, 0, + 0, 0, 21, 0, 0, 0, 23, 0, 621, 0, + 0, 0, 0, 0, 204, 26, 0, 27, 320, 690, + 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, + 0, 1154, 0, 0, 202, 202, 202, 202, 202, 487, + 0, 1155, 202, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 1156, 625, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 0, + 0, 1307, 973, 973, 1307, 1307, 1307, 0, 0, 973, + 202, 0, 737, 626, 626, 626, 0, 0, 737, 0, + 0, 734, 0, 300, 8, 9, 10, 167, 12, 301, + 302, 303, 735, 304, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 204, 0, 204, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, + 0, 0, 321, 0, 0, 0, 0, 1119, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, - 0, 0, 725, 330, 843, 844, 845, 10, 0, 12, - 536, 302, 303, 0, 304, 14, 0, 0, -801, 0, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, + 0, 0, 0, 330, 1307, 1307, 0, 1307, 0, 0, + 0, 0, 0, 851, 0, 0, 0, 0, -799, 737, + 331, 0, 0, 910, 0, 0, 0, 1056, 8, 785, + 10, 205, 12, 206, 0, 257, 261, 257, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 481, 0, 16, 0, 17, 18, 0, 0, 0, 0, + 0, 20, 690, 0, 1175, 0, 21, 0, 910, 0, + 23, 0, 0, 202, 202, 1184, 0, 0, 0, 26, + 257, 27, 28, 0, 0, 0, 0, 1058, 0, 1307, + 1307, 1307, 1307, 102, 0, 30, 0, 0, 0, 0, + 0, 0, 121, 102, 0, 31, 0, 0, 0, 102, + 102, 910, 102, 32, 0, 0, 0, 33, 1184, 0, + 0, 481, 481, 481, 1219, 0, 0, 0, 0, 0, + 0, 0, 202, 202, 202, 0, 0, 0, 0, 0, + 737, 1307, 0, 0, 235, 0, 0, 204, 0, 0, + 202, 0, 737, 0, 7, 8, 9, 10, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 487, 0, 0, 0, 0, 626, 626, 626, 0, + 0, 0, 18, 0, 0, 928, 737, 0, 737, 0, + 0, 0, 0, 21, 0, 0, 1263, 0, 0, 0, + 0, 0, 0, 389, 0, 121, 26, 0, 27, 28, + 0, 0, 102, 102, 0, 0, 0, 1278, 0, 102, + 102, 0, 476, 102, 102, 102, 0, 417, 102, 102, + 102, 0, 477, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 478, 626, 0, 626, 626, 0, + 626, 0, 0, 910, 0, 0, 0, 0, 0, 0, + 0, 257, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 910, + 0, 202, 202, 202, 202, 202, 1184, 202, 0, 1308, + 0, 202, 626, 0, 0, 0, 0, 300, 8, 9, + 10, 167, 12, 13, 0, 0, 735, 0, 14, 910, + 0, 0, 0, 0, 1184, 1184, 1184, 235, 102, 0, + 0, 0, 16, 0, 17, 18, 202, 202, 202, 202, + 0, 20, 0, 0, 0, 0, 21, 0, 102, 0, + 23, 0, 621, 0, 0, 8, 9, 0, 202, 26, + 13, 27, 320, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1304, 0, 0, 0, 0, + 0, 0, 18, 0, 0, 1305, 0, 102, 7, 8, + 9, 10, 0, 32, 0, 626, 0, 1306, 625, 621, + 0, 0, 0, 0, 0, 0, 26, 0, 130, 131, + 0, 0, 0, 910, 0, 202, 202, 202, 202, 202, + 1184, 0, 1499, 202, 0, 0, 0, 21, 0, 0, + 0, 0, 1500, 0, 0, 0, 102, 0, 102, 102, + 26, 0, 27, 28, 1501, 625, 1454, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 0, 202, + 0, 202, 0, 0, 0, 0, 194, 0, 626, 626, + 0, 1219, 626, 0, 32, 626, 0, 0, 195, 0, + 0, 0, 102, 0, 626, 0, 0, 0, 928, 928, + 928, 0, 0, 0, 626, 0, 0, 0, 0, 0, + 0, 102, 0, 0, 0, 0, 0, 0, 102, 0, + 0, 102, 854, 0, 300, 8, 9, 10, 167, 12, + 301, 302, 303, 102, 304, 14, 0, 0, 202, 202, + 1308, 202, 0, 626, 626, 626, 0, 0, 0, 16, + 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, - 0, 314, 315, 316, 317, 318, 26, 0, 846, 847, - 726, 0, 0, 321, 0, 0, 0, 0, 0, 322, + 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, + 1562, 0, -789, 321, 1184, 0, 0, 0, 928, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, - 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 0, 330, 848, 555, 0, 300, 8, - 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, - 1007, 331, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, - 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, - 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, - 26, 0, 27, 320, -313, 0, 0, 321, 0, 0, - 0, 0, 0, 322, 0, 0, 556, 0, 0, 0, - 0, 0, 0, 0, 324, 325, 557, 0, 0, 0, - 0, 0, 327, 328, 329, 0, 0, 725, 558, 843, - 844, 845, 10, 0, 12, 536, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, + 324, 325, 326, 0, 102, 0, 776, 0, 327, 328, + 329, 0, 0, 0, 330, 0, 0, 0, 910, 0, + 0, 0, 0, 202, 202, 1184, 202, 0, 0, 0, + 102, 331, 0, 0, 0, 0, 0, 7, 8, 9, + 10, 167, 12, 13, 0, 0, 0, 0, 14, 0, + 563, 0, 0, 0, 0, 1184, 1184, 1184, 0, 0, + 0, 0, 16, 0, 17, 18, 19, 0, 0, 690, + 0, 20, 0, 0, 0, 202, 21, 0, 0, 0, + 23, 202, 0, 168, 0, 0, 0, 0, 0, 26, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 102, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 102, 102, + 0, 102, 102, 32, 0, 626, 0, 33, 626, 626, + 626, 0, 34, 784, 0, 7, 8, 785, 10, 167, + 12, 13, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 626, 626, 626, 626, 626, 626, 626, 0, 0, + 16, 626, 17, 18, 19, 0, 0, 0, 0, 20, + -523, 0, 0, 0, 21, 102, 0, 0, 23, 786, + 0, 168, 102, 121, 928, 928, 928, 26, 0, 27, + 28, 1515, 0, 787, 235, 788, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 776, 0, + 0, 32, 0, 0, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -523, 1516, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 626, 626, 626, 626, 626, + 626, 0, 776, 626, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 555, 0, 7, 8, 9, 10, 167, + 12, 301, 302, 303, 735, 304, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, + 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, + 102, 309, 310, 311, 21, 312, 313, 0, 23, 0, + 621, 0, 314, 315, 316, 317, 318, 26, 0, 27, + 28, -313, 0, 0, 321, 0, 0, 0, 0, 0, + 322, 0, 0, 1210, 0, 0, 7, 127, 128, 10, + 0, 324, 325, 1211, 0, 0, 0, 0, 0, 327, + 328, 329, 0, 0, 0, 1212, 625, 0, 626, 626, + 0, 626, 0, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 331, 102, 102, 21, 0, 102, 0, 0, + 102, 0, 0, 0, 0, 0, 0, 0, 26, 102, + 27, 28, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 151, 579, 580, 581, + 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 626, 626, 626, 626, 1318, 0, 1319, + 1320, 1321, 10, 167, 12, 301, 302, 303, 0, 304, + 14, 1322, 0, 1323, 1324, 1325, 1326, 1327, 1328, 1329, + 1330, 1331, 1332, 15, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, - 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, - 318, 26, 0, 846, 847, 726, 0, 0, 321, 0, - 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 0, 330, - 848, 725, 0, 843, 844, 845, 10, 0, 12, 536, - 302, 303, 0, 304, 14, 0, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, - 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, - 314, 315, 316, 317, 318, 26, 0, 846, 847, 726, - 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, - 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, - 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, - 0, 0, 725, 330, 843, 844, 845, 10, 0, 12, - 536, 302, 303, 0, 304, 14, 0, 0, 0, -483, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, + 313, 1333, 23, 1334, 0, 626, 314, 315, 316, 317, + 318, 26, 0, 1335, 320, 722, 0, 1336, 321, 0, + 776, 0, 0, 0, 322, 0, 0, 323, 0, 0, + 0, 0, 0, 0, 18, 324, 325, 326, 0, 0, + 0, 0, 0, 327, 328, 329, 0, 102, 0, 330, + 0, 1337, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 331, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 102, 0, 102, 725, 0, + 842, 843, 844, 10, 0, 12, 536, 302, 303, 0, + 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 0, 0, 102, 102, 16, 305, 17, 0, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, + 317, 318, 26, 0, 845, 846, 726, 0, 0, 321, + 0, 0, 0, 776, 0, 322, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, + 330, 847, 555, 0, 300, 8, 9, 10, 776, 12, + 301, 302, 303, 0, 304, 14, 1006, 331, 0, 0, + 0, 0, 0, 0, 0, 0, 102, 0, 102, 16, + 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, - 0, 314, 315, 316, 317, 318, 26, 0, 846, 847, - 726, 0, 0, 321, 0, 0, 0, 0, 0, 322, - 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, - 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 725, 330, 300, 8, 9, 10, 0, + 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, + -313, 0, 0, 321, 0, 0, 0, 0, 0, 322, + 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, + 324, 325, 557, 0, 0, 0, 0, 0, 327, 328, + 329, 0, 0, 725, 558, 842, 843, 844, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, - 1361, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, - 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, - 320, 726, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 314, 315, 316, 317, 318, 26, 0, 845, + 846, 726, 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, - 328, 329, 0, 0, 0, 330, 0, 555, 0, 7, - 8, 9, 10, 1365, 12, 301, 302, 303, 0, 304, + 328, 329, 0, 0, 0, 330, 847, 725, 0, 842, + 843, 844, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, + 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, - 318, 26, 0, 27, 28, -313, 0, 0, 321, 0, - 0, 0, 0, 0, 322, 0, 0, 1537, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 1538, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 725, 1539, + 318, 26, 0, 845, 846, 726, 0, 0, 321, 0, + 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, + 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, + 0, 0, 0, 327, 328, 329, 0, 0, 725, 330, + 842, 843, 844, 10, 0, 12, 536, 302, 303, 0, + 304, 14, 0, 0, 0, -483, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, + 317, 318, 26, 0, 845, 846, 726, 0, 0, 321, + 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 725, + 330, 300, 8, 9, 10, 0, 12, 536, 302, 303, + 0, 304, 14, 0, 0, 0, 1357, 331, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, + 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, + 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, + 316, 317, 318, 26, 0, 27, 320, 726, 0, 0, + 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, + 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, + 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, + 0, 330, 0, 555, 0, 7, 8, 9, 10, 1361, + 12, 301, 302, 303, 0, 304, 14, 0, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, + 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, + 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, + 28, -313, 0, 0, 321, 0, 0, 0, 0, 0, + 322, 0, 0, 1531, 0, 0, 0, 0, 0, 0, + 0, 324, 325, 1532, 0, 0, 0, 0, 0, 327, + 328, 329, 0, 0, 725, 1533, 300, 8, 9, 10, + 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, + 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, + 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, + 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, + 27, 320, 726, 0, 0, 321, 0, 0, 0, 0, + 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, + 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, + 327, 328, 329, 0, 0, 854, 330, 300, 8, 9, + 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, + 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, + 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, + 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, + 0, 27, 320, 0, 0, 0, 321, -789, 0, 0, + 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, + 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, + 0, 327, 328, 329, 0, 0, 1615, 330, 300, 8, + 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, + 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, + 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, + 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, + 26, 0, 27, 320, 0, 0, -196, 321, 0, 0, + 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, + 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, + 0, 0, 327, 328, 329, 0, 0, 854, 330, 300, + 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, + 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, + 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, + 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, + 318, 26, 0, 27, 320, 0, 0, 0, 321, 0, + 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, + 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, + 0, 0, 0, 327, 328, 329, 0, 0, 947, 330, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, - 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, + 304, 14, 0, 0, -789, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, - 317, 318, 26, 0, 27, 320, 726, 0, 0, 321, + 317, 318, 26, 0, 27, 320, 0, 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, - 0, 0, 0, 0, 327, 328, 329, 0, 0, 855, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 949, 330, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, - 321, -791, 0, 0, 0, 0, 322, 0, 0, 323, + 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, - 1621, 330, 300, 8, 9, 10, 0, 12, 301, 302, + 1580, 330, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, - -196, 321, 0, 0, 0, 0, 0, 322, 0, 0, + 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, - 0, 855, 330, 300, 8, 9, 10, 0, 12, 536, + 0, 0, 330, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, @@ -2392,1201 +2366,1139 @@ static const short yytable[] = { 59, 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, - 0, 0, 948, 330, 300, 8, 9, 10, 0, 12, - 536, 302, 303, 0, 304, 14, 0, 0, -791, 0, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, - 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, - 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 322, - 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, - 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 950, 330, 300, 8, 9, 10, 0, - 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, - 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, - 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, - 320, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, - 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, - 328, 329, 0, 0, 1586, 330, 300, 8, 9, 10, - 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, - 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, - 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, - 27, 320, 0, 0, 0, 321, 0, 0, 0, 0, - 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, - 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, - 327, 328, 329, 0, 0, 0, 330, 300, 8, 9, - 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, - 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, - 0, 27, 320, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, - 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, - 0, 327, 328, 329, 0, 0, 0, 330, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 331, 894, 1323, 1324, 1325, 10, - 167, 12, 301, 302, 303, 0, 304, 14, 1326, 0, - 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, - 15, 16, 305, 17, 18, 19, 0, 306, 307, 308, - 20, 0, 309, 310, 311, 21, 312, 313, 1337, 23, - 1338, 0, 0, 314, 315, 316, 317, 318, 26, 0, - 1339, 320, 722, 0, 1340, 321, 0, 0, 0, 0, - 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, - 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, - 327, 328, 329, 0, 0, 0, 330, 0, 1341, 0, + 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1473, 331, 1323, 1324, 1325, 10, 167, 12, - 301, 302, 303, 0, 304, 14, 1326, 0, 1327, 1328, - 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 15, 16, + 331, 893, 1319, 1320, 1321, 10, 167, 12, 301, 302, + 303, 0, 304, 14, 1322, 0, 1323, 1324, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, 1332, 15, 16, 305, 17, + 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, + 311, 21, 312, 313, 1333, 23, 1334, 0, 0, 314, + 315, 316, 317, 318, 26, 0, 1335, 320, 722, 0, + 1336, 321, 0, 0, 0, 0, 0, 322, 0, 0, + 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, + 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, + 0, 0, 330, 0, 1337, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1467, 331, + 1319, 1320, 1321, 10, 167, 12, 301, 302, 303, 0, + 304, 14, 1322, 0, 1323, 1324, 1325, 1326, 1327, 1328, + 1329, 1330, 1331, 1332, 15, 16, 305, 17, 18, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 1333, 23, 1334, 0, 0, 314, 315, 316, + 317, 318, 26, 0, 1335, 320, 722, 0, 1336, 321, + 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, + 330, 0, 1337, 0, 1319, 1320, 1321, 10, 167, 12, + 301, 302, 303, 0, 304, 14, 1322, 331, 1323, 1324, + 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 15, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, - 309, 310, 311, 21, 312, 313, 1337, 23, 1338, 0, - 0, 314, 315, 316, 317, 318, 26, 0, 1339, 320, - 722, 0, 1340, 321, 0, 0, 0, 0, 0, 322, + 309, 310, 311, 21, 312, 313, 1333, 23, 1334, 0, + 0, 314, 315, 316, 317, 318, 26, 0, 1335, 320, + 1589, 0, 1336, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 0, 330, 0, 1341, 0, 1323, 1324, - 1325, 10, 167, 12, 301, 302, 303, 0, 304, 14, - 1326, 331, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, - 1335, 1336, 15, 16, 305, 17, 18, 19, 0, 306, + 329, 0, 0, 0, 330, 0, 1337, 0, 1319, 1320, + 1321, 10, 167, 12, 301, 302, 303, 0, 304, 14, + 1322, 331, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 15, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, - 1337, 23, 1338, 0, 0, 314, 315, 316, 317, 318, - 26, 0, 1339, 320, 1595, 0, 1340, 321, 0, 0, + 1333, 23, 1334, 0, 0, 314, 315, 316, 317, 318, + 26, 0, 1335, 320, 0, 0, 1336, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, 330, 0, - 1341, 0, 1323, 1324, 1325, 10, 167, 12, 301, 302, - 303, 0, 304, 14, 1326, 331, 1327, 1328, 1329, 1330, - 1331, 1332, 1333, 1334, 1335, 1336, 15, 16, 305, 17, - 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, - 311, 21, 312, 313, 1337, 23, 1338, 0, 0, 314, - 315, 316, 317, 318, 26, 0, 1339, 320, 0, 0, - 1340, 321, 0, 0, 0, 0, 0, 322, 0, 0, - 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, - 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, - 0, 0, 330, 0, 1341, 300, 8, 9, 10, 167, - 12, 301, 302, 303, 735, 304, 14, 0, 0, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1337, 300, 8, 9, 10, 167, 12, 301, 302, 303, + 735, 304, 14, 0, 0, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, + 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, + 21, 312, 313, 0, 23, 0, 621, 0, 314, 315, + 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 322, 0, 0, 924, + 0, 0, 0, 0, 0, 0, 0, 324, 325, 925, + 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, + 0, 926, 625, 7, 8, 9, 10, 167, 12, 301, + 302, 303, 735, 304, 14, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, + 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, + 310, 311, 21, 312, 313, 0, 23, 0, 621, 0, + 314, 315, 316, 317, 318, 26, 0, 27, 28, 0, + 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, + 0, 1210, 0, 0, 0, 0, 0, 0, 0, 324, + 325, 1211, 0, 0, 0, 0, 0, 327, 328, 329, + 0, 0, 0, 1212, 625, 300, 8, 9, 10, 0, + 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 621, 0, 314, 315, 316, 317, 318, 26, 0, 27, - 320, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 322, 0, 0, 925, 0, 0, 0, 0, 0, 0, - 0, 324, 325, 926, 0, 0, 0, 0, 0, 327, - 328, 329, 0, 0, 0, 927, 625, 7, 8, 9, - 10, 167, 12, 301, 302, 303, 735, 304, 14, 0, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 322, 0, 0, 924, 0, 0, 0, 0, 0, 0, + 0, 324, 325, 925, 0, 0, 0, 0, 0, 327, + 328, 329, 0, 0, 0, 926, 625, 7, 8, 9, + 10, 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 621, 0, 314, 315, 316, 317, 318, 26, - 0, 27, 28, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 322, 0, 0, 1212, 0, 0, 0, 0, - 0, 0, 0, 324, 325, 1213, 0, 0, 0, 0, - 0, 327, 328, 329, 0, 0, 0, 1214, 625, 7, - 8, 9, 10, 0, 12, 301, 302, 303, 0, 304, + 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 322, 0, 0, 1210, 0, 0, 0, 0, + 0, 0, 0, 324, 325, 1211, 0, 0, 0, 0, + 0, 327, 328, 329, 0, 0, 0, 1212, 625, 300, + 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, - 313, 0, 23, 0, 621, 0, 314, 315, 316, 317, - 318, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 322, 0, 0, 1212, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 1213, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 0, 1214, - 625, 300, 8, 9, 10, 0, 12, 536, 302, 303, - 0, 304, 14, 0, 0, 0, 331, 0, 0, 0, + 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, + 318, 26, 0, 27, 320, 0, 0, 0, 321, 0, + 0, 0, 0, 0, 322, 0, 0, 556, 0, 0, + 0, 0, 0, 0, 0, 324, 325, 557, 0, 0, + 0, 0, 0, 327, 328, 329, 0, 0, 0, 558, + 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, + 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, + 317, 318, 26, 0, 27, 320, 0, 0, 1440, 321, + 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, + 330, 300, 8, 9, 10, 167, 12, 301, 302, 303, + 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 322, 0, 0, 556, - 0, 0, 0, 0, 0, 0, 0, 324, 325, 557, + 0, 0, 0, 0, 0, 0, 322, 0, 0, 323, + 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, - 0, 558, 300, 8, 9, 10, 0, 12, 536, 302, + 0, 330, 7, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, + 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, - 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, - 1446, 321, 0, 0, 0, 0, 0, 322, 0, 0, - 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, - 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, - 0, 0, 330, 300, 8, 9, 10, 167, 12, 301, + 315, 316, 317, 318, 26, 0, 27, 28, 0, 0, + 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, + 1531, 0, 0, 0, 0, 0, 0, 0, 324, 325, + 1532, 0, 0, 0, 0, 0, 327, 328, 329, 0, + 0, 0, 1533, 300, 8, 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, + 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, - 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, + 314, 315, 316, 317, 318, 26, 0, 319, 320, 0, + 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, - 0, 0, 0, 330, 7, 8, 9, 10, 0, 12, - 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, + 0, 0, 0, 330, 300, 8, 9, 10, 0, 12, + 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, + 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, - 0, 314, 315, 316, 317, 318, 26, 0, 27, 28, + 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, 321, 0, 0, 0, 0, 0, 322, - 0, 0, 1537, 0, 0, 0, 0, 0, 0, 0, - 324, 325, 1538, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 0, 1539, 300, 8, 9, 10, 0, - 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, + 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, + 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, + 329, 0, 0, 0, 330, 300, 8, 9, 10, 0, + 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, - 0, 0, 314, 315, 316, 317, 318, 26, 0, 319, + 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, 330, 300, 8, 9, 10, - 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, + 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, - 27, 320, 0, 0, 0, 321, 0, 0, 0, 0, + 27, 320, 570, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, - 327, 328, 329, 0, 0, 0, 330, 300, 8, 9, + 327, 328, 329, 0, 0, 0, 571, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, - 0, 27, 320, 0, 0, 0, 321, 0, 0, 0, + 0, 27, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, - 0, 327, 328, 329, 0, 0, 0, 330, 300, 8, - 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, - 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, - 26, 0, 27, 320, 570, 0, 0, 0, 0, 0, - 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, - 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, - 0, 0, 327, 328, 329, 0, 0, 0, 571, 300, + 0, 327, 328, 329, 0, 0, 0, 330, 609, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, - 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, + 14, 0, 0, 0, 331, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, - 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, - 0, 0, 0, 327, 328, 329, 0, 0, 0, 330, - 609, 300, 8, 9, 10, 0, 12, 536, 302, 303, - 0, 304, 14, 0, 0, 0, 331, 0, 0, 0, + 0, 0, 0, 0, 322, 0, 0, 556, 0, 0, + 0, 0, 0, 0, 0, 324, 325, 557, 0, 0, + 0, 0, 0, 327, 328, 329, 0, 0, 0, 558, + 1168, 8, 9, 10, 0, 12, 536, 302, 303, 0, + 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, + 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, + 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, + 317, 318, 26, 0, 27, 320, 0, 0, 0, 321, + 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, + 0, 0, 0, 0, 327, 328, 329, 0, 0, 0, + 330, 7, 8, 9, 10, 0, 12, 301, 302, 303, + 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, - 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 322, 0, 0, 556, - 0, 0, 0, 0, 0, 0, 0, 324, 325, 557, + 316, 317, 318, 26, 0, 27, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 322, 0, 0, 1531, + 0, 0, 0, 0, 0, 0, 0, 324, 325, 1532, 0, 0, 0, 0, 0, 327, 328, 329, 0, 0, - 0, 558, 1170, 8, 9, 10, 0, 12, 536, 302, + 0, 1533, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 322, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, 0, - 0, 0, 330, 7, 8, 9, 10, 0, 12, 301, + 0, 0, 537, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 308, 20, 0, 309, + 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, - 314, 315, 316, 317, 318, 26, 0, 27, 28, 0, + 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, - 0, 1537, 0, 0, 0, 0, 0, 0, 0, 324, - 325, 1538, 0, 0, 0, 0, 0, 327, 328, 329, - 0, 0, 0, 1539, 300, 8, 9, 10, 0, 12, + 0, 323, 0, 0, 0, 0, 0, 0, 0, 324, + 325, 326, 0, 0, 0, 0, 0, 327, 328, 329, + 0, 0, 0, 540, 300, 8, 9, 10, 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, - 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, - 324, 325, 326, 0, 0, 0, 0, 0, 327, 328, - 329, 0, 0, 0, 537, 300, 8, 9, 10, 0, - 12, 536, 302, 303, 0, 304, 14, 0, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 305, 17, 0, 19, 0, 306, 307, 308, 20, - 0, 309, 310, 311, 21, 312, 313, 0, 23, 0, - 0, 0, 314, 315, 316, 317, 318, 26, 0, 27, - 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 322, 0, 0, 323, 0, 0, 0, 0, 0, 0, - 0, 324, 325, 326, 0, 0, 0, 0, 0, 327, - 328, 329, 0, 0, 0, 540, 300, 8, 9, 10, - 0, 12, 536, 302, 303, 0, 304, 14, 0, 0, - 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 308, - 20, 0, 309, 310, 311, 21, 312, 313, 0, 23, - 0, 0, 0, 314, 315, 316, 317, 318, 26, 0, - 27, 320, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 322, 0, 0, 323, 7, 8, 9, 10, 205, - 12, 206, 324, 325, 326, 0, 14, 0, 0, 0, - 327, 328, 329, 0, 0, 0, 330, 0, 0, 0, - 16, 0, 17, 18, 0, 0, 0, 0, 0, 20, - 0, 0, 0, 331, 21, 0, 0, 0, 23, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 27, - 28, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, 583, 584, 30, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 31, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 33, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 578, 579, - 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 0, 1101, 0, 0, 1609, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 1603, 573, 574, 575, 576, 577, 578, 579, + 0, 0, 323, -388, 8, 9, -388, -388, 12, 246, + 324, 325, 326, 0, 14, 0, 0, 0, 327, 328, + 329, 0, 0, 0, 330, 0, 0, 0, 16, 0, + 17, -388, 0, 0, 0, 0, 0, 20, 0, 0, + 0, 331, -388, 0, 0, 0, 23, 0, 621, 0, + 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, + 0, 0, 0, 7, 8, 9, 10, 167, 12, 13, + 0, 622, 1019, 0, 14, 0, 0, 0, 0, 0, + 0, 623, 0, 0, 0, 0, 0, 0, 16, -388, + 17, 18, 0, 624, 625, 0, 0, 20, 0, 0, + 0, 0, 21, 0, 0, 0, 23, 0, 7, 8, + 9, 10, 205, 12, 206, 26, 0, 27, 28, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 16, 0, 17, 18, 0, 0, 0, + 0, 31, 20, 0, 0, 0, 0, 21, 0, 32, + 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, + 26, 0, 27, 28, 0, 0, 1457, 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, 33, 0, + 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, + 0, 23, 0, 7, 8, 9, 10, 205, 12, 206, + 26, 0, 27, 28, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 16, 0, + 17, 18, 0, 0, 0, 0, 31, 20, 0, 0, + 0, 0, 21, 0, 32, 0, 23, 0, 33, 0, + 0, 0, 0, 0, 0, 26, 0, 27, 28, 8, + 9, 0, 167, 12, 13, 0, 0, 735, 0, 14, + 0, 30, 0, 0, 0, 0, 7, 8, 9, 10, + 0, 31, 519, 16, 0, 17, 18, 0, 0, 32, + 0, 0, 20, 33, 0, 0, 0, 0, 0, 0, + 0, 23, 0, 621, 18, 0, 0, 0, 0, 0, + 26, 0, 130, 131, 0, 21, 0, 300, 8, 9, + 10, 0, 0, 13, 0, 0, 1499, 0, 26, 0, + 27, 28, 0, 0, 0, 0, 1500, 7, 127, 128, + 10, 0, 0, 0, 193, 18, 0, 0, 1501, 625, + 0, 0, 0, 0, 194, 0, 21, 0, 7, 8, + 9, 10, 32, 0, 0, 18, 195, 0, 0, 26, + 0, 27, 320, 0, 0, 0, 21, 0, 7, 8, + 9, 10, 0, 0, 0, 752, 18, 0, 0, 26, + 0, 27, 28, 0, 0, 753, 0, 21, 0, 0, + 0, 0, 0, 32, 0, 30, 18, 754, 0, 0, + 26, 0, 27, 28, 0, 31, 0, 21, 0, 300, + 8, 9, 10, 32, 0, 0, 476, 33, 0, 0, + 26, 0, 27, 28, 0, 0, 477, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 193, 18, 478, 0, + 0, 0, 0, 0, 0, 0, 194, 0, 21, 0, + 0, 0, 8, 9, 32, 167, 12, 13, 195, 0, + 1583, 26, 14, 27, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 752, 17, 18, + 0, 0, 0, 0, 0, 20, 0, 753, 0, 0, + 0, 0, 0, 0, 23, 32, 0, 0, 0, 754, + 0, 0, 0, 26, 0, 130, 131, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 0, 0, 0, 1268, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 663, + 0, 0, 1603, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594 + 590, 591, 592, 593, 594, 1099, 0, 0, 0, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 1597, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 573, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 0, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 577, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594 }; static const short yycheck[] = { 4, - 23, 161, 4, 55, 402, 4, 174, 350, 402, 306, - 307, 176, 209, 4, 175, 720, 126, 156, 4, 356, - 80, 883, 14, 4, 80, 507, 323, 402, 356, 326, - 35, 468, 329, 35, 485, 332, 35, 42, 84, 336, - 42, 251, 357, 358, 35, 568, 134, 344, 440, 35, - 247, 42, 57, 42, 35, 373, 42, 149, 150, 605, - 790, 42, 792, 304, 305, 133, 134, 72, 647, 695, - 800, 124, 42, 4, 55, 455, 57, 1342, 1518, 84, - 1428, 209, 4, 88, 133, 90, 46, 92, 144, 54, - 218, 83, 1519, 408, 409, 11, 42, 338, 1352, 296, - 243, 11, 107, 108, 35, 1359, 42, 57, 30, 31, - 12, 42, 9, 35, 106, 1, 76, 1520, 11, 1542, - 42, 48, 806, 175, 703, 1565, 60, 460, 812, 38, - 59, 136, 137, 1, 139, 33, 1568, 55, 0, 60, - 39, 1564, 0, 55, 55, 63, 356, 203, 48, 75, - 136, 63, 63, 350, 1, 136, 55, 75, 60, 140, - 165, 63, 84, 75, 169, 62, 93, 169, 48, 98, - 63, 176, 48, 59, 625, 109, 165, 63, 169, 165, - 169, 108, 562, 169, 165, 1617, 136, 108, 169, 55, - 155, 59, 108, 93, 175, 176, 539, 1600, 108, 169, - 109, 1624, 262, 217, 218, 136, 108, 63, 108, 95, - 702, 109, 59, 93, 136, 108, 63, 93, 94, 12, - 61, 48, 1649, 169, 55, 1665, 176, 149, 150, 3, - 4, 5, 108, 169, 165, 200, 59, 719, 169, 923, - 63, 222, 27, 165, 75, 75, 31, 169, 95, 4, - 5, 61, 108, 213, 1519, 4, 248, 1605, 493, 556, - 557, 1240, 1241, 63, 93, 60, 93, 60, 109, 1523, - 63, 193, 194, 33, 48, 510, 61, 25, 1257, 347, - 65, 55, 48, 57, 58, 48, 35, 49, 448, 4, - 5, 93, 297, 42, 76, 42, 78, 343, 347, 109, - 55, 60, 57, 58, 90, 393, 92, 644, 108, 175, - 685, 59, 59, 108, 9, 63, 71, 12, 48, 93, - 1574, 60, 714, 715, 109, 330, 81, 93, 61, 93, - 93, 94, 385, 648, 49, 84, 882, 76, 343, 965, - 479, 721, 57, 58, 742, 108, 351, 95, 742, 108, - 14, 137, 404, 48, 359, 360, 222, 675, 22, 75, - 61, 1045, 490, 93, 356, 60, 81, 62, 63, 806, - 65, 1625, 7, 1057, 360, 812, 109, 4, 5, 360, - 48, 76, 9, 78, 476, 477, 483, 136, 60, 149, - 150, 151, 84, 85, 491, 738, 48, 402, 93, 94, - 405, 65, 75, 38, 614, 1384, 48, 1091, 109, 1093, - 360, 402, 4, 108, 1393, 1394, 165, 1396, 93, 1281, - 169, 343, 169, 404, 48, 93, 94, 4, 55, 360, - 57, 58, 61, 48, 12, 195, 108, 442, 360, 8, - 9, 93, 94, 35, 71, 14, 969, 939, 508, 48, - 942, 93, 94, 442, 81, 25, 442, 1036, 35, 48, - 124, 442, 209, 468, 4, 5, 108, 94, 37, 93, - 217, 218, 442, 924, 107, 489, 490, 46, 93, 48, - 402, 55, 60, 497, 148, 63, 923, 65, 48, 470, - 4, 55, 984, 985, 93, 509, 501, 60, 60, 61, - 247, 75, 483, 508, 93, 94, 508, 822, 55, 49, - 491, 442, 48, 76, 528, 78, 63, 57, 58, 108, - 442, 35, 508, 61, 93, 31, 1256, 508, 75, 534, - 55, 48, 537, 93, 94, 540, 4, 5, 404, 499, - 545, 546, 547, 548, 549, 713, 468, 55, 108, 296, - 75, 1413, 885, 558, 476, 477, 63, 93, 508, 63, - 606, 1043, 48, 568, 48, 59, 571, 75, 966, 1548, - 1549, 75, 966, 359, 238, 239, 93, 508, 25, 65, - 27, 65, 3, 4, 5, 6, 508, 251, 676, 57, - 58, 966, 4, 5, 343, 683, 933, 894, 650, 75, - 182, 606, 55, 350, 470, 933, 48, 93, 1045, 93, - 31, 360, 59, 479, 55, 683, 63, 483, 48, 624, - 1057, 42, 75, 65, 1004, 491, 631, 59, 925, 926, - 48, 774, 48, 776, 55, 832, 57, 58, 781, 691, - 48, 693, 694, 635, 959, 57, 58, 55, 95, 48, - 71, 93, 94, 402, 1091, 93, 1093, 55, 322, 406, - 81, 684, 48, 93, 94, 55, 45, 75, 89, 650, - 1162, 1163, 93, 678, 784, 93, 55, 93, 55, 58, - 1131, 4, 5, 59, 606, 93, 738, 692, 929, 65, - 25, 696, 27, 442, 93, 442, 719, 55, 75, 363, - 622, 623, 624, 1127, 1128, 33, 1130, 93, 372, 631, - 691, 692, 693, 694, 1196, 501, 476, 477, 478, 468, - 76, 385, 94, 933, 59, 108, 49, 63, 63, 25, - 790, 27, 792, 108, 57, 58, 11, 742, 798, 75, - 800, 48, 489, 490, 48, 797, 48, 109, 534, 48, - 497, 1233, 766, 55, 63, 48, 55, 738, 81, 508, - 95, 742, 509, 59, 108, 63, 75, 63, 60, 61, - 1085, 1086, 1087, 75, 60, 61, 75, 75, 1111, 1112, - 98, 528, 108, 1126, 650, 790, 93, 792, 790, 93, - 792, 93, 931, 798, 93, 800, 60, 61, 800, 95, - 93, 806, 807, 808, 790, 810, 792, 812, 61, 790, - 93, 792, 4, 5, 800, 3, 797, 798, 55, 800, - 742, 149, 150, 151, 992, 691, 63, 693, 694, 55, - 752, 753, 61, 793, 794, 111, 1133, 63, 75, 31, - 790, 505, 792, 803, 75, 8, 9, 797, 798, 75, - 800, 14, 819, 820, 821, 94, 48, 606, 94, 790, - 27, 792, 63, 55, 31, 57, 58, 195, 790, 800, - 792, 111, 738, 93, 37, 624, 881, 1210, 800, 71, - 55, 886, 631, 46, 806, 93, 1219, 1220, 63, 81, - 812, 93, 678, 60, 61, 1228, 75, 1040, 1041, 1042, - 75, 93, 94, 75, 651, 75, 570, 75, 25, 60, - 27, 60, 917, 60, 61, 1212, 1213, 11, 923, 60, - 61, 977, 927, 108, 75, 76, 1631, 78, 3, 4, - 5, 797, 7, 8, 9, 60, 61, 60, 61, 1272, - 60, 933, 59, 3, 4, 5, 63, 694, 60, 61, - 614, 108, 3, 4, 5, 108, 31, 3, 4, 5, - 108, 966, 37, 968, 969, 60, 61, 972, 75, 55, - 107, 108, 75, 75, 108, 966, 109, 1292, 95, 109, - 55, 108, 57, 58, 59, 111, 27, 111, 349, 350, - 351, 738, 75, 742, 75, 75, 1048, 57, 58, 55, - 60, 923, 111, 925, 926, 927, 57, 58, 1351, 1069, - 1015, 57, 58, 1069, 1153, 111, 108, 108, 1078, 766, - 684, 807, 808, 1028, 810, 4, 5, 59, 103, 104, - 105, 695, 108, 1038, 108, 81, 55, 8, 1371, 111, - 1045, 790, 48, 792, 966, 1342, 1185, 65, 970, 971, - 972, 800, 1057, 60, 93, 109, 60, 806, 65, 1439, - 4, 5, 726, 812, 93, 4, 5, 1048, 75, 76, - 49, 109, 55, 1078, 61, 1455, 1078, 1410, 57, 58, - 4, 5, 37, 65, 65, 832, 1091, 65, 1093, 62, - 1182, 1183, 1078, 1015, 108, 108, 1101, 1078, 1048, 61, - 48, 1061, 81, 63, 65, 49, 108, 1067, 1068, 48, - 108, 1071, 1072, 57, 58, 1075, 55, 1122, 57, 58, - 1212, 1213, 108, 1045, 108, 49, 111, 65, 1078, 65, - 1135, 1187, 71, 57, 58, 1057, 76, 81, 60, 87, - 88, 93, 81, 91, 92, 93, 94, 1078, 476, 477, - 478, 108, 108, 1158, 93, 94, 1078, 81, 108, 108, - 1558, 27, 1542, 108, 1558, 31, 1305, 140, 76, 1091, - 76, 1093, 76, 1196, 923, 4, 5, 76, 927, 1184, - 108, 108, 1048, 156, 1564, 1350, 63, 769, 1349, 63, - 1351, 1251, 60, 330, 60, 61, 1256, 108, 1179, 65, - 63, 108, 1207, 3, 94, 1207, 6, 108, 1207, 1214, - 89, 1591, 972, 111, 3, 4, 5, 966, 111, 1562, - 49, 1207, 75, 972, 3, 4, 5, 6, 57, 58, - 48, 31, 108, 108, 1156, 1157, 1158, 108, 111, 212, - 1537, 1538, 42, 60, 1624, 109, 111, 220, 108, 108, - 108, 1256, 81, 109, 1256, 1015, 61, 57, 58, 65, - 1182, 1183, 1184, 42, 237, 1645, 1015, 1248, 57, 58, - 1256, 71, 1253, 4, 5, 1256, 55, 65, 57, 58, - 60, 81, 60, 108, 108, 1207, 63, 109, 952, 89, - 1212, 1213, 1214, 93, 93, 93, 1045, 1349, 93, 1351, - 93, 965, 1224, 1225, 108, 1310, 1256, 109, 1057, 8, - 89, 108, 108, 1179, 45, 33, 108, 111, 108, 1185, - 111, 108, 1655, 108, 55, 1256, 57, 58, 465, 1078, - 691, 65, 693, 694, 1256, 696, 108, 1342, 4, 5, - 1342, 108, 1091, 108, 1093, 1350, 108, 1352, 108, 1135, - 1352, 4, 5, 1352, 1359, 108, 1342, 1359, 108, 55, - 1359, 1227, 108, 1368, 108, 1562, 1352, 108, 1349, 1350, - 1351, 63, 111, 1359, 1534, 48, 108, 738, 31, 108, - 108, 96, 1248, 63, 63, 61, 1308, 1309, 1310, 55, - 61, 57, 58, 9, 61, 48, 4, 5, 16, 108, - 537, 108, 55, 540, 57, 58, 108, 108, 545, 1158, - 108, 108, 7, 8, 9, 93, 93, 61, 71, 14, - 1342, 558, 1182, 1183, 1184, 3, 4, 5, 81, 61, - 1352, 1391, 1392, 93, 571, 1184, 31, 1359, 575, 1305, - 93, 94, 37, 65, 1612, 1537, 1538, 55, 1112, 57, - 58, 46, 1212, 1213, 1214, 3, 4, 5, 1207, 7, - 8, 9, 55, 71, 111, 1214, 603, 93, 1050, 1051, - 17, 832, 609, 81, 61, 55, 61, 450, 108, 57, - 58, 59, 107, 1349, 108, 1351, 94, 3, 4, 5, - 81, 82, 83, 84, 85, 1077, 97, 470, 108, 108, - 1082, 11, 1507, 61, 61, 1465, 479, 1256, 1513, 57, - 58, 1563, 61, 1518, 1519, 1520, 1518, 1519, 1523, 1518, - 93, 1523, 60, 496, 1523, 65, 3, 4, 5, 6, - 61, 108, 1518, 1519, 1539, 11, 108, 1523, 108, 55, - 1204, 57, 58, 59, 905, 11, 1210, 7, 8, 9, - 61, 912, 61, 1558, 14, 0, 0, 0, 170, 1453, - 1565, 1310, 2, 1565, 35, 42, 1565, 169, 676, 1574, - 931, 31, 1574, 30, 31, 1574, 33, 37, 966, 1565, - 57, 58, 1563, 1505, 1506, 1507, 46, 442, 1574, 165, - 1611, 1513, 798, 1342, 1196, 1600, 1518, 1519, 1520, 94, - 57, 1523, 59, 1352, 1351, 238, 139, 1665, 65, 299, - 1359, 1282, 89, 1438, 952, 1537, 1538, 657, 1043, 242, - 1625, 726, 1233, 1625, 1078, 798, 1625, 1253, 3, 4, - 5, 659, 945, 1593, 606, 200, 1558, 347, 124, 1625, - 1352, 1208, 1508, 1565, 972, 1645, 1631, 31, 1641, 1579, - 461, 1368, 1574, 3, 4, 5, 1643, 468, 1023, -1, - 1665, -1, -1, 1665, 1246, 1247, 1665, 1249, 1250, -1, - 1252, -1, 1336, 1337, 49, -1, 4, 5, 1600, 1665, - 8, 9, 57, 58, 141, -1, 14, 1015, -1, 146, - -1, 1557, 149, 150, 151, -1, -1, 1563, -1, -1, - 28, -1, 30, 1625, -1, 55, 1466, 57, 58, 37, - -1, -1, -1, 3, 4, 5, -1, -1, 46, 176, - -1, 3, 4, 5, 535, 182, -1, 55, -1, 57, - 58, 59, -1, -1, -1, -1, 193, 194, 195, -1, - 3, 4, 5, 1665, -1, -1, -1, -1, 30, 3, - 4, 5, 209, 890, 4, 5, -1, 141, 1507, 9, - 217, 218, 146, -1, 1513, 93, 1430, 57, 58, 1518, - 1519, 1520, -1, 55, 1523, 57, 58, 1537, 1538, 1539, - -1, 31, -1, -1, -1, 596, 49, -1, 1452, 1453, - 927, 602, 1153, -1, 57, 58, -1, -1, -1, 1381, - 1382, 55, 259, 57, 58, 55, -1, 57, 58, 1558, - 194, -1, -1, -1, -1, 1562, 1565, -1, 1179, -1, - -1, 71, -1, -1, 1185, 1574, -1, 638, -1, 12, - -1, 81, -1, -1, -1, -1, 80, 3, 4, 5, - -1, -1, -1, 93, 27, 4, 5, 764, 31, -1, - 9, 1600, -1, -1, 1182, 1183, 1184, -1, -1, -1, - 104, -1, -1, -1, -1, 48, -1, 1531, -1, 3, - 4, 5, 31, 330, -1, 259, 1625, 60, 61, -1, - 63, -1, 65, -1, 1212, 1213, 1214, -1, 805, 133, - -1, 57, 58, -1, 811, -1, 55, -1, 57, 58, - 144, 1038, -1, 1485, 1486, 1487, 3, 4, 5, 6, - 93, 94, 71, 3, 4, 5, 1665, 7, 8, 9, - -1, -1, 81, 57, 58, 108, -1, 3, 4, 5, - 6, -1, 905, -1, 93, 4, 5, -1, -1, 912, - 9, 31, -1, -1, 1305, 42, -1, 37, 405, 406, - 33, -1, 49, -1, -1, -1, -1, -1, 931, 203, - 57, 58, 419, 1545, 1546, 422, 42, 57, 58, -1, - -1, 428, 429, 430, -1, -1, -1, 434, -1, -1, - -1, 57, 58, -1, 81, -1, 55, -1, 57, 58, - -1, -1, 89, -1, 238, 193, 194, -1, -1, -1, - -1, 918, 71, 920, -1, -1, 3, 4, 5, 6, - -1, -1, 81, -1, 471, -1, -1, 474, 262, 476, - 477, 478, -1, -1, -1, 482, -1, 3, 4, 5, - 6, 488, 489, 490, 1616, 419, 493, -1, 422, -1, - 497, -1, -1, -1, -1, 42, -1, -1, -1, -1, - 434, 48, -1, 510, -1, 31, -1, -1, 55, -1, - 57, 58, -1, -1, -1, -1, 42, 150, 151, 880, - 881, -1, 48, -1, 71, 886, -1, 1214, -1, 55, - 537, 57, 58, 540, 81, -1, -1, 471, -1, 900, - 474, 902, 89, 904, -1, 71, 93, 94, -1, 556, - 557, 558, 4, 5, 488, 81, -1, 9, 3, 4, - 5, 355, 195, 89, 571, -1, -1, 93, 94, -1, - -1, -1, 3, 4, 5, -1, -1, -1, -1, 31, - -1, 1268, 1269, 1270, 1271, -1, -1, -1, 1466, -1, - -1, -1, -1, 954, 88, -1, 90, 1508, 92, 3, - 4, 5, 6, 55, -1, 57, 58, -1, -1, -1, - -1, -1, 57, 58, -1, 622, 623, 624, 412, 71, - -1, -1, -1, 1090, 631, 1092, 57, 58, -1, 81, - 1153, -1, -1, -1, -1, 39, 40, 998, 42, -1, - -1, 93, -1, 137, 651, 139, 1557, -1, 1335, -1, - -1, 55, -1, 57, 58, -1, 1179, -1, -1, 1537, - 1538, 1539, 1185, -1, 3, 4, 5, 6, 7, 8, - 9, -1, -1, 12, -1, 14, 7, 8, 9, -1, - -1, -1, 1149, 14, -1, 692, -1, 694, 695, 28, - -1, 30, 31, -1, -1, -1, -1, 330, 37, -1, - 31, -1, -1, 42, 1227, -1, 37, 46, -1, 48, - -1, 505, 4, 5, -1, 46, 55, 9, 57, 58, - -1, -1, -1, 471, 1411, -1, 474, -1, 476, 477, - 61, 738, 71, -1, 7, 8, 9, 531, -1, 31, - 488, 14, 81, 750, 751, 752, 753, 754, -1, -1, - 89, 758, -1, -1, 93, 94, 48, -1, 31, 766, - -1, 1448, 769, 55, 37, 57, 58, -1, -1, -1, - 1237, -1, -1, 46, -1, 1242, -1, -1, -1, 71, - -1, -1, 1305, -1, -1, -1, -1, -1, 61, 81, - -1, 798, -1, -1, -1, -1, 429, 430, -1, -1, - -1, 93, 94, 4, 5, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, -1, 750, 751, 825, 14, - 3, 4, 5, 6, 758, 619, 1513, 321, -1, 1296, - 31, 402, 1519, 1520, -1, -1, 31, 1198, -1, 1200, - 634, 1202, 37, -1, 477, 478, -1, 42, -1, -1, - -1, 46, 1539, 48, 55, -1, 57, 58, -1, 42, - 55, -1, 57, 58, -1, 359, 49, -1, -1, -1, - 71, -1, -1, -1, 57, 58, 71, -1, -1, -1, - 81, -1, -1, -1, -1, -1, 81, -1, -1, -1, - -1, -1, 93, -1, 89, -1, -1, 468, 93, 906, - -1, -1, 909, -1, 537, -1, 89, 540, -1, -1, - -1, -1, -1, 1600, 921, -1, -1, -1, 925, 926, - 927, -1, -1, -1, 557, 558, 4, 5, -1, -1, - 8, 9, 1619, 1400, 1401, -1, 14, -1, 571, -1, - -1, 1302, 79, 80, 81, 82, 83, 84, 85, -1, - 28, 1418, 30, 1640, -1, -1, -1, -1, 965, 37, - -1, 755, 1649, 970, 971, 972, 460, 461, 46, -1, - -1, -1, -1, -1, 468, -1, -1, 55, -1, 57, - 58, 3, 4, 5, 6, 1508, -1, 9, -1, -1, - -1, -1, 3, 4, 5, 6, -1, -1, 631, -1, - -1, -1, 750, 751, 752, 753, -1, 501, 1015, 31, - 758, 1478, 1479, -1, -1, 93, -1, -1, -1, -1, - 42, -1, 1029, 1030, 1031, -1, 48, 1494, 1495, -1, - -1, 42, -1, 55, 1557, 57, 58, 971, 49, -1, - 534, 535, -1, 1050, 1051, -1, 57, 58, -1, 71, - 544, -1, -1, 624, -1, -1, -1, -1, -1, 81, - 631, -1, -1, -1, -1, -1, -1, 89, -1, -1, - 1077, 93, 94, -1, 568, 1082, 570, -1, 89, 573, - 574, -1, 576, 577, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, -1, 596, -1, -1, -1, -1, -1, 602, -1, - -1, -1, 4, 5, -1, -1, 8, 9, -1, -1, - 753, 754, 14, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 631, 932, -1, - 934, -1, -1, -1, 638, 37, -1, -1, -1, 1156, - 1157, 1158, -1, -1, 46, -1, 48, -1, 3, 4, - 5, 6, -1, 55, 9, 57, 58, -1, 662, 663, - -1, 742, -1, 1180, 1181, 1182, 1183, 1184, -1, 71, - -1, -1, 1189, 977, 678, -1, 31, -1, -1, 81, - -1, -1, 825, -1, -1, -1, -1, 42, -1, -1, - -1, 93, 94, 48, -1, 1212, 1213, 1214, -1, -1, - 55, -1, 57, 58, -1, -1, -1, 1224, 1225, 1226, - 4, 5, 970, 971, 8, 9, 71, -1, -1, -1, - 14, -1, 726, -1, -1, 806, 81, -1, -1, 1246, - 1247, 812, 1249, 1250, 89, 1252, 1180, 1181, 93, 94, - -1, -1, -1, 37, -1, 1189, -1, -1, -1, -1, - -1, -1, 46, 1, 48, 3, 4, 5, 6, -1, - 8, 55, -1, 57, 58, 1069, -1, -1, -1, -1, - -1, 1029, 1030, 1031, -1, -1, -1, 71, -1, -1, - -1, -1, -1, 926, 927, 789, -1, 81, -1, 1306, - 1307, 1308, 1309, 1310, 42, -1, 1313, -1, -1, 93, - 94, 49, -1, 807, 808, -1, 810, 55, -1, 57, - 58, -1, -1, 3, 4, 5, 6, -1, -1, -1, - -1, 825, -1, -1, -1, -1, -1, -1, -1, 972, - -1, -1, -1, 1350, 1351, -1, -1, -1, -1, -1, - -1, 89, 923, -1, 848, -1, 927, -1, -1, -1, - -1, -1, 42, -1, -1, 1159, -1, -1, -1, 49, - -1, -1, 1306, 1307, 1381, 1382, -1, 57, 58, 1313, - -1, -1, 1015, -1, -1, -1, 880, 881, -1, -1, - -1, 885, 886, 1187, -1, 966, -1, -1, -1, -1, - -1, 972, -1, -1, -1, -1, 900, -1, 902, 89, - 904, -1, -1, 1420, 1421, -1, 1423, 3, 4, 5, - 6, -1, -1, 9, -1, -1, -1, 3, 4, 5, - 6, -1, 1180, 1181, 1182, 1183, -1, -1, -1, -1, - -1, 1189, -1, -1, 1015, 31, -1, -1, -1, 943, - -1, -1, -1, -1, -1, -1, 42, 1251, -1, 1466, - 954, -1, 48, -1, 1212, 1213, 42, -1, -1, 55, - -1, 57, 58, 49, 1045, 969, 1224, 1225, 1485, 1486, - 1487, 57, 58, -1, -1, 71, 1057, -1, 982, -1, - -1, -1, -1, -1, -1, 81, -1, -1, 1505, 1506, - 1507, -1, -1, 89, 998, 81, -1, 93, 94, -1, - -1, -1, -1, 89, -1, -1, -1, -1, -1, 461, - 1091, 1015, 1093, -1, 1157, 1158, 468, -1, -1, -1, - 1537, 1538, 1539, -1, 3, 4, 5, 6, 1545, 1546, - 9, -1, -1, -1, -1, 3, 4, 5, 6, -1, - 1183, 1184, 622, 623, -1, -1, -1, -1, 1306, 1307, - 1308, 1309, 31, -1, -1, 1313, 1060, -1, -1, -1, - -1, -1, -1, 42, -1, -1, -1, -1, -1, 48, - 1213, 1214, -1, -1, 42, -1, 55, 1158, 57, 58, - -1, 49, -1, 535, -1, -1, -1, -1, -1, 57, - 58, -1, 71, -1, -1, -1, -1, -1, -1, 1616, - -1, -1, 81, 1184, -1, -1, -1, 1111, 1112, -1, - 89, 1115, -1, 81, 93, 94, -1, -1, 1422, -1, - 4, 89, -1, -1, -1, -1, -1, -1, -1, -1, - 14, 1135, -1, 1214, -1, 3, 4, 5, 6, -1, - 24, -1, -1, -1, 596, -1, 30, 31, -1, 33, - 602, 35, -1, -1, -1, -1, -1, -1, 42, -1, - -1, -1, 1420, 1421, -1, 1423, 1309, 1310, -1, -1, - -1, 55, -1, 57, 42, -1, -1, -1, -1, 631, - -1, 65, -1, -1, -1, -1, 638, 55, 72, 57, - 58, -1, -1, 61, 1198, 63, 1200, -1, 1202, 83, - 84, -1, -1, 71, -1, -1, 1210, -1, -1, -1, - -1, -1, -1, 81, -1, 1219, 1220, -1, -1, -1, - -1, 89, 106, -1, 1228, 93, -1, -1, -1, 1310, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - 1244, 1245, 3, 4, 5, -1, 7, 1505, 1506, -1, - 134, -1, 136, -1, -1, -1, 140, 141, -1, -1, - -1, 145, 146, -1, -1, 149, 150, 151, 1272, 30, - -1, -1, -1, -1, -1, -1, -1, 38, -1, 1537, - 1538, 165, -1, -1, -1, 169, -1, -1, -1, -1, - -1, 175, 176, -1, 55, -1, 57, 58, 1302, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 193, - 194, 195, -1, -1, 3, 4, 5, 6, 7, 8, - 9, -1, -1, 1466, -1, 14, 906, 1331, -1, 909, - -1, -1, -1, 3, 4, 5, 6, -1, 222, 9, - -1, 921, 31, -1, -1, 925, 926, -1, 37, -1, - -1, -1, -1, 42, -1, 239, -1, 46, -1, 48, - -1, 31, -1, -1, 248, -1, 55, 1371, 57, 58, - -1, -1, 42, 825, -1, 259, -1, -1, 48, -1, - -1, -1, 71, 1387, -1, 55, -1, 57, 58, -1, - 970, 971, 81, 4, 5, 1538, 1539, -1, 9, -1, - 89, 71, -1, -1, 93, 94, 1410, -1, -1, -1, - -1, 81, -1, 297, 298, -1, -1, -1, -1, 89, - 31, -1, -1, 93, 94, -1, 1507, -1, 880, 881, - -1, -1, -1, -1, 886, -1, -1, 48, -1, -1, - -1, -1, -1, -1, 55, -1, 57, 58, 900, -1, - 902, -1, 904, -1, -1, -1, -1, -1, -1, 343, - 71, -1, 1466, 347, -1, 349, 350, 351, -1, -1, - 81, 3, 4, 5, 6, -1, 360, 1558, -1, 1483, - 1484, -1, 93, 94, -1, -1, -1, -1, 3, 4, - 5, 6, 7, 8, 9, -1, -1, 12, -1, 14, - -1, -1, 954, -1, -1, 3, 4, 5, 6, 393, - 42, -1, -1, 28, -1, 30, 31, 1521, 402, -1, - 404, 405, 37, 55, -1, 57, 58, 42, -1, 61, - -1, 46, -1, 48, -1, 419, -1, -1, 422, 71, - 55, -1, 57, 58, 42, -1, 998, 1551, -1, 81, - 434, 49, -1, -1, -1, -1, 71, 89, 442, 57, - 58, 93, -1, 1015, -1, -1, 81, -1, -1, -1, - -1, -1, -1, -1, 89, -1, 1156, 1157, 93, 94, - -1, -1, -1, 81, -1, -1, 470, 471, -1, -1, - 474, 89, 476, 477, 478, 479, -1, -1, -1, 483, - 1180, 1181, 1182, 1183, 488, -1, -1, 491, -1, 1189, - -1, -1, -1, -1, 1, -1, -1, 4, 5, -1, - -1, 8, 9, -1, 508, -1, -1, 14, -1, -1, - -1, -1, 1212, 1213, -1, -1, -1, -1, -1, -1, - -1, 28, -1, 30, -1, -1, -1, -1, -1, -1, - 37, 1655, 39, 40, -1, -1, -1, -1, -1, 46, - -1, 48, 546, 547, 548, 549, -1, -1, 55, -1, - 57, 58, -1, 60, -1, -1, -1, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, - 87, 88, 89, -1, 91, -1, -1, 94, -1, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, - -1, 9, 606, 110, 608, -1, 1306, 1307, 1308, 1309, - -1, -1, -1, 1313, -1, -1, 620, -1, 622, 623, - 624, -1, -1, 31, -1, -1, 1198, 631, 1200, -1, - 1202, 635, -1, -1, 42, -1, -1, -1, -1, -1, - 48, -1, -1, -1, -1, -1, 650, 55, -1, 57, - 58, -1, -1, -1, 3, 4, 5, 6, -1, -1, - -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, -1, 676, 81, 3, 4, 5, 6, -1, 683, - -1, 89, 31, -1, -1, 93, 94, 691, 692, 693, - 694, 695, 696, 42, -1, -1, -1, -1, -1, 48, - -1, -1, 31, -1, -1, -1, 55, -1, 57, 58, - -1, -1, -1, 42, 3, 4, 5, 6, -1, 48, - 1420, 1421, 71, 1423, -1, -1, 55, -1, 57, 58, - 1302, -1, 81, -1, 738, -1, -1, -1, 742, -1, - 89, -1, 71, -1, 93, 94, 750, 751, 752, 753, - 754, -1, 81, 42, 758, -1, -1, -1, -1, -1, - 89, -1, -1, -1, 93, 94, 55, -1, 57, 58, - -1, -1, -1, -1, 63, 3, 4, 5, 6, -1, - -1, 9, 71, 787, -1, -1, 790, -1, 792, -1, - -1, -1, 81, 797, 798, -1, 800, -1, -1, -1, - 89, -1, 806, 31, 93, 1505, 1506, -1, 812, -1, - -1, -1, -1, -1, 42, 819, 820, 821, 1, -1, - 3, 4, 5, 6, 7, 8, 9, 55, 832, 57, - 58, 14, -1, -1, -1, -1, -1, -1, 3, 4, - 5, 6, -1, 71, -1, 28, -1, 30, 31, 32, - -1, -1, -1, 81, 37, 38, -1, -1, -1, 42, - -1, 89, -1, 46, 47, 93, 49, -1, -1, -1, - -1, -1, 55, -1, 57, 58, -1, 42, 61, -1, - 63, -1, -1, -1, 49, -1, -1, -1, 71, -1, - -1, -1, 57, 58, 1466, -1, -1, -1, 81, -1, - -1, 905, 906, -1, -1, 909, 89, -1, 912, -1, - 93, -1, -1, 917, -1, -1, 81, 921, -1, 923, - -1, 925, 926, 927, 89, -1, 109, 931, -1, 933, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, - 5, -1, -1, 8, 9, -1, -1, -1, -1, 14, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 966, 28, 968, 30, 970, 971, 972, 4, - -1, -1, 37, 107, 108, -1, -1, -1, -1, 14, - -1, 46, -1, 48, -1, -1, -1, -1, 23, 24, - 55, -1, 57, 58, -1, 30, 31, -1, 33, -1, - 35, -1, -1, -1, -1, -1, 71, 42, -1, -1, - -1, 1015, -1, -1, -1, -1, 81, -1, -1, -1, - 55, -1, 57, -1, 1028, 1029, 1030, 1031, 93, 94, - 65, 3, 4, 5, 6, -1, -1, 72, -1, -1, - -1, 1045, -1, -1, 1048, -1, -1, -1, -1, 84, - -1, -1, -1, 1057, -1, -1, -1, -1, -1, 31, - -1, -1, -1, -1, -1, -1, 1070, -1, -1, -1, - 42, -1, -1, -1, 1078, -1, -1, -1, -1, -1, - -1, -1, -1, 55, -1, 57, 58, 1091, -1, 1093, - -1, -1, -1, -1, -1, -1, -1, 1101, -1, 71, - -1, 136, -1, -1, -1, 140, 141, -1, -1, 81, - -1, 146, -1, -1, 149, 150, 151, 89, 1122, -1, - -1, 93, -1, 1127, 1128, -1, 1130, -1, -1, -1, - 165, -1, -1, -1, 169, -1, -1, -1, -1, -1, - 175, 176, -1, -1, -1, -1, -1, -1, -1, 1153, - -1, -1, 1156, 1157, 1158, -1, -1, -1, 193, 194, - 195, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 14, -1, -1, 1179, 1180, 1181, 1182, 1183, - 1184, 1185, -1, -1, -1, 1189, 28, 222, 30, 31, - 32, -1, -1, -1, -1, 37, 330, -1, -1, -1, - 42, -1, -1, -1, 46, -1, -1, 49, 1212, 1213, - 1214, -1, -1, 55, -1, 57, 58, -1, -1, -1, - 1224, 1225, 1226, 1227, 259, -1, -1, -1, -1, 71, - 1, -1, 3, 4, 5, 6, 7, 8, 9, 81, - -1, -1, -1, 14, 1248, -1, -1, 89, -1, 1253, - -1, 93, 1256, -1, -1, -1, 98, 28, -1, 30, - 31, 32, 297, 298, -1, -1, 37, 38, 402, -1, - -1, 42, -1, -1, -1, 46, 47, -1, 49, -1, - -1, -1, -1, -1, 55, -1, 57, 58, -1, -1, - 61, -1, 63, -1, -1, -1, -1, -1, -1, -1, - 71, 1305, 1306, 1307, 1308, 1309, 1310, -1, 343, 1313, - 81, -1, 347, -1, 349, 350, 351, -1, 89, -1, - -1, 356, 93, -1, -1, 360, -1, -1, -1, -1, - -1, -1, -1, -1, 468, -1, -1, -1, 109, -1, - 3, 4, 5, 6, -1, 1349, 1350, 1351, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, - -1, -1, -1, -1, 1368, -1, -1, 402, 31, 404, - 405, -1, -1, -1, -1, -1, -1, -1, -1, 42, - -1, -1, -1, -1, 419, -1, -1, 422, -1, -1, - -1, -1, 55, -1, 57, 58, -1, -1, -1, 434, - 82, -1, -1, 537, -1, -1, 540, 442, 71, -1, - -1, 545, 546, 547, 548, 549, 1420, 1421, 81, 1423, - -1, -1, -1, -1, 558, -1, 89, -1, -1, -1, - 93, -1, -1, -1, -1, 470, 471, 571, -1, 474, - -1, 476, 477, 478, 479, -1, -1, -1, 483, -1, - -1, -1, -1, 488, 4, 5, 491, 7, 8, 9, - -1, -1, 1466, -1, 14, -1, -1, -1, -1, -1, - -1, -1, 507, 508, -1, -1, -1, 159, 28, -1, - 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, - 624, -1, -1, -1, -1, -1, 46, 631, -1, 49, - -1, 1505, 1506, 1507, 1508, 55, -1, 57, 58, 191, - -1, 546, 547, 548, 549, -1, -1, -1, -1, -1, - -1, -1, 204, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1537, 1538, 1539, 1, -1, 3, 4, + 161, 209, 175, 55, 23, 80, 455, 174, 176, 402, + 720, 126, 4, 4, 485, 350, 251, 402, 507, 304, + 305, 402, 42, 356, 356, 57, 4, 14, 217, 218, + 35, 882, 46, 568, 695, 133, 134, 42, 156, 247, + 702, 182, 42, 35, 35, 789, 84, 791, 605, 357, + 358, 42, 57, 338, 134, 799, 647, 35, 243, 59, + 14, 4, 76, 373, 42, 124, 209, 72, 22, 144, + 1338, 1348, 133, 1422, 42, 218, 1513, 1512, 1355, 84, + 149, 150, 11, 88, 42, 90, 80, 92, 296, 54, + 38, 805, 35, 42, 1, 468, 83, 811, 440, 42, + 408, 409, 107, 108, 136, 11, 11, 59, 48, 4, + 4, 65, 703, 562, 1, 1514, 33, 1562, 55, 106, + 9, 356, 1, 175, 1559, 27, 12, 61, 203, 31, + 0, 136, 137, 1536, 139, 30, 31, 59, 75, 63, + 35, 35, 350, 65, 176, 4, 98, 42, 42, 169, + 49, 75, 59, 93, 625, 1558, 63, 63, 136, 61, + 165, 109, 60, 65, 169, 90, 1611, 92, 108, 169, + 124, 176, 59, 62, 60, 109, 35, 63, 169, 108, + 59, 12, 60, 42, 63, 4, 5, 165, 95, 84, + 155, 169, 109, 460, 148, 1594, 55, 165, 57, 213, + 12, 169, 108, 108, 539, 55, 1643, 109, 922, 209, + 108, 169, 137, 48, 0, 1618, 95, 217, 218, 25, + 169, 27, 108, 75, 1659, 75, 169, 8, 9, 60, + 719, 109, 63, 14, 65, 200, 55, 75, 57, 58, + 1517, 136, 136, 48, 93, 1513, 61, 247, 60, 347, + 1599, 63, 71, 59, 149, 150, 37, 63, 93, 94, + 65, 248, 81, 1236, 1237, 46, 60, 48, 262, 93, + 165, 165, 721, 108, 169, 169, 938, 136, 4, 941, + 1253, 140, 60, 60, 238, 239, 347, 448, 93, 95, + 493, 1568, 297, 93, 109, 61, 296, 251, 193, 194, + 489, 490, 39, 964, 685, 343, 165, 510, 497, 35, + 169, 644, 93, 393, 108, 75, 175, 176, 55, 48, + 509, 983, 984, 61, 881, 330, 385, 7, 360, 1043, + 108, 108, 60, 3, 4, 5, 306, 307, 343, 528, + 648, 1055, 1619, 109, 48, 4, 351, 490, 76, 742, + 350, 48, 404, 323, 359, 360, 326, 742, 38, 329, + 25, 479, 332, 222, 93, 675, 336, 48, 322, 356, + 75, 109, 714, 715, 344, 1089, 35, 1091, 48, 614, + 93, 25, 360, 42, 48, 55, 61, 57, 58, 93, + 94, 483, 4, 5, 59, 48, 93, 402, 63, 491, + 405, 65, 48, 738, 108, 1378, 406, 476, 477, 363, + 61, 402, 93, 94, 1387, 1388, 48, 1390, 372, 31, + 4, 107, 442, 93, 59, 84, 1277, 108, 63, 93, + 95, 385, 805, 968, 359, 12, 48, 442, 811, 55, + 93, 94, 442, 55, 1035, 57, 58, 93, 343, 48, + 27, 35, 923, 63, 31, 108, 4, 48, 55, 71, + 55, 93, 108, 468, 442, 360, 360, 48, 63, 81, + 48, 48, 55, 48, 442, 31, 508, 136, 75, 59, + 75, 93, 94, 60, 61, 499, 63, 35, 65, 489, + 490, 48, 75, 75, 93, 94, 501, 497, 1160, 1161, + 55, 360, 93, 508, 4, 5, 165, 402, 1252, 509, + 169, 55, 93, 821, 508, 93, 93, 94, 93, 94, + 3, 4, 5, 6, 3, 4, 5, 59, 528, 534, + 508, 108, 537, 108, 93, 540, 93, 3, 4, 5, + 545, 546, 547, 548, 549, 404, 713, 442, 442, 922, + 55, 505, 1041, 558, 1003, 55, 1407, 57, 58, 42, + 33, 55, 48, 568, 76, 508, 571, 48, 606, 1542, + 1543, 108, 965, 468, 57, 58, 501, 766, 57, 58, + 965, 476, 477, 442, 965, 683, 556, 557, 48, 774, + 775, 57, 58, 108, 60, 780, 676, 94, 650, 932, + 932, 606, 81, 683, 108, 65, 89, 93, 94, 534, + 48, 470, 93, 508, 508, 63, 570, 884, 76, 624, + 78, 55, 48, 831, 483, 11, 631, 75, 769, 63, + 48, 108, 491, 93, 94, 3, 60, 109, 6, 691, + 48, 693, 694, 928, 98, 33, 61, 48, 635, 508, + 958, 651, 76, 93, 78, 93, 4, 5, 1129, 48, + 614, 9, 3, 31, 25, 684, 27, 93, 783, 48, + 1043, 61, 48, 678, 42, 93, 149, 150, 151, 55, + 111, 25, 1055, 27, 343, 93, 738, 692, 55, 57, + 58, 696, 93, 94, 694, 75, 63, 932, 59, 75, + 719, 360, 63, 71, 93, 1194, 63, 55, 75, 57, + 58, 606, 55, 81, 93, 59, 1089, 93, 1091, 63, + 63, 89, 195, 71, 94, 93, 48, 622, 623, 624, + 684, 94, 75, 81, 95, 48, 631, 742, 738, 111, + 1229, 695, 63, 402, 796, 63, 94, 25, 63, 27, + 55, 95, 75, 678, 818, 819, 820, 789, 63, 791, + 75, 149, 150, 151, 796, 797, 766, 799, 107, 108, + 75, 93, 726, 4, 5, 1083, 1084, 1085, 792, 793, + 93, 59, 93, 442, 789, 63, 791, 108, 802, 1124, + 108, 650, 797, 93, 799, 789, 63, 791, 4, 5, + 805, 806, 807, 797, 809, 799, 811, 195, 75, 468, + 55, 789, 930, 791, 93, 4, 5, 95, 49, 75, + 55, 799, 60, 61, 991, 55, 57, 58, 63, 75, + 75, 831, 691, 692, 693, 694, 4, 5, 8, 9, + 75, 75, 1109, 1110, 14, 75, 789, 742, 791, 508, + 81, 57, 58, 1038, 1039, 1040, 799, 752, 753, 60, + 49, 60, 61, 11, 3, 4, 5, 37, 57, 58, + 3, 4, 5, 6, 60, 880, 46, 75, 55, 738, + 885, 806, 807, 742, 809, 108, 63, 55, 108, 57, + 58, 62, 81, 108, 789, 789, 791, 791, 75, 4, + 5, 976, 27, 71, 799, 799, 31, 1048, 1049, 42, + 805, 916, 108, 81, 55, 1625, 811, 922, 57, 58, + 59, 926, 55, 893, 57, 58, 94, 108, 1125, 1126, + 789, 1128, 791, 75, 1075, 60, 61, 796, 797, 1080, + 799, 1208, 4, 5, 49, 932, 75, 606, 45, 109, + 1217, 1218, 57, 58, 924, 925, 89, 109, 55, 1226, + 965, 58, 967, 968, 111, 624, 971, 60, 61, 140, + 4, 5, 631, 27, 965, 9, 81, 31, 60, 61, + 1288, 4, 5, 111, 1433, 156, 108, 49, 3, 4, + 5, 330, 1067, 111, 1046, 57, 58, 951, 84, 85, + 1449, 1268, 60, 476, 477, 478, 60, 61, 27, 1014, + 964, 65, 1347, 55, 1046, 4, 5, 75, 76, 81, + 78, 55, 1027, 57, 58, 75, 49, 922, 75, 924, + 925, 926, 75, 1151, 57, 58, 111, 71, 1043, 108, + 55, 212, 57, 58, 1076, 1059, 59, 81, 108, 220, + 1055, 1065, 1066, 108, 48, 1069, 1070, 108, 81, 1073, + 49, 55, 3, 4, 5, 1183, 237, 55, 57, 58, + 965, 1076, 111, 1067, 969, 970, 971, 60, 61, 60, + 61, 75, 1076, 742, 1089, 8, 1091, 1536, 476, 477, + 478, 93, 81, 48, 1099, 65, 4, 5, 1076, 93, + 1367, 1242, 1243, 109, 1245, 1246, 60, 1248, 93, 1558, + 1185, 1180, 1181, 109, 55, 1120, 57, 58, 59, 1014, + 60, 61, 55, 31, 60, 61, 465, 61, 1133, 60, + 789, 37, 791, 1076, 65, 65, 1585, 1404, 60, 61, + 799, 1210, 1211, 108, 75, 76, 805, 55, 1043, 57, + 58, 1156, 811, 60, 61, 65, 1110, 4, 5, 1552, + 1055, 1131, 65, 71, 108, 61, 63, 1552, 111, 1618, + 108, 108, 1345, 81, 1347, 1194, 108, 1182, 1346, 108, + 65, 1076, 1076, 1301, 65, 93, 65, 1046, 76, 60, + 1639, 3, 4, 5, 1089, 7, 1091, 108, 537, 108, + 1205, 540, 3, 4, 5, 60, 545, 1212, 1133, 108, + 57, 58, 76, 1205, 108, 108, 76, 1076, 76, 558, + 1252, 1556, 3, 4, 5, 76, 38, 1205, 108, 63, + 108, 63, 571, 108, 1375, 1376, 575, 63, 108, 108, + 1210, 1211, 94, 55, 48, 57, 58, 1252, 1202, 111, + 111, 55, 89, 1247, 1208, 75, 57, 58, 1252, 1154, + 1155, 1156, 1205, 922, 603, 48, 108, 926, 49, 108, + 609, 75, 61, 111, 1252, 111, 57, 58, 108, 450, + 3, 4, 5, 6, 108, 1180, 1181, 1182, 109, 93, + 3, 4, 5, 1345, 108, 1347, 109, 108, 60, 470, + 65, 1306, 30, 31, 65, 33, 965, 60, 479, 1252, + 1205, 60, 971, 63, 108, 1210, 1211, 1212, 1177, 42, + 108, 3, 4, 5, 93, 496, 49, 1222, 1223, 57, + 93, 59, 109, 1338, 57, 58, 49, 65, 1479, 1480, + 1481, 1346, 93, 1348, 57, 58, 93, 1347, 1556, 109, + 1355, 108, 108, 108, 8, 1014, 1348, 1252, 1252, 1364, + 1338, 33, 65, 1355, 108, 111, 89, 1528, 1338, 108, + 1348, 1385, 1386, 55, 108, 57, 58, 1355, 1332, 1333, + 111, 108, 1649, 108, 1043, 1244, 3, 4, 5, 108, + 1249, 108, 108, 1252, 108, 1338, 1055, 55, 1539, 1540, + 108, 108, 3, 4, 5, 1348, 7, 8, 9, 1304, + 1305, 1306, 1355, 141, 108, 63, 111, 1076, 146, 48, + 108, 149, 150, 151, 4, 5, 4, 5, 108, 9, + 1089, 108, 1091, 96, 61, 63, 349, 350, 351, 1606, + 57, 58, 63, 1338, 9, 1459, 61, 61, 176, 16, + 93, 31, 108, 1348, 182, 108, 57, 58, 108, 108, + 1355, 108, 1531, 1532, 108, 193, 194, 195, 48, 1610, + 1424, 49, 3, 4, 5, 55, 61, 57, 58, 57, + 58, 209, 3, 4, 5, 6, 1345, 1346, 1347, 217, + 218, 71, 1446, 1447, 93, 61, 1501, 1156, 971, 55, + 93, 81, 1507, 65, 111, 1557, 93, 1512, 1513, 1514, + 17, 61, 1517, 93, 94, 55, 108, 61, 55, 108, + 1512, 42, 97, 1182, 55, 1517, 57, 58, 1533, 108, + 107, 259, 108, 11, 1512, 1513, 57, 58, 61, 1517, + 93, 1014, 3, 4, 5, 61, 1205, 1552, 61, 60, + 889, 65, 61, 1212, 1559, 11, 1556, 108, 61, 108, + 108, 1531, 1532, 1568, 11, 61, 0, 1559, 0, 1512, + 1513, 1525, 0, 1587, 1517, 170, 1568, 2, 35, 1447, + 676, 1559, 965, 971, 165, 169, 442, 926, 1605, 1594, + 1568, 1194, 797, 1252, 94, 1432, 57, 58, 4, 5, + 48, 238, 330, 139, 1499, 1500, 1501, 81, 82, 83, + 84, 85, 1507, 1659, 1619, 1278, 1559, 1512, 1513, 1514, + 299, 951, 1517, 726, 657, 1568, 1014, 1619, 3, 4, + 5, 242, 7, 8, 9, 1229, 1531, 1532, 175, 87, + 88, 1619, 48, 91, 92, 93, 94, 1306, 1041, 55, + 659, 57, 58, 1076, 1659, 944, 31, 1552, 3, 4, + 5, 6, 37, 797, 1559, 71, 200, 1659, 1206, 347, + 1249, 606, 124, 1568, 31, 81, 1619, 405, 406, 1338, + 55, 1659, 57, 58, 59, 222, 1348, 93, 94, 1348, + 1625, 419, 1639, 1573, 422, 1637, 1355, 42, 1557, 1594, + 428, 429, 430, 1635, 49, 1022, 434, 1180, 1181, 1182, + 1364, -1, 57, 58, -1, -1, 1659, -1, -1, 9, + -1, -1, 12, -1, 1619, -1, -1, -1, 103, 104, + 105, -1, -1, 904, -1, -1, 81, 1210, 1211, 1212, + 911, -1, -1, 471, 89, -1, 474, -1, 476, 477, + 478, 3, 4, 5, 482, 7, 8, 9, 48, 930, + 488, 489, 490, -1, 1659, 493, 3, 4, 5, 497, + 60, -1, 62, 63, -1, 65, -1, -1, 691, 31, + 693, 694, 510, 696, 141, 37, 76, -1, 78, 146, + -1, -1, 1180, 1181, 1182, 3, 4, 5, 6, -1, + -1, -1, -1, 93, 94, 57, 58, -1, -1, 537, + -1, -1, 540, -1, -1, 80, -1, -1, 108, -1, + 57, 58, 1210, 1211, 1212, 738, -1, -1, 556, 557, + 558, -1, -1, -1, 42, -1, -1, 194, -1, 104, + -1, 49, 1501, 571, -1, 7, 8, 9, 1507, 57, + 58, -1, 14, 1512, 1513, 1514, -1, -1, 1517, -1, + -1, -1, 3, 4, 5, 6, -1, 404, 133, 31, + -1, -1, -1, 1212, -1, 37, -1, -1, -1, 144, + -1, 89, -1, -1, 46, 3, 4, 5, 6, -1, + -1, 9, -1, 1552, 622, 623, 624, -1, 461, 61, + 1559, 42, 259, 631, -1, 468, -1, -1, 49, 1568, + -1, -1, -1, 31, -1, -1, 57, 58, 831, -1, + -1, -1, -1, 651, 42, 1264, 1265, 1266, 1267, -1, + 48, -1, -1, 470, -1, 1594, -1, 55, 203, 57, + 58, -1, 479, -1, -1, -1, 483, 402, 89, -1, + -1, 4, 5, 71, 491, -1, 9, -1, -1, -1, + 1619, -1, -1, 81, 692, -1, 694, 695, -1, -1, + -1, 89, 535, 238, -1, 93, 94, -1, 31, -1, + 1151, 3, 4, 5, -1, -1, -1, 1460, -1, -1, + -1, 904, 1331, -1, 3, 4, 5, 262, 911, -1, + 1659, -1, 55, -1, 57, 58, 1177, -1, -1, -1, + 738, -1, 1183, 468, -1, -1, -1, 930, 71, -1, + 4, 5, 750, 751, 752, 753, 754, -1, 81, -1, + 758, -1, -1, 596, -1, 57, 58, -1, 766, 602, + 93, 769, 88, -1, 90, -1, 92, 31, 57, 58, + 3, 4, 5, 6, 1225, -1, 9, -1, 1531, 1532, + 1533, -1, 419, -1, 48, 422, 1405, -1, -1, 797, + -1, 55, 1460, 57, 58, 638, -1, 434, 31, -1, + 3, 4, 5, 6, -1, -1, 9, 71, -1, 42, + 355, 137, -1, 139, -1, 48, 824, 81, 3, 4, + 5, -1, 55, 1442, 57, 58, -1, -1, 31, 93, + 94, -1, -1, 650, 471, -1, -1, 474, 71, 42, + -1, -1, -1, -1, -1, 48, -1, -1, 81, -1, + 1301, 488, 55, -1, 57, 58, 89, -1, -1, -1, + 93, 94, -1, 1531, 1532, 1533, -1, 412, 71, -1, + -1, -1, 57, 58, 691, -1, 693, 694, 81, -1, + -1, 3, 4, 5, 6, -1, 89, 33, 1507, 624, + 93, 94, -1, -1, 1513, 1514, 631, 905, -1, -1, + 908, 4, 5, -1, 7, 8, 9, -1, -1, 31, + -1, 14, 920, -1, 1533, -1, 924, 925, 926, -1, + 42, 738, -1, 4, 5, 28, 48, 30, 31, -1, + -1, -1, -1, 55, 37, 57, 58, -1, -1, -1, + -1, -1, -1, 46, -1, -1, 4, 5, -1, 71, + -1, 9, 55, -1, 57, 58, 964, -1, 1151, 81, + 505, 969, 970, 971, 45, -1, -1, 89, -1, -1, + -1, 93, 94, 31, 55, 1594, 57, 58, -1, 796, + -1, -1, -1, -1, 1177, -1, 531, -1, -1, -1, + 1183, -1, -1, -1, 1613, 321, -1, 55, -1, 57, + 58, -1, -1, -1, 150, 151, 1014, 742, -1, 3, + 4, 5, 6, 71, -1, 1634, -1, -1, -1, -1, + 1028, 1029, 1030, 81, 1643, -1, 3, 4, 5, 6, + -1, -1, 9, 359, -1, 93, 879, 880, -1, 764, + 1048, 1049, 885, -1, -1, -1, -1, -1, 42, 195, + -1, 1502, -1, -1, 31, -1, 899, -1, 901, -1, + 903, 55, -1, 57, 58, 42, -1, 1075, -1, 63, + 805, 48, 1080, -1, 619, -1, 811, 71, 55, 804, + 57, 58, -1, -1, -1, 810, -1, 81, -1, 634, + 3, 4, 5, 6, 71, 89, -1, -1, -1, 93, + 1551, -1, -1, -1, 81, -1, -1, -1, 1301, -1, + 953, -1, 89, 750, 751, -1, 93, 94, -1, -1, + -1, 758, -1, -1, -1, -1, -1, 4, 5, 42, + -1, 8, 9, -1, 460, 461, 49, 14, -1, -1, + -1, -1, 468, -1, 57, 58, 1154, 1155, 1156, -1, + -1, 28, -1, 30, 997, -1, -1, -1, -1, -1, + 37, 79, 80, 81, 82, 83, 84, 85, 81, 46, + 1178, 1179, 1180, 1181, 1182, 501, 89, -1, 55, 1187, + 57, 58, -1, -1, 330, -1, -1, 922, -1, -1, + -1, 926, 917, -1, 919, -1, -1, -1, -1, -1, + -1, -1, 1210, 1211, 1212, -1, 461, -1, 534, 535, + 755, -1, -1, 468, 1222, 1223, 1224, -1, 544, 77, + 78, 79, 80, 81, 82, 83, 84, 85, -1, 1046, + 965, -1, -1, -1, 1242, 1243, 971, 1245, 1246, -1, + 1248, -1, 568, -1, 570, -1, -1, 573, 574, -1, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, -1, + 596, -1, -1, 4, 5, -1, 602, -1, 9, 1014, + 535, -1, -1, 429, 430, -1, 7, 8, 9, -1, + -1, -1, -1, 14, 1302, 1303, 1304, 1305, 1306, -1, + 31, 1309, -1, -1, -1, 631, -1, -1, 1043, 1502, + 31, -1, 638, -1, -1, -1, 37, -1, -1, -1, + 1055, -1, -1, -1, 55, 46, 57, 58, -1, -1, + -1, 477, 478, 970, -1, -1, 662, 663, 1346, 1347, + 71, 596, -1, -1, -1, -1, -1, 602, -1, -1, + 81, -1, 678, 1196, 1089, 1198, 1091, 1200, 1551, -1, + 1177, -1, 93, 1088, -1, 1090, 1183, 1375, 1376, -1, + -1, -1, -1, -1, -1, -1, 631, -1, 3, 4, + 5, 6, -1, 638, -1, -1, 931, -1, 933, -1, + -1, 537, -1, -1, 540, -1, 3, 4, 5, 6, + 726, -1, 9, -1, -1, -1, 1414, 1415, 1225, 1417, + -1, 557, 558, -1, 39, 40, -1, 42, -1, -1, + -1, 1156, 1147, -1, 31, 571, -1, 1244, -1, -1, + 55, 976, 57, 58, -1, 42, -1, -1, -1, -1, + -1, 48, -1, -1, -1, -1, -1, 1182, 55, -1, + 57, 58, 1460, -1, -1, 1298, -1, -1, -1, -1, + -1, 82, 788, -1, 71, 3, 4, 5, 6, -1, + -1, 1479, 1480, 1481, 81, -1, -1, 1212, -1, -1, + 806, 807, 89, 809, 1301, 631, 93, 94, 7, 8, + 9, 1499, 1500, 1501, -1, 14, -1, -1, 824, -1, + -1, -1, -1, -1, 42, -1, -1, -1, 1233, -1, + 48, -1, 31, 1238, -1, -1, -1, 55, 37, 57, + 58, 847, 1067, 1531, 1532, 1533, -1, 46, 1345, -1, + 1347, 1539, 1540, 71, -1, -1, -1, -1, 159, -1, + -1, 1178, 1179, 81, -1, -1, -1, -1, -1, -1, + 1187, 89, -1, 879, 880, 93, 94, -1, 884, 885, + -1, -1, -1, -1, -1, -1, -1, 1292, -1, 824, + 191, 1306, -1, 899, -1, 901, -1, 903, -1, 7, + 8, 9, -1, 204, 4, -1, 14, -1, -1, -1, + -1, -1, -1, -1, 14, -1, -1, -1, -1, -1, + -1, -1, 1610, 31, 24, -1, -1, 753, 754, 37, + 30, 31, 1157, 33, -1, 35, 942, -1, 46, -1, + -1, -1, 42, -1, 879, 880, -1, 953, -1, -1, + 885, -1, -1, 61, -1, 55, -1, 57, -1, -1, + 1185, -1, 968, -1, 899, 65, 901, -1, 903, -1, + -1, -1, 72, -1, -1, 981, -1, 4, 5, -1, + -1, 8, 9, 83, 84, 1302, 1303, 14, -1, 1394, + 1395, 997, 1309, -1, -1, -1, 622, 623, 824, -1, + -1, 28, -1, 30, -1, 1502, 106, 1412, 1014, -1, + 37, -1, -1, -1, -1, -1, -1, -1, 953, 46, + 4, 5, 1247, -1, -1, 9, -1, -1, 55, -1, + 57, 58, 59, -1, 134, -1, 136, -1, -1, -1, + 140, 141, -1, -1, -1, 145, 146, 31, -1, 149, + 150, 151, 1058, -1, 1551, -1, -1, -1, -1, -1, + 1557, -1, 997, -1, 48, 165, 93, 1472, 1473, 169, + -1, 55, -1, 57, 58, 175, 176, -1, -1, 1014, + -1, -1, -1, 1488, 1489, -1, 1501, 71, -1, -1, + -1, -1, -1, 193, 194, 195, -1, 81, -1, 925, + 926, -1, -1, 1109, 1110, -1, -1, 1113, -1, 93, + 94, -1, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 222, -1, 9, 4, 5, 1133, -1, 8, + 9, -1, -1, -1, -1, 14, -1, 1552, -1, 239, + -1, -1, -1, 193, 194, 971, 31, -1, 248, 28, + -1, 30, -1, -1, -1, -1, -1, 42, 37, 259, + -1, -1, -1, 48, -1, -1, -1, 46, -1, -1, + 55, -1, 57, 58, -1, -1, 55, -1, 57, 58, + 481, -1, -1, -1, -1, 486, 71, -1, 1014, -1, + 1196, 1416, 1198, -1, 1200, -1, 81, 297, 298, -1, + -1, -1, 1208, -1, 89, -1, -1, -1, 93, 94, + 511, 1217, 1218, -1, 93, -1, 517, -1, -1, -1, + 1226, -1, 4, 5, -1, -1, 8, 9, 529, 530, + -1, 532, 14, -1, 1240, 1241, -1, -1, -1, -1, + -1, -1, -1, 343, -1, -1, 28, 347, 30, 349, + 350, 351, -1, -1, -1, 37, -1, -1, -1, -1, + 360, 1196, 1268, 1198, 46, 1200, -1, -1, -1, -1, + -1, -1, -1, 55, -1, 57, 58, -1, -1, 905, + -1, -1, 908, -1, 1, -1, 3, 4, 5, 6, + -1, 8, 1298, 393, 920, -1, -1, -1, 924, 925, + -1, -1, 402, -1, 404, 405, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 419, + -1, 1327, 422, -1, -1, 42, 627, 628, -1, 1155, + 1156, 632, 49, -1, 434, -1, -1, -1, 55, -1, + 57, 58, 442, 969, 970, 3, 4, 5, 6, -1, + -1, -1, -1, -1, -1, 1181, 1182, -1, -1, -1, + -1, 1367, -1, 1298, -1, 3, 4, 5, 6, -1, + 470, 471, 89, 31, 474, 1381, 476, 477, 478, 479, + -1, -1, -1, 483, 42, 1211, 1212, -1, 488, -1, + 48, 491, -1, -1, -1, -1, -1, 55, 1404, 57, + 58, -1, -1, -1, 42, -1, -1, -1, 508, -1, + -1, 49, -1, 71, 3, 4, 5, 6, -1, 57, + 58, 471, -1, 81, 474, -1, 476, 477, -1, -1, + -1, 89, -1, -1, -1, 93, 94, -1, 488, -1, + -1, -1, 31, 81, -1, -1, 546, 547, 548, 549, + -1, 89, -1, 42, 1460, 756, -1, -1, -1, 48, + -1, -1, -1, -1, -1, -1, 55, -1, 57, 58, + -1, 1477, 1478, -1, -1, -1, -1, -1, -1, 1305, + 1306, -1, 71, -1, -1, -1, -1, -1, -1, 4, + 5, -1, 81, -1, 9, -1, -1, -1, -1, -1, + 89, -1, -1, -1, 93, 94, 606, -1, 608, 1515, + -1, 812, -1, 814, -1, -1, 31, -1, -1, -1, + 620, -1, 622, 623, 624, 1460, -1, -1, 1154, 1155, + -1, 631, -1, 48, -1, 635, -1, -1, -1, 1545, + 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, + 650, -1, 1178, 1179, 1180, 1181, 71, -1, -1, -1, + -1, 1187, -1, -1, -1, -1, 81, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 676, -1, 93, 94, + 14, -1, -1, 683, 1210, 1211, 887, 888, -1, 890, + -1, 691, 692, 693, 694, 695, 696, 31, -1, -1, + -1, -1, -1, 37, -1, -1, -1, -1, 42, -1, + -1, -1, 46, -1, 48, -1, -1, -1, -1, -1, + 921, 55, -1, 57, 58, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1460, -1, -1, 71, 738, -1, + -1, -1, 742, 1649, -1, -1, -1, 81, -1, -1, + 750, 751, 752, 753, 754, 89, -1, -1, 758, 93, + 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 973, -1, -1, -1, 1302, 1303, 1304, 1305, + -1, -1, -1, 1309, -1, -1, 786, -1, -1, 789, + -1, 791, -1, -1, -1, -1, 796, 797, -1, 799, + 750, 751, 752, 753, -1, 805, 1532, 1533, 758, -1, + -1, 811, -1, -1, -1, -1, -1, -1, 818, 819, + 820, -1, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 831, -1, -1, -1, 14, -1, -1, -1, -1, + -1, 1042, -1, -1, -1, -1, -1, -1, -1, 28, + -1, 30, 31, 1054, -1, -1, -1, -1, 37, -1, + -1, -1, -1, 42, -1, -1, -1, 46, -1, -1, + 49, -1, -1, -1, -1, -1, 55, -1, 57, 58, + -1, -1, 61, -1, -1, -1, -1, -1, 1414, 1415, + -1, 1417, 71, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 81, -1, 904, 905, -1, -1, 908, -1, + 89, 911, -1, -1, 93, -1, 916, -1, -1, -1, + 920, -1, 922, -1, 924, 925, 926, -1, -1, -1, + 930, -1, 932, -1, -1, -1, -1, 42, -1, -1, + -1, 1142, -1, -1, -1, -1, -1, -1, -1, -1, + 55, -1, 57, 58, -1, -1, 61, -1, 63, -1, + -1, -1, -1, -1, -1, 965, 71, 967, -1, 969, + 970, 971, 4, 1499, 1500, -1, 81, -1, -1, -1, + -1, -1, 14, -1, 89, 1186, -1, -1, 93, -1, + -1, 23, 24, -1, -1, -1, -1, -1, 30, 31, + -1, 33, -1, 35, -1, -1, 3, 4, 5, 6, + 42, -1, 9, -1, 1014, -1, -1, -1, -1, 969, + 970, -1, -1, 55, -1, 57, -1, 1027, 1028, 1029, + 1030, -1, -1, 65, 31, -1, -1, -1, -1, -1, + 72, -1, -1, 1043, -1, 42, 1046, -1, -1, -1, + -1, -1, 84, 1254, -1, 1055, -1, 1258, 55, -1, + 57, 58, -1, -1, -1, -1, -1, -1, 1068, -1, + -1, -1, -1, -1, 71, -1, 1076, -1, 1028, 1029, + 1030, -1, -1, -1, 81, -1, -1, -1, -1, 1089, + -1, 1091, 89, 1294, -1, -1, 93, -1, -1, 1099, + -1, -1, -1, -1, 136, -1, 1307, -1, 140, 141, + -1, -1, -1, -1, 146, -1, -1, 149, 150, 151, + 1120, -1, -1, -1, -1, 1125, 1126, -1, 1128, -1, + -1, -1, -1, 165, -1, -1, -1, 169, -1, -1, + -1, -1, -1, 175, 176, -1, -1, -1, -1, -1, + -1, 1151, -1, -1, 1154, 1155, 1156, -1, -1, -1, + -1, 193, 194, 195, 3, 4, 5, 6, -1, 1370, + 9, -1, -1, 1374, -1, -1, -1, 1177, 1178, 1179, + 1180, 1181, 1182, 1183, -1, -1, -1, 1187, -1, -1, + 222, -1, 31, -1, -1, 1396, 1397, -1, -1, -1, + -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, + 1210, 1211, 1212, -1, -1, -1, 55, -1, 57, 58, + -1, -1, 1222, 1223, 1224, 1225, -1, 259, 1178, 1179, + 1180, 1181, 71, -1, -1, -1, -1, 1187, -1, -1, + -1, -1, 81, -1, 1244, -1, -1, -1, -1, 1249, + 89, -1, 1252, -1, 93, -1, -1, -1, -1, -1, + 1210, 1211, -1, -1, -1, 297, 298, -1, -1, -1, + -1, -1, 1222, 1223, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, - -1, -1, -1, 1557, 1558, -1, -1, -1, -1, 1563, - -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, - -1, 606, 37, 608, -1, -1, -1, 42, -1, -1, - -1, 46, -1, -1, 49, -1, -1, 622, 623, 624, - 55, -1, 57, 58, -1, -1, 631, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 71, -1, 742, 644, - -1, -1, -1, -1, -1, 650, 81, -1, -1, -1, - -1, -1, -1, -1, 89, -1, -1, -1, 93, -1, - -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, - 1, 676, 3, 4, 5, 6, 7, 8, 9, 684, - -1, -1, -1, 14, -1, -1, 691, 692, 693, 694, - 695, 696, -1, -1, -1, -1, -1, 28, -1, 30, - 31, 32, 806, -1, -1, -1, 37, 38, 812, -1, - -1, 42, -1, -1, 719, 46, 47, -1, 49, -1, - -1, -1, -1, -1, 55, -1, 57, 58, -1, -1, - 61, -1, 63, 738, -1, -1, -1, 742, -1, -1, - 71, -1, -1, -1, -1, 750, 751, 752, 753, 754, - 81, -1, -1, 758, -1, -1, -1, -1, 89, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, 6, -1, -1, 9, 881, 109, -1, - -1, -1, 787, -1, -1, 790, -1, 792, -1, -1, - -1, -1, 797, 798, -1, 800, -1, -1, 31, -1, - -1, 806, -1, 3, 4, 5, 6, 812, -1, 42, - -1, -1, -1, 917, 819, 820, 821, -1, -1, 923, - -1, -1, 55, 927, 57, 58, -1, 832, -1, 481, - -1, 31, -1, -1, 486, -1, -1, -1, 71, -1, - -1, -1, 42, -1, -1, -1, -1, -1, 81, -1, - -1, -1, -1, -1, -1, 55, 89, 57, 58, 511, - 93, -1, 966, -1, 968, 517, -1, -1, 972, -1, - -1, 71, -1, -1, -1, -1, -1, 529, 530, -1, - 532, 81, -1, -1, -1, -1, -1, -1, -1, 89, - -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, - 905, 906, -1, -1, 909, 4, 5, 912, 7, 8, - 9, 1015, 917, 12, -1, 14, 921, -1, 923, -1, - 925, 926, 927, -1, 1028, -1, 931, -1, 933, 28, - -1, 30, 31, -1, 1038, -1, -1, -1, 37, -1, - -1, 1045, -1, -1, -1, -1, -1, 46, -1, 48, - -1, -1, -1, 1057, -1, -1, 55, -1, 57, 58, - -1, 966, -1, 968, -1, 970, 971, 972, -1, -1, - -1, -1, 71, -1, -1, 627, 628, -1, -1, -1, - 632, -1, 81, -1, -1, -1, -1, 1091, -1, 1093, - -1, -1, -1, -1, 93, 94, -1, 1101, -1, -1, - -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 1015, -1, -1, -1, 14, -1, -1, -1, 1122, -1, - -1, -1, -1, 1028, 1029, 1030, 1031, 27, 28, -1, - 30, 31, 32, -1, -1, -1, -1, 37, 1043, -1, - 1045, -1, 42, 1048, -1, 45, 46, 47, -1, 49, - -1, -1, 1057, -1, 1158, 55, -1, 57, 58, -1, - -1, 61, -1, -1, 3, 4, 5, 6, -1, -1, - 9, 71, -1, 1078, -1, -1, -1, -1, -1, -1, - 1184, 81, 4, 5, -1, -1, 1091, 9, 1093, 89, - -1, -1, 31, 93, -1, -1, 1101, -1, 98, -1, - -1, -1, -1, 42, 756, -1, -1, -1, -1, 31, - 1214, -1, -1, -1, -1, -1, 55, 1122, 57, 58, - -1, -1, 1127, 1128, -1, 1130, 48, -1, -1, -1, - -1, -1, 71, 55, -1, 57, 58, -1, -1, -1, - -1, -1, 81, -1, -1, -1, -1, -1, 1153, 71, - 89, 1156, 1157, 1158, 93, -1, -1, -1, -1, 81, - -1, 813, -1, 815, -1, -1, -1, -1, -1, -1, - -1, 93, 94, -1, 1179, 1180, 1181, 1182, 1183, 1184, - 1185, -1, -1, -1, 1189, -1, -1, -1, -1, -1, - -1, 1196, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 1310, 1212, 1213, 1214, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1224, - 1225, 1226, 1227, -1, -1, -1, -1, -1, 1233, -1, - 4, -1, -1, -1, -1, -1, 888, 889, -1, 891, - 4, 5, -1, 1248, -1, 9, -1, -1, 1253, -1, - -1, 1256, -1, -1, -1, -1, 30, 31, -1, 33, - -1, 35, -1, -1, 1368, -1, -1, 31, 42, -1, - 922, 3, 4, 5, 6, -1, -1, 9, -1, -1, - -1, 55, -1, 57, 48, -1, -1, -1, -1, -1, - -1, 55, -1, 57, 58, -1, -1, -1, -1, 31, - 1305, 1306, 1307, 1308, 1309, 1310, 80, 71, 1313, -1, - 42, -1, -1, -1, -1, -1, -1, 81, -1, -1, - -1, -1, 974, 55, -1, 57, 58, -1, -1, 93, - 94, -1, -1, 1338, -1, -1, -1, -1, -1, 71, - -1, -1, -1, -1, 1349, 1350, 1351, -1, -1, 81, - -1, -1, -1, -1, -1, -1, -1, 89, -1, 133, - 134, 93, 136, 1368, -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, - -1, 165, 1044, -1, -1, 169, -1, -1, -1, -1, - -1, 175, 176, 1507, 1056, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1420, 1421, -1, 1423, 193, - 194, 195, -1, -1, -1, -1, -1, -1, -1, 203, - -1, -1, -1, -1, -1, 1539, -1, 1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 222, 13, - 14, -1, -1, -1, 1558, -1, -1, -1, -1, -1, - -1, 1466, -1, -1, 28, 29, 30, 31, 32, -1, - 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, - 44, -1, 46, -1, -1, 259, 50, 51, 52, 53, - 54, 55, 1144, 57, 58, 59, -1, 61, 62, -1, - 1505, 1506, 1507, 1508, 68, -1, -1, 71, -1, -1, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, - -1, -1, 1537, 1538, 1539, -1, 1188, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, - -1, -1, 1557, 1558, -1, -1, 330, -1, 1563, -1, + -1, 1301, 1302, 1303, 1304, 1305, 1306, -1, -1, 1309, + -1, 343, -1, -1, -1, 347, 31, 349, 350, 351, + -1, -1, 37, -1, 356, -1, -1, 42, 360, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + 55, -1, 57, 58, -1, 1345, 1346, 1347, -1, -1, + -1, -1, 1302, 1303, 1304, 1305, 71, -1, -1, 1309, + -1, 393, -1, -1, 1364, -1, 81, -1, -1, -1, + 402, -1, 404, 405, 89, -1, -1, -1, 93, 94, + 3, 4, 5, 6, -1, -1, 9, 419, -1, -1, + 422, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 434, -1, -1, -1, -1, -1, 31, -1, + 442, -1, -1, -1, 1414, 1415, -1, 1417, -1, 42, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 55, -1, 57, 58, -1, -1, 470, 471, + -1, -1, 474, -1, 476, 477, 478, 479, 71, -1, + -1, 483, -1, -1, -1, -1, 488, -1, 81, 491, + 1460, -1, -1, -1, 1414, 1415, 89, 1417, -1, -1, + 93, -1, -1, -1, -1, 507, 508, -1, -1, -1, + -1, 3, 4, 5, 6, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, 14, -1, -1, 1499, + 1500, 1501, 1502, -1, -1, -1, -1, -1, -1, -1, + 28, -1, 30, 31, 546, 547, 548, 549, -1, 37, + 42, -1, -1, -1, 42, -1, -1, 49, 46, -1, + -1, 1531, 1532, 1533, -1, 57, 58, 55, -1, 57, + 58, -1, -1, 61, -1, -1, -1, -1, -1, 1499, + 1500, 1551, 1552, 71, -1, -1, -1, 1557, -1, 81, + -1, -1, -1, 81, -1, -1, -1, 89, -1, -1, + -1, 89, -1, -1, 606, 93, 608, -1, -1, -1, + -1, 1531, 1532, -1, -1, -1, -1, -1, 4, 5, + 622, 623, 624, 9, -1, -1, -1, -1, -1, 631, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 347, -1, -1, -1, -1, -1, -1, - -1, 355, -1, -1, -1, -1, 360, 1, -1, 3, - 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, - 14, -1, -1, -1, -1, -1, 1258, -1, -1, -1, - 1262, -1, -1, -1, 28, -1, 30, 31, 32, 393, - -1, -1, -1, 37, 38, -1, -1, -1, 42, -1, - 404, -1, 46, 47, -1, 49, -1, -1, -1, -1, - -1, 55, -1, 57, 58, 419, 1298, 61, 422, 63, - -1, -1, -1, -1, 428, 429, 430, 71, -1, 1311, - 434, -1, -1, -1, -1, -1, -1, 81, 442, -1, - -1, 3, 4, 5, 6, 89, -1, 9, -1, 93, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 109, 470, 471, -1, 31, - 474, -1, 476, 477, 478, 479, -1, -1, -1, 483, - 42, 4, 5, -1, 488, 8, 9, 491, -1, -1, - -1, 14, -1, 55, 1376, 57, 58, -1, 1380, -1, - -1, -1, -1, -1, 508, 28, -1, 30, -1, 71, - -1, -1, -1, -1, 37, -1, -1, -1, -1, 81, - 1402, 1403, -1, 46, -1, -1, -1, 89, -1, -1, - -1, 93, 55, 537, 57, 58, 540, -1, -1, -1, - -1, -1, 1, -1, 3, 4, 5, 6, 7, 8, - 9, -1, 556, 557, 558, 14, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 571, -1, 28, - -1, 30, 31, 32, -1, -1, -1, -1, 37, -1, - 4, -1, -1, 42, -1, -1, -1, 46, 47, -1, - 49, -1, -1, -1, -1, -1, 55, -1, 57, 58, - -1, -1, 61, -1, 63, -1, 30, 31, -1, 33, - -1, 35, 71, -1, -1, 619, 4, 5, 42, 7, - 8, 9, 81, -1, 12, -1, 14, 631, -1, -1, - 89, 55, -1, 57, 93, -1, -1, -1, -1, -1, - 28, -1, 30, 31, -1, -1, 650, 4, 5, 37, - -1, -1, 9, -1, -1, -1, -1, -1, 46, -1, - 48, -1, -1, -1, -1, -1, -1, 55, -1, 57, - 58, -1, 676, -1, 31, -1, -1, -1, -1, 683, - -1, -1, -1, 71, -1, -1, -1, 691, 692, 693, - 694, 48, -1, 81, -1, -1, -1, -1, 55, -1, - 57, 58, -1, -1, -1, 93, 94, -1, -1, -1, - -1, -1, 136, -1, 71, -1, 140, 141, -1, -1, - -1, -1, 146, -1, 81, 149, 150, 151, -1, -1, - -1, -1, -1, -1, 738, -1, 93, 94, 742, -1, - -1, 165, -1, -1, -1, 169, 750, 751, 752, 753, - 754, 175, 176, -1, 758, -1, -1, -1, -1, -1, - 3, 4, 5, 6, -1, -1, -1, -1, -1, 193, - 194, 195, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 790, -1, 792, -1, - -1, -1, -1, 797, 798, -1, 800, -1, 222, 42, - 1, -1, 3, 4, 5, 6, 7, 8, 9, -1, - -1, 12, 55, 14, 57, 58, -1, -1, -1, -1, - 63, 825, -1, -1, 25, -1, 27, -1, 71, -1, - 31, -1, -1, -1, -1, 259, 37, -1, 81, -1, - -1, 42, -1, -1, -1, 46, 89, 48, -1, -1, - 93, -1, -1, -1, 55, -1, 57, 58, 59, 60, - 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 87, 88, 89, -1, - 91, 92, 93, 94, 95, -1, 97, 4, 5, -1, - -1, 102, 9, -1, -1, -1, 107, 108, 109, -1, - 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 925, 926, 927, 31, -1, -1, 931, 932, -1, - -1, -1, 356, -1, -1, -1, 360, -1, -1, -1, - -1, 48, -1, -1, -1, -1, -1, -1, 55, -1, - 57, 58, 3, 4, 5, 6, -1, -1, -1, -1, - -1, -1, -1, -1, 71, -1, 970, 971, 972, -1, - -1, -1, -1, 977, 81, -1, -1, -1, -1, -1, - 404, 33, -1, -1, -1, -1, 93, 94, -1, -1, - -1, 42, -1, -1, -1, 419, -1, -1, 422, -1, - -1, -1, -1, 55, 55, -1, 57, 58, -1, -1, - 434, 1015, 63, -1, -1, -1, -1, -1, 442, -1, - 71, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 81, -1, -1, -1, 14, -1, -1, -1, 89, -1, - -1, -1, 93, -1, 1048, -1, 470, 471, -1, -1, - 474, 31, 476, 477, 478, -1, -1, 37, -1, 483, - -1, -1, 42, -1, 488, 1069, 46, 491, 48, -1, - -1, -1, -1, -1, 1078, 55, -1, 57, 58, -1, - -1, -1, 4, 5, 508, -1, 8, 9, -1, -1, - -1, 71, 14, -1, -1, -1, -1, 149, 150, 151, - -1, 81, -1, -1, -1, -1, 28, -1, 30, 89, - -1, -1, -1, 93, 94, 37, -1, -1, -1, -1, - -1, -1, -1, 175, 46, -1, -1, -1, -1, -1, - -1, -1, -1, 55, -1, 57, 58, -1, -1, -1, - -1, 193, 194, 195, -1, -1, -1, -1, -1, 1153, - -1, -1, 1156, 1157, 1158, 1159, -1, -1, -1, 1, - -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 222, -1, 14, -1, -1, 1179, 1180, 1181, 1182, 1183, - 1184, 1185, -1, 1187, -1, 1189, 28, -1, 30, 31, - -1, -1, -1, -1, -1, 37, 620, -1, -1, -1, - 42, -1, -1, -1, 46, -1, -1, 49, 1212, 1213, - 1214, -1, -1, 55, -1, 57, 58, -1, -1, 61, - -1, -1, -1, -1, -1, -1, 650, -1, -1, 71, - 4, 5, -1, 7, 8, 9, -1, -1, 12, 81, - 14, -1, -1, -1, 1248, -1, 298, 89, -1, 1253, - -1, 93, 1256, -1, 28, -1, 30, 31, -1, -1, - -1, -1, -1, 37, -1, -1, -1, 691, 692, 693, - 694, -1, 46, -1, -1, -1, -1, -1, -1, -1, - -1, 55, -1, 57, 58, 3, 4, 5, 6, 7, - 8, 9, -1, -1, -1, -1, 14, 349, 350, 351, - -1, 1305, 1306, 1307, 1308, 1309, 1310, -1, 55, 1313, - 28, -1, 30, 31, 738, -1, -1, -1, 742, 37, - -1, -1, -1, -1, 42, -1, 750, 751, 46, 12, - -1, -1, -1, 80, 758, -1, 83, 55, -1, 57, - 58, -1, -1, 61, -1, 1349, 1350, 1351, -1, -1, - -1, -1, 404, 71, -1, -1, -1, 104, -1, 106, - -1, -1, -1, 81, -1, -1, 790, -1, 792, -1, - -1, 89, -1, 797, 798, 93, 800, -1, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, -1, -1, -1, 3, 4, 5, 6, - -1, -1, 9, -1, -1, -1, -1, -1, 470, 471, - -1, -1, 474, -1, 476, 477, 478, 479, 175, -1, - -1, 483, -1, -1, 31, -1, 488, -1, -1, 491, - -1, -1, -1, -1, -1, 42, 193, 194, 195, -1, - -1, -1, -1, -1, -1, -1, 203, -1, 55, -1, - 57, 58, 1466, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71, 222, -1, 3, 4, 5, - 6, 7, 8, 9, 81, -1, 12, -1, 14, -1, - -1, -1, 89, -1, -1, -1, 93, 3, 4, 5, - 6, 248, 28, 9, 30, 31, -1, -1, -1, 933, - -1, 37, -1, -1, -1, 262, 42, -1, -1, -1, - 46, -1, 48, -1, -1, 31, -1, -1, -1, 55, - -1, 57, 58, 1537, 1538, 1539, 42, -1, -1, -1, - -1, -1, -1, -1, -1, 71, 970, 971, 972, 55, - -1, 57, 58, -1, -1, 81, 608, -1, -1, 1563, - -1, -1, -1, 89, -1, 71, -1, 93, 94, -1, - 622, 623, 624, -1, -1, 81, -1, -1, -1, 631, - -1, -1, -1, 89, -1, -1, -1, 93, -1, -1, - -1, 1015, -1, -1, -1, -1, -1, -1, 650, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - 4, 5, 6, -1, 1048, 3, 4, 5, 6, 7, - 8, 9, -1, -1, -1, -1, 14, -1, -1, 691, - -1, 693, 694, -1, 696, -1, -1, 31, -1, -1, - 28, -1, 30, 31, 1078, -1, -1, 404, 42, 37, - -1, -1, -1, -1, 42, -1, -1, -1, 46, -1, - 48, 55, -1, 57, 58, -1, -1, 55, -1, 57, - 58, -1, -1, -1, -1, -1, 738, 71, -1, -1, - -1, -1, -1, 71, -1, -1, -1, 81, 750, 751, - 752, 753, 754, 81, -1, 89, 758, -1, -1, 93, - -1, 89, -1, -1, -1, 93, 94, -1, -1, -1, - -1, -1, -1, 470, 471, -1, -1, 474, -1, 476, - 477, 478, 479, -1, -1, -1, 483, -1, -1, -1, - -1, 488, -1, -1, 491, 797, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1179, 1180, 1181, 1182, 1183, - 1184, -1, -1, -1, -1, 1189, -1, 819, 820, 821, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 832, -1, 12, -1, 14, -1, -1, -1, 1212, 1213, - 1214, -1, -1, -1, 3, 4, 5, 6, 28, -1, - 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, - -1, -1, 42, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, 1248, 55, -1, 57, 58, 1253, - -1, -1, 1256, 42, -1, -1, -1, -1, -1, -1, - -1, 71, -1, -1, -1, -1, 55, -1, 57, 58, - -1, 81, 61, 905, 906, -1, -1, 909, -1, 89, - 912, -1, 71, 93, -1, -1, -1, -1, -1, 921, - -1, -1, 81, 925, 926, 927, -1, -1, -1, 931, - 89, -1, 1306, 1307, 93, -1, -1, 634, 635, 1313, - -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, - 7, 8, 9, 650, -1, -1, -1, 14, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 970, 971, - 972, 28, -1, 30, 31, 1349, 1350, 1351, -1, -1, - 37, -1, -1, -1, -1, 42, -1, -1, -1, 46, - -1, -1, -1, -1, 691, -1, 693, 694, 55, -1, - 57, 58, -1, -1, -1, -1, 63, -1, -1, -1, - -1, -1, -1, 1015, 71, -1, -1, 349, 350, 351, - 3, 4, 5, 6, 81, -1, 9, 1029, 1030, 1031, - -1, -1, 89, -1, -1, -1, 93, -1, -1, -1, - -1, 738, -1, -1, -1, -1, 1048, -1, 31, -1, - -1, -1, -1, 750, 751, 752, 753, 754, 755, 42, - -1, 758, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 55, -1, 57, 58, -1, -1, -1, -1, - 3, 4, 5, 6, 7, 8, 9, 784, 71, -1, - -1, 14, 1466, -1, -1, -1, -1, -1, 81, -1, - 797, -1, -1, -1, -1, 28, 89, 30, 31, -1, - 93, -1, -1, -1, 37, -1, -1, -1, -1, 42, - -1, -1, -1, 46, -1, 1127, 1128, -1, 1130, -1, - -1, -1, 55, 14, 57, 58, -1, -1, 61, -1, - -1, -1, 23, 24, -1, -1, -1, -1, 71, 30, - 31, 1153, 33, -1, 1156, 1157, 1158, -1, 81, -1, - -1, -1, -1, 1537, 1538, 1539, 89, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, 1179, 1180, 1181, - 1182, 1183, 1184, 1185, 65, -1, -1, 1189, -1, 1563, + -1, -1, 644, -1, -1, 31, -1, -1, 650, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, -1, -1, 9, - 1212, 1213, 1214, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1224, 1225, 1226, 1227, -1, -1, -1, -1, - -1, 31, -1, -1, -1, 932, 933, 934, -1, -1, - -1, -1, 42, 124, -1, 126, 1248, -1, -1, -1, - -1, -1, 133, 134, -1, 55, -1, 57, 58, 140, - 141, -1, -1, 144, 145, 146, -1, 148, 149, 150, - 151, 71, -1, 970, 971, 972, -1, -1, -1, -1, - 977, 81, -1, -1, -1, 3, 4, 5, 6, 89, - 622, 623, 624, 93, -1, -1, -1, -1, -1, 631, - -1, -1, -1, 1305, 1306, 1307, 1308, 1309, 1310, -1, - -1, 1313, -1, -1, -1, -1, -1, -1, 1015, -1, - -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, 1029, 1030, 1031, -1, -1, 55, -1, 57, - 58, -1, -1, -1, -1, -1, 31, 1349, -1, 1351, - -1, 1048, -1, 71, -1, -1, -1, 238, 239, 691, - -1, 693, 694, 81, 696, -1, -1, -1, -1, -1, - -1, 89, 1069, -1, -1, 93, -1, -1, 259, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + -1, -1, 48, -1, -1, -1, -1, -1, -1, 55, + -1, 57, 58, 1, 676, 3, 4, 5, 6, 7, + 8, 9, 684, -1, -1, 71, 14, -1, -1, 691, + 692, 693, 694, 695, 696, 81, -1, -1, -1, -1, + 28, -1, 30, 31, 32, -1, -1, 93, 94, 37, + 38, -1, -1, -1, 42, -1, -1, 719, 46, 47, + -1, 49, -1, -1, -1, -1, -1, 55, -1, 57, + 58, -1, -1, 61, -1, 63, 738, -1, -1, -1, + 742, -1, -1, 71, -1, -1, -1, -1, 750, 751, + 752, 753, 754, 81, -1, -1, 758, -1, -1, -1, + -1, 89, -1, -1, -1, 93, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, -1, -1, -1, 4, 5, 738, 7, 8, 9, - -1, -1, 12, -1, 14, -1, -1, 298, 1420, 1421, - -1, 1423, -1, -1, -1, -1, -1, -1, 28, -1, - 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, - -1, -1, -1, -1, -1, -1, 46, -1, -1, -1, - -1, -1, -1, -1, -1, 55, -1, 57, 58, -1, - -1, -1, 1159, -1, 1466, -1, 347, -1, 349, 350, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1179, 1180, 1181, 1182, 1183, 1184, 1185, -1, - 1187, -1, 1189, -1, -1, -1, -1, -1, -1, -1, - 832, -1, -1, 1505, 1506, 1507, 1508, -1, -1, -1, - -1, -1, 393, -1, -1, 1212, 1213, 1214, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 1224, 1225, 1226, - 1227, 412, -1, -1, -1, 1537, 1538, 1539, 419, -1, - -1, 422, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1248, -1, 434, -1, 1557, -1, -1, -1, -1, - -1, 1563, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 905, 906, -1, -1, 909, -1, -1, - 912, -1, -1, -1, -1, -1, -1, -1, -1, 921, - -1, -1, -1, 925, 926, 927, -1, -1, -1, 931, - -1, -1, -1, -1, -1, -1, -1, -1, 1305, 1306, - 1307, 1308, 1309, 1310, -1, -1, 1313, -1, -1, -1, - -1, -1, -1, -1, 505, -1, 507, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 970, 971, - 972, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 531, -1, 1349, -1, 1351, -1, -1, -1, -1, -1, + 85, 109, -1, -1, 786, -1, -1, 789, -1, 791, + -1, -1, -1, -1, 796, 797, -1, 799, 1, -1, + -1, 4, 5, 805, -1, 8, 9, -1, -1, 811, + -1, 14, -1, -1, -1, -1, 818, 819, 820, -1, + -1, -1, -1, -1, -1, 28, -1, 30, -1, 831, + -1, -1, -1, -1, 37, -1, 39, 40, -1, -1, + -1, -1, -1, 46, -1, 48, -1, -1, -1, -1, + -1, -1, 55, -1, 57, 58, -1, 60, -1, -1, + -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, -1, -1, 87, 88, 89, -1, 91, -1, + -1, 94, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, 904, 905, -1, -1, 908, 110, -1, 911, + -1, -1, -1, -1, 916, -1, -1, -1, 920, -1, + 922, -1, 924, 925, 926, -1, -1, -1, 930, -1, + 932, -1, -1, -1, -1, -1, -1, 42, -1, -1, + -1, -1, -1, -1, 49, -1, -1, -1, -1, -1, + -1, -1, 57, 58, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 965, -1, 967, -1, 969, 970, 971, + 4, -1, -1, -1, -1, -1, 81, 3, 4, 5, + 6, 7, 8, 9, 89, -1, 12, -1, 14, -1, + -1, -1, -1, -1, -1, -1, 30, 31, -1, 33, + -1, 35, 28, -1, 30, 31, -1, -1, 42, -1, + -1, 37, 1014, -1, -1, -1, 42, -1, -1, -1, + 46, 55, 48, 57, -1, 1027, 1028, 1029, 1030, 55, + -1, 57, 58, -1, -1, -1, -1, -1, -1, 1041, + -1, 1043, -1, -1, 1046, 71, 80, -1, -1, -1, + -1, -1, -1, 1055, -1, 81, -1, -1, -1, -1, + -1, -1, -1, 89, -1, -1, -1, 93, 94, -1, + -1, -1, -1, -1, 1076, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1089, -1, 1091, + -1, -1, -1, -1, -1, -1, -1, 1099, -1, 133, + 134, -1, 136, -1, -1, -1, 140, 141, -1, -1, + 144, -1, 146, -1, -1, 149, 150, 151, 1120, -1, + -1, -1, 156, 1125, 1126, -1, 1128, -1, -1, -1, + -1, 165, -1, -1, -1, 169, -1, -1, -1, -1, + -1, 175, 176, -1, -1, -1, -1, -1, -1, 1151, + -1, -1, 1154, 1155, 1156, -1, -1, -1, -1, 193, + 194, 195, 4, 5, -1, -1, 8, 9, -1, 203, + -1, -1, 14, -1, -1, 1177, 1178, 1179, 1180, 1181, + 1182, 1183, -1, -1, -1, 1187, -1, -1, 222, -1, + -1, -1, 1194, -1, -1, 37, -1, -1, -1, -1, + -1, -1, -1, -1, 46, -1, 48, -1, 1210, 1211, + 1212, -1, -1, 55, -1, 57, 58, -1, -1, -1, + 1222, 1223, 1224, 1225, -1, 259, -1, 1229, 1, 71, + 3, 4, 5, 6, 7, 8, 9, -1, -1, 81, + -1, 14, 1244, -1, -1, -1, -1, 1249, -1, -1, + 1252, 93, 94, -1, -1, 28, -1, 30, 31, 32, + -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, + -1, -1, -1, 46, 47, -1, 49, -1, -1, -1, + -1, -1, 55, -1, 57, 58, -1, -1, 61, -1, + 63, -1, -1, -1, -1, -1, 330, -1, 71, 1301, + 1302, 1303, 1304, 1305, 1306, -1, -1, 1309, 81, -1, + -1, -1, -1, 347, 4, 5, 89, 7, 8, 9, + 93, 355, 12, -1, 14, -1, 360, -1, -1, -1, + -1, -1, 1334, -1, -1, -1, 109, -1, 28, -1, + 30, 31, -1, 1345, 1346, 1347, -1, 37, -1, -1, + -1, -1, -1, -1, -1, -1, 46, -1, 48, 393, + -1, -1, 1364, -1, -1, 55, -1, 57, 58, -1, + 404, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 71, -1, -1, -1, 419, -1, -1, 422, -1, + -1, 81, -1, -1, 428, 429, 430, -1, -1, -1, + 434, -1, -1, 93, 94, -1, -1, -1, 442, -1, + -1, -1, 1414, 1415, -1, 1417, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, -1, 1015, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, - 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, - 46, -1, 48, -1, 50, 51, 52, 53, 54, 55, - -1, 57, 58, 1420, 1421, 1422, 1423, 608, -1, -1, - -1, -1, 68, -1, -1, 71, -1, -1, 619, 620, - -1, 622, 623, 79, 80, 81, -1, -1, -1, -1, - -1, 87, 88, 89, -1, -1, -1, 93, 94, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1466, - -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, - 4, 5, -1, 7, 8, 9, -1, -1, -1, -1, - 14, -1, -1, -1, -1, 676, -1, -1, -1, -1, - -1, -1, 683, 684, 28, -1, 30, 31, 1505, 1506, - 1507, 1508, -1, 37, 695, -1, -1, -1, -1, -1, - -1, 1153, 46, -1, 1156, 1157, 1158, -1, -1, -1, - -1, 55, -1, 57, 58, -1, -1, -1, 719, -1, - 1537, 1538, 1539, -1, -1, -1, -1, 1179, 1180, 1181, - 1182, 1183, 1184, 1185, -1, -1, -1, 1189, -1, -1, - 1557, -1, -1, -1, -1, -1, 1563, -1, -1, -1, + 6, 7, 8, 9, -1, -1, 470, 471, 14, -1, + 474, -1, 476, 477, 478, 479, -1, -1, -1, 483, + -1, -1, -1, -1, 488, 31, -1, 491, 1460, -1, + -1, 37, -1, -1, -1, -1, 42, -1, -1, -1, + 46, -1, 48, -1, 508, -1, -1, -1, -1, 55, + -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, -1, 1499, 1500, 1501, + 1502, -1, -1, 537, -1, 81, 540, -1, -1, 4, + -1, -1, -1, 89, -1, -1, -1, 93, -1, -1, + -1, -1, 556, 557, 558, -1, -1, -1, -1, 1531, + 1532, 1533, -1, -1, -1, 30, 31, 571, 33, -1, + 35, -1, -1, -1, -1, -1, -1, 42, -1, 1551, + 1552, -1, -1, -1, -1, 1557, -1, -1, -1, -1, + 55, -1, 57, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, 619, 14, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 631, -1, -1, + 28, -1, 30, 31, 32, -1, -1, -1, -1, 37, + -1, -1, -1, -1, 42, -1, 650, -1, 46, 47, + -1, 49, -1, 3, 4, 5, 6, 55, -1, 57, + 58, -1, -1, 61, -1, 63, -1, -1, -1, -1, + -1, 136, 676, 71, -1, 140, 141, -1, -1, 683, + -1, 146, -1, 81, 149, 150, 151, 691, 692, 693, + 694, 89, 42, -1, -1, 93, -1, -1, -1, -1, + 165, -1, -1, -1, 169, 55, -1, 57, 58, -1, + 175, 176, 3, 4, 5, 6, -1, -1, 9, -1, + -1, 71, -1, -1, -1, -1, -1, -1, 193, 194, + 195, 81, -1, -1, 738, -1, -1, -1, 742, 89, + 31, -1, -1, 93, -1, -1, 750, 751, 752, 753, + 754, 42, -1, -1, 758, -1, -1, 222, -1, -1, + -1, -1, -1, -1, 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1212, 1213, 1214, 68, 69, 70, 71, 72, 73, 74, + 71, -1, -1, -1, -1, 789, -1, 791, -1, -1, + 81, -1, 796, 797, 259, 799, -1, -1, 89, -1, + -1, -1, 93, -1, -1, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, -1, -1, 12, -1, 14, + 824, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, + -1, -1, 37, -1, -1, -1, -1, 42, -1, -1, + -1, 46, -1, 48, -1, -1, -1, -1, -1, -1, + 55, -1, 57, 58, 59, 60, 61, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, -1, -1, 784, -1, -1, 787, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 819, 820, - 821, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 832, -1, -1, 111, -1, 1, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - -1, -1, -1, 1305, 1306, 1307, 1308, 1309, 1310, -1, - -1, 1313, -1, 28, 29, 30, 31, 32, -1, 34, - 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, - -1, 46, -1, 48, -1, 50, 51, 52, 53, 54, - 55, -1, 57, 58, 59, -1, -1, 62, -1, -1, - -1, -1, -1, 68, 905, 906, 71, -1, 909, -1, - -1, 912, -1, -1, 79, 80, 81, -1, -1, -1, - 921, -1, 87, 88, 89, -1, -1, -1, 93, 94, - 931, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, -1, -1, 110, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 1420, 1421, - -1, 1423, -1, -1, -1, -1, -1, -1, -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, 37, -1, 39, 40, 41, - 42, 43, 44, 45, 46, 47, -1, -1, 50, 51, - 52, 53, 54, 55, -1, 57, 58, 59, -1, 61, - 62, -1, 1043, -1, -1, -1, 68, -1, -1, 71, - -1, -1, -1, 1505, 1506, 1507, 1508, 79, 80, 81, - -1, -1, -1, -1, -1, 87, 88, 89, -1, 1070, - -1, 93, -1, 95, -1, -1, -1, -1, -1, 3, - 4, 5, 6, 7, 8, 9, -1, 109, 110, -1, - 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 28, 1557, 30, 31, -1, -1, - -1, -1, -1, 37, -1, -1, -1, -1, 42, -1, - -1, -1, 46, -1, -1, -1, 1127, 1128, -1, 1130, - -1, 55, -1, 57, 58, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 71, -1, -1, - -1, -1, 1153, -1, -1, 1156, 1157, 81, -1, -1, + 85, 356, 87, 88, 89, 360, 91, 92, 93, 94, + 95, -1, 97, -1, -1, -1, -1, 102, -1, -1, + -1, -1, 107, 108, 109, -1, 111, -1, -1, -1, + 924, 925, 926, -1, -1, -1, 930, 931, -1, -1, + -1, 4, 5, 33, -1, 8, 9, -1, -1, 404, + -1, 14, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, -1, 419, 55, -1, 422, -1, -1, + -1, -1, -1, -1, 37, 969, 970, 971, -1, 434, + -1, -1, 976, 46, -1, 48, -1, 442, -1, -1, + -1, -1, 55, -1, 57, 58, -1, -1, 42, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, + -1, 55, -1, 57, 58, 470, 471, 61, 81, 474, + 1014, 476, 477, 478, -1, -1, -1, 71, 483, -1, + 93, 94, -1, 488, -1, -1, 491, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, 93, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 1196, 13, 14, 15, -1, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, - 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, 1233, 50, 51, 52, 53, 54, 55, -1, - 57, 58, 59, -1, 61, 62, -1, -1, -1, -1, - 1251, 68, 1253, -1, 71, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, - 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, - 44, -1, 46, -1, 48, -1, 50, 51, 52, 53, - 54, 55, -1, 57, 58, 59, -1, -1, 62, -1, - -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, - 94, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, + -1, -1, 1046, 508, -1, -1, -1, -1, -1, 149, + 150, 151, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 1067, -1, -1, -1, -1, -1, -1, + -1, -1, 1076, -1, -1, 175, -1, -1, 1, -1, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, -1, 193, 194, 195, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, + -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, 44, 222, 46, -1, 48, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, -1, -1, 62, + -1, -1, -1, -1, -1, 68, -1, 1151, 71, -1, + 1154, 1155, 1156, 1157, -1, 620, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, + 93, 94, -1, 1177, 1178, 1179, 1180, 1181, 1182, 1183, + -1, 1185, -1, 1187, -1, 650, -1, 110, -1, -1, + 4, 5, -1, -1, 8, 9, -1, -1, 298, -1, + 14, -1, -1, -1, -1, -1, 1210, 1211, 1212, -1, + -1, -1, -1, -1, 28, -1, 30, -1, -1, -1, + -1, -1, -1, 37, -1, -1, 691, 692, 693, 694, + -1, -1, 46, -1, 48, -1, -1, -1, -1, -1, + 1244, 55, -1, 57, 58, 1249, -1, -1, 1252, 349, + 350, 351, -1, -1, -1, -1, -1, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, 3, 4, + 5, 6, -1, 738, 9, -1, -1, 742, -1, 93, + 94, -1, -1, -1, -1, 750, 751, -1, -1, -1, + -1, -1, -1, 758, -1, -1, 31, 1301, 1302, 1303, + 1304, 1305, 1306, -1, 404, 1309, -1, 42, -1, -1, + -1, 4, 5, -1, 7, 8, 9, -1, -1, -1, + 55, 14, 57, 58, 789, -1, 791, -1, -1, -1, + -1, 796, 797, -1, 799, 28, 71, 30, 31, -1, + -1, 1345, 1346, 1347, 37, -1, 81, -1, -1, -1, + -1, -1, -1, 46, 89, -1, 49, -1, 93, -1, + -1, -1, 55, -1, 57, 58, -1, -1, -1, -1, + 470, 471, -1, -1, 474, -1, 476, 477, 478, 479, + -1, -1, -1, 483, -1, -1, -1, -1, 488, -1, + -1, 491, 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, 37, -1, + 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, + -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, + 59, -1, 61, 62, -1, -1, 1460, -1, -1, 68, + -1, -1, 71, -1, -1, -1, -1, 932, -1, 55, + 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, + 89, -1, -1, -1, 93, -1, 95, 3, 4, 5, + 6, -1, -1, -1, 80, -1, -1, 83, -1, -1, + 109, 110, -1, -1, 969, 970, 971, -1, 608, -1, + -1, -1, -1, -1, 107, 108, -1, -1, 104, -1, + 106, -1, 622, 623, 624, -1, 42, 1531, 1532, 1533, + 1, 631, 3, 4, 5, 6, 7, 8, 9, 55, + -1, 57, 58, 14, -1, -1, -1, 63, -1, 1014, + 650, -1, -1, 1557, -1, 71, 27, 28, -1, 30, + 31, 32, -1, -1, -1, 81, 37, -1, -1, -1, + -1, 42, -1, 89, 45, 46, 47, 93, 49, -1, + -1, 1046, -1, -1, 55, -1, 57, 58, -1, 175, + 61, 691, -1, 693, 694, -1, 696, -1, -1, -1, + 71, -1, -1, -1, -1, -1, -1, 193, 194, 195, + 81, 1076, -1, -1, -1, -1, -1, 203, 89, -1, + -1, -1, 93, -1, -1, -1, -1, 98, -1, -1, + -1, -1, -1, -1, -1, -1, 222, -1, 738, -1, + -1, -1, -1, 3, 4, 5, 6, -1, -1, 9, + 750, 751, 752, 753, 754, -1, -1, -1, 758, -1, + -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, + -1, 31, -1, -1, -1, -1, 262, -1, -1, -1, + -1, -1, 42, -1, -1, -1, -1, -1, 3, 4, + 5, 6, -1, -1, -1, 55, 796, 57, 58, 4, + 5, -1, 7, 8, 9, -1, -1, 12, -1, 14, + -1, 71, 1177, 1178, 1179, 1180, 1181, 1182, 818, 819, + 820, 81, 1187, 28, -1, 30, 31, 42, -1, 89, + -1, 831, 37, 93, -1, -1, -1, 330, -1, -1, + 55, 46, 57, 58, -1, 1210, 1211, 1212, 63, -1, + 55, -1, 57, 58, -1, -1, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, 355, + 356, -1, -1, -1, 89, -1, -1, -1, 93, 1244, + -1, -1, -1, -1, 1249, -1, 1, 1252, 3, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, + -1, -1, -1, -1, 904, 905, -1, -1, 908, 402, + -1, 911, -1, 28, -1, 30, 31, 32, 404, -1, + 920, -1, 37, 38, 924, 925, 926, 42, -1, -1, + 930, 46, 47, -1, 49, -1, -1, 1302, 1303, -1, + 55, -1, 57, 58, 1309, -1, 61, -1, 63, -1, + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, 969, + 970, 971, -1, -1, 89, 468, -1, -1, 93, -1, + 1345, 1346, 1347, -1, 470, 471, -1, -1, 474, -1, + 476, 477, 478, 479, 109, -1, -1, 483, -1, -1, + -1, -1, 488, -1, -1, 491, -1, -1, -1, -1, + -1, -1, -1, -1, 1014, -1, 4, 5, -1, -1, + -1, 9, -1, -1, -1, -1, -1, -1, 1028, 1029, + 1030, -1, 1, -1, 3, 4, 5, 6, 7, 8, + 9, -1, -1, 31, 537, 14, 1046, 540, -1, -1, + -1, -1, 545, 546, 547, 548, 549, -1, -1, 28, + 48, 30, 31, 32, -1, 558, -1, 55, 37, 57, + 58, -1, -1, 42, -1, -1, -1, 46, 571, -1, + 49, -1, -1, 71, -1, -1, 55, -1, 57, 58, + -1, -1, -1, 81, -1, 1460, -1, -1, -1, -1, + -1, -1, 71, -1, -1, 93, 94, -1, -1, -1, + -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, + 89, -1, -1, -1, 93, 1125, 1126, -1, 1128, 98, + -1, 624, -1, -1, -1, -1, -1, -1, 631, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 634, 635, + -1, 1151, -1, -1, 1154, 1155, 1156, -1, -1, -1, + -1, -1, -1, -1, 650, -1, 1531, 1532, 1533, -1, + -1, -1, -1, -1, -1, -1, -1, 1177, 1178, 1179, + 1180, 1181, 1182, 1183, -1, -1, -1, 1187, -1, -1, + -1, -1, 1557, 3, 4, 5, 6, 7, 8, 9, + -1, -1, 12, -1, 14, 691, -1, 693, 694, -1, + 1210, 1211, 1212, -1, -1, -1, -1, -1, 28, -1, + 30, 31, 1222, 1223, 1224, 1225, -1, 37, -1, -1, + -1, -1, 42, -1, -1, -1, 46, -1, 48, -1, + -1, -1, -1, -1, 1244, 55, -1, 57, 58, 742, + -1, -1, 738, -1, -1, -1, -1, -1, -1, -1, + -1, 71, -1, -1, 750, 751, 752, 753, 754, 755, + -1, 81, 758, -1, -1, -1, -1, -1, -1, 89, + -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 783, -1, -1, + -1, 1301, 1302, 1303, 1304, 1305, 1306, -1, -1, 1309, + 796, -1, 805, 349, 350, 351, -1, -1, 811, -1, + -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1345, -1, 1347, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, - -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, + -1, -1, 62, -1, -1, -1, -1, 880, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, - -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, 28, - 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, + -1, -1, -1, 93, 1414, 1415, -1, 1417, -1, -1, + -1, -1, -1, 916, -1, -1, -1, -1, 108, 922, + 110, -1, -1, 926, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, -1, 931, 932, 933, 14, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1460, -1, 28, -1, 30, 31, -1, -1, -1, -1, + -1, 37, 965, -1, 967, -1, 42, -1, 971, -1, + 46, -1, -1, 969, 970, 971, -1, -1, -1, 55, + 976, 57, 58, -1, -1, -1, -1, 63, -1, 1499, + 1500, 1501, 1502, 14, -1, 71, -1, -1, -1, -1, + -1, -1, 23, 24, -1, 81, -1, -1, -1, 30, + 31, 1014, 33, 89, -1, -1, -1, 93, 1014, -1, + -1, 1531, 1532, 1533, 1027, -1, -1, -1, -1, -1, + -1, -1, 1028, 1029, 1030, -1, -1, -1, -1, -1, + 1043, 1551, -1, -1, 65, -1, -1, 1557, -1, -1, + 1046, -1, 1055, -1, 3, 4, 5, 6, -1, -1, + 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1067, -1, -1, -1, -1, 622, 623, 624, -1, + -1, -1, 31, -1, -1, 631, 1089, -1, 1091, -1, + -1, -1, -1, 42, -1, -1, 1099, -1, -1, -1, + -1, -1, -1, 124, -1, 126, 55, -1, 57, 58, + -1, -1, 133, 134, -1, -1, -1, 1120, -1, 140, + 141, -1, 71, 144, 145, 146, -1, 148, 149, 150, + 151, -1, 81, -1, -1, -1, -1, -1, -1, -1, + 89, -1, -1, -1, 93, 691, -1, 693, 694, -1, + 696, -1, -1, 1156, -1, -1, -1, -1, -1, -1, + -1, 1157, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 1182, + -1, 1177, 1178, 1179, 1180, 1181, 1182, 1183, -1, 1185, + -1, 1187, 738, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, -1, -1, 12, -1, 14, 1212, + -1, -1, -1, -1, 1210, 1211, 1212, 238, 239, -1, + -1, -1, 28, -1, 30, 31, 1222, 1223, 1224, 1225, + -1, 37, -1, -1, -1, -1, 42, -1, 259, -1, + 46, -1, 48, -1, -1, 4, 5, -1, 1244, 55, + 9, 57, 58, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, + -1, -1, 31, -1, -1, 81, -1, 298, 3, 4, + 5, 6, -1, 89, -1, 831, -1, 93, 94, 48, + -1, -1, -1, -1, -1, -1, 55, -1, 57, 58, + -1, -1, -1, 1306, -1, 1301, 1302, 1303, 1304, 1305, + 1306, -1, 71, 1309, -1, -1, -1, 42, -1, -1, + -1, -1, 81, -1, -1, -1, 347, -1, 349, 350, + 55, -1, 57, 58, 93, 94, 61, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, -1, 1345, + -1, 1347, -1, -1, -1, -1, 81, -1, 904, 905, + -1, 1364, 908, -1, 89, 911, -1, -1, 93, -1, + -1, -1, 393, -1, 920, -1, -1, -1, 924, 925, + 926, -1, -1, -1, 930, -1, -1, -1, -1, -1, + -1, 412, -1, -1, -1, -1, -1, -1, 419, -1, + -1, 422, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 434, 13, 14, -1, -1, 1414, 1415, + 1416, 1417, -1, 969, 970, 971, -1, -1, -1, 28, + 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, - 59, -1, -1, 62, -1, -1, -1, -1, -1, 68, + 59, -1, 61, 62, 1460, -1, -1, -1, 1014, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, - 89, -1, -1, -1, 93, 94, 1, -1, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - 109, 110, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, - 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, - -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, - 55, -1, 57, 58, 59, -1, -1, 62, -1, -1, - -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, - -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, - -1, -1, 87, 88, 89, -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, + 79, 80, 81, -1, 505, -1, 507, -1, 87, 88, + 89, -1, -1, -1, 93, -1, -1, -1, 1501, -1, + -1, -1, -1, 1499, 1500, 1501, 1502, -1, -1, -1, + 531, 110, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, -1, -1, -1, -1, 14, -1, + 1533, -1, -1, -1, -1, 1531, 1532, 1533, -1, -1, + -1, -1, 28, -1, 30, 31, 32, -1, -1, 1552, + -1, 37, -1, -1, -1, 1551, 42, -1, -1, -1, + 46, 1557, -1, 49, -1, -1, -1, -1, -1, 55, + -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, -1, 608, -1, -1, + -1, -1, -1, -1, -1, 81, -1, -1, 619, 620, + -1, 622, 623, 89, -1, 1151, -1, 93, 1154, 1155, + 1156, -1, 98, 1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, 14, -1, -1, -1, + -1, 1177, 1178, 1179, 1180, 1181, 1182, 1183, -1, -1, + 28, 1187, 30, 31, 32, -1, -1, -1, -1, 37, + 38, -1, -1, -1, 42, 676, -1, -1, 46, 47, + -1, 49, 683, 684, 1210, 1211, 1212, 55, -1, 57, + 58, 12, -1, 61, 695, 63, -1, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 81, -1, -1, -1, -1, 719, -1, + -1, 89, -1, -1, -1, 93, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 109, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1301, 1302, 1303, 1304, 1305, + 1306, -1, 783, 1309, -1, 786, -1, -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, -1, -1, 818, 819, 820, + 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, + 831, 39, 40, 41, 42, 43, 44, -1, 46, -1, + 48, -1, 50, 51, 52, 53, 54, 55, -1, 57, + 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, + 68, -1, -1, 71, -1, -1, 3, 4, 5, 6, + -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, + 88, 89, -1, -1, -1, 93, 94, -1, 1414, 1415, + -1, 1417, -1, -1, 31, -1, -1, -1, -1, -1, + -1, -1, 110, 904, 905, 42, -1, 908, -1, -1, + 911, -1, -1, -1, -1, -1, -1, -1, 55, 920, + 57, 58, -1, -1, -1, -1, -1, -1, -1, 930, + -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, + -1, -1, 89, -1, -1, -1, 93, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 1499, 1500, 1501, 1502, 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, 37, -1, 39, 40, 41, 42, 43, - 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, - 54, 55, -1, 57, 58, 59, -1, -1, 62, -1, - -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, - -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, - -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, - 94, 1, -1, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, 13, 14, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, - 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, - 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, - -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, - -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, - 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, - -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, 37, -1, + 44, 45, 46, 47, -1, 1551, 50, 51, 52, 53, + 54, 55, -1, 57, 58, 59, -1, 61, 62, -1, + 1041, -1, -1, -1, 68, -1, -1, 71, -1, -1, + -1, -1, -1, -1, 31, 79, 80, 81, -1, -1, + -1, -1, -1, 87, 88, 89, -1, 1068, -1, 93, + -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 110, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1125, 1126, -1, 1128, 1, -1, + 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, + 1151, -1, -1, 1154, 1155, 28, 29, 30, -1, 32, + -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, -1, -1, 62, + -1, -1, -1, 1194, -1, 68, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, + 93, 94, 1, -1, 3, 4, 5, 6, 1229, 8, + 9, 10, 11, -1, 13, 14, 109, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 1247, -1, 1249, 28, + 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, 68, @@ -3594,17 +3506,17 @@ static const short yycheck[] = { 4, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, + -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, - 88, 89, -1, -1, -1, 93, -1, 1, -1, 3, - 4, 5, 6, 101, 8, 9, 10, 11, -1, 13, + 88, 89, -1, -1, -1, 93, 94, 1, -1, 3, + 4, 5, 6, -1, 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, + -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, -1, 62, -1, @@ -3612,7 +3524,7 @@ static const short yycheck[] = { 4, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, - 13, 14, -1, -1, -1, -1, 110, -1, -1, -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, @@ -3621,48 +3533,21 @@ static const short yycheck[] = { 4, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, + -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, - 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, - 62, 63, -1, -1, -1, -1, 68, -1, -1, 71, + 52, 53, 54, 55, -1, 57, 58, 59, -1, -1, + 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, - 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, - 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, - 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, - 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, - 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, - -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, - -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, - 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, - -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, 28, - 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, - 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, - -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, - -1, -1, -1, 62, -1, -1, -1, -1, -1, 68, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, - 89, -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, 37, + -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, - 58, -1, -1, -1, 62, -1, -1, -1, -1, -1, + 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, 1, 93, 3, 4, 5, 6, @@ -3671,33 +3556,97 @@ static const short yycheck[] = { 4, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, - 57, 58, -1, -1, -1, 62, -1, -1, -1, -1, + 57, 58, 59, -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, - 87, 88, 89, -1, -1, -1, 93, 3, 4, 5, + 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, - -1, 57, 58, -1, -1, -1, 62, -1, -1, -1, + -1, 57, 58, -1, -1, -1, 62, 63, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, - -1, 87, 88, 89, -1, -1, -1, 93, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 110, 111, 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, - 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, - 47, -1, -1, 50, 51, 52, 53, 54, 55, -1, - 57, 58, 59, -1, 61, 62, -1, -1, -1, -1, - -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, - 87, 88, 89, -1, -1, -1, 93, -1, 95, -1, + -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, 44, + -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, + 55, -1, 57, 58, -1, -1, 61, 62, -1, -1, + -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, + -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, + -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, + 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, + 54, 55, -1, 57, 58, -1, -1, -1, 62, -1, + -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, + -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, + -1, -1, -1, 87, 88, 89, -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, 28, 29, 30, -1, 32, + -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, + 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, -1, -1, -1, 62, + -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, + 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, + 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, + 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, + -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, + -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, + 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, + 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, + -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, + 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, + 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, + 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, + -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, + -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, + 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, + -1, -1, -1, 93, -1, -1, -1, -1, -1, -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, + 110, 111, 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, 37, -1, 39, 40, + 41, 42, 43, 44, 45, 46, 47, -1, -1, 50, + 51, 52, 53, 54, 55, -1, 57, 58, 59, -1, + 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, + 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, + 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, + 43, 44, 45, 46, 47, -1, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, 59, -1, 61, 62, + -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, @@ -3711,35 +3660,44 @@ static const short yycheck[] = { 4, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, 45, 46, 47, -1, -1, 50, 51, 52, 53, 54, - 55, -1, 57, 58, 59, -1, 61, 62, -1, -1, + 55, -1, 57, 58, -1, -1, 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, - 41, 42, 43, 44, 45, 46, 47, -1, -1, 50, - 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, - 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, - 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, + 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, 37, -1, 39, 40, 41, + 42, 43, 44, -1, 46, -1, 48, -1, 50, 51, + 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, + 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, + -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, + -1, -1, -1, -1, -1, 87, 88, 89, -1, -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, 37, -1, 39, + 40, 41, 42, 43, 44, -1, 46, -1, 48, -1, + 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, + -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, + -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, + 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, + -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, 48, -1, 50, 51, 52, 53, 54, 55, -1, 57, - 58, -1, -1, -1, 62, -1, -1, -1, -1, -1, + 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, 94, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, + 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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, 48, -1, 50, 51, 52, 53, 54, 55, - -1, 57, 58, -1, -1, -1, 62, -1, -1, -1, + -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, 94, 3, @@ -3747,42 +3705,51 @@ static const short yycheck[] = { 4, 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, - 44, -1, 46, -1, 48, -1, 50, 51, 52, 53, - 54, 55, -1, 57, 58, -1, -1, -1, -1, -1, + 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, + 54, 55, -1, 57, 58, -1, -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, - 94, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, 110, -1, -1, -1, + 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, 37, -1, 39, 40, 41, 42, + 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, -1, -1, 61, 62, + -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, - 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, + -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 37, -1, 39, 40, + 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, - 61, 62, -1, -1, -1, -1, -1, 68, -1, -1, + -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, - -1, -1, 93, 3, 4, 5, 6, 7, 8, 9, + -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, 34, 35, 36, 37, -1, 39, + 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, + -1, -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 34, 35, 36, 37, -1, + 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, 62, -1, -1, -1, -1, -1, 68, @@ -3803,7 +3770,7 @@ static const short yycheck[] = { 4, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, - 57, 58, -1, -1, -1, 62, -1, -1, -1, -1, + 57, 58, 59, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, 3, 4, 5, @@ -3812,30 +3779,30 @@ static const short yycheck[] = { 4, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, - -1, 57, 58, -1, -1, -1, 62, -1, -1, -1, + -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, - -1, 87, 88, 89, -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, 37, -1, 39, 40, 41, 42, 43, 44, - -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, - 55, -1, 57, 58, 59, -1, -1, -1, -1, -1, - -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, - -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, - -1, -1, 87, 88, 89, -1, -1, -1, 93, 3, + -1, 87, 88, 89, -1, -1, -1, 93, 94, 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, + 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -1, -1, -1, 93, - 94, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 13, 14, -1, -1, -1, 110, -1, -1, -1, + 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, 37, -1, 39, 40, 41, 42, + 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, + 53, 54, 55, -1, 57, 58, -1, -1, -1, 62, + -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, + -1, -1, -1, -1, 87, 88, 89, -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, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, @@ -3849,13 +3816,13 @@ static const short yycheck[] = { 4, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, - -1, 62, -1, -1, -1, -1, -1, 68, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, 89, -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, 34, 35, 36, 37, -1, 39, + 30, -1, 32, -1, 34, 35, 36, 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, @@ -3868,48 +3835,82 @@ static const short yycheck[] = { 4, 39, 40, 41, 42, 43, 44, -1, 46, -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, - 79, 80, 81, -1, -1, -1, -1, -1, 87, 88, - 89, -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, 37, - -1, 39, 40, 41, 42, 43, 44, -1, 46, -1, - -1, -1, 50, 51, 52, 53, 54, 55, -1, 57, - 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 68, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, 79, 80, 81, -1, -1, -1, -1, -1, 87, - 88, 89, -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, - 37, -1, 39, 40, 41, 42, 43, 44, -1, 46, - -1, -1, -1, 50, 51, 52, 53, 54, 55, -1, - 57, 58, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 68, -1, -1, 71, 3, 4, 5, 6, 7, - 8, 9, 79, 80, 81, -1, 14, -1, -1, -1, - 87, 88, 89, -1, -1, -1, 93, -1, -1, -1, - 28, -1, 30, 31, -1, -1, -1, -1, -1, 37, - -1, -1, -1, 110, 42, -1, -1, -1, 46, -1, - -1, -1, -1, -1, -1, -1, -1, 55, -1, 57, - 58, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 71, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 81, -1, -1, -1, -1, -1, -1, - -1, 89, -1, -1, -1, 93, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 60, -1, -1, 107, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 63, 64, 65, 66, 67, 68, 69, 70, + -1, -1, 71, 3, 4, 5, 6, 7, 8, 9, + 79, 80, 81, -1, 14, -1, -1, -1, 87, 88, + 89, -1, -1, -1, 93, -1, -1, -1, 28, -1, + 30, 31, -1, -1, -1, -1, -1, 37, -1, -1, + -1, 110, 42, -1, -1, -1, 46, -1, 48, -1, + -1, -1, -1, -1, -1, 55, -1, 57, 58, -1, + -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, + -1, 71, 12, -1, 14, -1, -1, -1, -1, -1, + -1, 81, -1, -1, -1, -1, -1, -1, 28, 89, + 30, 31, -1, 93, 94, -1, -1, 37, -1, -1, + -1, -1, 42, -1, -1, -1, 46, -1, 3, 4, + 5, 6, 7, 8, 9, 55, -1, 57, 58, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 71, -1, 28, -1, 30, 31, -1, -1, -1, + -1, 81, 37, -1, -1, -1, -1, 42, -1, 89, + -1, 46, -1, 93, -1, -1, -1, -1, -1, -1, + 55, -1, 57, 58, -1, -1, 61, -1, 3, 4, + 5, 6, 7, 8, 9, -1, 71, -1, -1, 14, + -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, + -1, -1, -1, 28, 89, 30, 31, -1, 93, -1, + -1, -1, 37, -1, -1, -1, -1, 42, -1, -1, + -1, 46, -1, 3, 4, 5, 6, 7, 8, 9, + 55, -1, 57, 58, 14, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, 28, -1, + 30, 31, -1, -1, -1, -1, 81, 37, -1, -1, + -1, -1, 42, -1, 89, -1, 46, -1, 93, -1, + -1, -1, -1, -1, -1, 55, -1, 57, 58, 4, + 5, -1, 7, 8, 9, -1, -1, 12, -1, 14, + -1, 71, -1, -1, -1, -1, 3, 4, 5, 6, + -1, 81, 9, 28, -1, 30, 31, -1, -1, 89, + -1, -1, 37, 93, -1, -1, -1, -1, -1, -1, + -1, 46, -1, 48, 31, -1, -1, -1, -1, -1, + 55, -1, 57, 58, -1, 42, -1, 3, 4, 5, + 6, -1, -1, 9, -1, -1, 71, -1, 55, -1, + 57, 58, -1, -1, -1, -1, 81, 3, 4, 5, + 6, -1, -1, -1, 71, 31, -1, -1, 93, 94, + -1, -1, -1, -1, 81, -1, 42, -1, 3, 4, + 5, 6, 89, -1, -1, 31, 93, -1, -1, 55, + -1, 57, 58, -1, -1, -1, 42, -1, 3, 4, + 5, 6, -1, -1, -1, 71, 31, -1, -1, 55, + -1, 57, 58, -1, -1, 81, -1, 42, -1, -1, + -1, -1, -1, 89, -1, 71, 31, 93, -1, -1, + 55, -1, 57, 58, -1, 81, -1, 42, -1, 3, + 4, 5, 6, 89, -1, -1, 71, 93, -1, -1, + 55, -1, 57, 58, -1, -1, 81, -1, -1, -1, + -1, -1, -1, -1, 89, -1, 71, 31, 93, -1, + -1, -1, -1, -1, -1, -1, 81, -1, 42, -1, + -1, -1, 4, 5, 89, 7, 8, 9, 93, -1, + 12, 55, 14, 57, 58, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 71, 30, 31, + -1, -1, -1, -1, -1, 37, -1, 81, -1, -1, + -1, -1, -1, -1, 46, 89, -1, -1, -1, 93, + -1, -1, -1, 55, -1, 57, 58, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, -1, -1, -1, 111, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, + -1, -1, 107, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85 + 81, 82, 83, 84, 85, 60, -1, -1, -1, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, -1, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple" +#line 3 "/usr/lib/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -4102,7 +4103,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/gnupro-98r2/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 *. @@ -6582,74 +6583,24 @@ case 512: break;} case 513: #line 2343 "parse.y" -{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype, - current_aggr - == signature_type_node); ; +{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype); ; break;} case 514: -#line 2347 "parse.y" -{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, - current_aggr - == signature_type_node); ; +#line 2345 "parse.y" +{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 515: -#line 2354 "parse.y" +#line 2350 "parse.y" { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ; break;} -case 517: -#line 2357 "parse.y" -{ - if (current_aggr == signature_type_node) - { - if (IS_AGGR_TYPE (TREE_TYPE (yyvsp[-1].ttype))) - { - sorry ("`sigof' as base signature specifier"); - yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); - } - else - { - error ("`sigof' applied to non-aggregate expression"); - yyval.ttype = error_mark_node; - } - } - else - { - error ("`sigof' in struct or class declaration"); - yyval.ttype = error_mark_node; - } - ; - break;} case 518: -#line 2378 "parse.y" -{ - if (current_aggr == signature_type_node) - { - if (IS_AGGR_TYPE (groktypename (yyvsp[-1].ftype.t))) - { - sorry ("`sigof' as base signature specifier"); - yyval.ttype = groktypename (yyvsp[-1].ftype.t); - } - else - { - error ("`sigof' applied to non-aggregate expression"); - yyval.ttype = error_mark_node; - } - } - else - { - error ("`sigof' in struct or class declaration"); - yyval.ttype = error_mark_node; - } - ; - break;} -case 520: -#line 2403 "parse.y" +#line 2357 "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 521: -#line 2407 "parse.y" +case 519: +#line 2361 "parse.y" { if (yyvsp[-2].ttype != access_default_virtual_node) error ("multiple access specifiers"); @@ -6661,8 +6612,8 @@ case 521: yyval.ttype = access_private_virtual_node; ; break;} -case 522: -#line 2418 "parse.y" +case 520: +#line 2372 "parse.y" { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) cp_error ("`%D' access", yyvsp[-1].ttype); else if (yyval.ttype == access_public_node) @@ -6675,62 +6626,56 @@ case 522: error ("multiple `virtual' specifiers"); ; break;} -case 527: -#line 2439 "parse.y" +case 525: +#line 2393 "parse.y" { - if (current_aggr == signature_type_node) - { - error ("access specifier not allowed in signature"); - yyvsp[-1].ttype = access_public_node; - } - current_access_specifier = yyvsp[-1].ttype; ; break;} -case 528: -#line 2454 "parse.y" +case 526: +#line 2402 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 529: -#line 2458 "parse.y" +case 527: +#line 2406 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 531: -#line 2466 "parse.y" +case 529: +#line 2414 "parse.y" { error ("missing ';' before right brace"); yyungetc ('}', 0); ; break;} -case 532: -#line 2471 "parse.y" +case 530: +#line 2419 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} -case 533: -#line 2473 "parse.y" +case 531: +#line 2421 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} -case 534: -#line 2475 "parse.y" +case 532: +#line 2423 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} -case 535: -#line 2477 "parse.y" +case 533: +#line 2425 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} -case 536: -#line 2479 "parse.y" +case 534: +#line 2427 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 537: -#line 2481 "parse.y" +case 535: +#line 2429 "parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} -case 538: -#line 2484 "parse.y" +case 536: +#line 2432 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6741,15 +6686,15 @@ case 538: finish_template_decl (yyvsp[-1].ttype); ; break;} -case 539: -#line 2494 "parse.y" +case 537: +#line 2442 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ; break;} -case 540: -#line 2505 "parse.y" +case 538: +#line 2453 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call @@ -6771,54 +6716,54 @@ case 540: yyval.ttype = NULL_TREE; ; break;} -case 541: -#line 2526 "parse.y" +case 539: +#line 2474 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ttype); yyval.ttype = NULL_TREE; ; break;} -case 542: -#line 2532 "parse.y" +case 540: +#line 2480 "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 2535 "parse.y" +case 541: +#line 2483 "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 2538 "parse.y" +case 542: +#line 2486 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} -case 545: -#line 2540 "parse.y" +case 543: +#line 2488 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 546: -#line 2551 "parse.y" +case 544: +#line 2499 "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 2556 "parse.y" +case 545: +#line 2504 "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 2559 "parse.y" +case 546: +#line 2507 "parse.y" { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; break;} -case 549: -#line 2565 "parse.y" +case 547: +#line 2513 "parse.y" { yyval.itype = 0; ; break;} -case 550: -#line 2567 "parse.y" +case 548: +#line 2515 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6826,8 +6771,8 @@ case 550: yyval.itype = 1; ; break;} -case 551: -#line 2574 "parse.y" +case 549: +#line 2522 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6836,12 +6781,12 @@ case 551: yyval.itype = 2; ; break;} -case 552: -#line 2585 "parse.y" +case 550: +#line 2533 "parse.y" { yyval.itype = 0; ; break;} -case 553: -#line 2587 "parse.y" +case 551: +#line 2535 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6849,8 +6794,8 @@ case 553: yyval.itype = 1; ; break;} -case 554: -#line 2594 "parse.y" +case 552: +#line 2542 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6859,107 +6804,107 @@ case 554: yyval.itype = 2; ; break;} -case 559: -#line 2615 "parse.y" +case 557: +#line 2563 "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 2621 "parse.y" +case 558: +#line 2569 "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 2630 "parse.y" +case 559: +#line 2578 "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 2636 "parse.y" +case 560: +#line 2584 "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 2642 "parse.y" +case 561: +#line 2590 "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 2648 "parse.y" +case 562: +#line 2596 "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 2657 "parse.y" +case 563: +#line 2605 "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 2660 "parse.y" +case 564: +#line 2608 "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 2666 "parse.y" +case 565: +#line 2614 "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 2669 "parse.y" +case 566: +#line 2617 "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 2672 "parse.y" +case 567: +#line 2620 "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 2679 "parse.y" +case 569: +#line 2627 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 573: -#line 2689 "parse.y" +case 571: +#line 2637 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 574: -#line 2694 "parse.y" +case 572: +#line 2642 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; break;} -case 575: -#line 2696 "parse.y" +case 573: +#line 2644 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; break;} -case 576: -#line 2702 "parse.y" +case 574: +#line 2650 "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 577: -#line 2705 "parse.y" +case 575: +#line 2653 "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 578: -#line 2712 "parse.y" +case 576: +#line 2660 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); @@ -6968,102 +6913,102 @@ case 578: yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ; break;} -case 579: -#line 2723 "parse.y" +case 577: +#line 2671 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 580: -#line 2725 "parse.y" +case 578: +#line 2673 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 581: -#line 2730 "parse.y" +case 579: +#line 2678 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); yyval.ftype.new_type_flag = 0; ; break;} -case 582: -#line 2733 "parse.y" +case 580: +#line 2681 "parse.y" { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 583: -#line 2742 "parse.y" +case 581: +#line 2690 "parse.y" { yyval.itype = suspend_momentary (); ; break;} -case 584: -#line 2747 "parse.y" +case 582: +#line 2695 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; break;} -case 585: -#line 2753 "parse.y" +case 583: +#line 2701 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} -case 586: -#line 2755 "parse.y" +case 584: +#line 2703 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} -case 587: -#line 2757 "parse.y" +case 585: +#line 2705 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; break;} -case 588: -#line 2759 "parse.y" +case 586: +#line 2707 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; break;} -case 590: -#line 2767 "parse.y" +case 588: +#line 2715 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} -case 591: -#line 2777 "parse.y" +case 589: +#line 2725 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 592: -#line 2779 "parse.y" +case 590: +#line 2727 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 593: -#line 2781 "parse.y" +case 591: +#line 2729 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 594: -#line 2783 "parse.y" +case 592: +#line 2731 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 595: -#line 2785 "parse.y" +case 593: +#line 2733 "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 597: -#line 2793 "parse.y" +case 595: +#line 2741 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 598: -#line 2795 "parse.y" +case 596: +#line 2743 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 599: -#line 2797 "parse.y" +case 597: +#line 2745 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 600: -#line 2799 "parse.y" +case 598: +#line 2747 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 601: -#line 2801 "parse.y" +case 599: +#line 2749 "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 603: -#line 2809 "parse.y" +case 601: +#line 2757 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { @@ -7074,8 +7019,8 @@ case 603: yyval.ttype = yyvsp[0].ttype; ; break;} -case 604: -#line 2819 "parse.y" +case 602: +#line 2767 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -7084,139 +7029,139 @@ case 604: got_scope = NULL_TREE; ; break;} -case 607: -#line 2832 "parse.y" +case 605: +#line 2780 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 608: -#line 2837 "parse.y" +case 606: +#line 2785 "parse.y" { yyval.ttype = get_type_decl (yyvsp[0].ttype); ; break;} -case 610: -#line 2846 "parse.y" +case 608: +#line 2794 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} -case 611: -#line 2855 "parse.y" +case 609: +#line 2803 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 612: -#line 2857 "parse.y" +case 610: +#line 2805 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 613: -#line 2859 "parse.y" +case 611: +#line 2807 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 614: -#line 2861 "parse.y" +case 612: +#line 2809 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 615: -#line 2863 "parse.y" +case 613: +#line 2811 "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 617: -#line 2871 "parse.y" +case 615: +#line 2819 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 618: -#line 2873 "parse.y" +case 616: +#line 2821 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 619: -#line 2875 "parse.y" +case 617: +#line 2823 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 620: -#line 2877 "parse.y" +case 618: +#line 2825 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 621: -#line 2879 "parse.y" +case 619: +#line 2827 "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 623: -#line 2887 "parse.y" +case 621: +#line 2835 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 624: -#line 2889 "parse.y" +case 622: +#line 2837 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 625: -#line 2891 "parse.y" +case 623: +#line 2839 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 626: -#line 2893 "parse.y" +case 624: +#line 2841 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 627: -#line 2895 "parse.y" +case 625: +#line 2843 "parse.y" { enter_scope_of (yyvsp[0].ttype); ; break;} -case 628: -#line 2897 "parse.y" +case 626: +#line 2845 "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 629: -#line 2905 "parse.y" +case 627: +#line 2853 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 630: -#line 2908 "parse.y" +case 628: +#line 2856 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 631: -#line 2914 "parse.y" +case 629: +#line 2862 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 632: -#line 2917 "parse.y" +case 630: +#line 2865 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 634: -#line 2924 "parse.y" +case 632: +#line 2872 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 635: -#line 2929 "parse.y" +case 633: +#line 2877 "parse.y" { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 636: -#line 2931 "parse.y" +case 634: +#line 2879 "parse.y" { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 637: -#line 2933 "parse.y" +case 635: +#line 2881 "parse.y" { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 642: -#line 2944 "parse.y" +case 640: +#line 2892 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 643: -#line 2946 "parse.y" +case 641: +#line 2894 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 644: -#line 2953 "parse.y" +case 642: +#line 2901 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { @@ -7227,32 +7172,32 @@ case 644: complete_type (TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype))); ; break;} -case 645: -#line 2963 "parse.y" +case 643: +#line 2911 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ; break;} -case 646: -#line 2969 "parse.y" +case 644: +#line 2917 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 647: -#line 2975 "parse.y" +case 645: +#line 2923 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; break;} -case 649: -#line 2991 "parse.y" +case 647: +#line 2939 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 650: -#line 2996 "parse.y" +case 648: +#line 2944 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -7266,27 +7211,27 @@ case 650: } ; break;} -case 651: -#line 3009 "parse.y" +case 649: +#line 2957 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; break;} -case 652: -#line 3011 "parse.y" +case 650: +#line 2959 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 653: -#line 3013 "parse.y" +case 651: +#line 2961 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} -case 654: -#line 3018 "parse.y" +case 652: +#line 2966 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); ; break;} -case 655: -#line 3023 "parse.y" +case 653: +#line 2971 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -7300,16 +7245,16 @@ case 655: } ; break;} -case 656: -#line 3036 "parse.y" +case 654: +#line 2984 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} -case 657: -#line 3038 "parse.y" +case 655: +#line 2986 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 658: -#line 3043 "parse.y" +case 656: +#line 2991 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyvsp[-1].ttype = lastiddecl; @@ -7322,32 +7267,32 @@ case 658: cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ; break;} -case 659: -#line 3055 "parse.y" +case 657: +#line 3003 "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 660: -#line 3061 "parse.y" +case 658: +#line 3009 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 663: -#line 3065 "parse.y" +case 661: +#line 3013 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 664: -#line 3074 "parse.y" +case 662: +#line 3022 "parse.y" { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 665: -#line 3079 "parse.y" +case 663: +#line 3027 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -7356,157 +7301,157 @@ case 665: got_scope = NULL_TREE; ; break;} -case 667: -#line 3088 "parse.y" +case 665: +#line 3036 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 668: -#line 3093 "parse.y" +case 666: +#line 3041 "parse.y" { got_scope = NULL_TREE; ; break;} -case 669: -#line 3095 "parse.y" +case 667: +#line 3043 "parse.y" { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; break;} -case 670: -#line 3102 "parse.y" +case 668: +#line 3050 "parse.y" { got_scope = void_type_node; ; break;} -case 671: -#line 3108 "parse.y" +case 669: +#line 3056 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 672: -#line 3110 "parse.y" +case 670: +#line 3058 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 673: -#line 3112 "parse.y" +case 671: +#line 3060 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 674: -#line 3114 "parse.y" +case 672: +#line 3062 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 675: -#line 3116 "parse.y" +case 673: +#line 3064 "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 676: -#line 3120 "parse.y" +case 674: +#line 3068 "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 678: -#line 3129 "parse.y" +case 676: +#line 3077 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 679: -#line 3131 "parse.y" +case 677: +#line 3079 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 681: -#line 3137 "parse.y" +case 679: +#line 3085 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} -case 682: -#line 3147 "parse.y" +case 680: +#line 3095 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 683: -#line 3149 "parse.y" +case 681: +#line 3097 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 684: -#line 3151 "parse.y" +case 682: +#line 3099 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 685: -#line 3153 "parse.y" +case 683: +#line 3101 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; break;} -case 686: -#line 3155 "parse.y" +case 684: +#line 3103 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 687: -#line 3157 "parse.y" +case 685: +#line 3105 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 688: -#line 3159 "parse.y" +case 686: +#line 3107 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 689: -#line 3161 "parse.y" +case 687: +#line 3109 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; break;} -case 690: -#line 3163 "parse.y" +case 688: +#line 3111 "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 691: -#line 3167 "parse.y" +case 689: +#line 3115 "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 693: -#line 3176 "parse.y" +case 691: +#line 3124 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 694: -#line 3179 "parse.y" +case 692: +#line 3127 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 695: -#line 3181 "parse.y" +case 693: +#line 3129 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 696: -#line 3183 "parse.y" +case 694: +#line 3131 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 697: -#line 3185 "parse.y" +case 695: +#line 3133 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 698: -#line 3187 "parse.y" +case 696: +#line 3135 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 699: -#line 3189 "parse.y" +case 697: +#line 3137 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 700: -#line 3191 "parse.y" +case 698: +#line 3139 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 701: -#line 3193 "parse.y" +case 699: +#line 3141 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 702: -#line 3195 "parse.y" +case 700: +#line 3143 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} -case 709: -#line 3218 "parse.y" +case 707: +#line 3166 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids label declarations"); ; break;} -case 712: -#line 3229 "parse.y" +case 710: +#line 3177 "parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -7516,261 +7461,261 @@ case 712: } ; break;} -case 713: -#line 3243 "parse.y" +case 711: +#line 3191 "parse.y" {; break;} -case 715: -#line 3249 "parse.y" +case 713: +#line 3197 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 716: -#line 3251 "parse.y" +case 714: +#line 3199 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 717: -#line 3256 "parse.y" +case 715: +#line 3204 "parse.y" { yyval.ttype = begin_if_stmt (); cond_stmt_keyword = "if"; ; break;} -case 718: -#line 3261 "parse.y" +case 716: +#line 3209 "parse.y" { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 719: -#line 3263 "parse.y" +case 717: +#line 3211 "parse.y" { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; break;} -case 721: -#line 3268 "parse.y" +case 719: +#line 3216 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 722: -#line 3270 "parse.y" +case 720: +#line 3218 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 723: -#line 3275 "parse.y" +case 721: +#line 3223 "parse.y" {; break;} -case 725: -#line 3281 "parse.y" +case 723: +#line 3229 "parse.y" { finish_stmt (); ; break;} -case 726: -#line 3283 "parse.y" +case 724: +#line 3231 "parse.y" { finish_expr_stmt (yyvsp[-1].ttype); ; break;} -case 727: -#line 3285 "parse.y" +case 725: +#line 3233 "parse.y" { begin_else_clause (); ; break;} -case 728: -#line 3287 "parse.y" +case 726: +#line 3235 "parse.y" { finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ; break;} -case 729: -#line 3292 "parse.y" +case 727: +#line 3240 "parse.y" { finish_if_stmt (); ; break;} -case 730: -#line 3294 "parse.y" +case 728: +#line 3242 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ; break;} -case 731: -#line 3299 "parse.y" +case 729: +#line 3247 "parse.y" { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 732: -#line 3301 "parse.y" +case 730: +#line 3249 "parse.y" { finish_while_stmt (yyvsp[-3].ttype); ; break;} -case 733: -#line 3303 "parse.y" +case 731: +#line 3251 "parse.y" { yyval.ttype = begin_do_stmt (); ; break;} -case 734: -#line 3305 "parse.y" +case 732: +#line 3253 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ; break;} -case 735: -#line 3310 "parse.y" +case 733: +#line 3258 "parse.y" { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 736: -#line 3312 "parse.y" +case 734: +#line 3260 "parse.y" { yyval.ttype = begin_for_stmt (); ; break;} -case 737: -#line 3314 "parse.y" +case 735: +#line 3262 "parse.y" { finish_for_init_stmt (yyvsp[-2].ttype); ; break;} -case 738: -#line 3316 "parse.y" +case 736: +#line 3264 "parse.y" { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 739: -#line 3318 "parse.y" +case 737: +#line 3266 "parse.y" { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; break;} -case 740: -#line 3320 "parse.y" +case 738: +#line 3268 "parse.y" { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; break;} -case 741: -#line 3322 "parse.y" +case 739: +#line 3270 "parse.y" { begin_switch_stmt (); ; break;} -case 742: -#line 3324 "parse.y" +case 740: +#line 3272 "parse.y" { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; break;} -case 743: -#line 3326 "parse.y" +case 741: +#line 3274 "parse.y" { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 744: -#line 3328 "parse.y" +case 742: +#line 3276 "parse.y" { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; break;} -case 746: -#line 3331 "parse.y" +case 744: +#line 3279 "parse.y" { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 748: -#line 3334 "parse.y" +case 746: +#line 3282 "parse.y" { finish_case_label (NULL_TREE, NULL_TREE); ; break;} -case 750: -#line 3337 "parse.y" +case 748: +#line 3285 "parse.y" { finish_break_stmt (); ; break;} -case 751: -#line 3339 "parse.y" +case 749: +#line 3287 "parse.y" { finish_continue_stmt (); ; break;} -case 752: -#line 3341 "parse.y" +case 750: +#line 3289 "parse.y" { finish_return_stmt (NULL_TREE); ; break;} -case 753: -#line 3343 "parse.y" +case 751: +#line 3291 "parse.y" { finish_return_stmt (yyvsp[-1].ttype); ; break;} -case 754: -#line 3345 "parse.y" +case 752: +#line 3293 "parse.y" { finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ; break;} -case 755: -#line 3351 "parse.y" +case 753: +#line 3299 "parse.y" { finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} -case 756: -#line 3357 "parse.y" +case 754: +#line 3305 "parse.y" { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} -case 757: -#line 3361 "parse.y" +case 755: +#line 3309 "parse.y" { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} -case 758: -#line 3363 "parse.y" +case 756: +#line 3311 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids computed gotos"); finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 759: -#line 3369 "parse.y" +case 757: +#line 3317 "parse.y" { finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 760: -#line 3371 "parse.y" +case 758: +#line 3319 "parse.y" { finish_stmt (); ; break;} -case 761: -#line 3373 "parse.y" +case 759: +#line 3321 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); finish_stmt (); ; break;} -case 762: -#line 3377 "parse.y" +case 760: +#line 3325 "parse.y" { finish_stmt (); ; break;} -case 765: -#line 3381 "parse.y" +case 763: +#line 3329 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ; break;} -case 767: -#line 3387 "parse.y" +case 765: +#line 3335 "parse.y" { yyval.ttype = begin_function_try_block (); ; break;} -case 768: -#line 3389 "parse.y" +case 766: +#line 3337 "parse.y" { finish_function_try_block (yyvsp[-2].ttype); ; break;} -case 769: -#line 3391 "parse.y" +case 767: +#line 3339 "parse.y" { finish_function_handler_sequence (yyvsp[-4].ttype); yyval.itype = yyvsp[-3].itype; ; break;} -case 770: -#line 3399 "parse.y" +case 768: +#line 3347 "parse.y" { yyval.ttype = begin_try_block (); ; break;} -case 771: -#line 3401 "parse.y" +case 769: +#line 3349 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} -case 772: -#line 3403 "parse.y" +case 770: +#line 3351 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} -case 775: -#line 3413 "parse.y" +case 773: +#line 3361 "parse.y" { yyval.ttype = begin_handler(); ; break;} -case 776: -#line 3415 "parse.y" +case 774: +#line 3363 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} -case 777: -#line 3417 "parse.y" +case 775: +#line 3365 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} -case 780: -#line 3427 "parse.y" +case 778: +#line 3375 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} -case 781: -#line 3443 "parse.y" +case 779: +#line 3391 "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 782: -#line 3450 "parse.y" +case 780: +#line 3398 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); @@ -7778,99 +7723,99 @@ case 782: expand_label (label); ; break;} -case 783: -#line 3457 "parse.y" +case 781: +#line 3405 "parse.y" { goto do_label; ; break;} -case 784: -#line 3459 "parse.y" +case 782: +#line 3407 "parse.y" { goto do_label; ; break;} -case 785: -#line 3461 "parse.y" +case 783: +#line 3409 "parse.y" { goto do_label; ; break;} -case 786: -#line 3466 "parse.y" +case 784: +#line 3414 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} -case 788: -#line 3469 "parse.y" +case 786: +#line 3417 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} -case 789: -#line 3478 "parse.y" +case 787: +#line 3426 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} -case 790: -#line 3481 "parse.y" +case 788: +#line 3429 "parse.y" { emit_line_note (input_filename, lineno); ; break;} -case 791: -#line 3486 "parse.y" +case 789: +#line 3434 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 793: -#line 3489 "parse.y" +case 791: +#line 3437 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 794: -#line 3496 "parse.y" +case 792: +#line 3444 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 797: -#line 3503 "parse.y" +case 795: +#line 3451 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 798: -#line 3508 "parse.y" +case 796: +#line 3456 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} -case 799: -#line 3513 "parse.y" +case 797: +#line 3461 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} -case 800: -#line 3515 "parse.y" +case 798: +#line 3463 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 801: -#line 3526 "parse.y" +case 799: +#line 3474 "parse.y" { yyval.ttype = empty_parms(); ; break;} -case 803: -#line 3531 "parse.y" +case 801: +#line 3479 "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 804: -#line 3539 "parse.y" +case 802: +#line 3487 "parse.y" { yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} -case 805: -#line 3541 "parse.y" +case 803: +#line 3489 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} -case 806: -#line 3544 "parse.y" +case 804: +#line 3492 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} -case 807: -#line 3546 "parse.y" +case 805: +#line 3494 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} -case 808: -#line 3549 "parse.y" +case 806: +#line 3497 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} -case 809: -#line 3551 "parse.y" +case 807: +#line 3499 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7881,8 +7826,8 @@ case 809: yychar = ')'; ; break;} -case 810: -#line 3561 "parse.y" +case 808: +#line 3509 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7894,100 +7839,100 @@ case 810: yychar = ')'; ; break;} -case 811: -#line 3576 "parse.y" +case 809: +#line 3524 "parse.y" { maybe_snarf_defarg (); ; break;} -case 812: -#line 3578 "parse.y" +case 810: +#line 3526 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 815: -#line 3589 "parse.y" +case 813: +#line 3537 "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 816: -#line 3592 "parse.y" +case 814: +#line 3540 "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 817: -#line 3595 "parse.y" +case 815: +#line 3543 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} -case 818: -#line 3598 "parse.y" +case 816: +#line 3546 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} -case 819: -#line 3600 "parse.y" +case 817: +#line 3548 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} -case 821: -#line 3606 "parse.y" +case 819: +#line 3554 "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 822: -#line 3616 "parse.y" +case 820: +#line 3564 "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 823: -#line 3620 "parse.y" +case 821: +#line 3568 "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 824: -#line 3623 "parse.y" +case 822: +#line 3571 "parse.y" { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 825: -#line 3627 "parse.y" +case 823: +#line 3575 "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 826: -#line 3631 "parse.y" +case 824: +#line 3579 "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 827: -#line 3635 "parse.y" +case 825: +#line 3583 "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 828: -#line 3642 "parse.y" +case 826: +#line 3590 "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 829: -#line 3645 "parse.y" +case 827: +#line 3593 "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 832: -#line 3656 "parse.y" +case 830: +#line 3604 "parse.y" { see_typename (); ; break;} -case 833: -#line 3661 "parse.y" +case 831: +#line 3609 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} -case 834: -#line 3666 "parse.y" +case 832: +#line 3614 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF @@ -7997,198 +7942,198 @@ case 834: yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ; break;} -case 835: -#line 3678 "parse.y" +case 833: +#line 3626 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 836: -#line 3680 "parse.y" +case 834: +#line 3628 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 837: -#line 3682 "parse.y" +case 835: +#line 3630 "parse.y" { yyval.ttype = empty_except_spec; ; break;} -case 838: -#line 3687 "parse.y" +case 836: +#line 3635 "parse.y" { check_for_new_type ("exception specifier", yyvsp[0].ftype); yyval.ttype = groktypename (yyvsp[0].ftype.t); ; break;} -case 839: -#line 3695 "parse.y" +case 837: +#line 3643 "parse.y" { yyval.ttype = add_exception_specifier (NULL_TREE, yyvsp[0].ttype, 1); ; break;} -case 840: -#line 3697 "parse.y" +case 838: +#line 3645 "parse.y" { yyval.ttype = add_exception_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 1); ; break;} -case 841: -#line 3702 "parse.y" +case 839: +#line 3650 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 842: -#line 3704 "parse.y" +case 840: +#line 3652 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 843: -#line 3706 "parse.y" +case 841: +#line 3654 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 844: -#line 3708 "parse.y" +case 842: +#line 3656 "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 845: -#line 3715 "parse.y" +case 843: +#line 3663 "parse.y" { got_scope = NULL_TREE; ; break;} -case 846: -#line 3720 "parse.y" +case 844: +#line 3668 "parse.y" { yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} -case 847: -#line 3722 "parse.y" +case 845: +#line 3670 "parse.y" { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} -case 848: -#line 3724 "parse.y" +case 846: +#line 3672 "parse.y" { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} -case 849: -#line 3726 "parse.y" +case 847: +#line 3674 "parse.y" { yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} -case 850: -#line 3728 "parse.y" +case 848: +#line 3676 "parse.y" { yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} -case 851: -#line 3730 "parse.y" +case 849: +#line 3678 "parse.y" { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} -case 852: -#line 3732 "parse.y" +case 850: +#line 3680 "parse.y" { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} -case 853: -#line 3734 "parse.y" +case 851: +#line 3682 "parse.y" { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} -case 854: -#line 3736 "parse.y" +case 852: +#line 3684 "parse.y" { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} -case 855: -#line 3738 "parse.y" +case 853: +#line 3686 "parse.y" { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} -case 856: -#line 3740 "parse.y" +case 854: +#line 3688 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 857: -#line 3742 "parse.y" +case 855: +#line 3690 "parse.y" { yyval.ttype = ansi_opname[LT_EXPR]; ; break;} -case 858: -#line 3744 "parse.y" +case 856: +#line 3692 "parse.y" { yyval.ttype = ansi_opname[GT_EXPR]; ; break;} -case 859: -#line 3746 "parse.y" +case 857: +#line 3694 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 860: -#line 3748 "parse.y" +case 858: +#line 3696 "parse.y" { yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} -case 861: -#line 3750 "parse.y" +case 859: +#line 3698 "parse.y" { yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} -case 862: -#line 3752 "parse.y" +case 860: +#line 3700 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 863: -#line 3754 "parse.y" +case 861: +#line 3702 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 864: -#line 3756 "parse.y" +case 862: +#line 3704 "parse.y" { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} -case 865: -#line 3758 "parse.y" +case 863: +#line 3706 "parse.y" { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} -case 866: -#line 3760 "parse.y" +case 864: +#line 3708 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} -case 867: -#line 3762 "parse.y" +case 865: +#line 3710 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} -case 868: -#line 3764 "parse.y" +case 866: +#line 3712 "parse.y" { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} -case 869: -#line 3766 "parse.y" +case 867: +#line 3714 "parse.y" { yyval.ttype = ansi_opname[COND_EXPR]; ; break;} -case 870: -#line 3768 "parse.y" +case 868: +#line 3716 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 871: -#line 3770 "parse.y" +case 869: +#line 3718 "parse.y" { yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} -case 872: -#line 3772 "parse.y" +case 870: +#line 3720 "parse.y" { yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} -case 873: -#line 3774 "parse.y" +case 871: +#line 3722 "parse.y" { yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} -case 874: -#line 3776 "parse.y" +case 872: +#line 3724 "parse.y" { yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} -case 875: -#line 3778 "parse.y" +case 873: +#line 3726 "parse.y" { yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} -case 876: -#line 3780 "parse.y" +case 874: +#line 3728 "parse.y" { yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} -case 877: -#line 3782 "parse.y" +case 875: +#line 3730 "parse.y" { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} -case 878: -#line 3784 "parse.y" +case 876: +#line 3732 "parse.y" { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} -case 879: -#line 3787 "parse.y" +case 877: +#line 3735 "parse.y" { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 880: -#line 3789 "parse.y" +case 878: +#line 3737 "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-98r2/share/bison.simple" +#line 498 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -8384,7 +8329,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 3792 "parse.y" +#line 3740 "parse.y" #ifdef SPEW_DEBUG diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index fc62c0f..792292b 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -2340,61 +2340,15 @@ base_class_list: base_class: base_class.1 - { $$ = finish_base_specifier (access_default_node, $1, - current_aggr - == signature_type_node); } + { $$ = finish_base_specifier (access_default_node, $1); } | base_class_access_list see_typename base_class.1 - { $$ = finish_base_specifier ($1, $3, - current_aggr - == signature_type_node); } + { $$ = finish_base_specifier ($1, $3); } ; base_class.1: typename_sub { if ($$ != error_mark_node) $$ = TYPE_MAIN_DECL ($1); } | nonnested_type - | SIGOF '(' expr ')' - { - if (current_aggr == signature_type_node) - { - if (IS_AGGR_TYPE (TREE_TYPE ($3))) - { - sorry ("`sigof' as base signature specifier"); - $$ = TREE_TYPE ($3); - } - else - { - error ("`sigof' applied to non-aggregate expression"); - $$ = error_mark_node; - } - } - else - { - error ("`sigof' in struct or class declaration"); - $$ = error_mark_node; - } - } - | SIGOF '(' type_id ')' - { - if (current_aggr == signature_type_node) - { - if (IS_AGGR_TYPE (groktypename ($3.t))) - { - sorry ("`sigof' as base signature specifier"); - $$ = groktypename ($3.t); - } - else - { - error ("`sigof' applied to non-aggregate expression"); - $$ = error_mark_node; - } - } - else - { - error ("`sigof' in struct or class declaration"); - $$ = error_mark_node; - } - } ; base_class_access_list: @@ -2437,12 +2391,6 @@ opt.component_decl_list: access_specifier: VISSPEC ':' { - if (current_aggr == signature_type_node) - { - error ("access specifier not allowed in signature"); - $1 = access_public_node; - } - current_access_specifier = $1; } ; diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 7592df6..f68edd6 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -1458,8 +1458,6 @@ lookup_member (xbasetype, name, protect, want_type) In the case of overloaded function names, access control is applied to the function selected by overloaded resolution. */ if (rval && protect && !is_overloaded_fn (rval) - && !IS_SIGNATURE_POINTER (DECL_REAL_CONTEXT (rval)) - && !IS_SIGNATURE_REFERENCE (DECL_REAL_CONTEXT (rval)) && !enforce_access (xbasetype, rval)) return error_mark_node; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index fe68ae8..1b64900 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1035,14 +1035,8 @@ finish_qualified_object_call_expr (fn, object, args) tree object; tree args; { - if (IS_SIGNATURE (TREE_OPERAND (fn, 0))) - { - warning ("signature name in scope resolution ignored"); - return finish_object_call_expr (TREE_OPERAND (fn, 1), object, args); - } - else - return build_scoped_method_call (object, TREE_OPERAND (fn, 0), - TREE_OPERAND (fn, 1), args); + return build_scoped_method_call (object, TREE_OPERAND (fn, 0), + TREE_OPERAND (fn, 1), args); } /* Finish a pseudo-destructor call expression of OBJECT, with SCOPE @@ -1231,9 +1225,7 @@ finish_template_type_parm (aggr, identifier) tree aggr; tree identifier; { - if (aggr == signature_type_node) - sorry ("signature as template type parameter"); - else if (aggr != class_type_node) + if (aggr != class_type_node) { pedwarn ("template type parameters must use the keyword `class' or `typename'"); aggr = class_type_node; @@ -1364,24 +1356,22 @@ begin_class_definition (t) /* Reset the interface data, at the earliest possible moment, as it might have been set via a class foo; before. */ - /* Don't change signatures. */ - if (! IS_SIGNATURE (t)) - { - tree name = TYPE_IDENTIFIER (t); - - if (! ANON_AGGRNAME_P (name)) - { - CLASSTYPE_INTERFACE_ONLY (t) = interface_only; - SET_CLASSTYPE_INTERFACE_UNKNOWN_X - (t, interface_unknown); - } - - /* Only leave this bit clear if we know this - class is part of an interface-only specification. */ - if (! CLASSTYPE_INTERFACE_KNOWN (t) - || ! CLASSTYPE_INTERFACE_ONLY (t)) - CLASSTYPE_VTABLE_NEEDS_WRITING (t) = 1; - } + { + tree name = TYPE_IDENTIFIER (t); + + if (! ANON_AGGRNAME_P (name)) + { + CLASSTYPE_INTERFACE_ONLY (t) = interface_only; + SET_CLASSTYPE_INTERFACE_UNKNOWN_X + (t, interface_unknown); + } + + /* Only leave this bit clear if we know this + class is part of an interface-only specification. */ + if (! CLASSTYPE_INTERFACE_KNOWN (t) + || ! CLASSTYPE_INTERFACE_ONLY (t)) + CLASSTYPE_VTABLE_NEEDS_WRITING (t) = 1; + } #if 0 tmp = TYPE_IDENTIFIER ($0); if (tmp && IDENTIFIER_TEMPLATE (tmp)) @@ -1652,11 +1642,9 @@ enter_scope_of (sr) access_{default,public,protected_private}[_virtual]_node.*/ tree -finish_base_specifier (access_specifier, base_class, - current_aggr_is_signature) +finish_base_specifier (access_specifier, base_class) tree access_specifier; tree base_class; - int current_aggr_is_signature; { tree type; tree result; @@ -1668,27 +1656,9 @@ finish_base_specifier (access_specifier, base_class, } else type = TREE_TYPE (base_class); - if (current_aggr_is_signature && access_specifier) - error ("access and source specifiers not allowed in signature"); + if (! is_aggr_type (type, 1)) result = NULL_TREE; - else if (current_aggr_is_signature - && (! type) && (! IS_SIGNATURE (type))) - { - error ("class name not allowed as base signature"); - result = NULL_TREE; - } - else if (current_aggr_is_signature) - { - sorry ("signature inheritance, base type `%s' ignored", - IDENTIFIER_POINTER (access_specifier)); - result = build_tree_list (access_public_node, type); - } - else if (type && IS_SIGNATURE (type)) - { - error ("signature name not allowed as base class"); - result = NULL_TREE; - } else result = build_tree_list (access_specifier, type); diff --git a/gcc/cp/sig.c b/gcc/cp/sig.c deleted file mode 100644 index f170df5..0000000 --- a/gcc/cp/sig.c +++ /dev/null @@ -1,1067 +0,0 @@ -/* Functions dealing with signatures and signature pointers/references. - Copyright (C) 1992, 93-97, 1998 Free Software Foundation, Inc. - Contributed by Gerald Baumgartner (gb@cs.purdue.edu) - -This file is part of GNU CC. - -GNU CC is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU CC is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - - -#include "config.h" -#include "system.h" -#include "obstack.h" -#include "tree.h" -#include "cp-tree.h" -#include "flags.h" -#include "assert.h" -#include "toplev.h" - -extern struct obstack *current_obstack; -extern struct obstack permanent_obstack; -extern struct obstack *saveable_obstack; - -static tree save_this PROTO((tree)); -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)); -static void build_signature_pointer_or_reference_decl - PROTO((tree, tree)); -static tree build_signature_pointer_or_reference_type - 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)); -static tree build_sigtable PROTO((tree, tree, tree)); - -/* Used to help generate globally unique names for signature tables. */ - -static int global_sigtable_name_counter; - -/* Build an identifier for a signature pointer or reference, so we - can use it's name in function name mangling. */ - -static tree -build_signature_pointer_or_reference_name (to_type, type_quals, refp) - tree to_type; - int type_quals; - int refp; -{ - const char * sig_name = TYPE_NAME_STRING (to_type); - int name_len = TYPE_NAME_LENGTH (to_type) + 3 /* Enough room for - C,V,R. */; - char * name; - - const char *const_rep = (type_quals & TYPE_QUAL_CONST) ? "C" : ""; - const char *restrict_rep = (type_quals & TYPE_QUAL_RESTRICT) ? "R" : ""; - const 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, - 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, - const_rep, volatile_rep, restrict_rep, sig_name); - } - return get_identifier (name); -} - -/* Build a DECL node for a signature pointer or reference, so we can - tell the debugger the structure of signature pointers/references. - This function is called at most eight times for a given signature, - once for each [const] [volatile] signature pointer/reference. */ - -static void -build_signature_pointer_or_reference_decl (type, name) - tree type, name; -{ - tree decl; - - /* We don't enter this declaration in any sort of symbol table. */ - decl = build_decl (TYPE_DECL, name, type); - TYPE_NAME (type) = decl; - 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 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, type_quals, refp) - tree to_type; - int type_quals; - int refp; -{ - register tree t, m; - register struct obstack *ambient_obstack = current_obstack; - register struct obstack *ambient_saveable_obstack = saveable_obstack; - - 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 && type_quals != TYPE_UNQUALIFIED) - m = build_signature_pointer_or_reference_type (to_type, - TYPE_UNQUALIFIED, refp); - - /* Treat any nonzero argument as 1. */ - refp = !!refp; - - /* If not generating auxiliary info, search the chain of variants to see - if there is already one there just like the one we need to have. If so, - use that existing one. - - We don't do this in the case where we are generating aux info because - in that case we want each typedef names to get it's own distinct type - node, even if the type of this new typedef is the same as some other - (existing) type. */ - - if (m && !flag_gen_aux_info) - for (t = m; t; t = TYPE_NEXT_VARIANT (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. */ - if (TREE_PERMANENT (to_type)) - { - current_obstack = &permanent_obstack; - saveable_obstack = &permanent_obstack; - } - - /* A signature pointer or reference to a signature `s' looks like this: - - struct { - void * optr; - const s * sptr; - }; - - A `const' signature pointer/reference is a - - struct { - const void * optr; - const s * sptr; - }; - - Similarly, for `volatile' and `const volatile'. */ - - t = make_lang_type (RECORD_TYPE); - { - tree obj_type = build_qualified_type (void_type_node, type_quals); - tree optr_type = build_pointer_type (obj_type); - tree optr, sptr; - - optr = build_lang_field_decl (FIELD_DECL, - get_identifier (SIGNATURE_OPTR_NAME), - optr_type); - DECL_FIELD_CONTEXT (optr) = t; - DECL_CLASS_CONTEXT (optr) = t; - - if (m) - /* We can share the `sptr' field among type variants. */ - sptr = TREE_CHAIN (TYPE_FIELDS (m)); - else - { - 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), - build_pointer_type (sig_tbl_type)); - DECL_FIELD_CONTEXT (sptr) = t; - DECL_CLASS_CONTEXT (sptr) = t; - TREE_CHAIN (sptr) = NULL_TREE; - } - - TREE_CHAIN (optr) = sptr; - TYPE_FIELDS (t) = optr; - /* Allow signature pointers/references to be grabbed 2 words at a time. - For this to work on a Sparc, we need 8-byte alignment. */ - TYPE_ALIGN (t) = MAX (TYPE_ALIGN (double_type_node), - TYPE_ALIGN (optr_type)); - - /* A signature pointer/reference type isn't a `real' class type. */ - SET_IS_AGGR_TYPE (t, 0); - } - - { - 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); - } - - CLASSTYPE_GOT_SEMICOLON (t) = 1; - IS_SIGNATURE_POINTER (t) = ! refp; - IS_SIGNATURE_REFERENCE (t) = refp; - SIGNATURE_TYPE (t) = to_type; - - if (m) - { - /* Add this type to the chain of variants of TYPE. - Every type has to be its own TYPE_MAIN_VARIANT. */ - TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (m); - TYPE_NEXT_VARIANT (m) = t; - } - else if (refp) - /* Record this type as the reference to TO_TYPE. */ - SIGNATURE_REFERENCE_TO (to_type) = t; - else - /* Record this type as the pointer to TO_TYPE. */ - SIGNATURE_POINTER_TO (to_type) = t; - - /* Lay out the type. This function has many callers that are concerned - with expression-construction, and this simplifies them all. - Also, it guarantees the TYPE_SIZE is permanent if the type is. */ - layout_type (t); - - current_obstack = ambient_obstack; - saveable_obstack = ambient_saveable_obstack; - - /* Output debug information for this type. */ - rest_of_type_compilation (t, 1); - - return t; -} - -/* Construct, lay out and return the type of pointers to signature TO_TYPE. */ - -tree -build_signature_pointer_type (to_type) - tree to_type; -{ - return - build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type), - CP_TYPE_QUALS (to_type), 0); -} - -/* Construct, lay out and return the type of pointers to signature TO_TYPE. */ - -tree -build_signature_reference_type (to_type) - tree to_type; -{ - return - build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type), - CP_TYPE_QUALS (to_type), 1); -} - -/* Return the name of the signature table (as an IDENTIFIER_NODE) - for the given signature type SIG_TYPE and rhs type RHS_TYPE. */ - -static tree -get_sigtable_name (sig_type, rhs_type) - tree sig_type, rhs_type; -{ - tree sig_type_id = build_typename_overload (sig_type); - tree rhs_type_id = build_typename_overload (rhs_type); - char *buf = (char *) alloca (sizeof (SIGTABLE_NAME_FORMAT_LONG) - + IDENTIFIER_LENGTH (sig_type_id) - + IDENTIFIER_LENGTH (rhs_type_id) + 20); - const char *sig_ptr = IDENTIFIER_POINTER (sig_type_id); - const char *rhs_ptr = IDENTIFIER_POINTER (rhs_type_id); - int i, j; - - for (i = 0; sig_ptr[i] == OPERATOR_TYPENAME_FORMAT[i]; i++) - /* do nothing */; - while (sig_ptr[i] >= '0' && sig_ptr[i] <= '9') - i += 1; - - for (j = 0; rhs_ptr[j] == OPERATOR_TYPENAME_FORMAT[j]; j++) - /* do nothing */; - while (rhs_ptr[j] >= '0' && rhs_ptr[j] <= '9') - j += 1; - - if (IS_SIGNATURE (rhs_type)) - sprintf (buf, SIGTABLE_NAME_FORMAT_LONG, sig_ptr+i, rhs_ptr+j, - global_sigtable_name_counter++); - else - sprintf (buf, SIGTABLE_NAME_FORMAT, sig_ptr+i, rhs_ptr+j); - return get_identifier (buf); -} - -/* Build a field decl that points to a signature member function. */ - -static tree -build_member_function_pointer (member) - tree member; -{ - const char *namstr = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (member)); - int namlen = IDENTIFIER_LENGTH (DECL_ASSEMBLER_NAME (member)); - char *name; - tree entry; - - name = (char *) alloca (namlen + sizeof (SIGNATURE_FIELD_NAME) + 2); - sprintf (name, SIGNATURE_FIELD_NAME_FORMAT, namstr); - - /* @@ Do we really want to xref signature table fields? */ - GNU_xref_ref (current_function_decl, name); - - entry = build_lang_field_decl (FIELD_DECL, get_identifier (name), - sigtable_entry_type); - TREE_CONSTANT (entry) = 1; - TREE_READONLY (entry) = 1; - - /* @@ Do we really want to xref signature table fields? */ - GNU_xref_decl (current_function_decl, entry); - - return entry; -} - -/* For each FUNCTION_DECL in a signature we construct a member function - pointer of the appropriate type. We also need two flags to test - whether the member function pointer points to a virtual function or - to a default implementation. Those flags will be the two lower order - bits of the member function pointer (or the two higher order bits, - based on the configuration). - - The new FIELD_DECLs are appended at the end of the last (and only) - sublist of `list_of_fieldlists.' - - T is the signature type. - - As a side effect, each member function in the signature gets the - `decl.ignored' bit turned on, so we don't output debug info for it. */ - -void -append_signature_fields (t) - tree t; -{ - tree x; - tree mfptr; - tree last_mfptr = NULL_TREE; - tree mfptr_list = NULL_TREE; - - for (x = TYPE_METHODS (t); x; x = TREE_CHAIN (x)) - { - if (TREE_CODE (x) == FUNCTION_DECL) - { - mfptr = build_member_function_pointer (x); - DECL_MEMFUNC_POINTER_TO (x) = mfptr; - DECL_MEMFUNC_POINTING_TO (mfptr) = x; - DECL_IGNORED_P (x) = 1; - DECL_IN_AGGR_P (mfptr) = 1; - if (! mfptr_list) - mfptr_list = last_mfptr = mfptr; - else - { - TREE_CHAIN (last_mfptr) = mfptr; - last_mfptr = mfptr; - } - } - } - - /* The member function pointers must come after the TYPE_DECLs, in - this case, because build_signature_table_constructor depends on - finding opaque TYPE_DECLS before the functions that make use of - them. */ - if (last_mfptr) - TYPE_FIELDS (t) = chainon (TYPE_FIELDS (t), mfptr_list); -} - -/* Compare the types of a signature member function and a class member - function. Returns 1 if the types are in the C++ `<=' relationship. - - If we have a signature pointer/reference as argument or return type - we don't want to do a recursive conformance check. The conformance - check only succeeds if both LHS and RHS refer to the same signature - pointer. Otherwise we need to keep information about parameter types - around at run time to initialize the signature table correctly. */ - -static int -match_method_types (sig_mtype, class_mtype) - tree sig_mtype, class_mtype; -{ - tree sig_return_type = TREE_TYPE (sig_mtype); - tree sig_arg_types = TYPE_ARG_TYPES (sig_mtype); - tree class_return_type = TREE_TYPE (class_mtype); - tree class_arg_types = TYPE_ARG_TYPES (class_mtype); - - /* The return types have to be the same. */ - if (!same_type_p (sig_return_type, class_return_type)) - return 0; - - /* Compare the first argument `this.' */ - { - /* Get the type of what the `optr' is pointing to. */ - tree sig_this - = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_VALUE (sig_arg_types)))); - tree class_this = TREE_VALUE (class_arg_types); - - if (TREE_CODE (class_this) == RECORD_TYPE) /* Is `this' a sig ptr? */ - class_this = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (class_this))); - else - class_this = TREE_TYPE (class_this); - - /* If a signature method's `this' is const or volatile, so has to be - the corresponding class method's `this.' */ - if (!at_least_as_qualified_p (class_this, sig_this)) - return 0; - } - - sig_arg_types = TREE_CHAIN (sig_arg_types); - 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); -} - -/* Undo casts of opaque type variables to the RHS types. */ - -static void -undo_casts (sig_ty) - tree sig_ty; -{ - tree field = TYPE_FIELDS (sig_ty); - - /* Since all the FIELD_DECLs for the signature table entries are at the end - of the chain (see `append_signature_fields'), we can do it this way. */ - for (; field && TREE_CODE (field) != FIELD_DECL; field = TREE_CHAIN (field)) - if (TYPE_MAIN_VARIANT (TREE_TYPE (field)) == opaque_type_node) - TREE_TYPE (TREE_TYPE (field)) = TREE_TYPE (ptr_type_node); -} - -/* Do the type checking necessary to see whether the `rhs' conforms to - the lhs's `sig_ty'. Depending on the type of `rhs' return a NULL_TREE, - an integer_zero_node, a constructor, or an expression offsetting the - `rhs' signature table. */ - -static tree -build_signature_table_constructor (sig_ty, rhs) - tree sig_ty, rhs; -{ - tree rhstype = TREE_TYPE (rhs); - tree sig_field = TYPE_FIELDS (sig_ty); - tree result = NULL_TREE; - tree first_rhs_field = NULL_TREE; - tree last_rhs_field = NULL_TREE; - int sig_ptr_p = IS_SIGNATURE (rhstype); - int offset_p = sig_ptr_p; - - rhstype = sig_ptr_p ? rhstype : TREE_TYPE (rhstype); - - if (CLASSTYPE_TAGS (sig_ty)) - { - sorry ("conformance check with signature containing class declarations"); - return error_mark_node; - } - - for (; sig_field; sig_field = TREE_CHAIN (sig_field)) - { - tree basetype_path, baselink, basetypes; - tree sig_method, sig_mname, sig_mtype; - tree rhs_method, tbl_entry; - - if (TREE_CODE (sig_field) == TYPE_DECL) - { - tree sig_field_type = TREE_TYPE (sig_field); - - if (TYPE_MAIN_VARIANT (sig_field_type) == opaque_type_node) - { - /* We've got an opaque type here. */ - tree oty_name = DECL_NAME (sig_field); - tree oty_type = lookup_field (rhstype, oty_name, 1, 1); - - if (oty_type == NULL_TREE || oty_type == error_mark_node) - { - cp_error ("class `%T' does not contain type `%T'", - rhstype, oty_type); - undo_casts (sig_ty); - return error_mark_node; - } - oty_type = TREE_TYPE (oty_type); - - /* Cast `sig_field' to be of type `oty_type'. This will be - undone in `undo_casts' by walking over all the TYPE_DECLs. */ - TREE_TYPE (sig_field_type) = TREE_TYPE (oty_type); - } - /* If we don't have an opaque type, we can ignore the `typedef'. */ - continue; - } - - /* Find the signature method corresponding to `sig_field'. */ - sig_method = DECL_MEMFUNC_POINTING_TO (sig_field); - sig_mname = DECL_NAME (sig_method); - sig_mtype = TREE_TYPE (sig_method); - - basetype_path = TYPE_BINFO (rhstype); - baselink = lookup_fnfields (basetype_path, sig_mname, 0); - if (baselink == NULL_TREE || baselink == error_mark_node) - { - if (! IS_DEFAULT_IMPLEMENTATION (sig_method)) - { - cp_error ("class `%T' does not contain method `%D'", - rhstype, sig_mname); - undo_casts (sig_ty); - return error_mark_node; - } - else - { - /* We use the signature's default implementation. */ - rhs_method = sig_method; - } - } - else - { - /* Find the class method of the correct type. */ - tree rhs_methods; - basetypes = TREE_PURPOSE (baselink); - if (TREE_CODE (basetypes) == TREE_LIST) - basetypes = TREE_VALUE (basetypes); - - rhs_methods = TREE_VALUE (baselink); - for (; rhs_methods; rhs_methods = OVL_NEXT (rhs_methods)) - if ((rhs_method = OVL_CURRENT (rhs_methods)) - && sig_mname == DECL_NAME (rhs_method) - && ! DECL_STATIC_FUNCTION_P (rhs_method) - && match_method_types (sig_mtype, TREE_TYPE (rhs_method))) - break; - - if (rhs_methods == NULL_TREE - || !accessible_p (basetypes, rhs_method)) - { - cp_error ("`%T' does not contain a method conforming to `%#D'", - rhstype, sig_method); - undo_casts (sig_ty); - return error_mark_node; - } - } - - if (sig_ptr_p && rhs_method != sig_method) - { - tree rhs_field = DECL_MEMFUNC_POINTER_TO (rhs_method); - - if (first_rhs_field == NULL_TREE) - { - first_rhs_field = rhs_field; - last_rhs_field = rhs_field; - } - else if (TREE_CHAIN (last_rhs_field) == rhs_field) - last_rhs_field = rhs_field; - else - offset_p = 0; - - tbl_entry = build_component_ref (rhs, DECL_NAME (rhs_field), - NULL_TREE, 1); - } - else - { - tree tag, vb_off, delta, idx, pfn = NULL_TREE, vt_off = NULL_TREE; - tree tag_decl, vb_off_decl, delta_decl, index_decl; - tree pfn_decl, vt_off_decl; - - if (rhs_method == sig_method) - { - /* default implementation */ - tag = build_unary_op (NEGATE_EXPR, integer_one_node, 0); - vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0); - delta = integer_zero_node; - idx = integer_zero_node; - pfn = build_addr_func (rhs_method); - TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (rhs_method)) = 1; - TREE_TYPE (pfn) = ptr_type_node; - TREE_ADDRESSABLE (rhs_method) = 1; - offset_p = 0; /* we can't offset the rhs sig table */ - } - else if (DECL_VINDEX (rhs_method)) - { - /* virtual member function */ - tag = integer_one_node; - vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0); - if (flag_vtable_thunks) - delta = BINFO_OFFSET - (get_binfo (DECL_CONTEXT (rhs_method), rhstype, 1)); - else - delta = BINFO_OFFSET - (get_binfo (DECL_CLASS_CONTEXT (rhs_method), rhstype, 1)); - idx = DECL_VINDEX (rhs_method); - vt_off = get_vfield_offset (get_binfo (DECL_CONTEXT (rhs_method), - rhstype, 0)); - } - else - { - /* non-virtual member function */ - tag = integer_zero_node; - vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0); - delta = BINFO_OFFSET (get_binfo (DECL_CLASS_CONTEXT (rhs_method), - rhstype, 1)); - idx = integer_zero_node; - pfn = build_addr_func (rhs_method); - TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (rhs_method)) = 1; - TREE_TYPE (pfn) = ptr_type_node; - TREE_ADDRESSABLE (rhs_method) = 1; - } - - /* Since digest_init doesn't handle initializing selected fields - of a struct (i.e., anonymous union), we build the constructor - by hand, without calling digest_init. */ - tag_decl = TYPE_FIELDS (sigtable_entry_type); - vb_off_decl = TREE_CHAIN (tag_decl); - delta_decl = TREE_CHAIN (vb_off_decl); - index_decl = TREE_CHAIN (delta_decl); - pfn_decl = TREE_CHAIN (index_decl); - vt_off_decl = TREE_CHAIN (pfn_decl); - - tag = cp_convert (TREE_TYPE (tag_decl), tag); - vb_off = cp_convert (TREE_TYPE (vb_off_decl), vb_off); - delta = cp_convert (TREE_TYPE (delta_decl), delta); - idx = cp_convert (TREE_TYPE (index_decl), idx); - - if (DECL_VINDEX (rhs_method)) - { - vt_off = cp_convert (TREE_TYPE (vt_off_decl), vt_off); - - tbl_entry = build_tree_list (vt_off_decl, vt_off); - } - else - { - pfn = cp_convert (TREE_TYPE (pfn_decl), pfn); - - tbl_entry = build_tree_list (pfn_decl, pfn); - } - tbl_entry = tree_cons (delta_decl, delta, - tree_cons (index_decl, idx, tbl_entry)); - tbl_entry = tree_cons (tag_decl, tag, - tree_cons (vb_off_decl, vb_off, tbl_entry)); - tbl_entry = build (CONSTRUCTOR, sigtable_entry_type, - NULL_TREE, tbl_entry); - - TREE_CONSTANT (tbl_entry) = 1; - } - - /* Chain those function address expressions together. */ - if (result) - result = tree_cons (NULL_TREE, tbl_entry, result); - else - result = build_tree_list (NULL_TREE, tbl_entry); - } - - if (result == NULL_TREE) - { - /* The signature was empty, we don't need a signature table. */ - undo_casts (sig_ty); - return NULL_TREE; - } - - if (offset_p) - { - if (first_rhs_field == TYPE_FIELDS (rhstype)) - { - /* The sptr field on the lhs can be copied from the rhs. */ - undo_casts (sig_ty); - return integer_zero_node; - } - else - { - /* The sptr field on the lhs will point into the rhs sigtable. */ - undo_casts (sig_ty); - return build_component_ref (rhs, DECL_NAME (first_rhs_field), - NULL_TREE, 0); - } - } - - /* We need to construct a new signature table. */ - result = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (result)); - TREE_HAS_CONSTRUCTOR (result) = 1; - TREE_CONSTANT (result) = !sig_ptr_p; - - undo_casts (sig_ty); - return result; -} - -/* Build a signature table declaration and initialize it or return an - existing one if we built one already. If we don't get a constructor - as initialization expression, we don't need a new signature table - variable and just hand back the init expression. - - The declaration processing is done by hand instead of using `cp_finish_decl' - so that we can make signature pointers global variables instead of - static ones. */ - -static tree -build_sigtable (sig_type, rhs_type, init_from) - tree sig_type, rhs_type, init_from; -{ - tree name = NULL_TREE; - tree decl = NULL_TREE; - tree init_expr; - - push_obstacks_nochange (); - end_temporary_allocation (); - - if (! IS_SIGNATURE (rhs_type)) - { - name = get_sigtable_name (sig_type, rhs_type); - decl = IDENTIFIER_GLOBAL_VALUE (name); - } - if (decl == NULL_TREE) - { - tree init = NULL_TREE; - - /* We allow only one signature table to be generated for signatures - with opaque types. Otherwise we create a loophole in the type - system since we could cast data from one classes implementation - of the opaque type to that of another class. */ - if (SIGNATURE_HAS_OPAQUE_TYPEDECLS (sig_type) - && SIGTABLE_HAS_BEEN_GENERATED (sig_type)) - { - error ("signature with opaque type implemented by multiple classes"); - return error_mark_node; - } - SIGTABLE_HAS_BEEN_GENERATED (sig_type) = 1; - - init_expr = build_signature_table_constructor (sig_type, init_from); - if (init_expr == NULL_TREE || TREE_CODE (init_expr) != CONSTRUCTOR) - return init_expr; - - if (name == NULL_TREE) - name = get_sigtable_name (sig_type, rhs_type); - { - tree context = current_function_decl; - - /* Make the signature table global, not just static in whichever - function a signature pointer/ref is used for the first time. */ - current_function_decl = NULL_TREE; - decl = pushdecl_top_level (build_decl (VAR_DECL, name, sig_type)); - current_function_decl = context; - } - SET_IDENTIFIER_GLOBAL_VALUE (name, decl); - store_init_value (decl, init_expr); - if (IS_SIGNATURE (rhs_type)) - { - init = DECL_INITIAL (decl); - DECL_INITIAL (decl) = error_mark_node; - } - - DECL_ALIGN (decl) = MAX (TYPE_ALIGN (double_type_node), - DECL_ALIGN (decl)); -#if 0 - /* GDB-4.7 doesn't find the initialization value of a signature table - when it is constant. */ - TREE_READONLY (decl) = 1; -#endif - TREE_STATIC (decl) = 1; - TREE_USED (decl) = 1; - - make_decl_rtl (decl, NULL, 1); - if (IS_SIGNATURE (rhs_type)) - expand_static_init (decl, init); - } - - pop_obstacks (); - - return decl; -} - -/* Create a constructor or modify expression if the LHS of an assignment - is a signature pointer or a signature reference. If LHS is a record - type node, we build a constructor, otherwise a compound expression. */ - -tree -build_signature_pointer_constructor (lhs, rhs) - tree lhs, rhs; -{ - register struct obstack *ambient_obstack = current_obstack; - register struct obstack *ambient_saveable_obstack = saveable_obstack; - int initp = (TREE_CODE (lhs) == RECORD_TYPE); - tree lhstype = initp ? lhs : TREE_TYPE (lhs); - tree rhstype = TREE_TYPE (rhs); - tree sig_ty = SIGNATURE_TYPE (lhstype); - tree sig_tbl, sptr_expr, optr_expr; - tree result; - - if (! ((TREE_CODE (rhstype) == POINTER_TYPE - && TREE_CODE (TREE_TYPE (rhstype)) == RECORD_TYPE) - || (TYPE_LANG_SPECIFIC (rhstype) - && (IS_SIGNATURE_POINTER (rhstype) - || IS_SIGNATURE_REFERENCE (rhstype))))) - { - error ("invalid assignment to signature pointer or reference"); - return error_mark_node; - } - - if (TYPE_SIZE (sig_ty) == NULL_TREE) - { - cp_error ("undefined signature `%T' used in signature %s declaration", - sig_ty, - IS_SIGNATURE_POINTER (lhstype) ? "pointer" : "reference"); - return error_mark_node; - } - - /* If SIG_TY is permanent, make the signature table constructor and - the signature pointer/reference constructor permanent too. */ - if (TREE_PERMANENT (sig_ty)) - { - current_obstack = &permanent_obstack; - saveable_obstack = &permanent_obstack; - } - - if (TYPE_LANG_SPECIFIC (rhstype) - && (IS_SIGNATURE_POINTER (rhstype) || IS_SIGNATURE_REFERENCE (rhstype))) - { - if (SIGNATURE_TYPE (rhstype) == sig_ty) - { - /* LHS and RHS are signature pointers/refs of the same signature. */ - optr_expr = build_optr_ref (rhs); - sptr_expr = build_sptr_ref (rhs); - } - else - { - /* We need to create a new signature table and copy - elements from the rhs signature table. */ - tree rhs_sptr_ref = build_sptr_ref (rhs); - tree rhs_tbl = build1 (INDIRECT_REF, SIGNATURE_TYPE (rhstype), - rhs_sptr_ref); - - sig_tbl = build_sigtable (sig_ty, SIGNATURE_TYPE (rhstype), rhs_tbl); - if (sig_tbl == error_mark_node) - return error_mark_node; - - optr_expr = build_optr_ref (rhs); - if (sig_tbl == NULL_TREE) - /* The signature was empty. The signature pointer is - pretty useless, but the user has been warned. */ - sptr_expr = copy_node (null_pointer_node); - else if (sig_tbl == integer_zero_node) - sptr_expr = rhs_sptr_ref; - else - sptr_expr = build_unary_op (ADDR_EXPR, sig_tbl, 0); - TREE_TYPE (sptr_expr) = build_pointer_type (sig_ty); - } - } - else - { - sig_tbl = build_sigtable (sig_ty, TREE_TYPE (rhstype), rhs); - if (sig_tbl == error_mark_node) - return error_mark_node; - - optr_expr = rhs; - if (sig_tbl == NULL_TREE) - /* The signature was empty. The signature pointer is - pretty useless, but the user has been warned. */ - { - sptr_expr = copy_node (null_pointer_node); - TREE_TYPE (sptr_expr) = build_pointer_type (sig_ty); - } - else - sptr_expr = build_unary_op (ADDR_EXPR, sig_tbl, 0); - } - - if (initp) - { - result = tree_cons (NULL_TREE, optr_expr, - build_tree_list (NULL_TREE, sptr_expr)); - result = build_nt (CONSTRUCTOR, NULL_TREE, result); - result = digest_init (lhstype, result, 0); - } - else - { - 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, - optr_expr); - sptr_expr = build_modify_expr (build_sptr_ref (lhs), NOP_EXPR, - sptr_expr); - - result = tree_cons (NULL_TREE, optr_expr, - tree_cons (NULL_TREE, sptr_expr, - build_tree_list (NULL_TREE, lhs))); - result = build_compound_expr (result); - } - - current_obstack = ambient_obstack; - saveable_obstack = ambient_saveable_obstack; - return result; -} - -/* Build a temporary variable declaration for the instance of a signature - member function call if it isn't a declaration node already. Simply - using a SAVE_EXPR doesn't work since we need `this' in both branches - of a conditional expression. */ - -static tree -save_this (instance) - tree instance; -{ - tree decl; - - if (TREE_CODE_CLASS (TREE_CODE (instance)) == 'd') - decl = instance; - else - { - decl = build_decl (VAR_DECL, NULL_TREE, TREE_TYPE (instance)); - DECL_REGISTER (decl) = 1; - layout_decl (decl, 0); - expand_decl (decl); - } - - return decl; -} - -/* Build a signature member function call. Looks up the signature table - entry corresponding to FUNCTION. Depending on the value of the CODE - field, either call the function in PFN directly, or use OFFSET to - index the object's virtual function table. */ - -tree -build_signature_method_call (function, parms) - tree function, parms; -{ - tree instance = TREE_VALUE (parms); - tree saved_instance = save_this (instance); /* Create temp for `this'. */ - tree object_ptr = build_optr_ref (saved_instance); - tree new_object_ptr, new_parms; - tree signature_tbl_ptr = build_sptr_ref (saved_instance); - tree sig_field_name = DECL_NAME (DECL_MEMFUNC_POINTER_TO (function)); - tree basetype = DECL_CONTEXT (function); - tree basetype_path = TYPE_BINFO (basetype); - tree tbl_entry = build_component_ref (build1 (INDIRECT_REF, basetype, - signature_tbl_ptr), - sig_field_name, basetype_path, 1); - tree tag, delta, pfn, vt_off, idx, vfn; - tree deflt_call = NULL_TREE, direct_call, virtual_call, result; - - tbl_entry = save_expr (tbl_entry); - tag = build_component_ref (tbl_entry, tag_identifier, NULL_TREE, 1); - delta = build_component_ref (tbl_entry, delta_identifier, NULL_TREE, 1); - pfn = build_component_ref (tbl_entry, pfn_identifier, NULL_TREE, 1); - vt_off = build_component_ref (tbl_entry, vt_off_identifier, NULL_TREE, 1); - idx = build_component_ref (tbl_entry, index_identifier, NULL_TREE, 1); - TREE_TYPE (pfn) = build_pointer_type (TREE_TYPE (function)); - - if (IS_DEFAULT_IMPLEMENTATION (function)) - { - pfn = save_expr (pfn); - deflt_call = build_function_call (pfn, parms); - } - - new_object_ptr = build (PLUS_EXPR, build_pointer_type (basetype), - cp_convert (ptrdiff_type_node, object_ptr), - cp_convert (ptrdiff_type_node, delta)); - - parms = tree_cons (NULL_TREE, - cp_convert (build_pointer_type (basetype), object_ptr), - TREE_CHAIN (parms)); - new_parms = tree_cons (NULL_TREE, new_object_ptr, TREE_CHAIN (parms)); - - { - /* Cast the signature method to have `this' of a normal pointer type. */ - tree old_this = TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))); - - TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))) - = build_qualified_type (build_pointer_type (basetype), - TYPE_QUALS (old_this)); - - direct_call = build_function_call (pfn, new_parms); - - { - tree vfld, vtbl, aref; - - vfld = build (PLUS_EXPR, - build_pointer_type (build_pointer_type (vtbl_type_node)), - cp_convert (ptrdiff_type_node, object_ptr), - cp_convert (ptrdiff_type_node, vt_off)); - vtbl = build_indirect_ref (build_indirect_ref (vfld, NULL_PTR), - NULL_PTR); - aref = build_array_ref (vtbl, idx); - - if (flag_vtable_thunks) - vfn = aref; - else - vfn = build_component_ref (aref, pfn_identifier, NULL_TREE, 0); - - TREE_TYPE (vfn) = build_pointer_type (TREE_TYPE (function)); - - virtual_call = build_function_call (vfn, new_parms); - } - - /* Undo the cast, make `this' a signature pointer again. */ - TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))) = old_this; - } - - /* Once the function was found, there should be no reason why we - couldn't build the member function pointer call. */ - if (!direct_call || direct_call == error_mark_node - || !virtual_call || virtual_call == error_mark_node - || (IS_DEFAULT_IMPLEMENTATION (function) - && (!deflt_call || deflt_call == error_mark_node))) - { - compiler_error ("cannot build call of signature member function `%s'", - fndecl_as_string (function, 1)); - return error_mark_node; - } - - if (IS_DEFAULT_IMPLEMENTATION (function)) - { - tree test = build_binary_op_nodefault (LT_EXPR, tag, integer_zero_node, - LT_EXPR); - result = build_conditional_expr (tag, - build_conditional_expr (test, - deflt_call, - virtual_call), - direct_call); - } - else - result = build_conditional_expr (tag, virtual_call, direct_call); - - /* If we created a temporary variable for `this', initialize it first. */ - if (instance != saved_instance) - result = build (COMPOUND_EXPR, TREE_TYPE (result), - build_modify_expr (saved_instance, NOP_EXPR, instance), - result); - - return result; -} - -/* Create a COMPONENT_REF expression for referencing the OPTR field - of a signature pointer or reference. */ - -tree -build_optr_ref (instance) - tree instance; -{ - tree field = get_identifier (SIGNATURE_OPTR_NAME); - - return build_component_ref (instance, field, NULL_TREE, 1); -} - -/* Create a COMPONENT_REF expression for referencing the SPTR field - of a signature pointer or reference. */ - -static tree -build_sptr_ref (instance) - tree instance; -{ - tree field = get_identifier (SIGNATURE_SPTR_NAME); - - return build_component_ref (instance, field, NULL_TREE, 1); -} diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 281e7a7..592b602 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -410,10 +410,7 @@ build_cplus_method_type (basetype, rettype, argtypes) TYPE_METHOD_BASETYPE (t) = TYPE_MAIN_VARIANT (basetype); TREE_TYPE (t) = rettype; - if (IS_SIGNATURE (basetype)) - ptype = build_signature_pointer_type (basetype); - else - ptype = build_pointer_type (basetype); + ptype = build_pointer_type (basetype); /* The actual arglist for this function includes a "hidden" argument which is "this". Put it into the list of argument types. */ diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 0301786..0b71e72 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -104,10 +104,7 @@ require_complete_type (value) /* First, detect a valid value with a complete type. */ if (TYPE_SIZE (type) != 0 - && TYPE_SIZE (type) != size_zero_node - && ! (TYPE_LANG_SPECIFIC (type) - && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type)) - && TYPE_SIZE (SIGNATURE_TYPE (type)) == 0)) + && TYPE_SIZE (type) != size_zero_node) return value; /* If we see X::Y, we build an OFFSET_TYPE which has @@ -1697,14 +1694,7 @@ c_sizeof (type) if (code == REFERENCE_TYPE) type = TREE_TYPE (type); - /* @@ This also produces an error for a signature ref. - In that case we should be able to do better. */ - if (IS_SIGNATURE (type)) - { - error ("`sizeof' applied to a signature type"); - return size_int (0); - } - else if (code == OFFSET_TYPE) + if (code == OFFSET_TYPE) { cp_error ("`sizeof' applied to non-static member"); return size_int (0); @@ -1816,14 +1806,6 @@ c_alignof (type) if (code == REFERENCE_TYPE) type = TREE_TYPE (type); - /* @@ This also produces an error for a signature ref. - In that case we should be able to do better. */ - if (IS_SIGNATURE (type)) - { - error ("`__alignof' applied to a signature type"); - return size_int (1); - } - t = size_int (TYPE_ALIGN (type) / BITS_PER_UNIT); force_fit_type (t, 0); return t; @@ -2038,11 +2020,6 @@ build_object_ref (datum, basetype, field) basetype, field, dtype); return error_mark_node; } - else if (IS_SIGNATURE (basetype)) - { - warning ("signature name in scope resolution ignored"); - return build_component_ref (datum, field, NULL_TREE, 1); - } else if (is_aggr_type (basetype, 1)) { tree binfo = binfo_or_else (basetype, dtype); @@ -2401,8 +2378,7 @@ build_component_ref (datum, component, basetype_path, protect) not const, even within a const object. */ if (DECL_LANG_SPECIFIC (field) && DECL_MUTABLE_P (field)) type_quals &= ~TYPE_QUAL_CONST; - if (!IS_SIGNATURE (field_type)) - field_type = cp_build_qualified_type (field_type, type_quals); + field_type = cp_build_qualified_type (field_type, type_quals); } ref = fold (build (COMPONENT_REF, field_type, @@ -2513,9 +2489,6 @@ build_indirect_ref (ptr, errorstring) pointer to member, so it's cool to check for this here. */ else if (TYPE_PTRMEM_P (type) || TYPE_PTRMEMFUNC_P (type)) error ("invalid use of `%s' on pointer to member", errorstring); - else if (TREE_CODE (type) == RECORD_TYPE - && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type))) - error ("cannot dereference signature pointer/reference"); else if (pointer != error_mark_node) { if (errorstring) @@ -5580,12 +5553,6 @@ build_c_cast (type, expr) return error_mark_node; } - if (IS_SIGNATURE (type)) - { - error ("cast specifies signature type"); - return error_mark_node; - } - if (processing_template_decl) { tree t = build_min (CAST_EXPR, type, @@ -5726,14 +5693,6 @@ build_modify_expr (lhs, modifycode, rhs) newrhs = rhs; - /* Handle assignment to signature pointers/refs. */ - - if (TYPE_LANG_SPECIFIC (lhstype) - && (IS_SIGNATURE_POINTER (lhstype) || IS_SIGNATURE_REFERENCE (lhstype))) - { - return build_signature_pointer_constructor (lhs, rhs); - } - /* Handle control structure constructs used as "lvalues". */ switch (TREE_CODE (lhs)) @@ -5923,11 +5882,6 @@ build_modify_expr (lhs, modifycode, rhs) /* Warn about storing in something that is `const'. */ /* For C++, don't warn if this is initialization. */ if (modifycode != INIT_EXPR - /* For assignment to `const' signature pointer/reference fields, - don't warn either, we already printed a better message before. */ - && ! (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) || CP_TYPE_CONST_P (lhstype) /* Functions are not modifiable, even though they are lvalues. */ @@ -6735,10 +6689,6 @@ convert_for_initialization (exp, type, rhs, flags, errtype, fndecl, parmnum) type = complete_type (type); - if (TYPE_LANG_SPECIFIC (type) - && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type))) - return build_signature_pointer_constructor (type, rhs); - if (IS_AGGR_TYPE (type)) return ocp_convert (type, rhs, CONV_IMPLICIT|CONV_FORCE_TEMP, flags); diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index c4a12b3..db13872 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -177,39 +177,6 @@ abstract_virtuals_error (decl, type) return 1; } -/* Print an error message for invalid use of a signature type. - Signatures are treated similar to abstract classes here, they - cannot be instantiated. */ - -void -signature_error (decl, type) - tree decl; - tree type; -{ - if (decl) - { - if (TREE_CODE (decl) == RESULT_DECL) - return; - - if (TREE_CODE (decl) == VAR_DECL) - cp_error ("cannot declare variable `%D' to be of signature type `%T'", - decl, type); - else if (TREE_CODE (decl) == PARM_DECL) - cp_error ("cannot declare parameter `%D' to be of signature type `%T'", - decl, type); - else if (TREE_CODE (decl) == FIELD_DECL) - cp_error ("cannot declare field `%D' to be of signature type `%T'", - decl, type); - else if (TREE_CODE (decl) == FUNCTION_DECL - && TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE) - cp_error ("invalid return type for method `%#D'", decl); - else if (TREE_CODE (decl) == FUNCTION_DECL) - cp_error ("invalid return type for function `%#D'", decl); - } - else - cp_error ("cannot allocate an object of signature type `%T'", type); -} - /* Print an error message for invalid use of an incomplete type. VALUE is the expression that was used (or 0 if that isn't known) and TYPE is the type that was invalid. */ @@ -418,17 +385,7 @@ store_init_value (decl, init) && TREE_CODE (init) != CONSTRUCTOR) my_friendly_abort (109); - /* Although we are not allowed to declare variables of signature - type, we complain about a possible constructor call in such a - declaration as well. */ - if (TREE_CODE (init) == TREE_LIST - && IS_SIGNATURE (type)) - { - cp_error ("constructor syntax cannot be used with signature type `%T'", - type); - init = error_mark_node; - } - else if (TREE_CODE (init) == TREE_LIST) + if (TREE_CODE (init) == TREE_LIST) { cp_error ("constructor syntax used, but no constructor declared for type `%T'", type); init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (init)); @@ -532,13 +489,7 @@ store_init_value (decl, init) #if 0 /* No, that's C. jason 9/19/94 */ else { - if (pedantic && TREE_CODE (value) == CONSTRUCTOR - /* Don't complain about non-constant initializers of - signature tables and signature pointers/references. */ - && ! (TYPE_LANG_SPECIFIC (type) - && (IS_SIGNATURE (type) - || IS_SIGNATURE_POINTER (type) - || IS_SIGNATURE_REFERENCE (type)))) + if (pedantic && TREE_CODE (value) == CONSTRUCTOR) { if (! TREE_CONSTANT (value) || ! TREE_STATIC (value)) pedwarn ("ANSI C++ forbids non-constant aggregate initializer expressions"); @@ -666,9 +617,7 @@ digest_init (type, init, tail) if (code == INTEGER_TYPE || code == REAL_TYPE || code == POINTER_TYPE || code == ENUMERAL_TYPE || code == REFERENCE_TYPE || code == BOOLEAN_TYPE || code == COMPLEX_TYPE - || TYPE_PTRMEMFUNC_P (type) - || (code == RECORD_TYPE && ! raw_constructor - && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type)))) + || TYPE_PTRMEMFUNC_P (type)) { if (raw_constructor) { @@ -1194,11 +1143,6 @@ build_x_arrow (datum) else last_rval = default_conversion (rval); - /* Signature pointers are not dereferenced. */ - if (TYPE_LANG_SPECIFIC (TREE_TYPE (last_rval)) - && IS_SIGNATURE_POINTER (TREE_TYPE (last_rval))) - return last_rval; - if (TREE_CODE (TREE_TYPE (last_rval)) == POINTER_TYPE) return build_indirect_ref (last_rval, NULL_PTR); @@ -1318,12 +1262,6 @@ build_functional_cast (exp, parms) if (processing_template_decl) return build_min (CAST_EXPR, type, parms); - if (IS_SIGNATURE (type)) - { - error ("signature type not allowed in cast or constructor expression"); - return error_mark_node; - } - if (! IS_AGGR_TYPE (type)) { /* this must build a C cast */ diff --git a/gcc/cp/xref.c b/gcc/cp/xref.c index 003910c..2952f36 100644 --- a/gcc/cp/xref.c +++ b/gcc/cp/xref.c @@ -367,7 +367,6 @@ GNU_xref_decl (fndecl,decl) else if (TREE_CODE (decl) == RECORD_TYPE) { if (CLASSTYPE_DECLARED_CLASS (decl)) cls = "CLASSID"; - else if (IS_SIGNATURE (decl)) cls = "SIGNATUREID"; else cls = "STRUCTID"; decl = TYPE_NAME (decl); uselin = TRUE; @@ -417,8 +416,7 @@ GNU_xref_decl (fndecl,decl) (cur_scope != NULL ? cur_scope->lid : 0), cls, fctname(fndecl), buf); - if (STREQL (cls, "STRUCTID") || STREQL (cls, "UNIONID") - || STREQL (cls, "SIGNATUREID")) + if (STREQL (cls, "STRUCTID") || STREQL (cls, "UNIONID")) { cls = "CLASSID"; fprintf (xref_file, "DCL %s %d %s %d %s %s %s\n", diff --git a/gcc/extend.texi b/gcc/extend.texi index a6644ce..253b0e6 100644 --- a/gcc/extend.texi +++ b/gcc/extend.texi @@ -3158,9 +3158,6 @@ Predefined Macros,cpp.info,The C Preprocessor}). each needed template instantiation is emitted. * Bound member functions:: You can extract a function pointer to the method denoted by a @samp{->*} or @samp{.*} expression. -* C++ Signatures:: You can specify abstract types to get subtype - polymorphism independent from inheritance. - @end menu @node Naming Results @@ -3654,141 +3651,3 @@ fptr p = (fptr)(a.*fp); You must specify @samp{-Wno-pmf-conversions} to use this extension. -@node C++ Signatures -@section Type Abstraction using Signatures - -@findex signature -@cindex type abstraction, C++ -@cindex C++ type abstraction -@cindex subtype polymorphism, C++ -@cindex C++ subtype polymorphism -@cindex signatures, C++ -@cindex C++ signatures - -In GNU C++, you can use the keyword @code{signature} to define a -completely abstract class interface as a datatype. You can connect this -abstraction with actual classes using signature pointers. If you want -to use signatures, run the GNU compiler with the -@samp{-fhandle-signatures} command-line option. (With this option, the -compiler reserves a second keyword @code{sigof} as well, for a future -extension.) - -Roughly, signatures are type abstractions or interfaces of classes. -Some other languages have similar facilities. C++ signatures are -related to ML's signatures, Haskell's type classes, definition modules -in Modula-2, interface modules in Modula-3, abstract types in Emerald, -type modules in Trellis/Owl, categories in Scratchpad II, and types in -POOL-I. For a more detailed discussion of signatures, see -@cite{Signatures: A Language Extension for Improving Type Abstraction and -Subtype Polymorphism in C++} -by @w{Gerald} Baumgartner and Vincent F. Russo (Tech report -CSD--TR--95--051, Dept. of Computer Sciences, Purdue University, -August 1995, a slightly improved version appeared in -@emph{Software---Practice & Experience}, @b{25}(8), pp. 863--889, -August 1995). You can get the tech report by anonymous FTP from -@code{ftp.cs.purdue.edu} in @file{pub/gb/Signature-design.ps.gz}. - -Syntactically, a signature declaration is a collection of -member function declarations and nested type declarations. -For example, this signature declaration defines a new abstract type -@code{S} with member functions @samp{int foo ()} and @samp{int bar (int)}: - -@example -signature S -@{ - int foo (); - int bar (int); -@}; -@end example - -Since signature types do not include implementation definitions, you -cannot write an instance of a signature directly. Instead, you can -define a pointer to any class that contains the required interfaces as a -@dfn{signature pointer}. Such a class @dfn{implements} the signature -type. -@c Eventually signature references should work too. - -To use a class as an implementation of @code{S}, you must ensure that -the class has public member functions @samp{int foo ()} and @samp{int -bar (int)}. The class can have other member functions as well, public -or not; as long as it offers what's declared in the signature, it is -suitable as an implementation of that signature type. - -For example, suppose that @code{C} is a class that meets the -requirements of signature @code{S} (@code{C} @dfn{conforms to} -@code{S}). Then - -@example -C obj; -S * p = &obj; -@end example - -@noindent -defines a signature pointer @code{p} and initializes it to point to an -object of type @code{C}. -The member function call @w{@samp{int i = p->foo ();}} -executes @samp{obj.foo ()}. - -@cindex @code{signature} in C++, advantages -Abstract virtual classes provide somewhat similar facilities in standard -C++. There are two main advantages to using signatures instead: - -@enumerate -@item -Subtyping becomes independent from inheritance. A class or signature -type @code{T} is a subtype of a signature type @code{S} independent of -any inheritance hierarchy as long as all the member functions declared -in @code{S} are also found in @code{T}. So you can define a subtype -hierarchy that is completely independent from any inheritance -(implementation) hierarchy, instead of being forced to use types that -mirror the class inheritance hierarchy. - -@item -Signatures allow you to work with existing class hierarchies as -implementations of a signature type. If those class hierarchies are -only available in compiled form, you're out of luck with abstract virtual -classes, since an abstract virtual class cannot be retrofitted on top of -existing class hierarchies. So you would be required to write interface -classes as subtypes of the abstract virtual class. -@end enumerate - -@cindex default implementation, signature member function -@cindex signature member function default implementation -There is one more detail about signatures. A signature declaration can -contain member function @emph{definitions} as well as member function -declarations. A signature member function with a full definition is -called a @emph{default implementation}; classes need not contain that -particular interface in order to conform. For example, a -class @code{C} can conform to the signature - -@example -signature T -@{ - int f (int); - int f0 () @{ return f (0); @}; -@}; -@end example - -@noindent -whether or not @code{C} implements the member function @samp{int f0 ()}. -If you define @code{C::f0}, that definition takes precedence; -otherwise, the default implementation @code{S::f0} applies. - -@ignore -There will be more support for signatures in the future. -Add to this doc as the implementation grows. -In particular, the following features are planned but not yet -implemented: -@itemize @bullet -@item signature references, -@item signature inheritance, -@item the @code{sigof} construct for extracting the signature information - of a class, -@item views for renaming member functions when matching a class type - with a signature type, -@item specifying exceptions with signature member functions, and -@item signature templates. -@end itemize -This list is roughly in the order in which we intend to implement -them. Watch this space for updates. -@end ignore diff --git a/gcc/invoke.texi b/gcc/invoke.texi index 5e0a860..c5e6bb2 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -105,7 +105,7 @@ in the following sections. @smallexample -fno-access-control -fcheck-new -fconserve-space -fdollars-in-identifiers -fno-elide-constructors -fexternal-templates -ffor-scope --fno-for-scope -fno-gnu-keywords -fguiding-decls -fhandle-signatures +-fno-for-scope -fno-gnu-keywords -fguiding-decls -fhonor-std -fhuge-objects -fno-implicit-templates -finit-priority -fno-implement-inlines -fname-mangling-version-@var{n} -fno-default-inline -foperator-names -fno-optional-diags -fpermissive -frepo -fstrict-prototype @@ -1025,10 +1025,9 @@ but to allow and give a warning for old-style code that would otherwise be invalid, or have different behavior. @item -fno-gnu-keywords -Do not recognize @code{classof}, @code{headof}, @code{signature}, -@code{sigof} or @code{typeof} as a keyword, so that code can use these -words as identifiers. You can use the keywords @code{__classof__}, -@code{__headof__}, @code{__signature__}, @code{__sigof__}, and +Do not recognize @code{classof}, @code{headof}, or @code{typeof} as a +keyword, so that code can use these words as identifiers. You can use +the keywords @code{__classof__}, @code{__headof__}, and @code{__typeof__} instead. @samp{-ansi} implies @samp{-fno-gnu-keywords}. @@ -1046,12 +1045,6 @@ with other name mangling versions. Like all options that change the ABI, all C++ code, @emph{including libgcc.a} must be built with the same setting of this option. -@item -fhandle-signatures -Recognize the @code{signature} and @code{sigof} keywords for specifying -abstract types. The default (@samp{-fno-handle-signatures}) is not to -recognize them. @xref{C++ Signatures, Type Abstraction using -Signatures}. - @item -fhonor-std Treat the @code{namespace std} as a namespace, instead of ignoring it. For compatibility with earlier versions of g++, the compiler will, diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig01.C b/gcc/testsuite/g++.old-deja/g++.gb/sig01.C deleted file mode 100644 index a3e9277..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig01.C +++ /dev/null @@ -1,33 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment -// Test assignment to local signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C a; - S * p; - - p = &a; - - printf ("%s%s\n", p->f (), p->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig02.C b/gcc/testsuite/g++.old-deja/g++.gb/sig02.C deleted file mode 100644 index f739a28..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig02.C +++ /dev/null @@ -1,45 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment -// Test assigning objects of different classes to local signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } -}; - -class D -{ -public: - char * f (void) { return "SS"; } -}; - -signature S -{ - char * f (void); -}; - -int main (void) -{ - C a; - D b; - S * p; - int i; - - for (i = 0; i < 2; i++) - { - if (i == 0) - p = &a; - else - p = &b; - printf ("%s", p->f ()); - } - printf ("\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig03.C b/gcc/testsuite/g++.old-deja/g++.gb/sig03.C deleted file mode 100644 index d791c7e..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig03.C +++ /dev/null @@ -1,33 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr overloading -// Test overloading of signature member functions. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * f (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * f (int); -}; - -int main (void) -{ - C a; - S * p; - - p = &a; - - printf ("%s%s\n", p->f (), p->f (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig04.C b/gcc/testsuite/g++.old-deja/g++.gb/sig04.C deleted file mode 100644 index af54959..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig04.C +++ /dev/null @@ -1,46 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr this -// Test passing of 'this' pointer through signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C; -int inc_mod_4 (C *); - -class C -{ -public: - char * text[4]; - int i; - int get_i (void) { return i; } - char * msg (void) { i = inc_mod_4 (this); return text[i]; } -}; - -signature S -{ - char * msg (void); -}; - -int inc_mod_4 (C * p) -{ - return (p->get_i () + 1) % 4; -} - -int main (void) -{ - C o = { "P", "A", "S", "S", -1 }; - S * p; - int i; - - p = &o; - - for (i = 0; i < 4; i++) - printf ("%s", p->msg ()); - - printf ("\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig05.C b/gcc/testsuite/g++.old-deja/g++.gb/sig05.C deleted file mode 100644 index 3023e34..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig05.C +++ /dev/null @@ -1,31 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr initialization -// Test initialization of a local signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C a; - S * p = &a; - - printf ("%s%s\n", p->f (), p->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig06.C b/gcc/testsuite/g++.old-deja/g++.gb/sig06.C deleted file mode 100644 index b6476d5..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig06.C +++ /dev/null @@ -1,31 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr initialization -// Test initialization of a local signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -C a; -S * p = &a; - -int main (void) -{ - printf ("%s%s\n", p->f (), p->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig07.C b/gcc/testsuite/g++.old-deja/g++.gb/sig07.C deleted file mode 100644 index 18a47be..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig07.C +++ /dev/null @@ -1,29 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr default-argument -// Test calling a signature member function with default argument. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (char * text) { return text; } -}; - -signature S -{ - char * f (char * text = "PA"); -}; - -C a; -S * p = &a; - -int main (void) -{ - printf ("%s%s\n", p->f (), p->f ("SS")); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig08.C b/gcc/testsuite/g++.old-deja/g++.gb/sig08.C deleted file mode 100644 index 2d5d14d..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig08.C +++ /dev/null @@ -1,40 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr argument return-value -// Test passing a signature pointer to a function and returning it from one. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * text; - char * get_msg (void) const { return text; } -}; - -const C a = { "PA" }; -const C b = { "SS" }; - -signature S -{ - char * get_msg (void) const; -}; - -char * f (const S * p) -{ - return p->get_msg (); -} - -const S * g (const C * p) -{ - return p; -} - -int main (void) -{ - printf ("%s%s\n", f(&a), g(&b)->get_msg ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig09.C b/gcc/testsuite/g++.old-deja/g++.gb/sig09.C deleted file mode 100644 index a2e3b33..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig09.C +++ /dev/null @@ -1,34 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment initialization new -// Test assignment to/initialization of signature pointer with run-time value. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - int f (void) { return 1; } -}; - -signature S -{ - int f (void); -}; - -S * p1 = new C; - -int main (void) -{ - S * p2 = new C; - S * p3; - - p3 = new C; - - if (p1->f () + p2->f () + p3->f () == 3) - printf ("PASS\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig10.C b/gcc/testsuite/g++.old-deja/g++.gb/sig10.C deleted file mode 100644 index e16f2ee..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig10.C +++ /dev/null @@ -1,38 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr argument return-value new -// Test passing a signature pointer to a function and returning it from one. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ - char * text; -public: - C (char * s) { text = s; } - char * get_msg (void) const { return text; } -}; - -signature S -{ - char * get_msg (void) const; -}; - -char * f (const S * p) -{ - return p->get_msg (); -} - -const S * g (const C * p) -{ - return p; -} - -int main (void) -{ - printf ("%s%s\n", f(new C ("PA")), g(new C ("SS"))->get_msg ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig11.C b/gcc/testsuite/g++.old-deja/g++.gb/sig11.C deleted file mode 100644 index 892695f..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig11.C +++ /dev/null @@ -1,34 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr array -// Test a signature pointer array. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } -}; - -class D -{ -public: - char * f (void) { return "SS"; } -}; - -signature S -{ - char * f (void); -}; - -int main (void) -{ - S * p[2] = { new C, new D }; - - printf ("%s%s\n", p[0]->f (), p[1]->f ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig12.C b/gcc/testsuite/g++.old-deja/g++.gb/sig12.C deleted file mode 100644 index 2747a80..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig12.C +++ /dev/null @@ -1,40 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr structure -// Test a signature pointer structure. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } -}; - -class D -{ -public: - char * f (void) { return "SS"; } -}; - -signature S -{ - char * f (void); -}; - -struct SP -{ - S * p; - S * q; -}; - -int main (void) -{ - SP o = { new C, new D }; - - printf ("%s%s\n", o.p->f (), o.q->f ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig13.C b/gcc/testsuite/g++.old-deja/g++.gb/sig13.C deleted file mode 100644 index f5da9f8..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig13.C +++ /dev/null @@ -1,38 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment initialization -// Test assignment of/initialization with same type signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - int f (void) { return 1; } -}; - -signature S -{ - int f (void); -}; - -C a; -S * p1 = &a; -S * q1 = p1; - -int main (void) -{ - C a; - S * p2 = &a; - S * q2 = p2; - S * q3; - - q3 = p2; - - if (q1->f () + q2->f () + q3->f () == 3) - printf ("PASS\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig14.C b/gcc/testsuite/g++.old-deja/g++.gb/sig14.C deleted file mode 100644 index 6ce1d02..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig14.C +++ /dev/null @@ -1,55 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment initialization -// Test assignment of/initialization with different type signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - int f (void) { return 1; } - int g (int) { return 2; } -}; - -signature S -{ - int f (void); - int g (int); -}; - -signature T -{ - int f (void); -}; - -signature U -{ - int g (int); -}; - -C a; -S * p1 = &a; -T * q1 = p1; -U * r1 = p1; - -int main (void) -{ - C a; - S * p2 = &a; - T * q2 = p2; - U * r2 = p2; - T * q3; - U * r3; - - q3 = p2; - r3 = p2; - - if (q1->f () + q2->f () + q3->f () == 3 - && r1->g (0) + r2->g (0) + r3->g (0) == 6) - printf ("PASS\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig15.C b/gcc/testsuite/g++.old-deja/g++.gb/sig15.C deleted file mode 100644 index f0ae52e..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig15.C +++ /dev/null @@ -1,35 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr cast -// Test casting a signature pointer to a class pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C a; - S * p; - C * q; - - p = &a; - q = (C *) p; - - printf ("%s%s\n", q->f (), q->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig16.C b/gcc/testsuite/g++.old-deja/g++.gb/sig16.C deleted file mode 100644 index 35475e9..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig16.C +++ /dev/null @@ -1,44 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr cast -// Test casting a class pointer to an anonymous signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "S"; } - char * h (void) { return "FAIL"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -signature T -{ - char * f (void); -}; - -C a; -signature { char * g (int); } * r1 = - (signature { char * h (void); char * g (int); } *) &a; - -int main (void) -{ - C a; - S * p = &a; - T * q = p; - signature { char * g (int); } * r2 = - (signature { char * h (void); char * g (int); } *) &a; - - printf ("%s%s%s\n", q->f (), r1->g (0), r2->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig17.C b/gcc/testsuite/g++.old-deja/g++.gb/sig17.C deleted file mode 100644 index 6d1d1d9..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig17.C +++ /dev/null @@ -1,54 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr cast -// Test casting a class pointer through a chain of signature pointers. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -class D : public C -{ -public: - char * h (void) { return "FAIL"; } -}; - -class E : public C -{ -public: - int foo (int) { return 0; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -signature T -{ - char * f (void); -}; - -int main (void) -{ - D a; - S * p; - T * q; - signature { char * g (int); } * r; - - p = &a; - q = (T*) (signature { char * f (void); int foo (int); } *) (E*) (S*) (C*) p; - r = (signature { char * h (void); char * g (int); } *) &a; - - printf ("%s%s\n", q->f (), r->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig18.C b/gcc/testsuite/g++.old-deja/g++.gb/sig18.C deleted file mode 100644 index ba0ec86..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig18.C +++ /dev/null @@ -1,33 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment virtual -// Test assignment of object from virtual class to signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - virtual char * f (void) { return "PA"; } - virtual char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C a; - S * p; - - p = &a; - - printf ("%s%s\n", p->f (), p->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig19.C b/gcc/testsuite/g++.old-deja/g++.gb/sig19.C deleted file mode 100644 index 160a4a3..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig19.C +++ /dev/null @@ -1,38 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr initialization virtual -// Test initialization of signature pointer with object from abstract class. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - virtual char * f (void) = 0; - virtual char * g (int) = 0; -}; - -class D : public C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C * p = new D; - S * q = p; - - printf ("%s%s\n", q->f (), q->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig20.C b/gcc/testsuite/g++.old-deja/g++.gb/sig20.C deleted file mode 100644 index a8228de..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig20.C +++ /dev/null @@ -1,38 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr initialization virtual -// Test initialization of signature pointer with object from virtual class. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - virtual char * f (void) { return "FA"; } - virtual char * g (int) { return "IL"; } -}; - -class D : public C -{ -public: - char * f (void) { return "PA"; } - char * g (int) { return "SS"; } -}; - -signature S -{ - char * f (void); - char * g (int); -}; - -int main (void) -{ - C * p = new D; - S * q = p; - - printf ("%s%s\n", q->f (), q->g (0)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig21.C b/gcc/testsuite/g++.old-deja/g++.gb/sig21.C deleted file mode 100644 index faad45b..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig21.C +++ /dev/null @@ -1,56 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment virtual -// Test assignment of objects of different types to same signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - virtual char * f (void) = 0; -}; - -class D : public C -{ -public: - char * f (void) { return "P"; } -}; - -class E -{ -public: - char * f (void) { return "AS"; } -}; - -class F : public C -{ -public: - char * f (void) { return "S"; } -}; - -signature S -{ - char * f (void); -}; - -int main (void) -{ - E a; - C * p = new D; - S * q; - - q = p; - printf ("%s", q->f ()); - - q = &a; - printf ("%s", q->f ()); - - p = new F; - q = p; - printf ("%s\n", q->f ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig22.C b/gcc/testsuite/g++.old-deja/g++.gb/sig22.C deleted file mode 100644 index 25b0a1a..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig22.C +++ /dev/null @@ -1,59 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment initialization -// Test assignment to/init of sigptr that requires copying sigtable slots. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - int f (void) { return 1; } - int g (int) { return 2; } - int h (void) { return 666; } -}; - -signature S -{ - int f (void); - int g (int); - int h (void); -}; - -signature T -{ - int f (void); - int h (void); -}; - -signature U -{ - int h (void); - int g (int); -}; - -C a; -S * p = &a; -T * q1 = p; -U * r1 = p; - -int main (void) -{ - C a; - S * p = &a; - T * q2 = p; - U * r2 = p;; - T * q3; - U * r3; - - q3 = p; - r3 = p; - - if (q1->f () + q2->f () + q3->f () == 3 - && r1->g (0) + r2->g (0) + r3->g (0) == 6) - printf ("PASS\n"); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig23.C b/gcc/testsuite/g++.old-deja/g++.gb/sig23.C deleted file mode 100644 index 767cfa3..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig23.C +++ /dev/null @@ -1,53 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment local-signature -// Test assignment to signature pointer of local signature. - -extern "C" -{ - int printf (char *, ...); -} - -char * PA (void) -{ - class C - { - public: - char * f (void) { return "PA"; } - }; - - signature S - { - char * f (void); - }; - - C a; - S * p = &a; - - return p->f (); -} - -char * SS (void) -{ - class C - { - public: - char * f (void) { return "SS"; } - }; - - signature S - { - char * f (void); - }; - - C a; - S * p = &a; - - return p->f (); -} - -int main (void) -{ - printf ("%s%s\n", PA (), SS ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig24.C b/gcc/testsuite/g++.old-deja/g++.gb/sig24.C deleted file mode 100644 index 2dca6f9..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig24.C +++ /dev/null @@ -1,36 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr opaque-type -// Test calling member functions taking/returning opaque type through sigptr. - -extern "C" -{ - int printf (char *, ...); -} - -signature S -{ - typedef t; - char * f (t); - t g (void); - t h (void); -}; - -class C -{ -public: - typedef char * t; - char * f (t text) { return text; } - t g (void) { return "PA"; } - t h (void) { return "SS"; } -}; - -int main (void) -{ - C a; - S * p = &a; - S::t w = p->h (); - - printf ("%s%s\n", p->f (p->g ()), p->f (w)); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig25.C b/gcc/testsuite/g++.old-deja/g++.gb/sig25.C deleted file mode 100644 index d00ef57..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig25.C +++ /dev/null @@ -1,33 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr default-implementation -// Test calling default implementation through signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C { }; - -class D -{ -public: - char * f (void) { return "SS"; } -}; - -signature S -{ - char * f (void) { return "PA"; } -}; - -int main (void) -{ - C a; - D b; - S * p = &a; - S * q = &b; - - printf ("%s%s\n", p->f (), q->f ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig26.C b/gcc/testsuite/g++.old-deja/g++.gb/sig26.C deleted file mode 100644 index 399737b..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig26.C +++ /dev/null @@ -1,34 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr default-implementation -// Test calling default implementation through signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C { }; - -class D -{ -public: - char * f (void) { return "SS"; } -}; - -signature S -{ - char * f (void) { return "PA"; } - char * g (void) { return f (); } -}; - -int main (void) -{ - C a; - D b; - S * p = &a; - S * q = &b; - - printf ("%s%s\n", p->g (), q->g ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig27.C b/gcc/testsuite/g++.old-deja/g++.gb/sig27.C deleted file mode 100644 index 7b9e7d2..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig27.C +++ /dev/null @@ -1,38 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr multiple-inheritance -// Test class defined by multiple inheritance as implementation of signature. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * f (void) { return "PA"; } -}; - -class D -{ -public: - char * g (void) { return "SS"; } -}; - -class E : public C, public D { }; - -signature S -{ - char * f (void); - char * g (void); -}; - -int main (void) -{ - E a; - S * p = &a; - - printf ("%s%s\n", p->f (), p->g ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig28.C b/gcc/testsuite/g++.old-deja/g++.gb/sig28.C deleted file mode 100644 index 4edff68..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig28.C +++ /dev/null @@ -1,46 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr multiple-inheritance -// Test correct adjustment of `this' pointer in case of multiple inheritance. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ - char * text; -public: - C () { text = "PA"; } - char * f (void) { return text; } -}; - -class D -{ - char * text; -public: - D () { text = "SS"; } - char * g (void) { return text; } -}; - -class E : public C, public D -{ -public: - E () : C (), D () { } -}; - -signature S -{ - char * f (void); - char * g (void); -}; - -int main (void) -{ - E a; - S * p = &a; - - printf ("%s%s\n", p->f (), p->g ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig29.C b/gcc/testsuite/g++.old-deja/g++.gb/sig29.C deleted file mode 100644 index e5c5e39..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig29.C +++ /dev/null @@ -1,46 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr multiple-inheritance -// Test calling virtual function from MI class through signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ - char * text; -public: - C () { text = "PA"; } - virtual char * f (void) { return text; } -}; - -class D -{ - char * text; -public: - D () { text = "SS"; } - virtual char * g (void) { return text; } -}; - -class E : public C, public D -{ -public: - E () : C (), D () { } -}; - -signature S -{ - char * f (void); - char * g (void); -}; - -int main (void) -{ - E a; - S * p = &a; - - printf ("%s%s\n", p->f (), p->g ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig30.C b/gcc/testsuite/g++.old-deja/g++.gb/sig30.C deleted file mode 100644 index 3e93e11..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig30.C +++ /dev/null @@ -1,48 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr multiple-inheritance -// Test calling overwritten virtual functions through signature pointer. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - char * text1; - C () { text1 = "PA"; } - virtual char * f (void) = 0; -}; - -class D -{ -public: - char * text2; - D () { text2 = "SS"; } - virtual char * g (void) = 0; -}; - -class E : public C, public D -{ -public: - E () : C (), D () { }; - char * f (void) { return text1; } - char * g (void) { return text2; } -}; - -signature S -{ - char * f (void); - char * g (void); -}; - -int main (void) -{ - E a; - S * p = &a; - - printf ("%s%s\n", p->f (), p->g ()); - - return 0; -} diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig31.C b/gcc/testsuite/g++.old-deja/g++.gb/sig31.C deleted file mode 100644 index 90fa9e9..0000000 --- a/gcc/testsuite/g++.old-deja/g++.gb/sig31.C +++ /dev/null @@ -1,52 +0,0 @@ -// Special g++ Options: -fhandle-signatures -// GROUPS passed gb sigptr assignment sigsigtable -// Test use of multiple signature-signature tables for same signature pair. - -extern "C" -{ - int printf (char *, ...); -} - -class C -{ -public: - virtual int f (void) { return 1; } - int g (int) { return 2; } -}; - -class D : public C -{ -public: - int f (void) { return 3; } - int g (int) { return 4; } -}; - -signature S -{ - int f (void); - int g (int); -}; - -signature T -{ - int g (int); - int f (void); -}; - -int main (void) -{ - S * p = new C; - T * q = p; - T * r; - - p = new D; - r = p; - - if (q->f () == 1 && q->g (0) == 2 - && r->f () == 3 && r->g (0) == 4) - printf ("PASS\n"); - else - printf ("FAIL\n"); - - return 0; -} -- cgit v1.1