From 19c344c55cb5807ddfd6e5061e8950cb3fbfd480 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Mon, 2 Jan 2012 11:05:56 +0100 Subject: [PATCH] Updated mcs. --- .../Parser/CSharpParser.cs | 30 +- .../Parser/mcs/anonymous.cs | 3 +- .../Parser/mcs/assembly.cs | 11 +- .../Parser/mcs/assign.cs | 13 +- .../Parser/mcs/async.cs | 6 + .../Parser/mcs/attribute.cs | 103 +- .../Parser/mcs/class.cs | 20 +- .../Parser/mcs/cs-parser.cs | 9900 +++++++++-------- .../Parser/mcs/cs-parser.jay | 168 +- .../Parser/mcs/decl.cs | 7 +- .../Parser/mcs/delegate.cs | 7 + .../Parser/mcs/driver.cs | 2 +- .../Parser/mcs/ecore.cs | 5 +- .../Parser/mcs/eval.cs | 14 +- .../Parser/mcs/expression.cs | 256 +- .../Parser/mcs/generic.cs | 24 +- .../Parser/mcs/iterators.cs | 8 +- .../Parser/mcs/lambda.cs | 7 +- .../Parser/mcs/linq.cs | 26 +- .../Parser/mcs/literal.cs | 70 +- .../Parser/mcs/method.cs | 39 +- .../Parser/mcs/namespace.cs | 568 +- .../Parser/mcs/nullable.cs | 20 +- .../Parser/mcs/parameter.cs | 19 +- .../Parser/mcs/property.cs | 56 +- .../Parser/mcs/reflection.cs | 14 +- .../Parser/mcs/roottypes.cs | 2 +- .../Parser/mcs/statement.cs | 215 +- .../Parser/mcs/support.cs | 3 +- 29 files changed, 6004 insertions(+), 5612 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index ed7b8a2178..35e0035d3c 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -208,8 +208,8 @@ namespace ICSharpCode.NRefactory.CSharp if (loc != null) result.AddChild (new CSharpTokenNode (Convert (loc [pos++]), 1), AttributeSection.Roles.LPar); - if (attr.PosArguments != null) { - foreach (var arg in attr.PosArguments) { + if (attr.PositionalArguments != null) { + foreach (var arg in attr.PositionalArguments) { var na = arg as NamedArgument; if (na != null) { var newArg = new NamedArgumentExpression (); @@ -1465,7 +1465,7 @@ namespace ICSharpCode.NRefactory.CSharp public override object Visit (StatementErrorExpression statementErrorExpression) { var result = new ExpressionStatement (); - var expr = statementErrorExpression.Expression.Accept (this) as Expression; + var expr = statementErrorExpression.Expr.Accept (this) as Expression; if (expr != null) result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression); return result; @@ -1849,14 +1849,14 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (tryCatchStatement.loc), "try".Length), TryCatchStatement.TryKeywordRole); if (tryCatchStatement.Block != null) result.AddChild ((BlockStatement)tryCatchStatement.Block.Accept (this), TryCatchStatement.TryBlockRole); - if (tryCatchStatement.Specific != null) { - foreach (Catch ctch in tryCatchStatement.Specific) { + if (tryCatchStatement.Clauses != null) { + foreach (Catch ctch in tryCatchStatement.Clauses) { result.AddChild (ConvertCatch (ctch), TryCatchStatement.CatchClauseRole); } } - if (tryCatchStatement.General != null) + /* if (tryCatchStatement. != null) result.AddChild (ConvertCatch (tryCatchStatement.General), TryCatchStatement.CatchClauseRole); - + */ return result; } @@ -1868,8 +1868,8 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (usingStatement.loc), "using".Length), UsingStatement.Roles.Keyword); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [0]), 1), UsingStatement.Roles.LPar); - if (usingStatement.Expression != null) - result.AddChild ((AstNode)usingStatement.Expression.Accept (this), UsingStatement.ResourceAcquisitionRole); + if (usingStatement.Expr != null) + result.AddChild ((AstNode)usingStatement.Expr.Accept (this), UsingStatement.ResourceAcquisitionRole); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [1]), 1), UsingStatement.Roles.RPar); @@ -1889,8 +1889,8 @@ namespace ICSharpCode.NRefactory.CSharp if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [0]), 1), ForeachStatement.Roles.LPar); - if (foreachStatement.TypeExpr != null) - result.AddChild (ConvertToType (foreachStatement.TypeExpr), ForeachStatement.Roles.Type); + if (foreachStatement.TypeExpression != null) + result.AddChild (ConvertToType (foreachStatement.TypeExpression), ForeachStatement.Roles.Type); if (foreachStatement.Variable != null) result.AddChild (Identifier.Create (foreachStatement.Variable.Name, Convert (foreachStatement.Variable.Location)), ForeachStatement.Roles.Identifier); @@ -2260,7 +2260,7 @@ namespace ICSharpCode.NRefactory.CSharp { var result = new BinaryOperatorExpression (); result.Operator = BinaryOperatorType.NullCoalescing; - result.AddChild ((Expression)nullCoalescingOperator.Left.Accept (this), BinaryOperatorExpression.LeftRole); + result.AddChild ((Expression)nullCoalescingOperator.LeftExpression.Accept (this), BinaryOperatorExpression.LeftRole); result.AddChild (new CSharpTokenNode (Convert (nullCoalescingOperator.Location), 2), BinaryOperatorExpression.OperatorRole); result.AddChild ((Expression)nullCoalescingOperator.Right.Accept (this), BinaryOperatorExpression.RightRole); return result; @@ -2489,8 +2489,8 @@ namespace ICSharpCode.NRefactory.CSharp { var result = new InvocationExpression (); var location = LocationsBag.GetLocations (invocationExpression); - if (invocationExpression.Expression != null) - result.AddChild ((Expression)invocationExpression.Expression.Accept (this), InvocationExpression.Roles.TargetExpression); + if (invocationExpression.Exp != null) + result.AddChild ((Expression)invocationExpression.Exp.Accept (this), InvocationExpression.Roles.TargetExpression); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), InvocationExpression.Roles.LPar); AddArguments (result, location, invocationExpression.Arguments); @@ -2796,7 +2796,7 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (sizeOfExpression.Location), "sizeof".Length), TypeOfExpression.Roles.Keyword); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), TypeOfExpression.Roles.LPar); - result.AddChild (ConvertToType (sizeOfExpression.QueriedType), TypeOfExpression.Roles.Type); + result.AddChild (ConvertToType (sizeOfExpression.TypeExpression), TypeOfExpression.Roles.Type); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[1]), 1), TypeOfExpression.Roles.RPar); return result; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs index 8e35e72ad2..722c3881b0 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs @@ -885,9 +885,8 @@ namespace Mono.CSharp { public ParametersBlock Block; - public AnonymousMethodExpression (bool isAsync, Location loc) + public AnonymousMethodExpression (Location loc) { - this.IsAsync = isAsync; this.loc = loc; this.compatibles = new Dictionary (); } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs index 9e06715ed6..2e25ab7ca4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs @@ -1090,8 +1090,7 @@ namespace Mono.CSharp public abstract bool HasObjectType (T assembly); protected abstract string[] GetDefaultReferences (); - public abstract T LoadAssemblyFile (string fileName); - public abstract T LoadAssemblyDefault (string assembly); + public abstract T LoadAssemblyFile (string fileName, bool isImplicitReference); public abstract void LoadReferences (ModuleContainer module); protected void Error_FileNotFound (string fileName) @@ -1128,14 +1127,14 @@ namespace Mono.CSharp // Load mscorlib.dll as the first // if (module.Compiler.Settings.StdLib) { - corlib_assembly = LoadAssemblyDefault ("mscorlib.dll"); + corlib_assembly = LoadAssemblyFile ("mscorlib.dll", true); } else { corlib_assembly = default (T); } T a; foreach (string r in module.Compiler.Settings.AssemblyReferences) { - a = LoadAssemblyFile (r); + a = LoadAssemblyFile (r, false); if (a == null || EqualityComparer.Default.Equals (a, corlib_assembly)) continue; @@ -1153,7 +1152,7 @@ namespace Mono.CSharp } foreach (var entry in module.Compiler.Settings.AssemblyReferencesAliases) { - a = LoadAssemblyFile (entry.Item2); + a = LoadAssemblyFile (entry.Item2, false); if (a == null) continue; @@ -1166,7 +1165,7 @@ namespace Mono.CSharp if (compiler.Settings.LoadDefaultReferences) { foreach (string r in GetDefaultReferences ()) { - a = LoadAssemblyDefault (r); + a = LoadAssemblyFile (r, true); if (a == null) continue; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs index 99416ce55d..4fc2e6e9a4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs @@ -418,6 +418,11 @@ namespace Mono.CSharp { _target.target = target.Clone (clonectx); _target.source = source.Clone (clonectx); } + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class SimpleAssign : Assign @@ -653,6 +658,12 @@ namespace Mono.CSharp { this.left = left; } + public Binary.Operator Operator { + get { + return op; + } + } + protected override Expression DoResolve (ResolveContext ec) { right = right.Resolve (ec); @@ -811,10 +822,10 @@ namespace Mono.CSharp { ctarget.right = ctarget.source = source.Clone (clonectx); ctarget.target = target.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); } - } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs index 89b78483e2..7a786da549 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs @@ -40,6 +40,12 @@ namespace Mono.CSharp this.loc = loc; } + public Expression Expr { + get { + return expr; + } + } + protected override void CloneTo (CloneContext clonectx, Expression target) { var t = (Await) target; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs index 53a5db56d3..a9decc3ba4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs @@ -89,8 +89,7 @@ namespace Mono.CSharp { public AttributeTargets Target; readonly ATypeNameExpression expression; - public Arguments PosArguments; - public Arguments NamedArguments; + Arguments pos_args, named_args; bool resolve_error; bool arg_resolved; @@ -118,8 +117,8 @@ namespace Mono.CSharp { { this.expression = expr; if (args != null) { - PosArguments = args[0]; - NamedArguments = args[1]; + pos_args = args[0]; + named_args = args[1]; } this.loc = loc; ExplicitTarget = target; @@ -132,6 +131,24 @@ namespace Mono.CSharp { } } + public Arguments NamedArguments { + get { + return named_args; + } + } + + public Arguments PositionalArguments { + get { + return pos_args; + } + } + + public ATypeNameExpression TypeExpression { + get { + return expression; + } + } + void AddModuleCharSet (ResolveContext rc) { const string dll_import_char_set = "CharSet"; @@ -147,7 +164,7 @@ namespace Mono.CSharp { } if (NamedArguments == null) - NamedArguments = new Arguments (1); + named_args = new Arguments (1); var value = Constant.CreateConstant (rc.Module.PredefinedTypes.CharSet.TypeSpec, rc.Module.DefaultCharSet, Location); NamedArguments.Add (new NamedArgument (dll_import_char_set, loc, value)); @@ -156,8 +173,8 @@ namespace Mono.CSharp { public Attribute Clone () { Attribute a = new Attribute (ExplicitTarget, expression, null, loc, nameEscaped); - a.PosArguments = PosArguments; - a.NamedArguments = NamedArguments; + a.pos_args = pos_args; + a.named_args = NamedArguments; return a; } @@ -432,14 +449,14 @@ namespace Mono.CSharp { MethodSpec ctor; // Try if the attribute is simple and has been resolved before - if (PosArguments != null || !context.Module.AttributeConstructorCache.TryGetValue (Type, out ctor)) { + if (pos_args != null || !context.Module.AttributeConstructorCache.TryGetValue (Type, out ctor)) { rc = CreateResolveContext (); ctor = ResolveConstructor (rc); if (ctor == null) { return null; } - if (PosArguments == null && ctor.Parameters.IsEmpty) + if (pos_args == null && ctor.Parameters.IsEmpty) context.Module.AttributeConstructorCache.Add (Type, ctor); } @@ -468,16 +485,16 @@ namespace Mono.CSharp { MethodSpec ResolveConstructor (ResolveContext ec) { - if (PosArguments != null) { + if (pos_args != null) { bool dynamic; - PosArguments.Resolve (ec, out dynamic); + pos_args.Resolve (ec, out dynamic); if (dynamic) { Error_AttributeArgumentIsDynamic (ec.MemberContext, loc); return null; } } - return Expression.ConstructorLookup (ec, Type, ref PosArguments, loc); + return Expression.ConstructorLookup (ec, Type, ref pos_args, loc); } bool ResolveNamedArguments (ResolveContext ec) @@ -637,7 +654,7 @@ namespace Mono.CSharp { if (resolve_error) return DefaultUsageAttribute; - AttributeUsageAttribute usage_attribute = new AttributeUsageAttribute ((AttributeTargets)((Constant) PosArguments [0].Expr).GetValue ()); + AttributeUsageAttribute usage_attribute = new AttributeUsageAttribute ((AttributeTargets) ((Constant) pos_args[0].Expr).GetValue ()); var field = GetNamedValue ("AllowMultiple") as BoolConstant; if (field != null) @@ -660,10 +677,10 @@ namespace Mono.CSharp { // But because a lot of attribute class code must be rewritten will be better to wait... Resolve (); - if (resolve_error || PosArguments.Count != 1 || !(PosArguments [0].Expr is Constant)) + if (resolve_error || pos_args.Count != 1 || !(pos_args[0].Expr is Constant)) return null; - return ((Constant) PosArguments [0].Expr).GetValue () as string; + return ((Constant) pos_args[0].Expr).GetValue () as string; } /// @@ -679,7 +696,7 @@ namespace Mono.CSharp { if (resolve_error) return null; - return ((Constant) PosArguments[0].Expr).GetValue () as string; + return ((Constant) pos_args[0].Expr).GetValue () as string; } /// @@ -701,14 +718,14 @@ namespace Mono.CSharp { if (resolve_error) return null; - if (PosArguments == null) + if (pos_args == null) return new ObsoleteAttribute (); - string msg = ((Constant) PosArguments[0].Expr).GetValue () as string; - if (PosArguments.Count == 1) + string msg = ((Constant) pos_args[0].Expr).GetValue () as string; + if (pos_args.Count == 1) return new ObsoleteAttribute (msg); - return new ObsoleteAttribute (msg, ((BoolConstant) PosArguments[1].Expr).Value); + return new ObsoleteAttribute (msg, ((BoolConstant) pos_args[1].Expr).Value); } /// @@ -726,7 +743,7 @@ namespace Mono.CSharp { if (resolve_error) return false; - return ((BoolConstant) PosArguments[0].Expr).Value; + return ((BoolConstant) pos_args[0].Expr).Value; } public TypeSpec GetCoClassAttributeValue () @@ -812,7 +829,7 @@ namespace Mono.CSharp { System.Security.Permissions.SecurityAction GetSecurityActionValue () { - return (SecurityAction) ((Constant) PosArguments[0].Expr).GetValue (); + return (SecurityAction) ((Constant) pos_args[0].Expr).GetValue (); } /// @@ -822,9 +839,9 @@ namespace Mono.CSharp { public void ExtractSecurityPermissionSet (MethodSpec ctor, ref SecurityType permissions) { #if STATIC - object[] values = new object [PosArguments.Count]; + object[] values = new object[pos_args.Count]; for (int i = 0; i < values.Length; ++i) - values [i] = ((Constant) PosArguments [i].Expr).GetValue (); + values[i] = ((Constant) pos_args[i].Expr).GetValue (); PropertyInfo[] prop; object[] prop_values; @@ -865,7 +882,7 @@ namespace Mono.CSharp { public CharSet GetCharSetValue () { - return (CharSet)System.Enum.Parse (typeof (CharSet), ((Constant) PosArguments [0].Expr).GetValue ().ToString ()); + return (CharSet) System.Enum.Parse (typeof (CharSet), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); } public bool HasField (string fieldName) @@ -887,8 +904,8 @@ namespace Mono.CSharp { public bool IsInternalCall () { MethodImplOptions options = 0; - if (PosArguments.Count == 1) { - options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); + if (pos_args.Count == 1) { + options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); } else if (HasField ("Value")) { var named = GetNamedValue ("Value"); options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), named.GetValue ().ToString ()); @@ -902,19 +919,19 @@ namespace Mono.CSharp { // public bool IsExplicitLayoutKind () { - if (PosArguments == null || PosArguments.Count != 1) + if (pos_args == null || pos_args.Count != 1) return false; - var value = (LayoutKind) System.Enum.Parse (typeof (LayoutKind), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); + var value = (LayoutKind) System.Enum.Parse (typeof (LayoutKind), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); return value == LayoutKind.Explicit; } public Expression GetParameterDefaultValue () { - if (PosArguments == null) + if (pos_args == null) return null; - return PosArguments[0].Expr; + return pos_args[0].Expr; } public override bool Equals (object obj) @@ -951,16 +968,16 @@ namespace Mono.CSharp { } byte[] cdata; - if (PosArguments == null && named_values == null) { + if (pos_args == null && named_values == null) { cdata = AttributeEncoder.Empty; } else { AttributeEncoder encoder = new AttributeEncoder (); - if (PosArguments != null) { + if (pos_args != null) { var param_types = ctor.Parameters.Types; - for (int j = 0; j < PosArguments.Count; ++j) { + for (int j = 0; j < pos_args.Count; ++j) { var pt = param_types[j]; - var arg_expr = PosArguments[j].Expr; + var arg_expr = pos_args[j].Expr; if (j == 0) { if ((Type == predefined.IndexerName || Type == predefined.Conditional) && arg_expr is Constant) { string v = ((Constant) arg_expr).GetValue () as string; @@ -984,15 +1001,15 @@ namespace Mono.CSharp { "System.AttributeUsage"); } } else if (Type == predefined.MarshalAs) { - if (PosArguments.Count == 1) { - var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); + if (pos_args.Count == 1) { + var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); if (u_type == UnmanagedType.ByValArray && !(Owner is FieldBase)) { Error_AttributeEmitError ("Specified unmanaged type is only valid on fields"); } } } else if (Type == predefined.DllImport) { - if (PosArguments.Count == 1 && PosArguments[0].Expr is Constant) { - var value = ((Constant) PosArguments[0].Expr).GetValue () as string; + if (pos_args.Count == 1 && pos_args[0].Expr is Constant) { + var value = ((Constant) pos_args[0].Expr).GetValue () as string; if (string.IsNullOrEmpty (value)) Error_AttributeEmitError ("DllName cannot be empty"); } @@ -1055,8 +1072,8 @@ namespace Mono.CSharp { // Here we are testing attribute arguments for array usage (error 3016) if (Owner.IsClsComplianceRequired ()) { - if (PosArguments != null) - PosArguments.CheckArrayAsAttribute (context.Module.Compiler); + if (pos_args != null) + pos_args.CheckArrayAsAttribute (context.Module.Compiler); if (NamedArguments == null) return; @@ -1067,10 +1084,10 @@ namespace Mono.CSharp { private Expression GetValue () { - if (PosArguments == null || PosArguments.Count < 1) + if (pos_args == null || pos_args.Count < 1) return null; - return PosArguments [0].Expr; + return pos_args[0].Expr; } public string GetString () diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs index e76fd155d1..bdfea2ecd8 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs @@ -201,7 +201,7 @@ namespace Mono.CSharp // from classes from the arraylist `type_bases' // protected TypeSpec base_type; - protected FullNamedExpression base_type_expr; // TODO: It's temporary variable + FullNamedExpression base_type_expr; // TODO: It's temporary variable protected TypeSpec[] iface_exprs; protected List type_bases; @@ -256,6 +256,12 @@ namespace Mono.CSharp #region Properties + public List BaseTypeExpressions { + get { + return type_bases; + } + } + public override TypeSpec CurrentType { get { if (current_type == null) { @@ -332,7 +338,7 @@ namespace Mono.CSharp { visitor.Visit (this); } - + public bool AddMember (MemberCore symbol) { return AddToContainer (symbol, symbol.MemberName.Basename); @@ -1366,9 +1372,13 @@ namespace Mono.CSharp type_defined = true; - // TODO: Driver resolves only first level of namespace, do the rest here for now - if (IsTopLevel && (ModFlags & Modifiers.COMPILER_GENERATED) == 0) { - NamespaceEntry.Resolve (); + // Nested type share same namespace + if (IsTopLevel && !IsCompilerGenerated) { + NamespaceEntry.Define (); + if (partial_parts != null) { + foreach (var part in partial_parts) + part.NamespaceEntry.Define (); + } } if (!DefineBaseTypes ()) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 830ee8e54f..38752efe8f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -212,11 +212,10 @@ namespace Mono.CSharp //t "extern_alias_directive : EXTERN_ALIAS error", //t "using_directives : using_directive", //t "using_directives : using_directives using_directive", -//t "using_directive : using_alias_directive", -//t "using_directive : using_namespace_directive", -//t "using_alias_directive : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON", -//t "using_alias_directive : USING error", -//t "using_namespace_directive : USING namespace_name SEMICOLON", +//t "using_directive : using_namespace", +//t "using_namespace : USING namespace_name SEMICOLON", +//t "using_namespace : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON", +//t "using_namespace : USING error", //t "$$2 :", //t "$$3 :", //t "namespace_declaration : opt_attributes NAMESPACE qualified_identifier $$2 OPEN_BRACE $$3 opt_extern_alias_directives opt_using_directives opt_namespace_or_type_declarations CLOSE_BRACE opt_semicolon", @@ -974,6 +973,7 @@ namespace Mono.CSharp //t "if_statement : IF open_parens_any boolean_expression error", //t "$$85 :", //t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$85 opt_switch_sections CLOSE_BRACE", +//t "switch_statement : SWITCH open_parens_any expression error", //t "opt_switch_sections :", //t "opt_switch_sections : switch_sections", //t "switch_sections : switch_section", @@ -990,6 +990,7 @@ namespace Mono.CSharp //t "iteration_statement : for_statement", //t "iteration_statement : foreach_statement", //t "while_statement : WHILE open_parens_any boolean_expression CLOSE_PARENS embedded_statement", +//t "while_statement : WHILE open_parens_any boolean_expression error", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON", //t "do_statement : DO embedded_statement error", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression error", @@ -1012,7 +1013,8 @@ namespace Mono.CSharp //t "for_iterator : statement_expression_list", //t "statement_expression_list : statement_expression", //t "statement_expression_list : statement_expression_list COMMA statement_expression", -//t "foreach_statement : FOREACH open_parens_any type IN expression CLOSE_PARENS", +//t "foreach_statement : FOREACH open_parens_any type error", +//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", //t "$$92 :", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$92 embedded_statement", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", @@ -1051,6 +1053,7 @@ namespace Mono.CSharp //t "$$94 :", //t "unsafe_statement : UNSAFE $$94 block", //t "lock_statement : LOCK open_parens_any expression CLOSE_PARENS embedded_statement", +//t "lock_statement : LOCK open_parens_any expression error", //t "$$95 :", //t "$$96 :", //t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$95 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$96 embedded_statement", @@ -1058,6 +1061,7 @@ namespace Mono.CSharp //t "$$98 :", //t "using_statement : USING open_parens_any variable_type identifier_inside_body $$97 using_initialization CLOSE_PARENS $$98 embedded_statement", //t "using_statement : USING open_parens_any expression CLOSE_PARENS embedded_statement", +//t "using_statement : USING open_parens_any expression error", //t "using_initialization : using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators", //t "using_initialization : error", //t "using_or_fixed_variable_initializer :", @@ -1417,9 +1421,9 @@ case 13: case_13(); break; case 14: -#line 444 "cs-parser.jay" +#line 451 "cs-parser.jay" { - syntax_error (GetLocation (yyVals[-1+yyTop]), "`alias' expected"); /* TODO: better*/ + Error_SyntaxError (yyToken); } break; case 17: @@ -1452,21 +1456,21 @@ case 25: case 26: case_26(); break; -case 27: - case_27(); +case 31: + case_31(); break; -case 32: - case_32(); +case 40: + case_40(); break; case 41: - case_41(); - break; -case 42: -#line 633 "cs-parser.jay" +#line 636 "cs-parser.jay" { current_namespace.DeclarationFound = true; } break; +case 49: + case_49(); + break; case 50: case_50(); break; @@ -1489,47 +1493,47 @@ case 56: case_56(); break; case 57: - case_57(); +#line 745 "cs-parser.jay" + { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 58: -#line 742 "cs-parser.jay" - { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } +#line 746 "cs-parser.jay" + { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 59: -#line 743 "cs-parser.jay" - { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } + case_59(); break; case 60: - case_60(); - break; -case 61: -#line 760 "cs-parser.jay" +#line 763 "cs-parser.jay" { yyVal = new List (4) { (Attribute) yyVals[0+yyTop] }; } break; -case 62: - case_62(); +case 61: + case_61(); break; -case 63: -#line 775 "cs-parser.jay" +case 62: +#line 778 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 64: - case_64(); +case 63: + case_63(); break; -case 66: -#line 802 "cs-parser.jay" +case 65: +#line 805 "cs-parser.jay" { yyVal = null; } break; +case 66: + case_66(); + break; case 67: - case_67(); +#line 816 "cs-parser.jay" + { yyVal = null; } break; case 68: -#line 813 "cs-parser.jay" - { yyVal = null; } + case_68(); break; case 69: case_69(); @@ -1541,63 +1545,63 @@ case 71: case_71(); break; case 72: - case_72(); - break; -case 73: -#line 857 "cs-parser.jay" +#line 860 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 75: -#line 865 "cs-parser.jay" +case 74: +#line 868 "cs-parser.jay" { ++lexer.parsing_block; } break; +case 75: + case_75(); + break; case 76: case_76(); break; case 77: - case_77(); - break; -case 78: -#line 891 "cs-parser.jay" +#line 894 "cs-parser.jay" { yyVal = null; } break; -case 79: -#line 895 "cs-parser.jay" +case 78: +#line 898 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; -case 80: -#line 899 "cs-parser.jay" +case 79: +#line 902 "cs-parser.jay" { yyVal = Argument.AType.Out; } break; -case 83: -#line 911 "cs-parser.jay" +case 82: +#line 914 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 84: -#line 915 "cs-parser.jay" +case 83: +#line 918 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 95: - case_95(); +case 94: + case_94(); break; -case 96: -#line 945 "cs-parser.jay" +case 95: +#line 948 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; +case 96: + case_96(); + break; case 97: case_97(); break; @@ -1611,46 +1615,46 @@ case 100: case_100(); break; case 101: - case_101(); - break; -case 102: -#line 986 "cs-parser.jay" +#line 989 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; +case 102: + case_102(); + break; case 103: case_103(); break; -case 104: - case_104(); - break; -case 107: -#line 1027 "cs-parser.jay" +case 106: +#line 1030 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 108: -#line 1031 "cs-parser.jay" +case 107: +#line 1034 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 109: - case_109(); +case 108: + case_108(); break; -case 110: -#line 1047 "cs-parser.jay" +case 109: +#line 1050 "cs-parser.jay" { ++lexer.parsing_block; } break; +case 110: + case_110(); + break; case 111: case_111(); break; -case 112: - case_112(); +case 114: + case_114(); break; case 115: case_115(); @@ -1662,70 +1666,70 @@ case 117: case_117(); break; case 118: - case_118(); - break; -case 119: -#line 1126 "cs-parser.jay" +#line 1129 "cs-parser.jay" { report.Error (1641, GetLocation (yyVals[-1+yyTop]), "A fixed size buffer field must have the array size specifier after the field name"); } break; +case 120: + case_120(); + break; case 121: case_121(); break; -case 122: - case_122(); - break; -case 125: -#line 1156 "cs-parser.jay" +case 124: +#line 1159 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 126: -#line 1160 "cs-parser.jay" +case 125: +#line 1163 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 127: - case_127(); +case 126: + case_126(); break; -case 128: -#line 1173 "cs-parser.jay" +case 127: +#line 1176 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 129: - case_129(); +case 128: + case_128(); break; -case 132: -#line 1192 "cs-parser.jay" +case 131: +#line 1195 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 133: -#line 1196 "cs-parser.jay" +case 132: +#line 1199 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 134: - case_134(); +case 133: + case_133(); break; -case 135: -#line 1212 "cs-parser.jay" +case 134: +#line 1215 "cs-parser.jay" { ++lexer.parsing_block; } break; +case 135: + case_135(); + break; case 136: case_136(); break; -case 137: - case_137(); +case 139: + case_139(); break; case 140: case_140(); @@ -1734,52 +1738,52 @@ case 141: case_141(); break; case 142: - case_142(); - break; -case 143: -#line 1283 "cs-parser.jay" +#line 1286 "cs-parser.jay" { valid_param_mod = ParameterModifierType.All; } break; -case 144: -#line 1287 "cs-parser.jay" +case 143: +#line 1290 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 145: - case_145(); +case 144: + case_144(); break; -case 146: -#line 1321 "cs-parser.jay" +case 145: +#line 1324 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 147: - case_147(); +case 146: + case_146(); break; -case 148: -#line 1331 "cs-parser.jay" +case 147: +#line 1334 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; +case 148: + case_148(); + break; case 149: case_149(); break; -case 150: - case_150(); - break; -case 152: -#line 1389 "cs-parser.jay" +case 151: +#line 1392 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; -case 153: -#line 1393 "cs-parser.jay" +case 152: +#line 1396 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; +case 154: + case_154(); + break; case 155: case_155(); break; @@ -1799,20 +1803,20 @@ case 160: case_160(); break; case 161: - case_161(); - break; -case 162: -#line 1465 "cs-parser.jay" +#line 1468 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; -case 163: -#line 1469 "cs-parser.jay" +case 162: +#line 1472 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } break; +case 163: + case_163(); + break; case 164: case_164(); break; @@ -1829,27 +1833,27 @@ case 168: case_168(); break; case 169: - case_169(); - break; -case 170: -#line 1544 "cs-parser.jay" +#line 1547 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 171: - case_171(); +case 170: + case_170(); break; -case 172: -#line 1585 "cs-parser.jay" +case 171: +#line 1588 "cs-parser.jay" { yyVal = Parameter.Modifier.NONE; } break; -case 174: -#line 1593 "cs-parser.jay" +case 173: +#line 1596 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 174: + case_174(); + break; case 175: case_175(); break; @@ -1875,14 +1879,14 @@ case 182: case_182(); break; case 183: - case_183(); - break; -case 184: -#line 1686 "cs-parser.jay" +#line 1689 "cs-parser.jay" { Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); } break; +case 184: + case_184(); + break; case 185: case_185(); break; @@ -1896,25 +1900,25 @@ case 188: case_188(); break; case 189: - case_189(); - break; -case 190: -#line 1740 "cs-parser.jay" +#line 1743 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 191: - case_191(); +case 190: + case_190(); break; -case 192: -#line 1769 "cs-parser.jay" +case 191: +#line 1772 "cs-parser.jay" { lexer.PropertyParsing = false; } break; -case 193: - case_193(); +case 192: + case_192(); + break; +case 197: + case_197(); break; case 198: case_198(); @@ -1928,21 +1932,21 @@ case 200: case 201: case_201(); break; -case 202: - case_202(); +case 203: + case_203(); break; case 204: case_204(); break; case 205: - case_205(); - break; -case 206: -#line 1918 "cs-parser.jay" +#line 1921 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; +case 206: + case_206(); + break; case 207: case_207(); break; @@ -1953,183 +1957,183 @@ case 209: case_209(); break; case 210: - case_210(); - break; -case 211: -#line 1955 "cs-parser.jay" +#line 1958 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; -case 214: -#line 1967 "cs-parser.jay" +case 213: +#line 1970 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 215: -#line 1971 "cs-parser.jay" +case 214: +#line 1974 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 216: -#line 1978 "cs-parser.jay" +case 215: +#line 1981 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 217: -#line 1982 "cs-parser.jay" +case 216: +#line 1985 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 222: -#line 1990 "cs-parser.jay" +case 221: +#line 1993 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; -case 223: -#line 1994 "cs-parser.jay" +case 222: +#line 1997 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; -case 224: -#line 1998 "cs-parser.jay" +case 223: +#line 2001 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; -case 225: -#line 2004 "cs-parser.jay" +case 224: +#line 2007 "cs-parser.jay" { } break; -case 226: - case_226(); +case 225: + case_225(); break; -case 228: -#line 2037 "cs-parser.jay" +case 227: +#line 2040 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; -case 230: - case_230(); +case 229: + case_229(); break; -case 231: -#line 2053 "cs-parser.jay" +case 230: +#line 2056 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 232: - case_232(); +case 231: + case_231(); break; -case 234: -#line 2099 "cs-parser.jay" +case 233: +#line 2102 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 235: -#line 2100 "cs-parser.jay" +case 234: +#line 2103 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 236: -#line 2101 "cs-parser.jay" +case 235: +#line 2104 "cs-parser.jay" { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 237: -#line 2102 "cs-parser.jay" +case 236: +#line 2105 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 238: -#line 2103 "cs-parser.jay" +case 237: +#line 2106 "cs-parser.jay" { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 239: -#line 2104 "cs-parser.jay" +case 238: +#line 2107 "cs-parser.jay" { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 240: -#line 2106 "cs-parser.jay" +case 239: +#line 2109 "cs-parser.jay" { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 241: -#line 2107 "cs-parser.jay" +case 240: +#line 2110 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 242: -#line 2109 "cs-parser.jay" +case 241: +#line 2112 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 243: -#line 2110 "cs-parser.jay" +case 242: +#line 2113 "cs-parser.jay" { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 244: -#line 2111 "cs-parser.jay" +case 243: +#line 2114 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 245: -#line 2112 "cs-parser.jay" +case 244: +#line 2115 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 246: -#line 2113 "cs-parser.jay" +case 245: +#line 2116 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 247: -#line 2114 "cs-parser.jay" +case 246: +#line 2117 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 248: -#line 2115 "cs-parser.jay" +case 247: +#line 2118 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 249: -#line 2116 "cs-parser.jay" +case 248: +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 250: -#line 2117 "cs-parser.jay" +case 249: +#line 2120 "cs-parser.jay" { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 251: -#line 2118 "cs-parser.jay" +case 250: +#line 2121 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 252: -#line 2119 "cs-parser.jay" +case 251: +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 253: -#line 2120 "cs-parser.jay" +case 252: +#line 2123 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 254: -#line 2121 "cs-parser.jay" +case 253: +#line 2124 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 255: -#line 2122 "cs-parser.jay" +case 254: +#line 2125 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 256: -#line 2129 "cs-parser.jay" +case 255: +#line 2132 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 257: - case_257(); +case 256: + case_256(); break; -case 258: -#line 2148 "cs-parser.jay" +case 257: +#line 2151 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; +case 258: + case_258(); + break; case 259: case_259(); break; @@ -2148,28 +2152,28 @@ case 263: case 264: case_264(); break; -case 265: - case_265(); - break; -case 267: -#line 2251 "cs-parser.jay" +case 266: +#line 2254 "cs-parser.jay" { current_block = null; yyVal = null; } break; -case 270: -#line 2263 "cs-parser.jay" +case 269: +#line 2266 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 271: - case_271(); +case 270: + case_270(); break; -case 272: -#line 2273 "cs-parser.jay" +case 271: +#line 2276 "cs-parser.jay" { ++lexer.parsing_block; } break; +case 272: + case_272(); + break; case 273: case_273(); break; @@ -2194,51 +2198,51 @@ case 279: case 280: case_280(); break; -case 281: - case_281(); - break; -case 283: -#line 2382 "cs-parser.jay" +case 282: +#line 2385 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 284: - case_284(); +case 283: + case_283(); break; -case 287: -#line 2399 "cs-parser.jay" +case 286: +#line 2402 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 288: -#line 2403 "cs-parser.jay" +case 287: +#line 2406 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 289: - case_289(); +case 288: + case_288(); break; -case 290: -#line 2416 "cs-parser.jay" +case 289: +#line 2419 "cs-parser.jay" { ++lexer.parsing_block; } break; +case 290: + case_290(); + break; case 291: case_291(); break; case 292: - case_292(); - break; -case 293: -#line 2441 "cs-parser.jay" +#line 2444 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 295: + case_295(); + break; case 296: case_296(); break; @@ -2260,8 +2264,8 @@ case 301: case 302: case_302(); break; -case 303: - case_303(); +case 304: + case_304(); break; case 305: case_305(); @@ -2272,21 +2276,21 @@ case 306: case 307: case_307(); break; -case 308: - case_308(); +case 309: + case_309(); break; case 310: case_310(); break; -case 311: - case_311(); - break; -case 314: -#line 2604 "cs-parser.jay" +case 313: +#line 2607 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[0+yyTop])); } break; +case 315: + case_315(); + break; case 316: case_316(); break; @@ -2297,37 +2301,37 @@ case 318: case_318(); break; case 319: - case_319(); - break; -case 320: -#line 2662 "cs-parser.jay" +#line 2665 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 321: - case_321(); +case 320: + case_320(); break; -case 322: -#line 2684 "cs-parser.jay" +case 321: +#line 2687 "cs-parser.jay" { lexer.ConstraintsParsing = false; } break; -case 323: - case_323(); +case 322: + case_322(); + break; +case 324: + case_324(); break; -case 325: - case_325(); +case 326: + case_326(); break; -case 327: - case_327(); +case 328: + case_328(); break; case 329: case_329(); break; -case 330: - case_330(); +case 331: + case_331(); break; case 332: case_332(); @@ -2339,19 +2343,19 @@ case 334: case_334(); break; case 335: - case_335(); - break; -case 336: -#line 2789 "cs-parser.jay" +#line 2792 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; +case 336: + case_336(); + break; case 337: case_337(); break; -case 338: - case_338(); +case 339: + case_339(); break; case 340: case_340(); @@ -2368,8 +2372,8 @@ case 343: case 344: case_344(); break; -case 345: - case_345(); +case 346: + case_346(); break; case 347: case_347(); @@ -2383,60 +2387,60 @@ case 349: case 350: case_350(); break; -case 351: - case_351(); - break; -case 353: -#line 2910 "cs-parser.jay" +case 352: +#line 2913 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; -case 354: -#line 2917 "cs-parser.jay" +case 353: +#line 2920 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 356: - case_356(); +case 355: + case_355(); break; -case 358: - case_358(); +case 357: + case_357(); break; -case 360: - case_360(); +case 359: + case_359(); break; -case 362: -#line 2955 "cs-parser.jay" +case 361: +#line 2958 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 363: - case_363(); +case 362: + case_362(); break; -case 364: -#line 2975 "cs-parser.jay" +case 363: +#line 2978 "cs-parser.jay" { yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 365: - case_365(); +case 364: + case_364(); break; -case 366: -#line 2984 "cs-parser.jay" +case 365: +#line 2987 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 367: -#line 2988 "cs-parser.jay" +case 366: +#line 2991 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; +case 367: + case_367(); + break; case 368: case_368(); break; @@ -2447,95 +2451,95 @@ case 370: case_370(); break; case 371: - case_371(); - break; -case 372: -#line 3027 "cs-parser.jay" +#line 3030 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; -case 373: -#line 3028 "cs-parser.jay" +case 372: +#line 3031 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; -case 374: -#line 3029 "cs-parser.jay" +case 373: +#line 3032 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; -case 375: -#line 3030 "cs-parser.jay" +case 374: +#line 3033 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; -case 376: -#line 3031 "cs-parser.jay" +case 375: +#line 3034 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; -case 377: -#line 3032 "cs-parser.jay" +case 376: +#line 3035 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; -case 379: -#line 3037 "cs-parser.jay" +case 378: +#line 3040 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; -case 380: -#line 3038 "cs-parser.jay" +case 379: +#line 3041 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; -case 381: -#line 3039 "cs-parser.jay" +case 380: +#line 3042 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; -case 382: -#line 3040 "cs-parser.jay" +case 381: +#line 3043 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; -case 383: -#line 3041 "cs-parser.jay" +case 382: +#line 3044 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; -case 384: -#line 3042 "cs-parser.jay" +case 383: +#line 3045 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; -case 385: -#line 3043 "cs-parser.jay" +case 384: +#line 3046 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; -case 386: -#line 3044 "cs-parser.jay" +case 385: +#line 3047 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; -case 387: -#line 3045 "cs-parser.jay" +case 386: +#line 3048 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; +case 407: + case_407(); + break; case 408: case_408(); break; -case 409: - case_409(); - break; -case 413: -#line 3092 "cs-parser.jay" +case 412: +#line 3095 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; -case 414: -#line 3096 "cs-parser.jay" +case 413: +#line 3099 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; -case 415: -#line 3097 "cs-parser.jay" +case 414: +#line 3100 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; -case 420: - case_420(); +case 419: + case_419(); break; -case 421: -#line 3130 "cs-parser.jay" +case 420: +#line 3133 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } break; +case 421: + case_421(); + break; case 422: case_422(); break; @@ -2546,49 +2550,49 @@ case 424: case_424(); break; case 425: - case_425(); - break; -case 426: -#line 3165 "cs-parser.jay" +#line 3168 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } break; -case 427: - case_427(); +case 426: + case_426(); break; -case 428: -#line 3173 "cs-parser.jay" +case 427: +#line 3176 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } break; +case 428: + case_428(); + break; case 429: case_429(); break; case 430: - case_430(); - break; -case 431: -#line 3189 "cs-parser.jay" +#line 3192 "cs-parser.jay" { yyVal = null; } break; +case 432: + case_432(); + break; case 433: case_433(); break; case 434: - case_434(); - break; -case 435: -#line 3212 "cs-parser.jay" +#line 3215 "cs-parser.jay" { yyVal = null; } break; -case 436: -#line 3216 "cs-parser.jay" +case 435: +#line 3219 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 436: + case_436(); + break; case 437: case_437(); break; @@ -2599,27 +2603,27 @@ case 439: case_439(); break; case 440: - case_440(); - break; -case 441: -#line 3249 "cs-parser.jay" +#line 3252 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } break; +case 441: + case_441(); + break; case 442: case_442(); break; case 443: case_443(); break; -case 444: - case_444(); - break; -case 447: -#line 3277 "cs-parser.jay" +case 446: +#line 3280 "cs-parser.jay" { yyVal = null; } break; +case 448: + case_448(); + break; case 449: case_449(); break; @@ -2633,14 +2637,14 @@ case 452: case_452(); break; case 453: - case_453(); - break; -case 454: -#line 3329 "cs-parser.jay" +#line 3332 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; +case 457: + case_457(); + break; case 458: case_458(); break; @@ -2650,24 +2654,24 @@ case 459: case 460: case_460(); break; -case 461: - case_461(); +case 462: + case_462(); break; case 463: - case_463(); - break; -case 464: -#line 3374 "cs-parser.jay" +#line 3377 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } break; -case 465: -#line 3378 "cs-parser.jay" +case 464: +#line 3381 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } break; +case 465: + case_465(); + break; case 466: case_466(); break; @@ -2681,38 +2685,38 @@ case 469: case_469(); break; case 470: - case_470(); - break; -case 471: -#line 3424 "cs-parser.jay" +#line 3427 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 473: -#line 3432 "cs-parser.jay" +case 472: +#line 3435 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } break; +case 473: + case_473(); + break; case 474: case_474(); break; case 475: - case_475(); - break; -case 476: -#line 3452 "cs-parser.jay" +#line 3455 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 477: -#line 3459 "cs-parser.jay" +case 476: +#line 3462 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; +case 477: + case_477(); + break; case 478: case_478(); break; @@ -2732,24 +2736,24 @@ case 483: case_483(); break; case 484: - case_484(); - break; -case 485: -#line 3525 "cs-parser.jay" +#line 3528 "cs-parser.jay" { ++lexer.parsing_type; } break; +case 485: + case_485(); + break; case 486: case_486(); break; -case 487: - case_487(); - break; -case 490: -#line 3552 "cs-parser.jay" +case 489: +#line 3555 "cs-parser.jay" { yyVal = null; } break; +case 491: + case_491(); + break; case 492: case_492(); break; @@ -2765,8 +2769,8 @@ case 495: case 496: case_496(); break; -case 497: - case_497(); +case 500: + case_500(); break; case 501: case_501(); @@ -2775,32 +2779,32 @@ case 502: case_502(); break; case 503: - case_503(); - break; -case 504: -#line 3630 "cs-parser.jay" +#line 3633 "cs-parser.jay" { yyVal = 2; } break; -case 505: -#line 3634 "cs-parser.jay" +case 504: +#line 3637 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; -case 506: -#line 3641 "cs-parser.jay" +case 505: +#line 3644 "cs-parser.jay" { yyVal = null; } break; -case 507: -#line 3645 "cs-parser.jay" +case 506: +#line 3648 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 507: + case_507(); + break; case 508: case_508(); break; @@ -2811,16 +2815,16 @@ case 510: case_510(); break; case 511: - case_511(); - break; -case 512: -#line 3689 "cs-parser.jay" +#line 3692 "cs-parser.jay" { lexer.TypeOfParsing = true; } break; -case 513: - case_513(); +case 512: + case_512(); + break; +case 515: + case_515(); break; case 516: case_516(); @@ -2856,136 +2860,136 @@ case 526: case_526(); break; case 527: - case_527(); - break; -case 528: -#line 3809 "cs-parser.jay" +#line 3812 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } break; -case 529: - case_529(); +case 528: + case_528(); break; -case 530: -#line 3822 "cs-parser.jay" +case 529: +#line 3825 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; -case 531: - case_531(); +case 530: + case_530(); break; -case 532: -#line 3839 "cs-parser.jay" +case 531: +#line 3842 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; -case 534: -#line 3847 "cs-parser.jay" +case 533: +#line 3850 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 534: + case_534(); + break; case 535: case_535(); break; -case 536: - case_536(); - break; -case 538: -#line 3873 "cs-parser.jay" +case 537: +#line 3876 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 539: -#line 3877 "cs-parser.jay" +case 538: +#line 3880 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 539: + case_539(); + break; case 540: case_540(); break; -case 541: - case_541(); - break; -case 543: -#line 3905 "cs-parser.jay" +case 542: +#line 3908 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 544: -#line 3909 "cs-parser.jay" +case 543: +#line 3912 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 545: -#line 3913 "cs-parser.jay" +case 544: +#line 3916 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 546: -#line 3917 "cs-parser.jay" +case 545: +#line 3920 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 547: -#line 3921 "cs-parser.jay" +case 546: +#line 3924 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 548: -#line 3925 "cs-parser.jay" +case 547: +#line 3928 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 549: + case_549(); + break; case 550: case_550(); break; case 551: case_551(); break; -case 552: - case_552(); +case 553: + case_553(); break; case 554: - case_554(); - break; -case 555: -#line 3957 "cs-parser.jay" +#line 3960 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 556: - case_556(); +case 555: + case_555(); break; -case 557: -#line 3966 "cs-parser.jay" +case 556: +#line 3969 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 558: -#line 3970 "cs-parser.jay" +case 557: +#line 3973 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 559: + case_559(); + break; case 560: case_560(); break; -case 561: - case_561(); +case 562: + case_562(); break; case 563: case_563(); @@ -2996,42 +3000,42 @@ case 564: case 565: case_565(); break; -case 566: - case_566(); +case 567: + case_567(); break; case 568: case_568(); break; -case 569: - case_569(); +case 570: + case_570(); break; -case 571: - case_571(); +case 572: + case_572(); break; -case 573: - case_573(); +case 574: + case_574(); break; -case 575: - case_575(); +case 576: + case_576(); break; -case 577: - case_577(); +case 578: + case_578(); break; -case 579: - case_579(); +case 580: + case_580(); break; -case 581: - case_581(); +case 582: + case_582(); break; case 583: - case_583(); - break; -case 584: -#line 4094 "cs-parser.jay" +#line 4097 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 584: + case_584(); + break; case 585: case_585(); break; @@ -3075,23 +3079,23 @@ case 598: case_598(); break; case 599: - case_599(); - break; -case 600: -#line 4191 "cs-parser.jay" +#line 4194 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; -case 601: - case_601(); +case 600: + case_600(); break; -case 604: -#line 4207 "cs-parser.jay" +case 603: +#line 4210 "cs-parser.jay" { start_block (lexer.Location); } break; -case 605: - case_605(); +case 604: + case_604(); + break; +case 606: + case_606(); break; case 607: case_607(); @@ -3106,59 +3110,59 @@ case 610: case_610(); break; case 611: - case_611(); - break; -case 612: -#line 4252 "cs-parser.jay" +#line 4255 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 612: + case_612(); + break; case 613: case_613(); break; case 614: - case_614(); - break; -case 615: -#line 4266 "cs-parser.jay" +#line 4269 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 615: + case_615(); + break; case 616: case_616(); break; -case 617: - case_617(); - break; -case 623: -#line 4291 "cs-parser.jay" +case 622: +#line 4294 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } break; +case 623: + case_623(); + break; case 624: case_624(); break; case 625: case_625(); break; -case 626: - case_626(); - break; -case 628: -#line 4320 "cs-parser.jay" +case 627: +#line 4323 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; -case 629: -#line 4333 "cs-parser.jay" +case 628: +#line 4336 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; +case 629: + case_629(); + break; case 630: case_630(); break; @@ -3169,25 +3173,25 @@ case 632: case_632(); break; case 633: - case_633(); +#line 4379 "cs-parser.jay" + { yyVal = null; } break; case 634: -#line 4376 "cs-parser.jay" - { yyVal = null; } +#line 4381 "cs-parser.jay" + { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 635: -#line 4378 "cs-parser.jay" - { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } + case_635(); break; case 636: - case_636(); - break; -case 637: -#line 4391 "cs-parser.jay" +#line 4394 "cs-parser.jay" { lexer.parsing_modifiers = false; } break; +case 638: + case_638(); + break; case 639: case_639(); break; @@ -3233,18 +3237,18 @@ case 652: case 653: case_653(); break; -case 654: - case_654(); - break; -case 656: - case_656(); +case 655: + case_655(); break; -case 658: -#line 4511 "cs-parser.jay" +case 657: +#line 4514 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 658: + case_658(); + break; case 659: case_659(); break; @@ -3267,26 +3271,26 @@ case 665: case_665(); break; case 666: - case_666(); - break; -case 667: -#line 4602 "cs-parser.jay" +#line 4605 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; -case 668: -#line 4606 "cs-parser.jay" +case 667: +#line 4609 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; -case 669: -#line 4613 "cs-parser.jay" +case 668: +#line 4616 "cs-parser.jay" { yyVal = Variance.None; } break; +case 669: + case_669(); + break; case 670: case_670(); break; @@ -3297,14 +3301,14 @@ case 672: case_672(); break; case 673: - case_673(); - break; -case 674: -#line 4658 "cs-parser.jay" +#line 4661 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 674: + case_674(); + break; case 675: case_675(); break; @@ -3314,39 +3318,39 @@ case 676: case 677: case_677(); break; -case 678: - case_678(); - break; -case 683: -#line 4702 "cs-parser.jay" +case 682: +#line 4705 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 684: -#line 4706 "cs-parser.jay" +case 683: +#line 4709 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; +case 685: + case_685(); + break; case 686: case_686(); break; -case 687: - case_687(); - break; -case 690: -#line 4740 "cs-parser.jay" +case 689: +#line 4743 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 691: -#line 4744 "cs-parser.jay" +case 690: +#line 4747 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; +case 719: + case_719(); + break; case 720: case_720(); break; @@ -3359,8 +3363,8 @@ case 722: case 723: case_723(); break; -case 724: - case_724(); +case 726: + case_726(); break; case 727: case_727(); @@ -3372,32 +3376,32 @@ case 729: case_729(); break; case 730: - case_730(); - break; -case 731: -#line 4888 "cs-parser.jay" +#line 4891 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 732: -#line 4892 "cs-parser.jay" +case 731: +#line 4895 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 733: - case_733(); +case 732: + case_732(); + break; +case 734: + case_734(); break; case 735: - case_735(); - break; -case 736: -#line 4913 "cs-parser.jay" +#line 4916 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } break; +case 737: + case_737(); + break; case 738: case_738(); break; @@ -3410,8 +3414,8 @@ case 740: case 741: case_741(); break; -case 742: - case_742(); +case 743: + case_743(); break; case 744: case_744(); @@ -3419,29 +3423,29 @@ case 744: case 745: case_745(); break; -case 746: - case_746(); +case 749: + case_749(); break; -case 750: - case_750(); +case 752: + case_752(); break; case 753: case_753(); break; case 754: - case_754(); - break; -case 755: -#line 5038 "cs-parser.jay" +#line 5041 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } break; -case 756: - case_756(); +case 755: + case_755(); + break; +case 760: + case_760(); break; -case 761: - case_761(); +case 762: + case_762(); break; case 763: case_763(); @@ -3450,19 +3454,19 @@ case 764: case_764(); break; case 765: - case_765(); +#line 5091 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } break; case 766: -#line 5088 "cs-parser.jay" +#line 5095 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 767: -#line 5092 "cs-parser.jay" +#line 5096 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 768: -#line 5093 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_768(); break; case 769: case_769(); @@ -3470,8 +3474,8 @@ case 769: case 770: case_770(); break; -case 771: - case_771(); +case 773: + case_773(); break; case 774: case_774(); @@ -3480,14 +3484,14 @@ case 775: case_775(); break; case 776: - case_776(); - break; -case 777: -#line 5167 "cs-parser.jay" +#line 5171 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } break; +case 777: + case_777(); + break; case 778: case_778(); break; @@ -3504,13 +3508,13 @@ case 783: case_783(); break; case 784: -#line 5211 "cs-parser.jay" +#line 5222 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 785: -#line 5215 "cs-parser.jay" +#line 5226 "cs-parser.jay" { yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } @@ -3525,7 +3529,7 @@ case 788: case_788(); break; case 789: -#line 5244 "cs-parser.jay" +#line 5255 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3546,56 +3550,56 @@ case 798: case_798(); break; case 799: -#line 5298 "cs-parser.jay" + case_799(); + break; +case 800: +#line 5315 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 800: -#line 5306 "cs-parser.jay" +case 801: +#line 5323 "cs-parser.jay" { ((For) yyVals[-2+yyTop]).Initializer = (Statement) yyVals[-1+yyTop]; } break; -case 801: -#line 5310 "cs-parser.jay" +case 802: +#line 5327 "cs-parser.jay" { ((For) yyVals[-5+yyTop]).Condition = (BooleanExpression) yyVals[-1+yyTop]; } break; -case 802: -#line 5314 "cs-parser.jay" +case 803: +#line 5331 "cs-parser.jay" { ((For) yyVals[-8+yyTop]).Iterator = (Statement) yyVals[-1+yyTop]; } break; -case 803: - case_803(); - break; case 804: case_804(); break; case 805: -#line 5334 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } + case_805(); break; -case 807: - case_807(); +case 806: +#line 5351 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; case 808: case_808(); break; -case 810: -#line 5355 "cs-parser.jay" +case 809: + case_809(); + break; +case 811: +#line 5372 "cs-parser.jay" { yyVal = null; } break; -case 812: -#line 5360 "cs-parser.jay" +case 813: +#line 5377 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; -case 816: - case_816(); - break; case 817: case_817(); break; @@ -3611,11 +3615,11 @@ case 820: case 821: case_821(); break; -case 828: - case_828(); +case 822: + case_822(); break; -case 829: - case_829(); +case 823: + case_823(); break; case 830: case_830(); @@ -3638,17 +3642,17 @@ case 835: case 836: case_836(); break; -case 839: -#line 5536 "cs-parser.jay" - { - yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); - } +case 837: + case_837(); break; -case 840: - case_840(); +case 838: + case_838(); break; case 841: - case_841(); +#line 5578 "cs-parser.jay" + { + yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); + } break; case 842: case_842(); @@ -3659,50 +3663,50 @@ case 843: case 844: case_844(); break; -case 847: -#line 5589 "cs-parser.jay" - { - yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } +case 845: + case_845(); break; -case 848: - case_848(); +case 846: + case_846(); break; case 849: -#line 5608 "cs-parser.jay" +#line 5627 "cs-parser.jay" { - yyVal = yyVals[-1+yyTop]; + yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 850: case_850(); break; case 851: -#line 5626 "cs-parser.jay" +#line 5646 "cs-parser.jay" { - yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = yyVals[-1+yyTop]; } break; case 852: -#line 5633 "cs-parser.jay" - { - yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } + case_852(); break; case 853: - case_853(); +#line 5664 "cs-parser.jay" + { + yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 854: -#line 5643 "cs-parser.jay" +#line 5671 "cs-parser.jay" { - yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 855: case_855(); break; case 856: - case_856(); +#line 5681 "cs-parser.jay" + { + yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + } break; case 857: case_857(); @@ -3722,26 +3726,26 @@ case 861: case 862: case_862(); break; +case 863: + case_863(); + break; case 864: case_864(); break; case 865: -#line 5735 "cs-parser.jay" - { - Error_MissingInitializer (lexer.Location); - } + case_865(); break; case 866: case_866(); break; -case 867: - case_867(); - break; case 868: case_868(); break; case 869: - case_869(); +#line 5786 "cs-parser.jay" + { + Error_MissingInitializer (lexer.Location); + } break; case 870: case_870(); @@ -3759,76 +3763,76 @@ case 874: case_874(); break; case 875: -#line 5836 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_875(); break; case 876: case_876(); break; case 877: -#line 5851 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_877(); break; case 878: case_878(); break; case 879: - case_879(); +#line 5887 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; -case 881: - case_881(); +case 880: + case_880(); break; -case 882: -#line 5896 "cs-parser.jay" +case 881: +#line 5902 "cs-parser.jay" { - current_block = new Linq.QueryBlock (current_block, lexer.Location); + current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; +case 882: + case_882(); + break; case 883: case_883(); break; -case 884: - case_884(); - break; case 885: case_885(); break; case 886: - case_886(); - break; -case 890: - case_890(); - break; -case 896: -#line 5955 "cs-parser.jay" +#line 5947 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 897: - case_897(); +case 887: + case_887(); break; -case 898: -#line 5974 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } +case 888: + case_888(); + break; +case 889: + case_889(); + break; +case 890: + case_890(); break; -case 899: - case_899(); +case 894: + case_894(); break; case 900: - case_900(); +#line 6006 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 901: case_901(); break; case 902: - case_902(); +#line 6025 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 903: case_903(); @@ -3845,143 +3849,155 @@ case 906: case 907: case_907(); break; +case 908: + case_908(); + break; case 909: -#line 6118 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_909(); break; case 910: -#line 6125 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_910(); break; case 911: case_911(); break; case 913: - case_913(); +#line 6169 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 914: - case_914(); +#line 6176 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; -case 916: - case_916(); +case 915: + case_915(); break; case 917: case_917(); break; case 918: -#line 6171 "cs-parser.jay" - { - yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } - break; -case 919: - case_919(); + case_918(); break; case 920: case_920(); break; case 921: -#line 6188 "cs-parser.jay" - { - yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } + case_921(); break; case 922: - case_922(); +#line 6222 "cs-parser.jay" + { + yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } break; case 923: case_923(); break; +case 924: + case_924(); + break; case 925: - case_925(); +#line 6239 "cs-parser.jay" + { + yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } break; case 926: case_926(); break; +case 927: + case_927(); + break; case 929: case_929(); break; case 930: case_930(); break; -case 938: -#line 6312 "cs-parser.jay" +case 933: + case_933(); + break; +case 934: + case_934(); + break; +case 942: +#line 6363 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; -case 939: -#line 6319 "cs-parser.jay" +case 943: +#line 6370 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } break; -case 940: - case_940(); +case 944: + case_944(); break; -case 941: - case_941(); +case 945: + case_945(); break; -case 942: -#line 6336 "cs-parser.jay" +case 946: +#line 6387 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; -case 943: -#line 6340 "cs-parser.jay" +case 947: +#line 6391 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 944: - case_944(); +case 948: + case_948(); break; -case 945: - case_945(); +case 949: + case_949(); break; -case 946: - case_946(); +case 950: + case_950(); break; -case 947: - case_947(); +case 951: + case_951(); break; -case 949: -#line 6376 "cs-parser.jay" +case 953: +#line 6427 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; -case 951: -#line 6384 "cs-parser.jay" +case 955: +#line 6435 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 952: -#line 6388 "cs-parser.jay" +case 956: +#line 6439 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; -case 953: -#line 6395 "cs-parser.jay" +case 957: +#line 6446 "cs-parser.jay" { yyVal = new List (0); } break; -case 955: - case_955(); +case 959: + case_959(); break; -case 956: - case_956(); +case 960: + case_960(); break; -case 957: - case_957(); +case 961: + case_961(); break; #line default } @@ -4042,33 +4058,42 @@ void case_13() { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; - if (s != "alias"){ + if (s != "alias") { syntax_error (lt.Location, "`alias' expected"); - } else if (lang_version == LanguageVersion.ISO_1) { - FeatureIsNotAvailable (lt.Location, "external alias"); } else { - lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; - current_namespace.AddUsingExternalAlias (lt.Value, lt.Location, report); - ubag.AddExternAlias (GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop]), lt, GetLocation (yyVals[0+yyTop])); + if (lang_version == LanguageVersion.ISO_1) + FeatureIsNotAvailable (lt.Location, "external alias"); + + lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; + if (lt.Value == QualifiedAliasMember.GlobalAlias) { + RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location); + } + + var na = new UsingExternAlias (new MemberName (lt.Value, lt.Location), GetLocation (yyVals[-3+yyTop])); + current_namespace.AddUsing (na); + + lbag.AddLocation (na, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } } void case_17() -#line 454 "cs-parser.jay" +#line 461 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_18() -#line 459 "cs-parser.jay" +#line 469 "cs-parser.jay" { - if (doc_support) - Lexer.doc_state = XmlCommentState.Allowed; + var un = new UsingNamespace ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); + current_namespace.AddUsing (un); + + lbag.AddLocation (un, GetLocation (yyVals[0+yyTop])); } void case_19() -#line 467 "cs-parser.jay" +#line 476 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -4076,26 +4101,21 @@ void case_19() "An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead"); } - current_namespace.AddUsingAlias (lt.Value, (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); - ubag.AddUsingAlias (GetLocation (yyVals[-4+yyTop]), lt, GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); - } + var un = new UsingAliasNamespace (new MemberName (lt.Value, lt.Location), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); + current_namespace.AddUsing (un); + + lbag.AddLocation (un, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); + } void case_20() -#line 478 "cs-parser.jay" +#line 489 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; - } + } void case_21() -#line 486 "cs-parser.jay" -{ - current_namespace.AddUsing ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); - ubag.AddUsing (GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); - } - -void case_22() -#line 499 "cs-parser.jay" +#line 502 "cs-parser.jay" { Attributes attrs = (Attributes) yyVals[-2+yyTop]; MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4127,16 +4147,16 @@ void case_22() ubag.DeclareNamespace (GetLocation (yyVals[-1+yyTop]), name); } -void case_23() -#line 530 "cs-parser.jay" +void case_22() +#line 533 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; ubag.OpenNamespace (GetLocation (yyVals[0+yyTop])); } -void case_24() -#line 536 "cs-parser.jay" +void case_23() +#line 539 "cs-parser.jay" { current_namespace = current_namespace.Parent; current_class = current_namespace.SlaveDeclSpace; @@ -4148,15 +4168,15 @@ void case_24() ubag.EndNamespace (); } -void case_25() -#line 550 "cs-parser.jay" +void case_24() +#line 553 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName (lt.Value, lt.Location); } -void case_26() -#line 555 "cs-parser.jay" +void case_25() +#line 558 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location) { @@ -4164,15 +4184,15 @@ void case_26() }; } -void case_27() -#line 562 "cs-parser.jay" +void case_26() +#line 565 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new MemberName ("", lexer.Location); } -void case_32() -#line 580 "cs-parser.jay" +void case_31() +#line 583 "cs-parser.jay" { MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4182,8 +4202,8 @@ void case_32() yyVal = name; } -void case_41() -#line 612 "cs-parser.jay" +void case_40() +#line 615 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { TypeContainer ds = (TypeContainer)yyVals[0+yyTop]; @@ -4203,8 +4223,8 @@ void case_41() current_namespace.DeclarationFound = true; } -void case_50() -#line 662 "cs-parser.jay" +void case_49() +#line 665 "cs-parser.jay" { var sect = (List) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4216,8 +4236,8 @@ void case_50() } } -void case_51() -#line 673 "cs-parser.jay" +void case_50() +#line 676 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List) yyVals[0+yyTop]; @@ -4231,22 +4251,22 @@ void case_51() yyVal = attrs; } -void case_52() -#line 689 "cs-parser.jay" +void case_51() +#line 692 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } -void case_53() -#line 694 "cs-parser.jay" +void case_52() +#line 697 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } -void case_54() -#line 702 "cs-parser.jay" +void case_53() +#line 705 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4254,8 +4274,8 @@ void case_54() } } -void case_55() -#line 709 "cs-parser.jay" +void case_54() +#line 712 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4272,8 +4292,8 @@ void case_55() } } -void case_56() -#line 725 "cs-parser.jay" +void case_55() +#line 728 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; if (yyVals[-1+yyTop] != null) { @@ -4283,16 +4303,16 @@ void case_56() } } -void case_57() -#line 737 "cs-parser.jay" +void case_56() +#line 740 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); savedCloseLocation = GetLocation (yyVals[0+yyTop]); } -void case_60() -#line 745 "cs-parser.jay" +void case_59() +#line 748 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4303,8 +4323,8 @@ void case_60() } } -void case_62() -#line 762 "cs-parser.jay" +void case_61() +#line 765 "cs-parser.jay" { var attrs = (List) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4313,8 +4333,8 @@ void case_62() yyVal = attrs; } -void case_64() -#line 777 "cs-parser.jay" +void case_63() +#line 780 "cs-parser.jay" { --lexer.parsing_block; MemberName mname = (MemberName) yyVals[-2+yyTop]; @@ -4334,32 +4354,32 @@ void case_64() } } -void case_67() -#line 804 "cs-parser.jay" +void case_66() +#line 807 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); yyVal = yyVals[-1+yyTop]; } -void case_69() -#line 815 "cs-parser.jay" +void case_68() +#line 818 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { a, null }; } -void case_70() -#line 821 "cs-parser.jay" +void case_69() +#line 824 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { null, a }; } -void case_71() -#line 827 "cs-parser.jay" +void case_70() +#line 830 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4375,8 +4395,8 @@ void case_71() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_72() -#line 842 "cs-parser.jay" +void case_71() +#line 845 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4387,8 +4407,8 @@ void case_72() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_76() -#line 867 "cs-parser.jay" +void case_75() +#line 870 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4396,8 +4416,8 @@ void case_76() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_77() -#line 877 "cs-parser.jay" +void case_76() +#line 880 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4410,8 +4430,8 @@ void case_77() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_95() -#line 930 "cs-parser.jay" +void case_94() +#line 933 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4419,16 +4439,16 @@ void case_95() lexer.parsing_generic_declaration = false; } -void case_97() -#line 947 "cs-parser.jay" +void case_96() +#line 950 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Struct (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_98() -#line 954 "cs-parser.jay" +void case_97() +#line 957 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4441,15 +4461,15 @@ void case_98() lexer.parsing_modifiers = true; } -void case_99() -#line 966 "cs-parser.jay" +void case_98() +#line 969 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_100() -#line 971 "cs-parser.jay" +void case_99() +#line 974 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); --lexer.parsing_declaration; @@ -4457,16 +4477,16 @@ void case_100() Lexer.doc_state = XmlCommentState.Allowed; } -void case_101() -#line 978 "cs-parser.jay" +void case_100() +#line 981 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[-1+yyTop]); yyVal = pop_current_class (); } -void case_103() -#line 993 "cs-parser.jay" +void case_102() +#line 996 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4480,8 +4500,8 @@ void case_103() yyVal = current_field; } -void case_104() -#line 1006 "cs-parser.jay" +void case_103() +#line 1009 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4493,31 +4513,31 @@ void case_104() current_field = null; } -void case_109() -#line 1036 "cs-parser.jay" +void case_108() +#line 1039 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_111() -#line 1049 "cs-parser.jay" +void case_110() +#line 1052 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_112() -#line 1055 "cs-parser.jay" +void case_111() +#line 1058 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } -void case_115() -#line 1070 "cs-parser.jay" +void case_114() +#line 1073 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4531,8 +4551,8 @@ void case_115() yyVal = current_field; } -void case_116() -#line 1085 "cs-parser.jay" +void case_115() +#line 1088 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4544,8 +4564,8 @@ void case_116() current_field = null; } -void case_117() -#line 1098 "cs-parser.jay" +void case_116() +#line 1101 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4557,8 +4577,8 @@ void case_117() current_container.AddField (current_field); } -void case_118() -#line 1109 "cs-parser.jay" +void case_117() +#line 1112 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4571,16 +4591,16 @@ void case_118() current_field = null; } -void case_121() -#line 1132 "cs-parser.jay" +void case_120() +#line 1135 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; start_block (GetLocation (yyVals[0+yyTop])); } -void case_122() -#line 1138 "cs-parser.jay" +void case_121() +#line 1141 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4589,16 +4609,16 @@ void case_122() current_local_parameters = null; } -void case_127() -#line 1165 "cs-parser.jay" +void case_126() +#line 1168 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_129() -#line 1175 "cs-parser.jay" +void case_128() +#line 1178 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4606,39 +4626,39 @@ void case_129() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_134() -#line 1201 "cs-parser.jay" +void case_133() +#line 1204 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_136() -#line 1214 "cs-parser.jay" +void case_135() +#line 1217 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_137() -#line 1220 "cs-parser.jay" +void case_136() +#line 1223 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } -void case_140() -#line 1230 "cs-parser.jay" +void case_139() +#line 1233 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); yyVal = null; } -void case_141() -#line 1239 "cs-parser.jay" +void case_140() +#line 1242 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4649,8 +4669,8 @@ void case_141() current_container.AddMethod (m); } -void case_142() -#line 1249 "cs-parser.jay" +void case_141() +#line 1252 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4677,8 +4697,8 @@ void case_142() Lexer.doc_state = XmlCommentState.Allowed; } -void case_145() -#line 1289 "cs-parser.jay" +void case_144() +#line 1292 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4706,15 +4726,15 @@ void case_145() yyVal = method; } -void case_147() -#line 1324 "cs-parser.jay" +void case_146() +#line 1327 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } -void case_149() -#line 1333 "cs-parser.jay" +void case_148() +#line 1336 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4749,8 +4769,8 @@ void case_149() yyVal = method; } -void case_150() -#line 1370 "cs-parser.jay" +void case_149() +#line 1373 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4767,16 +4787,16 @@ void case_150() yyVal = method; } -void case_155() -#line 1399 "cs-parser.jay" +void case_154() +#line 1402 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_156() -#line 1405 "cs-parser.jay" +void case_155() +#line 1408 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); @@ -4786,8 +4806,8 @@ void case_156() lbag.AddLocation (yyVal, parameterListCommas); } -void case_157() -#line 1414 "cs-parser.jay" +void case_156() +#line 1417 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); @@ -4797,8 +4817,8 @@ void case_157() lbag.AddLocation (yyVal, parameterListCommas); } -void case_158() -#line 1423 "cs-parser.jay" +void case_157() +#line 1426 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4807,8 +4827,8 @@ void case_158() lbag.AddLocation (yyVal, parameterListCommas); } -void case_159() -#line 1431 "cs-parser.jay" +void case_158() +#line 1434 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4822,8 +4842,8 @@ void case_159() lbag.AddLocation (yyVal, parameterListCommas); } -void case_160() -#line 1444 "cs-parser.jay" +void case_159() +#line 1447 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4831,8 +4851,8 @@ void case_160() lbag.AddLocation (yyVal, parameterListCommas); } -void case_161() -#line 1451 "cs-parser.jay" +void case_160() +#line 1454 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4845,15 +4865,15 @@ void case_161() lbag.AddLocation (yyVal, parameterListCommas); } -void case_164() -#line 1471 "cs-parser.jay" +void case_163() +#line 1474 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } -void case_165() -#line 1479 "cs-parser.jay" +void case_164() +#line 1482 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4863,8 +4883,8 @@ void case_165() yyVal = parameters_bucket; } -void case_166() -#line 1488 "cs-parser.jay" +void case_165() +#line 1491 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4883,16 +4903,16 @@ void case_166() yyVal = yyVals[-2+yyTop]; } -void case_167() -#line 1512 "cs-parser.jay" +void case_166() +#line 1515 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_168() -#line 1521 "cs-parser.jay" +void case_167() +#line 1524 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4900,8 +4920,8 @@ void case_168() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_169() -#line 1531 "cs-parser.jay" +void case_168() +#line 1534 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4909,8 +4929,8 @@ void case_169() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_171() -#line 1546 "cs-parser.jay" +void case_170() +#line 1549 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4948,8 +4968,8 @@ void case_171() ((Parameter) yyVal).DefaultValue = new DefaultParameterValueExpression ((Expression) yyVals[0+yyTop]); } -void case_175() -#line 1595 "cs-parser.jay" +void case_174() +#line 1598 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4971,8 +4991,8 @@ void case_175() yyVal = mod; } -void case_176() -#line 1619 "cs-parser.jay" +void case_175() +#line 1622 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -4980,8 +5000,8 @@ void case_176() yyVal = Parameter.Modifier.REF; } -void case_177() -#line 1626 "cs-parser.jay" +void case_176() +#line 1629 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -4989,8 +5009,8 @@ void case_177() yyVal = Parameter.Modifier.OUT; } -void case_178() -#line 1633 "cs-parser.jay" +void case_177() +#line 1636 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -5001,16 +5021,16 @@ void case_178() yyVal = Parameter.Modifier.This; } -void case_179() -#line 1646 "cs-parser.jay" +void case_178() +#line 1649 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ParamsParameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, savedLocation); } -void case_180() -#line 1652 "cs-parser.jay" +void case_179() +#line 1655 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -5019,23 +5039,23 @@ void case_180() lbag.AddLocation (yyVal, savedLocation); } -void case_181() -#line 1660 "cs-parser.jay" +void case_180() +#line 1663 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_182() -#line 1668 "cs-parser.jay" +void case_181() +#line 1671 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Params) == 0) report.Error (1670, (GetLocation (yyVals[0+yyTop])), "The `params' modifier is not allowed in current context"); savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_183() -#line 1674 "cs-parser.jay" +void case_182() +#line 1677 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -5046,22 +5066,22 @@ void case_183() savedLocation = GetLocation (yyVals[-1+yyTop]); } -void case_185() -#line 1691 "cs-parser.jay" +void case_184() +#line 1694 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Arglist) == 0) report.Error (1669, GetLocation (yyVals[0+yyTop]), "__arglist is not valid in this context"); } -void case_186() -#line 1702 "cs-parser.jay" +void case_185() +#line 1705 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } -void case_187() -#line 1707 "cs-parser.jay" +void case_186() +#line 1710 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_class, type, (Modifiers) yyVals[-4+yyTop], @@ -5076,8 +5096,8 @@ void case_187() lexer.PropertyParsing = true; } -void case_188() -#line 1721 "cs-parser.jay" +void case_187() +#line 1724 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5085,15 +5105,15 @@ void case_188() current_property.DocComment = ConsumeStoredComment (); } -void case_189() -#line 1728 "cs-parser.jay" +void case_188() +#line 1731 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } -void case_191() -#line 1742 "cs-parser.jay" +void case_190() +#line 1745 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5119,8 +5139,8 @@ void case_191() lexer.PropertyParsing = true; } -void case_193() -#line 1771 "cs-parser.jay" +void case_192() +#line 1774 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5132,8 +5152,8 @@ void case_193() current_property = null; } -void case_198() -#line 1790 "cs-parser.jay" +void case_197() +#line 1793 "cs-parser.jay" { if (yyToken == Token.CLOSE_BRACE) { report.Error (548, lexer.Location, "`{0}': property or indexer must have at least one accessor", current_property.GetSignatureForError ()); @@ -5145,8 +5165,8 @@ void case_198() } } -void case_199() -#line 1804 "cs-parser.jay" +void case_198() +#line 1807 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5168,8 +5188,8 @@ void case_199() lexer.PropertyParsing = false; } -void case_200() -#line 1825 "cs-parser.jay" +void case_199() +#line 1828 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5191,8 +5211,8 @@ void case_200() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_201() -#line 1849 "cs-parser.jay" +void case_200() +#line 1852 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5219,8 +5239,8 @@ void case_201() lexer.PropertyParsing = false; } -void case_202() -#line 1875 "cs-parser.jay" +void case_201() +#line 1878 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5242,30 +5262,30 @@ void case_202() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_204() -#line 1900 "cs-parser.jay" +void case_203() +#line 1903 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } -void case_205() -#line 1905 "cs-parser.jay" +void case_204() +#line 1908 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } -void case_207() -#line 1920 "cs-parser.jay" +void case_206() +#line 1923 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Interface (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_208() -#line 1927 "cs-parser.jay" +void case_207() +#line 1930 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5279,16 +5299,16 @@ void case_208() lexer.parsing_modifiers = true; } -void case_209() -#line 1940 "cs-parser.jay" +void case_208() +#line 1943 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_210() -#line 1946 "cs-parser.jay" +void case_209() +#line 1949 "cs-parser.jay" { if (yyVals[0+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[0+yyTop]); @@ -5296,8 +5316,8 @@ void case_210() yyVal = pop_current_class (); } -void case_226() -#line 2006 "cs-parser.jay" +void case_225() +#line 2009 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5326,15 +5346,15 @@ void case_226() current_local_parameters = null; } -void case_230() -#line 2043 "cs-parser.jay" +void case_229() +#line 2046 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_232() -#line 2055 "cs-parser.jay" +void case_231() +#line 2058 "cs-parser.jay" { valid_param_mod = 0; @@ -5375,8 +5395,8 @@ void case_232() lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), savedOperatorLocation, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_257() -#line 2131 "cs-parser.jay" +void case_256() +#line 2134 "cs-parser.jay" { valid_param_mod = 0; @@ -5392,8 +5412,8 @@ void case_257() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_259() -#line 2150 "cs-parser.jay" +void case_258() +#line 2153 "cs-parser.jay" { valid_param_mod = 0; @@ -5409,24 +5429,24 @@ void case_259() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_260() -#line 2165 "cs-parser.jay" +void case_259() +#line 2168 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Implicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_261() -#line 2171 "cs-parser.jay" +void case_260() +#line 2174 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Explicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_262() -#line 2181 "cs-parser.jay" +void case_261() +#line 2184 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5441,8 +5461,8 @@ void case_262() Lexer.doc_state = XmlCommentState.Allowed; } -void case_263() -#line 2200 "cs-parser.jay" +void case_262() +#line 2203 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5452,8 +5472,8 @@ void case_263() valid_param_mod = ParameterModifierType.All; } -void case_264() -#line 2209 "cs-parser.jay" +void case_263() +#line 2212 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5465,8 +5485,8 @@ void case_264() start_block (lexer.Location); } -void case_265() -#line 2220 "cs-parser.jay" +void case_264() +#line 2223 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5495,31 +5515,31 @@ void case_265() yyVal = c; } -void case_271() -#line 2265 "cs-parser.jay" +void case_270() +#line 2268 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_273() -#line 2275 "cs-parser.jay" +void case_272() +#line 2278 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_274() -#line 2281 "cs-parser.jay" +void case_273() +#line 2284 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_275() -#line 2289 "cs-parser.jay" +void case_274() +#line 2292 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5529,8 +5549,8 @@ void case_275() current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; } -void case_276() -#line 2298 "cs-parser.jay" +void case_275() +#line 2301 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5551,8 +5571,8 @@ void case_276() current_local_parameters = null; } -void case_277() -#line 2323 "cs-parser.jay" +void case_276() +#line 2326 "cs-parser.jay" { current_event_field = new EventField (current_class, (FullNamedExpression) yyVals[-1+yyTop], (Modifiers) yyVals[-3+yyTop], (MemberName) yyVals[0+yyTop], (Attributes) yyVals[-4+yyTop]); current_container.AddEvent (current_event_field); @@ -5565,8 +5585,8 @@ void case_277() yyVal = current_event_field; } -void case_278() -#line 2337 "cs-parser.jay" +void case_277() +#line 2340 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5577,8 +5597,8 @@ void case_278() current_event_field = null; } -void case_279() -#line 2350 "cs-parser.jay" +void case_278() +#line 2353 "cs-parser.jay" { current_event = new EventProperty (current_class, (FullNamedExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-1+yyTop], (Attributes) yyVals[-5+yyTop]); current_container.AddEvent (current_event); @@ -5587,8 +5607,8 @@ void case_279() lexer.EventParsing = true; } -void case_280() -#line 2358 "cs-parser.jay" +void case_279() +#line 2361 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) report.Error (69, GetLocation (yyVals[-2+yyTop]), "Event in interface cannot have add or remove accessors"); @@ -5596,8 +5616,8 @@ void case_280() lexer.EventParsing = false; } -void case_281() -#line 2365 "cs-parser.jay" +void case_280() +#line 2368 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5609,23 +5629,23 @@ void case_281() current_local_parameters = null; } -void case_284() -#line 2384 "cs-parser.jay" +void case_283() +#line 2387 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } -void case_289() -#line 2408 "cs-parser.jay" +void case_288() +#line 2411 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_291() -#line 2418 "cs-parser.jay" +void case_290() +#line 2421 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5633,8 +5653,8 @@ void case_291() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_292() -#line 2427 "cs-parser.jay" +void case_291() +#line 2430 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5647,29 +5667,29 @@ void case_292() } } -void case_296() -#line 2448 "cs-parser.jay" +void case_295() +#line 2451 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_297() -#line 2453 "cs-parser.jay" +void case_296() +#line 2456 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_298() -#line 2458 "cs-parser.jay" +void case_297() +#line 2461 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } -void case_299() -#line 2466 "cs-parser.jay" +void case_298() +#line 2469 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5682,8 +5702,8 @@ void case_299() lexer.EventParsing = false; } -void case_300() -#line 2478 "cs-parser.jay" +void case_299() +#line 2481 "cs-parser.jay" { lexer.EventParsing = true; @@ -5697,8 +5717,8 @@ void case_300() current_local_parameters = null; } -void case_301() -#line 2494 "cs-parser.jay" +void case_300() +#line 2497 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5711,8 +5731,8 @@ void case_301() lexer.EventParsing = false; } -void case_302() -#line 2506 "cs-parser.jay" +void case_301() +#line 2509 "cs-parser.jay" { lexer.EventParsing = true; @@ -5726,22 +5746,22 @@ void case_302() current_local_parameters = null; } -void case_303() -#line 2522 "cs-parser.jay" +void case_302() +#line 2525 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } -void case_305() -#line 2535 "cs-parser.jay" +void case_304() +#line 2538 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } -void case_306() -#line 2540 "cs-parser.jay" +void case_305() +#line 2543 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5759,16 +5779,16 @@ void case_306() } } -void case_307() -#line 2557 "cs-parser.jay" +void case_306() +#line 2560 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_308() -#line 2563 "cs-parser.jay" +void case_307() +#line 2566 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); if (yyVals[0+yyTop] != null) { @@ -5783,8 +5803,8 @@ void case_308() yyVal = pop_current_class (); } -void case_310() -#line 2581 "cs-parser.jay" +void case_309() +#line 2584 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5796,22 +5816,22 @@ void case_310() } } -void case_311() -#line 2592 "cs-parser.jay" +void case_310() +#line 2595 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } -void case_316() -#line 2610 "cs-parser.jay" +void case_315() +#line 2613 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } -void case_317() -#line 2618 "cs-parser.jay" +void case_316() +#line 2621 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var em = new EnumMember ((Enum) current_class, new MemberName (lt.Value, lt.Location), (Attributes) yyVals[-1+yyTop]); @@ -5825,8 +5845,8 @@ void case_317() yyVal = em; } -void case_318() -#line 2631 "cs-parser.jay" +void case_317() +#line 2634 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5835,8 +5855,8 @@ void case_318() } } -void case_319() -#line 2639 "cs-parser.jay" +void case_318() +#line 2642 "cs-parser.jay" { --lexer.parsing_block; @@ -5851,8 +5871,8 @@ void case_319() yyVal = em; } -void case_321() -#line 2664 "cs-parser.jay" +void case_320() +#line 2667 "cs-parser.jay" { valid_param_mod = 0; @@ -5871,8 +5891,8 @@ void case_321() lexer.ConstraintsParsing = true; } -void case_323() -#line 2686 "cs-parser.jay" +void case_322() +#line 2689 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5887,8 +5907,8 @@ void case_323() current_delegate = null; } -void case_325() -#line 2704 "cs-parser.jay" +void case_324() +#line 2707 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5896,8 +5916,8 @@ void case_325() yyVal = ComposedTypeSpecifier.CreateNullable (GetLocation (yyVals[0+yyTop])); } -void case_327() -#line 2715 "cs-parser.jay" +void case_326() +#line 2718 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5905,8 +5925,8 @@ void case_327() yyVal = new MemberName (lt1.Value, lt2.Value, (TypeArguments) yyVals[0+yyTop], lt1.Location); } -void case_329() -#line 2726 "cs-parser.jay" +void case_328() +#line 2729 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -5914,15 +5934,15 @@ void case_329() }; } -void case_330() -#line 2736 "cs-parser.jay" +void case_329() +#line 2739 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_332() -#line 2748 "cs-parser.jay" +void case_331() +#line 2751 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5934,15 +5954,15 @@ void case_332() yyVal = yyVals[-1+yyTop];; } -void case_333() -#line 2759 "cs-parser.jay" +void case_332() +#line 2762 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } -void case_334() -#line 2767 "cs-parser.jay" +void case_333() +#line 2770 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5950,8 +5970,8 @@ void case_334() locationListStack.Push (new List ()); } -void case_335() -#line 2774 "cs-parser.jay" +void case_334() +#line 2777 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5959,16 +5979,16 @@ void case_335() locationListStack.Peek ().Add (GetLocation (yyVals[-1+yyTop])); } -void case_337() -#line 2791 "cs-parser.jay" +void case_336() +#line 2794 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_338() -#line 2800 "cs-parser.jay" +void case_337() +#line 2803 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeArguments != null) @@ -5976,38 +5996,38 @@ void case_338() mn.GetSignatureForError ())); } -void case_340() -#line 2811 "cs-parser.jay" +void case_339() +#line 2814 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_341() -#line 2820 "cs-parser.jay" +void case_340() +#line 2823 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } -void case_342() -#line 2825 "cs-parser.jay" +void case_341() +#line 2828 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[0+yyTop])); } -void case_343() -#line 2833 "cs-parser.jay" +void case_342() +#line 2836 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_344() -#line 2839 "cs-parser.jay" +void case_343() +#line 2842 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6016,16 +6036,16 @@ void case_344() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_345() -#line 2847 "cs-parser.jay" +void case_344() +#line 2850 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_347() -#line 2857 "cs-parser.jay" +void case_346() +#line 2860 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -6034,16 +6054,16 @@ void case_347() lbag.AppendTo (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_348() -#line 2868 "cs-parser.jay" +void case_347() +#line 2871 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); yyVal = type_args; } -void case_349() -#line 2874 "cs-parser.jay" +void case_348() +#line 2877 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -6051,8 +6071,8 @@ void case_349() lbag.AppendTo (type_args, GetLocation (yyVals[-1+yyTop])); } -void case_350() -#line 2884 "cs-parser.jay" +void case_349() +#line 2887 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; var variance = (Variance) yyVals[-1+yyTop]; @@ -6061,8 +6081,8 @@ void case_350() lbag.AddLocation (yyVal, savedLocation); } -void case_351() -#line 2892 "cs-parser.jay" +void case_350() +#line 2895 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") report.Error (81, GetLocation (yyVals[0+yyTop]), "Type parameter declaration must be an identifier not a type"); @@ -6072,29 +6092,29 @@ void case_351() yyVal = new TypeParameterName ("", null, lexer.Location); } -void case_356() -#line 2926 "cs-parser.jay" +void case_355() +#line 2929 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_358() -#line 2935 "cs-parser.jay" +void case_357() +#line 2938 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_360() -#line 2944 "cs-parser.jay" +void case_359() +#line 2947 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_363() -#line 2960 "cs-parser.jay" +void case_362() +#line 2963 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; @@ -6108,23 +6128,23 @@ void case_363() } } -void case_365() -#line 2977 "cs-parser.jay" +void case_364() +#line 2980 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_368() -#line 2993 "cs-parser.jay" +void case_367() +#line 2996 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = types; } -void case_369() -#line 2999 "cs-parser.jay" +void case_368() +#line 3002 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6132,8 +6152,8 @@ void case_369() yyVal = types; } -void case_370() -#line 3009 "cs-parser.jay" +void case_369() +#line 3012 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) { report.Error (1521, GetLocation (yyVals[0+yyTop]), "Invalid base type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -6141,36 +6161,36 @@ void case_370() yyVal = yyVals[0+yyTop]; } -void case_371() -#line 3016 "cs-parser.jay" +void case_370() +#line 3019 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_408() -#line 3078 "cs-parser.jay" +void case_407() +#line 3081 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_409() -#line 3082 "cs-parser.jay" +void case_408() +#line 3085 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } -void case_420() -#line 3123 "cs-parser.jay" +void case_419() +#line 3126 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_422() -#line 3135 "cs-parser.jay" +void case_421() +#line 3138 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6178,8 +6198,8 @@ void case_422() }; } -void case_423() -#line 3142 "cs-parser.jay" +void case_422() +#line 3145 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6187,8 +6207,8 @@ void case_423() }; } -void case_424() -#line 3149 "cs-parser.jay" +void case_423() +#line 3152 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6196,8 +6216,8 @@ void case_424() }; } -void case_425() -#line 3156 "cs-parser.jay" +void case_424() +#line 3159 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6206,29 +6226,29 @@ void case_425() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_427() -#line 3166 "cs-parser.jay" +void case_426() +#line 3169 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_429() -#line 3174 "cs-parser.jay" +void case_428() +#line 3177 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_430() -#line 3182 "cs-parser.jay" +void case_429() +#line 3185 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_433() -#line 3195 "cs-parser.jay" +void case_432() +#line 3198 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6239,23 +6259,23 @@ void case_433() } } -void case_434() -#line 3205 "cs-parser.jay" +void case_433() +#line 3208 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_437() -#line 3221 "cs-parser.jay" +void case_436() +#line 3224 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); yyVal = a; } -void case_438() -#line 3227 "cs-parser.jay" +void case_437() +#line 3230 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6263,23 +6283,23 @@ void case_438() yyVal = a; } -void case_439() -#line 3233 "cs-parser.jay" +void case_438() +#line 3236 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_440() -#line 3241 "cs-parser.jay" +void case_439() +#line 3244 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_442() -#line 3250 "cs-parser.jay" +void case_441() +#line 3253 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6288,8 +6308,8 @@ void case_442() yyVal = new CompletionElementInitializer (csn.Prefix, csn.Location); } -void case_443() -#line 3258 "cs-parser.jay" +void case_442() +#line 3261 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6297,23 +6317,23 @@ void case_443() yyVal = new CollectionElementInitializer ((List)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_444() -#line 3265 "cs-parser.jay" +void case_443() +#line 3268 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } -void case_449() -#line 3283 "cs-parser.jay" +void case_448() +#line 3286 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); yyVal = list; } -void case_450() -#line 3289 "cs-parser.jay" +void case_449() +#line 3292 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6324,8 +6344,8 @@ void case_450() yyVal = list; } -void case_451() -#line 3299 "cs-parser.jay" +void case_450() +#line 3302 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6341,65 +6361,65 @@ void case_451() yyVal = list; } -void case_452() -#line 3314 "cs-parser.jay" +void case_451() +#line 3317 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } -void case_453() -#line 3319 "cs-parser.jay" +void case_452() +#line 3322 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } -void case_458() -#line 3340 "cs-parser.jay" +void case_457() +#line 3343 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_459() -#line 3345 "cs-parser.jay" +void case_458() +#line 3348 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_460() -#line 3350 "cs-parser.jay" +void case_459() +#line 3353 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_461() -#line 3355 "cs-parser.jay" +void case_460() +#line 3358 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_463() -#line 3367 "cs-parser.jay" +void case_462() +#line 3370 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_466() -#line 3383 "cs-parser.jay" +void case_465() +#line 3386 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_467() -#line 3389 "cs-parser.jay" +void case_466() +#line 3392 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6407,23 +6427,23 @@ void case_467() yyVal = list; } -void case_468() -#line 3395 "cs-parser.jay" +void case_467() +#line 3398 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_469() -#line 3403 "cs-parser.jay" +void case_468() +#line 3406 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); yyVal = args; } -void case_470() -#line 3409 "cs-parser.jay" +void case_469() +#line 3412 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6434,22 +6454,22 @@ void case_470() yyVal = args; } -void case_474() -#line 3437 "cs-parser.jay" +void case_473() +#line 3440 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_475() -#line 3442 "cs-parser.jay" +void case_474() +#line 3445 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } -void case_478() -#line 3464 "cs-parser.jay" +void case_477() +#line 3467 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6463,8 +6483,8 @@ void case_478() lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_479() -#line 3477 "cs-parser.jay" +void case_478() +#line 3480 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6472,8 +6492,8 @@ void case_479() yyVal = new NewInitialize ((FullNamedExpression) yyVals[-1+yyTop], null, (CollectionOrObjectInitializers) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_480() -#line 3489 "cs-parser.jay" +void case_479() +#line 3492 "cs-parser.jay" { yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], (List) yyVals[-3+yyTop], new ComposedTypeSpecifier (((List) yyVals[-3+yyTop]).Count, GetLocation (yyVals[-4+yyTop])) { @@ -6482,8 +6502,8 @@ void case_480() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_481() -#line 3497 "cs-parser.jay" +void case_480() +#line 3500 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6491,8 +6511,8 @@ void case_481() yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-2+yyTop], (ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } -void case_482() -#line 3504 "cs-parser.jay" +void case_481() +#line 3507 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6500,29 +6520,29 @@ void case_482() yyVal = new ImplicitlyTypedArrayCreation ((ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_483() -#line 3511 "cs-parser.jay" +void case_482() +#line 3514 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } -void case_484() -#line 3516 "cs-parser.jay" +void case_483() +#line 3519 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_486() -#line 3527 "cs-parser.jay" +void case_485() +#line 3530 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } -void case_487() -#line 3535 "cs-parser.jay" +void case_486() +#line 3538 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6533,16 +6553,16 @@ void case_487() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_492() -#line 3558 "cs-parser.jay" +void case_491() +#line 3561 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); yyVal = a; } -void case_493() -#line 3564 "cs-parser.jay" +void case_492() +#line 3567 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6551,60 +6571,60 @@ void case_493() yyVal = a; } -void case_494() -#line 3575 "cs-parser.jay" +void case_493() +#line 3578 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_495() -#line 3581 "cs-parser.jay" +void case_494() +#line 3584 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), lt.Value, lt.Location); } -void case_496() -#line 3587 "cs-parser.jay" +void case_495() +#line 3590 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } -void case_497() -#line 3592 "cs-parser.jay" +void case_496() +#line 3595 "cs-parser.jay" { report.Error (746, lexer.Location, "Invalid anonymous type member declarator. Anonymous type members must be a member assignment, simple name or member access expression"); yyVal = null; } -void case_501() -#line 3607 "cs-parser.jay" +void case_500() +#line 3610 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_502() -#line 3615 "cs-parser.jay" +void case_501() +#line 3618 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_503() -#line 3620 "cs-parser.jay" +void case_502() +#line 3623 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_508() -#line 3650 "cs-parser.jay" +void case_507() +#line 3653 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6612,8 +6632,8 @@ void case_508() yyVal = ai; } -void case_509() -#line 3657 "cs-parser.jay" +void case_508() +#line 3660 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6625,16 +6645,16 @@ void case_509() yyVal = ai; } -void case_510() -#line 3671 "cs-parser.jay" +void case_509() +#line 3674 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_511() -#line 3677 "cs-parser.jay" +void case_510() +#line 3680 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6642,31 +6662,31 @@ void case_511() yyVal = list; } -void case_513() -#line 3691 "cs-parser.jay" +void case_512() +#line 3694 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_516() -#line 3702 "cs-parser.jay" +void case_515() +#line 3705 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_517() -#line 3710 "cs-parser.jay" +void case_516() +#line 3713 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (int) yyVals[0+yyTop], lt.Location); } -void case_518() -#line 3716 "cs-parser.jay" +void case_517() +#line 3719 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6675,8 +6695,8 @@ void case_518() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_519() -#line 3724 "cs-parser.jay" +void case_518() +#line 3727 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6685,8 +6705,8 @@ void case_519() }; } -void case_520() -#line 3732 "cs-parser.jay" +void case_519() +#line 3735 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6695,8 +6715,8 @@ void case_520() }; } -void case_521() -#line 3740 "cs-parser.jay" +void case_520() +#line 3743 "cs-parser.jay" { var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); if (te.HasTypeArguments) @@ -6708,8 +6728,8 @@ void case_521() }; } -void case_522() -#line 3754 "cs-parser.jay" +void case_521() +#line 3757 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6717,8 +6737,8 @@ void case_522() yyVal = yyVals[0+yyTop]; } -void case_523() -#line 3764 "cs-parser.jay" +void case_522() +#line 3767 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6727,36 +6747,36 @@ void case_523() yyVal = lt; } -void case_524() -#line 3775 "cs-parser.jay" +void case_523() +#line 3778 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_525() -#line 3783 "cs-parser.jay" +void case_524() +#line 3786 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_526() -#line 3791 "cs-parser.jay" +void case_525() +#line 3794 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_527() -#line 3799 "cs-parser.jay" +void case_526() +#line 3802 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_529() -#line 3811 "cs-parser.jay" +void case_528() +#line 3814 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6766,8 +6786,8 @@ void case_529() } } -void case_531() -#line 3824 "cs-parser.jay" +void case_530() +#line 3827 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -6778,8 +6798,8 @@ void case_531() } } -void case_535() -#line 3849 "cs-parser.jay" +void case_534() +#line 3852 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6787,8 +6807,8 @@ void case_535() savedCloseLocation = GetLocation (yyVals[-2+yyTop]); } -void case_536() -#line 3859 "cs-parser.jay" +void case_535() +#line 3862 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6797,15 +6817,15 @@ void case_536() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_540() -#line 3879 "cs-parser.jay" +void case_539() +#line 3882 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_541() -#line 3884 "cs-parser.jay" +void case_540() +#line 3887 "cs-parser.jay" { if (!async_block) { report.Error (1992, GetLocation (yyVals[-1+yyTop]), @@ -6817,134 +6837,134 @@ void case_541() yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_550() -#line 3931 "cs-parser.jay" +void case_549() +#line 3934 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_551() -#line 3936 "cs-parser.jay" +void case_550() +#line 3939 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_552() -#line 3941 "cs-parser.jay" +void case_551() +#line 3944 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_554() -#line 3950 "cs-parser.jay" +void case_553() +#line 3953 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_556() -#line 3959 "cs-parser.jay" +void case_555() +#line 3962 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_560() -#line 3976 "cs-parser.jay" +void case_559() +#line 3979 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_561() -#line 3981 "cs-parser.jay" +void case_560() +#line 3984 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_563() -#line 3990 "cs-parser.jay" +void case_562() +#line 3993 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_564() -#line 3995 "cs-parser.jay" +void case_563() +#line 3998 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_565() -#line 4000 "cs-parser.jay" +void case_564() +#line 4003 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_566() -#line 4005 "cs-parser.jay" +void case_565() +#line 4008 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_568() -#line 4014 "cs-parser.jay" +void case_567() +#line 4017 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_569() -#line 4019 "cs-parser.jay" +void case_568() +#line 4022 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_571() -#line 4028 "cs-parser.jay" +void case_570() +#line 4031 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_573() -#line 4037 "cs-parser.jay" +void case_572() +#line 4040 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_575() -#line 4046 "cs-parser.jay" +void case_574() +#line 4049 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_577() -#line 4055 "cs-parser.jay" +void case_576() +#line 4058 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_579() -#line 4064 "cs-parser.jay" +void case_578() +#line 4067 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_581() -#line 4073 "cs-parser.jay" +void case_580() +#line 4076 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6952,85 +6972,85 @@ void case_581() yyVal = new Nullable.NullCoalescingOperator ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_583() -#line 4084 "cs-parser.jay" +void case_582() +#line 4087 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_585() -#line 4096 "cs-parser.jay" +void case_584() +#line 4099 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_586() -#line 4101 "cs-parser.jay" +void case_585() +#line 4104 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_587() -#line 4106 "cs-parser.jay" +void case_586() +#line 4109 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_588() -#line 4111 "cs-parser.jay" +void case_587() +#line 4114 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_589() -#line 4116 "cs-parser.jay" +void case_588() +#line 4119 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_590() -#line 4121 "cs-parser.jay" +void case_589() +#line 4124 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_591() -#line 4126 "cs-parser.jay" +void case_590() +#line 4129 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_592() -#line 4131 "cs-parser.jay" +void case_591() +#line 4134 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_593() -#line 4136 "cs-parser.jay" +void case_592() +#line 4139 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_594() -#line 4141 "cs-parser.jay" +void case_593() +#line 4144 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_595() -#line 4149 "cs-parser.jay" +void case_594() +#line 4152 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -7038,8 +7058,8 @@ void case_595() yyVal = pars; } -void case_596() -#line 4156 "cs-parser.jay" +void case_595() +#line 4159 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -7053,39 +7073,39 @@ void case_596() yyVal = pars; } -void case_597() -#line 4172 "cs-parser.jay" +void case_596() +#line 4175 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], null, lt.Location); } -void case_598() -#line 4178 "cs-parser.jay" +void case_597() +#line 4181 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, Parameter.Modifier.NONE, null, lt.Location); } -void case_599() -#line 4184 "cs-parser.jay" +void case_598() +#line 4187 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } -void case_601() -#line 4192 "cs-parser.jay" +void case_600() +#line 4195 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_605() -#line 4209 "cs-parser.jay" +void case_604() +#line 4212 "cs-parser.jay" { Block b = end_block (lexer.Location); b.IsCompilerGenerated = true; @@ -7093,94 +7113,94 @@ void case_605() yyVal = b; } -void case_607() -#line 4220 "cs-parser.jay" +void case_606() +#line 4223 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } -void case_608() -#line 4228 "cs-parser.jay" +void case_607() +#line 4231 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), false, lt.Location); } -void case_609() -#line 4234 "cs-parser.jay" +void case_608() +#line 4237 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_610() -#line 4239 "cs-parser.jay" +void case_609() +#line 4242 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), true, lt.Location); } -void case_611() -#line 4245 "cs-parser.jay" +void case_610() +#line 4248 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_613() -#line 4254 "cs-parser.jay" +void case_612() +#line 4257 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } -void case_614() -#line 4259 "cs-parser.jay" +void case_613() +#line 4262 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_616() -#line 4268 "cs-parser.jay" +void case_615() +#line 4271 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } -void case_617() -#line 4273 "cs-parser.jay" +void case_616() +#line 4276 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_624() -#line 4296 "cs-parser.jay" +void case_623() +#line 4299 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_625() -#line 4301 "cs-parser.jay" +void case_624() +#line 4304 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_626() -#line 4306 "cs-parser.jay" +void case_625() +#line 4309 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_630() -#line 4335 "cs-parser.jay" +void case_629() +#line 4338 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); Class c = new Class (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]); @@ -7192,8 +7212,8 @@ void case_630() lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_631() -#line 4347 "cs-parser.jay" +void case_630() +#line 4350 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7207,16 +7227,16 @@ void case_631() lexer.parsing_modifiers = true; } -void case_632() -#line 4360 "cs-parser.jay" +void case_631() +#line 4363 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_633() -#line 4366 "cs-parser.jay" +void case_632() +#line 4369 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); if (yyVals[0+yyTop] != null) @@ -7224,16 +7244,16 @@ void case_633() yyVal = pop_current_class (); } -void case_636() -#line 4383 "cs-parser.jay" +void case_635() +#line 4386 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; lexer.parsing_modifiers = false; } -void case_639() -#line 4397 "cs-parser.jay" +void case_638() +#line 4400 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7250,8 +7270,8 @@ void case_639() yyVal = m1 | m2; } -void case_640() -#line 4416 "cs-parser.jay" +void case_639() +#line 4419 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7260,92 +7280,92 @@ void case_640() report.Error (1530, GetLocation (yyVals[0+yyTop]), "Keyword `new' is not allowed on namespace elements"); } -void case_641() -#line 4424 "cs-parser.jay" +void case_640() +#line 4427 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_642() -#line 4429 "cs-parser.jay" +void case_641() +#line 4432 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_643() -#line 4434 "cs-parser.jay" +void case_642() +#line 4437 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_644() -#line 4439 "cs-parser.jay" +void case_643() +#line 4442 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_645() -#line 4444 "cs-parser.jay" +void case_644() +#line 4447 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_646() -#line 4449 "cs-parser.jay" +void case_645() +#line 4452 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_647() -#line 4454 "cs-parser.jay" +void case_646() +#line 4457 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_648() -#line 4459 "cs-parser.jay" +void case_647() +#line 4462 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_649() -#line 4464 "cs-parser.jay" +void case_648() +#line 4467 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_650() -#line 4469 "cs-parser.jay" +void case_649() +#line 4472 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_651() -#line 4474 "cs-parser.jay" +void case_650() +#line 4477 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_652() -#line 4479 "cs-parser.jay" +void case_651() +#line 4482 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_653() -#line 4484 "cs-parser.jay" +void case_652() +#line 4487 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7353,37 +7373,37 @@ void case_653() Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_654() -#line 4491 "cs-parser.jay" +void case_653() +#line 4494 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_656() -#line 4500 "cs-parser.jay" +void case_655() +#line 4503 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); current_container.AddBasesForPart (current_class, (List) yyVals[0+yyTop]); } -void case_659() -#line 4513 "cs-parser.jay" +void case_658() +#line 4516 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_660() -#line 4521 "cs-parser.jay" +void case_659() +#line 4524 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); yyVal = constraints; } -void case_661() -#line 4527 "cs-parser.jay" +void case_660() +#line 4530 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7400,24 +7420,24 @@ void case_661() yyVal = constraints; } -void case_662() -#line 4546 "cs-parser.jay" +void case_661() +#line 4549 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_663() -#line 4555 "cs-parser.jay" +void case_662() +#line 4558 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = constraints; } -void case_664() -#line 4561 "cs-parser.jay" +void case_663() +#line 4564 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7442,8 +7462,8 @@ void case_664() yyVal = constraints; } -void case_665() -#line 4588 "cs-parser.jay" +void case_664() +#line 4591 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) report.Error (706, GetLocation (yyVals[0+yyTop]), "Invalid constraint type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -7451,15 +7471,15 @@ void case_665() yyVal = yyVals[0+yyTop]; } -void case_666() -#line 4595 "cs-parser.jay" +void case_665() +#line 4598 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_670() -#line 4615 "cs-parser.jay" +void case_669() +#line 4618 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7467,57 +7487,57 @@ void case_670() yyVal = yyVals[0+yyTop]; } -void case_671() -#line 4625 "cs-parser.jay" +void case_670() +#line 4628 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_672() -#line 4630 "cs-parser.jay" +void case_671() +#line 4633 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_673() -#line 4651 "cs-parser.jay" +void case_672() +#line 4654 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } -void case_675() -#line 4663 "cs-parser.jay" +void case_674() +#line 4666 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_676() -#line 4668 "cs-parser.jay" +void case_675() +#line 4671 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } -void case_677() -#line 4677 "cs-parser.jay" +void case_676() +#line 4680 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_678() -#line 4682 "cs-parser.jay" +void case_677() +#line 4685 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_686() -#line 4710 "cs-parser.jay" +void case_685() +#line 4713 "cs-parser.jay" { Error_SyntaxError (yyToken); var lt =(Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7526,43 +7546,43 @@ void case_686() yyVal = null; } -void case_687() -#line 4719 "cs-parser.jay" +void case_686() +#line 4722 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_720() -#line 4783 "cs-parser.jay" +void case_719() +#line 4786 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_721() -#line 4788 "cs-parser.jay" +void case_720() +#line 4791 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_722() -#line 4793 "cs-parser.jay" +void case_721() +#line 4796 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_723() -#line 4801 "cs-parser.jay" +void case_722() +#line 4804 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } -void case_724() -#line 4809 "cs-parser.jay" +void case_723() +#line 4812 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7571,8 +7591,8 @@ void case_724() current_block.AddStatement (labeled); } -void case_727() -#line 4822 "cs-parser.jay" +void case_726() +#line 4825 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7580,8 +7600,8 @@ void case_727() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_728() -#line 4838 "cs-parser.jay" +void case_727() +#line 4841 "cs-parser.jay" { /* Ok, the above "primary_expression" is there to get rid of*/ /* both reduce/reduce and shift/reduces in the grammar, it should*/ @@ -7612,8 +7632,8 @@ void case_728() } } -void case_729() -#line 4868 "cs-parser.jay" +void case_728() +#line 4871 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7625,8 +7645,8 @@ void case_729() } } -void case_730() -#line 4879 "cs-parser.jay" +void case_729() +#line 4882 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7634,22 +7654,22 @@ void case_730() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_733() -#line 4894 "cs-parser.jay" +void case_732() +#line 4897 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_735() -#line 4903 "cs-parser.jay" +void case_734() +#line 4906 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_738() -#line 4919 "cs-parser.jay" +void case_737() +#line 4922 "cs-parser.jay" { if (async_block) { report.Error (4003, GetLocation (yyVals[0+yyTop]), "`await' cannot be used as an identifier within an async method or lambda expression"); @@ -7657,8 +7677,8 @@ void case_738() } } -void case_739() -#line 4929 "cs-parser.jay" +void case_738() +#line 4932 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7666,16 +7686,16 @@ void case_739() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_740() -#line 4936 "cs-parser.jay" +void case_739() +#line 4939 "cs-parser.jay" { yyVal = current_variable; current_variable = null; lbag.AppendTo (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_741() -#line 4942 "cs-parser.jay" +void case_740() +#line 4945 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7683,8 +7703,8 @@ void case_741() current_variable = new BlockConstantDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_742() -#line 4949 "cs-parser.jay" +void case_741() +#line 4952 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7695,15 +7715,15 @@ void case_742() current_variable = null; } -void case_744() -#line 4963 "cs-parser.jay" +void case_743() +#line 4966 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_745() -#line 4968 "cs-parser.jay" +void case_744() +#line 4971 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7718,8 +7738,8 @@ void case_745() lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_746() -#line 4982 "cs-parser.jay" +void case_745() +#line 4985 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7729,8 +7749,8 @@ void case_746() } } -void case_750() -#line 5000 "cs-parser.jay" +void case_749() +#line 5003 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -7738,8 +7758,8 @@ void case_750() } } -void case_753() -#line 5015 "cs-parser.jay" +void case_752() +#line 5018 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7749,8 +7769,8 @@ void case_753() lbag.AddLocation (d, GetLocation (yyVals[-1+yyTop])); } -void case_754() -#line 5024 "cs-parser.jay" +void case_753() +#line 5027 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7760,15 +7780,15 @@ void case_754() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_756() -#line 5040 "cs-parser.jay" +void case_755() +#line 5043 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } -void case_761() -#line 5058 "cs-parser.jay" +void case_760() +#line 5061 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7778,41 +7798,41 @@ void case_761() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_763() -#line 5071 "cs-parser.jay" +void case_762() +#line 5074 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_764() -#line 5076 "cs-parser.jay" +void case_763() +#line 5079 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_765() -#line 5084 "cs-parser.jay" +void case_764() +#line 5087 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_769() -#line 5102 "cs-parser.jay" +void case_768() +#line 5105 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { Expression.Error_InvalidExpressionStatement (report, GetLocation (yyVals[0+yyTop])); - yyVal = new InvalidStatementExpression (yyVals[0+yyTop] as Expression); + yyVal = new StatementErrorExpression (yyVals[0+yyTop] as Expression); } else { yyVal = new StatementExpression (s); } } -void case_770() -#line 5115 "cs-parser.jay" +void case_769() +#line 5118 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7821,15 +7841,15 @@ void case_770() yyVal = new StatementExpression (s); } -void case_771() -#line 5123 "cs-parser.jay" +void case_770() +#line 5126 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_774() -#line 5137 "cs-parser.jay" +void case_773() +#line 5140 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7838,8 +7858,8 @@ void case_774() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_775() -#line 5146 "cs-parser.jay" +void case_774() +#line 5149 "cs-parser.jay" { yyVal = new If ((BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); @@ -7850,32 +7870,41 @@ void case_775() Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_776() -#line 5155 "cs-parser.jay" +void case_775() +#line 5159 "cs-parser.jay" { - var eloc = GetLocation (yyVals[-1+yyTop]); - report.Error (1026, eloc, "Expected a ')'"); + Error_SyntaxError (yyToken); + yyVal = new If ((BooleanExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_778() -#line 5169 "cs-parser.jay" +void case_777() +#line 5173 "cs-parser.jay" { yyVal = new Switch ((Expression) yyVals[-5+yyTop], (ExplicitBlock) current_block.Explicit, (List) yyVals[-1+yyTop], GetLocation (yyVals[-7+yyTop])); end_block (GetLocation (yyVals[0+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } +void case_778() +#line 5179 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + + yyVal = new Switch ((Expression) yyVals[-1+yyTop], null, null, GetLocation (yyVals[-3+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); + } + void case_779() -#line 5178 "cs-parser.jay" +#line 5189 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } void case_781() -#line 5187 "cs-parser.jay" +#line 5198 "cs-parser.jay" { var sections = new List (4); @@ -7884,7 +7913,7 @@ void case_781() } void case_782() -#line 5194 "cs-parser.jay" +#line 5205 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7893,14 +7922,14 @@ void case_782() } void case_783() -#line 5201 "cs-parser.jay" +#line 5212 "cs-parser.jay" { - Error_SyntaxError (yyToken); + Error_SyntaxError (yyToken); yyVal = new List (); } void case_786() -#line 5220 "cs-parser.jay" +#line 5231 "cs-parser.jay" { var labels = new List (2); @@ -7909,7 +7938,7 @@ void case_786() } void case_787() -#line 5227 "cs-parser.jay" +#line 5238 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7918,14 +7947,14 @@ void case_787() } void case_788() -#line 5237 "cs-parser.jay" +#line 5248 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_794() -#line 5256 "cs-parser.jay" +#line 5267 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7935,29 +7964,39 @@ void case_794() } void case_795() -#line 5268 "cs-parser.jay" +#line 5275 "cs-parser.jay" { - yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); + Error_SyntaxError (yyToken); + + yyVal = new While ((BooleanExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } void case_796() -#line 5273 "cs-parser.jay" +#line 5285 "cs-parser.jay" { - var loc = GetLocation (yyVals[-2+yyTop]); - report.Error (-100, loc, "Expected `while'"); - yyVal = new Do ((Statement) yyVals[-1+yyTop], null, loc); + yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_797() -#line 5280 "cs-parser.jay" +#line 5290 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + yyVal = new Do ((Statement) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); + } + +void case_798() +#line 5295 "cs-parser.jay" { + Error_SyntaxError (yyToken); + yyVal = new Do ((Statement) yyVals[-4+yyTop], (BooleanExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_798() -#line 5288 "cs-parser.jay" +void case_799() +#line 5305 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; @@ -7966,8 +8005,8 @@ void case_798() yyVal = f; } -void case_803() -#line 5316 "cs-parser.jay" +void case_804() +#line 5333 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7979,15 +8018,15 @@ void case_803() yyVal = end_block (GetLocation (yyVals[-8+yyTop])); } -void case_804() -#line 5327 "cs-parser.jay" +void case_805() +#line 5344 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } -void case_807() -#line 5340 "cs-parser.jay" +void case_808() +#line 5357 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7995,15 +8034,15 @@ void case_807() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_808() -#line 5347 "cs-parser.jay" +void case_809() +#line 5364 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_816() -#line 5371 "cs-parser.jay" +void case_817() +#line 5388 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -8017,15 +8056,42 @@ void case_816() yyVal = sl; } -void case_817() -#line 5387 "cs-parser.jay" +void case_818() +#line 5404 "cs-parser.jay" { - report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); - yyVal = null; + report.Error (230, GetLocation (yyVals[-3+yyTop]), "Type and identifier are both required in a foreach statement"); + + start_block (GetLocation (yyVals[-2+yyTop])); + current_block.IsCompilerGenerated = true; + + Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, GetLocation (yyVals[-3+yyTop])); + current_block.AddStatement (f); + + lbag.AddStatement (f, GetLocation (yyVals[-2+yyTop])); + yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_818() -#line 5392 "cs-parser.jay" +void case_819() +#line 5417 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + + start_block (GetLocation (yyVals[-3+yyTop])); + current_block.IsCompilerGenerated = true; + + var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; + var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location); + current_block.AddLocalName (li); + + Foreach f = new Foreach ((Expression) yyVals[-2+yyTop], li, null, null, GetLocation (yyVals[-4+yyTop])); + current_block.AddStatement (f); + + lbag.AddStatement (f, GetLocation (yyVals[-3+yyTop])); + yyVal = end_block (GetLocation (yyVals[0+yyTop])); + } + +void case_820() +#line 5434 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -8035,8 +8101,8 @@ void case_818() yyVal = li; } -void case_819() -#line 5401 "cs-parser.jay" +void case_821() +#line 5443 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8048,8 +8114,8 @@ void case_819() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_820() -#line 5412 "cs-parser.jay" +void case_822() +#line 5454 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); current_block.IsCompilerGenerated = true; @@ -8063,8 +8129,8 @@ void case_820() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_821() -#line 5425 "cs-parser.jay" +void case_823() +#line 5467 "cs-parser.jay" { Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, GetLocation (yyVals[-3+yyTop])); current_block.AddStatement (f); @@ -8073,58 +8139,58 @@ void case_821() yyVal = f; } -void case_828() -#line 5445 "cs-parser.jay" +void case_830() +#line 5487 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_829() -#line 5453 "cs-parser.jay" +void case_831() +#line 5495 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_830() -#line 5461 "cs-parser.jay" +void case_832() +#line 5503 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_831() -#line 5467 "cs-parser.jay" +void case_833() +#line 5509 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_832() -#line 5472 "cs-parser.jay" +void case_834() +#line 5514 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_833() -#line 5480 "cs-parser.jay" +void case_835() +#line 5522 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_834() -#line 5488 "cs-parser.jay" +void case_836() +#line 5530 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_835() -#line 5496 "cs-parser.jay" +void case_837() +#line 5538 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -8141,8 +8207,8 @@ void case_835() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_836() -#line 5512 "cs-parser.jay" +void case_838() +#line 5554 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -8157,29 +8223,29 @@ void case_836() lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_840() -#line 5538 "cs-parser.jay" +void case_842() +#line 5580 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_841() -#line 5543 "cs-parser.jay" +void case_843() +#line 5585 "cs-parser.jay" { yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_842() -#line 5548 "cs-parser.jay" +void case_844() +#line 5590 "cs-parser.jay" { - report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); + Error_SyntaxError (1524, yyToken); yyVal = new TryCatch ((Block) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop]), false); } -void case_843() -#line 5556 "cs-parser.jay" +void case_845() +#line 5598 "cs-parser.jay" { var l = new List (2); @@ -8187,26 +8253,22 @@ void case_843() yyVal = l; } -void case_844() -#line 5563 "cs-parser.jay" +void case_846() +#line 5605 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; Catch c = (Catch) yyVals[0+yyTop]; - if (l [0].IsGeneral) { + if (l [l.Count - 1].IsGeneral) { report.Error (1017, c.loc, "Try statement already has an empty catch block"); - } else { - if (c.IsGeneral) - l.Insert (0, c); - else - l.Add (c); } + l.Add (c); yyVal = l; } -void case_848() -#line 5591 "cs-parser.jay" +void case_850() +#line 5629 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -8222,8 +8284,8 @@ void case_848() yyVal = c; } -void case_850() -#line 5610 "cs-parser.jay" +void case_852() +#line 5648 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -8235,15 +8297,15 @@ void case_850() yyVal = new Catch (null, GetLocation (yyVals[-2+yyTop])); } -void case_853() -#line 5638 "cs-parser.jay" +void case_855() +#line 5676 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_855() -#line 5648 "cs-parser.jay" +void case_857() +#line 5686 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8252,8 +8314,17 @@ void case_855() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_856() -#line 5659 "cs-parser.jay" +void case_858() +#line 5694 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + + yyVal = new Lock ((Expression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); + } + +void case_859() +#line 5704 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8264,15 +8335,15 @@ void case_856() current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_857() -#line 5669 "cs-parser.jay" +void case_860() +#line 5714 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_858() -#line 5674 "cs-parser.jay" +void case_861() +#line 5719 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8283,8 +8354,8 @@ void case_858() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_859() -#line 5687 "cs-parser.jay" +void case_862() +#line 5732 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8295,15 +8366,15 @@ void case_859() current_variable = new Using.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_860() -#line 5697 "cs-parser.jay" +void case_863() +#line 5742 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_861() -#line 5702 "cs-parser.jay" +void case_864() +#line 5747 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8314,34 +8385,42 @@ void case_861() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_862() -#line 5712 "cs-parser.jay" +void case_865() +#line 5757 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); - Using u = new Using ((Expression) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); - lbag.AddStatement (u, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); - yyVal = u; + yyVal = new Using ((Expression) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_864() -#line 5725 "cs-parser.jay" +void case_866() +#line 5765 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + + yyVal = new Using ((Expression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); + lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); + } + +void case_868() +#line 5776 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); } -void case_866() -#line 5737 "cs-parser.jay" +void case_870() +#line 5788 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); yyVal = current_variable; } -void case_867() -#line 5749 "cs-parser.jay" +void case_871() +#line 5800 "cs-parser.jay" { lexer.query_parsing = false; @@ -8354,8 +8433,8 @@ void case_867() current_block = current_block.Parent; } -void case_868() -#line 5761 "cs-parser.jay" +void case_872() +#line 5812 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8366,8 +8445,8 @@ void case_868() current_block = current_block.Parent; } -void case_869() -#line 5772 "cs-parser.jay" +void case_873() +#line 5823 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8376,16 +8455,16 @@ void case_869() current_block = current_block.Parent; } -void case_870() -#line 5779 "cs-parser.jay" +void case_874() +#line 5830 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; } -void case_871() -#line 5788 "cs-parser.jay" +void case_875() +#line 5839 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8394,8 +8473,8 @@ void case_871() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_872() -#line 5796 "cs-parser.jay" +void case_876() +#line 5847 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8408,8 +8487,8 @@ void case_872() ); } -void case_873() -#line 5811 "cs-parser.jay" +void case_877() +#line 5862 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8418,8 +8497,8 @@ void case_873() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_874() -#line 5819 "cs-parser.jay" +void case_878() +#line 5870 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8432,8 +8511,8 @@ void case_874() ); } -void case_876() -#line 5838 "cs-parser.jay" +void case_880() +#line 5889 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8445,8 +8524,8 @@ void case_876() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_878() -#line 5853 "cs-parser.jay" +void case_882() +#line 5904 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8461,8 +8540,8 @@ void case_878() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_879() -#line 5870 "cs-parser.jay" +void case_883() +#line 5921 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8478,15 +8557,15 @@ void case_879() yyVal = head; } -void case_881() -#line 5886 "cs-parser.jay" +void case_885() +#line 5937 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_883() -#line 5898 "cs-parser.jay" +void case_887() +#line 5949 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8494,8 +8573,8 @@ void case_883() current_block = current_block.Parent; } -void case_884() -#line 5905 "cs-parser.jay" +void case_888() +#line 5956 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8504,8 +8583,8 @@ void case_884() linq_clause_blocks.Push ((Linq.QueryBlock)current_block); } -void case_885() -#line 5913 "cs-parser.jay" +void case_889() +#line 5964 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8513,8 +8592,8 @@ void case_885() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_886() -#line 5920 "cs-parser.jay" +void case_890() +#line 5971 "cs-parser.jay" { yyVal = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)yyVals[-3+yyTop], linq_clause_blocks.Pop (), (Expression)yyVals[0+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); @@ -8523,29 +8602,29 @@ void case_886() current_block = current_block.Parent; } -void case_890() -#line 5937 "cs-parser.jay" +void case_894() +#line 5988 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_897() -#line 5957 "cs-parser.jay" +void case_901() +#line 6008 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); yyVal = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); - + current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_899() -#line 5976 "cs-parser.jay" +void case_903() +#line 6027 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8553,8 +8632,8 @@ void case_899() current_block = current_block.Parent; } -void case_900() -#line 5986 "cs-parser.jay" +void case_904() +#line 6037 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8563,8 +8642,8 @@ void case_900() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_901() -#line 5994 "cs-parser.jay" +void case_905() +#line 6045 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8573,8 +8652,8 @@ void case_901() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_902() -#line 6002 "cs-parser.jay" +void case_906() +#line 6053 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8583,8 +8662,8 @@ void case_902() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_903() -#line 6010 "cs-parser.jay" +void case_907() +#line 6061 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8623,8 +8702,8 @@ void case_903() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_904() -#line 6048 "cs-parser.jay" +void case_908() +#line 6099 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8633,8 +8712,8 @@ void case_904() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_905() -#line 6056 "cs-parser.jay" +void case_909() +#line 6107 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8643,8 +8722,8 @@ void case_905() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_906() -#line 6064 "cs-parser.jay" +void case_910() +#line 6115 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8653,8 +8732,8 @@ void case_906() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_907() -#line 6072 "cs-parser.jay" +void case_911() +#line 6123 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8695,8 +8774,8 @@ void case_907() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_911() -#line 6127 "cs-parser.jay" +void case_915() +#line 6178 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8704,8 +8783,8 @@ void case_911() yyVal = yyVals[0+yyTop]; } -void case_913() -#line 6138 "cs-parser.jay" +void case_917() +#line 6189 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8713,15 +8792,15 @@ void case_913() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_914() -#line 6145 "cs-parser.jay" +void case_918() +#line 6196 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_916() -#line 6154 "cs-parser.jay" +void case_920() +#line 6205 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8729,43 +8808,43 @@ void case_916() current_block = new Linq.QueryBlock ((Linq.QueryBlock) current_block, lexer.Location); } -void case_917() -#line 6161 "cs-parser.jay" +void case_921() +#line 6212 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_919() -#line 6173 "cs-parser.jay" +void case_923() +#line 6224 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_920() -#line 6178 "cs-parser.jay" +void case_924() +#line 6229 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_922() -#line 6190 "cs-parser.jay" +void case_926() +#line 6241 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_923() -#line 6195 "cs-parser.jay" +void case_927() +#line 6246 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_925() -#line 6205 "cs-parser.jay" +void case_929() +#line 6256 "cs-parser.jay" { /* query continuation block is not linked with query block but with block*/ /* before. This means each query can use same range variable names for*/ @@ -8782,8 +8861,8 @@ void case_925() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_926() -#line 6221 "cs-parser.jay" +void case_930() +#line 6272 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8793,8 +8872,8 @@ void case_926() }; } -void case_929() -#line 6248 "cs-parser.jay" +void case_933() +#line 6299 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName (""), Modifiers.PUBLIC, null); current_class = current_container; @@ -8825,8 +8904,8 @@ void case_929() start_block (lexer.Location); } -void case_930() -#line 6278 "cs-parser.jay" +void case_934() +#line 6329 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8837,16 +8916,16 @@ void case_930() current_local_parameters = null; } -void case_940() -#line 6321 "cs-parser.jay" +void case_944() +#line 6372 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; yyVal = null; } -void case_941() -#line 6327 "cs-parser.jay" +void case_945() +#line 6378 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8854,15 +8933,15 @@ void case_941() yyVal = new MemberName (lt.Value); } -void case_944() -#line 6342 "cs-parser.jay" +void case_948() +#line 6393 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } -void case_945() -#line 6347 "cs-parser.jay" +void case_949() +#line 6398 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8871,8 +8950,8 @@ void case_945() yyVal = null; } -void case_946() -#line 6355 "cs-parser.jay" +void case_950() +#line 6406 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8881,8 +8960,8 @@ void case_946() yyVal = null; } -void case_947() -#line 6363 "cs-parser.jay" +void case_951() +#line 6414 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8890,24 +8969,24 @@ void case_947() yyVal = null; } -void case_955() -#line 6401 "cs-parser.jay" +void case_959() +#line 6452 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_956() -#line 6407 "cs-parser.jay" +void case_960() +#line 6458 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_957() -#line 6416 "cs-parser.jay" +void case_961() +#line 6467 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -8918,2986 +8997,2835 @@ void case_957() #line default static readonly short [] yyLhs = { -1, 0, 4, 0, 0, 1, 1, 1, 1, 2, 2, - 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, - 16, 21, 22, 19, 20, 20, 20, 24, 24, 25, - 25, 18, 7, 7, 6, 6, 23, 23, 8, 8, - 26, 26, 27, 27, 27, 27, 27, 9, 9, 10, - 10, 35, 33, 38, 34, 34, 36, 36, 36, 36, - 37, 37, 42, 39, 40, 41, 41, 43, 43, 43, - 43, 43, 44, 44, 48, 45, 47, 50, 50, 50, - 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 66, 68, 70, 71, 72, - 29, 29, 75, 54, 76, 76, 77, 77, 78, 80, - 74, 74, 79, 79, 85, 55, 89, 55, 55, 84, - 92, 84, 86, 86, 93, 93, 94, 95, 94, 90, - 90, 96, 96, 97, 98, 88, 88, 91, 91, 91, - 101, 56, 104, 105, 99, 106, 107, 108, 99, 99, - 100, 100, 103, 103, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 112, 112, 115, 115, 115, 118, - 115, 116, 116, 119, 119, 120, 120, 120, 113, 113, - 113, 121, 121, 121, 114, 123, 125, 126, 57, 128, - 129, 130, 59, 124, 124, 124, 124, 124, 134, 131, - 135, 132, 133, 133, 133, 136, 137, 138, 140, 30, - 30, 139, 139, 141, 141, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 145, 60, 144, 144, 146, 146, - 149, 143, 143, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 151, 150, 152, 150, 150, - 150, 61, 155, 157, 153, 154, 154, 156, 156, 161, - 159, 162, 159, 159, 163, 62, 165, 58, 168, 169, - 58, 164, 171, 164, 166, 166, 172, 172, 173, 174, - 173, 175, 170, 167, 167, 167, 167, 167, 179, 176, - 180, 177, 178, 178, 182, 184, 185, 31, 181, 181, - 181, 183, 183, 183, 186, 186, 187, 188, 187, 189, - 190, 191, 32, 192, 192, 17, 17, 193, 193, 196, - 195, 195, 195, 197, 197, 199, 65, 122, 102, 102, - 127, 127, 200, 200, 200, 198, 198, 201, 201, 202, - 202, 204, 204, 83, 73, 73, 87, 87, 117, 117, - 147, 147, 205, 205, 205, 205, 205, 209, 209, 210, - 210, 208, 208, 208, 208, 208, 208, 208, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 213, 213, 213, - 214, 214, 214, 234, 234, 235, 235, 236, 236, 216, - 216, 233, 233, 233, 233, 233, 233, 233, 233, 218, - 237, 237, 238, 238, 239, 239, 241, 241, 241, 242, - 242, 242, 242, 242, 243, 243, 160, 160, 247, 247, - 247, 247, 247, 249, 249, 248, 248, 250, 250, 250, - 250, 251, 219, 219, 219, 246, 246, 246, 252, 252, - 253, 253, 220, 221, 221, 222, 223, 224, 224, 215, - 215, 215, 215, 215, 258, 254, 225, 259, 259, 260, - 260, 261, 261, 262, 262, 262, 262, 255, 255, 206, - 206, 257, 257, 263, 263, 256, 256, 82, 82, 264, - 264, 265, 226, 266, 266, 266, 267, 267, 267, 267, - 267, 268, 194, 227, 228, 229, 230, 270, 231, 271, - 231, 269, 269, 273, 272, 217, 274, 274, 274, 274, - 274, 275, 275, 275, 275, 275, 275, 275, 276, 276, - 276, 276, 277, 277, 277, 277, 277, 277, 278, 278, - 278, 279, 279, 279, 279, 279, 280, 280, 280, 281, - 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, - 286, 287, 287, 288, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 289, 289, 290, 290, 290, 291, - 291, 292, 292, 295, 293, 294, 294, 297, 296, 298, - 296, 299, 300, 296, 301, 302, 296, 46, 46, 244, - 244, 244, 244, 232, 232, 232, 81, 304, 305, 306, - 307, 308, 28, 64, 64, 63, 63, 109, 109, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 67, 67, 69, 69, 69, 310, - 310, 311, 312, 312, 313, 313, 313, 313, 203, 203, - 314, 314, 316, 110, 317, 317, 318, 158, 315, 315, - 319, 319, 320, 320, 320, 320, 320, 324, 324, 325, - 325, 325, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 340, 340, - 340, 340, 327, 341, 323, 342, 342, 343, 343, 343, - 343, 343, 343, 207, 207, 344, 49, 49, 346, 321, - 349, 321, 345, 345, 345, 345, 347, 347, 353, 353, - 352, 352, 354, 354, 348, 348, 350, 350, 355, 355, - 356, 351, 351, 351, 328, 328, 339, 339, 357, 358, - 358, 329, 329, 359, 359, 359, 362, 360, 361, 361, - 363, 363, 363, 366, 364, 365, 365, 367, 367, 330, - 330, 330, 330, 368, 369, 369, 369, 373, 370, 376, - 378, 379, 372, 372, 374, 374, 381, 380, 380, 375, - 375, 377, 377, 383, 382, 382, 371, 384, 371, 371, - 371, 331, 331, 331, 331, 331, 331, 385, 386, 387, - 387, 387, 388, 389, 390, 390, 391, 391, 332, 332, - 332, 332, 392, 392, 394, 394, 393, 395, 393, 393, - 333, 334, 396, 337, 335, 398, 399, 338, 401, 402, - 336, 336, 400, 400, 397, 397, 303, 303, 303, 303, - 403, 403, 405, 405, 407, 406, 408, 406, 404, 404, - 404, 412, 410, 413, 414, 410, 409, 409, 415, 415, - 416, 416, 416, 416, 416, 421, 417, 422, 418, 423, - 424, 425, 419, 427, 428, 429, 419, 426, 426, 431, - 420, 430, 434, 430, 433, 436, 433, 432, 432, 432, - 435, 435, 435, 411, 437, 411, 3, 3, 438, 3, - 3, 439, 439, 245, 245, 240, 240, 5, 440, 440, - 440, 440, 444, 440, 440, 440, 440, 441, 441, 442, - 445, 442, 443, 443, 446, 446, 447, + 11, 11, 12, 12, 13, 13, 14, 15, 15, 15, + 20, 21, 18, 19, 19, 19, 23, 23, 24, 24, + 16, 7, 7, 6, 6, 22, 22, 8, 8, 25, + 25, 26, 26, 26, 26, 26, 9, 9, 10, 10, + 34, 32, 37, 33, 33, 35, 35, 35, 35, 36, + 36, 41, 38, 39, 40, 40, 42, 42, 42, 42, + 42, 43, 43, 47, 44, 46, 49, 49, 49, 50, + 50, 51, 51, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 65, 67, 69, 70, 71, 28, + 28, 74, 53, 75, 75, 76, 76, 77, 79, 73, + 73, 78, 78, 84, 54, 88, 54, 54, 83, 91, + 83, 85, 85, 92, 92, 93, 94, 93, 89, 89, + 95, 95, 96, 97, 87, 87, 90, 90, 90, 100, + 55, 103, 104, 98, 105, 106, 107, 98, 98, 99, + 99, 102, 102, 110, 110, 110, 110, 110, 110, 110, + 110, 110, 110, 111, 111, 114, 114, 114, 117, 114, + 115, 115, 118, 118, 119, 119, 119, 112, 112, 112, + 120, 120, 120, 113, 122, 124, 125, 56, 127, 128, + 129, 58, 123, 123, 123, 123, 123, 133, 130, 134, + 131, 132, 132, 132, 135, 136, 137, 139, 29, 29, + 138, 138, 140, 140, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 144, 59, 143, 143, 145, 145, 148, + 142, 142, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 150, 149, 151, 149, 149, 149, + 60, 154, 156, 152, 153, 153, 155, 155, 160, 158, + 161, 158, 158, 162, 61, 164, 57, 167, 168, 57, + 163, 170, 163, 165, 165, 171, 171, 172, 173, 172, + 174, 169, 166, 166, 166, 166, 166, 178, 175, 179, + 176, 177, 177, 181, 183, 184, 30, 180, 180, 180, + 182, 182, 182, 185, 185, 186, 187, 186, 188, 189, + 190, 31, 191, 191, 17, 17, 192, 192, 195, 194, + 194, 194, 196, 196, 198, 64, 121, 101, 101, 126, + 126, 199, 199, 199, 197, 197, 200, 200, 201, 201, + 203, 203, 82, 72, 72, 86, 86, 116, 116, 146, + 146, 204, 204, 204, 204, 204, 208, 208, 209, 209, + 207, 207, 207, 207, 207, 207, 207, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 212, 212, 212, 213, + 213, 213, 233, 233, 234, 234, 235, 235, 215, 215, + 232, 232, 232, 232, 232, 232, 232, 232, 217, 236, + 236, 237, 237, 238, 238, 240, 240, 240, 241, 241, + 241, 241, 241, 242, 242, 159, 159, 246, 246, 246, + 246, 246, 248, 248, 247, 247, 249, 249, 249, 249, + 250, 218, 218, 218, 245, 245, 245, 251, 251, 252, + 252, 219, 220, 220, 221, 222, 223, 223, 214, 214, + 214, 214, 214, 257, 253, 224, 258, 258, 259, 259, + 260, 260, 261, 261, 261, 261, 254, 254, 205, 205, + 256, 256, 262, 262, 255, 255, 81, 81, 263, 263, + 264, 225, 265, 265, 265, 266, 266, 266, 266, 266, + 267, 193, 226, 227, 228, 229, 269, 230, 270, 230, + 268, 268, 272, 271, 216, 273, 273, 273, 273, 273, + 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, + 275, 276, 276, 276, 276, 276, 276, 277, 277, 277, + 278, 278, 278, 278, 278, 279, 279, 279, 280, 280, + 281, 281, 282, 282, 283, 283, 284, 284, 285, 285, + 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 287, 288, 288, 289, 289, 289, 290, 290, + 291, 291, 294, 292, 293, 293, 296, 295, 297, 295, + 298, 299, 295, 300, 301, 295, 45, 45, 243, 243, + 243, 243, 231, 231, 231, 80, 303, 304, 305, 306, + 307, 27, 63, 63, 62, 62, 108, 108, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 66, 66, 68, 68, 68, 309, 309, + 310, 311, 311, 312, 312, 312, 312, 202, 202, 313, + 313, 315, 109, 316, 316, 317, 157, 314, 314, 318, + 318, 319, 319, 319, 319, 319, 323, 323, 324, 324, + 324, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 325, 325, 325, 325, 325, 325, + 325, 325, 325, 325, 325, 325, 325, 339, 339, 339, + 339, 326, 340, 322, 341, 341, 342, 342, 342, 342, + 342, 342, 206, 206, 343, 48, 48, 345, 320, 348, + 320, 344, 344, 344, 344, 346, 346, 352, 352, 351, + 351, 353, 353, 347, 347, 349, 349, 354, 354, 355, + 350, 350, 350, 327, 327, 338, 338, 356, 357, 357, + 328, 328, 358, 358, 358, 361, 359, 359, 360, 360, + 362, 362, 362, 365, 363, 364, 364, 366, 366, 329, + 329, 329, 329, 367, 367, 368, 368, 368, 372, 369, + 375, 377, 378, 371, 371, 373, 373, 380, 379, 379, + 374, 374, 376, 376, 382, 381, 381, 370, 370, 383, + 370, 370, 370, 330, 330, 330, 330, 330, 330, 384, + 385, 386, 386, 386, 387, 388, 389, 389, 390, 390, + 331, 331, 331, 331, 391, 391, 393, 393, 392, 394, + 392, 392, 332, 333, 395, 336, 334, 334, 397, 398, + 337, 400, 401, 335, 335, 335, 399, 399, 396, 396, + 302, 302, 302, 302, 402, 402, 404, 404, 406, 405, + 407, 405, 403, 403, 403, 411, 409, 412, 413, 409, + 408, 408, 414, 414, 415, 415, 415, 415, 415, 420, + 416, 421, 417, 422, 423, 424, 418, 426, 427, 428, + 418, 425, 425, 430, 419, 429, 433, 429, 432, 435, + 432, 431, 431, 431, 434, 434, 434, 410, 436, 410, + 3, 3, 437, 3, 3, 438, 438, 244, 244, 239, + 239, 5, 439, 439, 439, 439, 443, 439, 439, 439, + 439, 440, 440, 441, 444, 441, 442, 442, 445, 445, + 446, }; static readonly short [] yyLen = { 2, 2, 0, 3, 1, 2, 4, 3, 1, 0, 1, - 1, 2, 4, 2, 1, 2, 1, 1, 5, 2, - 3, 0, 0, 11, 1, 3, 1, 0, 1, 0, - 1, 1, 0, 1, 0, 1, 0, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, - 2, 0, 3, 0, 6, 3, 1, 1, 1, 1, - 1, 3, 0, 3, 1, 0, 3, 0, 1, 1, - 3, 3, 1, 1, 0, 4, 4, 0, 1, 1, + 1, 2, 4, 2, 1, 2, 1, 3, 5, 2, + 0, 0, 11, 1, 3, 1, 0, 1, 0, 1, + 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, + 0, 3, 0, 6, 3, 1, 1, 1, 1, 1, + 3, 0, 3, 1, 0, 3, 0, 1, 1, 3, + 3, 1, 1, 0, 4, 4, 0, 1, 1, 0, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 16, + 5, 0, 9, 0, 1, 1, 2, 3, 0, 3, + 1, 1, 1, 0, 8, 0, 9, 6, 0, 0, + 3, 0, 1, 1, 2, 2, 0, 5, 0, 1, + 1, 2, 3, 0, 4, 2, 1, 1, 1, 0, + 3, 0, 0, 10, 0, 0, 0, 12, 8, 1, + 1, 0, 1, 1, 3, 3, 3, 5, 3, 5, + 1, 1, 1, 1, 3, 4, 6, 4, 0, 7, + 0, 1, 1, 2, 1, 1, 1, 4, 6, 4, + 1, 2, 2, 1, 0, 0, 0, 10, 0, 0, + 0, 13, 1, 2, 1, 2, 1, 0, 5, 0, + 5, 1, 1, 1, 0, 0, 0, 0, 15, 5, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, - 16, 5, 0, 9, 0, 1, 1, 2, 3, 0, - 3, 1, 1, 1, 0, 8, 0, 9, 6, 0, - 0, 3, 0, 1, 1, 2, 2, 0, 5, 0, - 1, 1, 2, 3, 0, 4, 2, 1, 1, 1, - 0, 3, 0, 0, 10, 0, 0, 0, 12, 8, - 1, 1, 0, 1, 1, 3, 3, 3, 5, 3, - 5, 1, 1, 1, 1, 3, 4, 6, 4, 0, - 7, 0, 1, 1, 2, 1, 1, 1, 4, 6, - 4, 1, 2, 2, 1, 0, 0, 0, 10, 0, - 0, 0, 13, 1, 2, 1, 2, 1, 0, 5, - 0, 5, 1, 1, 1, 0, 0, 0, 0, 15, - 5, 0, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 5, 1, 1, 1, 1, - 0, 7, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 5, 1, 1, 1, 1, 0, + 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 7, 0, 7, 2, - 2, 2, 0, 0, 9, 1, 1, 0, 1, 0, - 6, 0, 6, 1, 0, 8, 0, 9, 0, 0, - 10, 0, 0, 3, 0, 1, 1, 2, 2, 0, - 5, 0, 2, 2, 2, 1, 1, 1, 0, 5, - 0, 5, 1, 1, 0, 0, 0, 12, 0, 2, - 2, 0, 1, 2, 1, 3, 2, 0, 5, 0, - 0, 0, 13, 0, 1, 1, 3, 1, 4, 2, - 0, 3, 2, 1, 3, 0, 3, 1, 1, 3, - 1, 2, 3, 4, 4, 0, 3, 1, 3, 3, + 1, 1, 1, 1, 0, 7, 0, 7, 2, 2, + 2, 0, 0, 9, 1, 1, 0, 1, 0, 6, + 0, 6, 1, 0, 8, 0, 9, 0, 0, 10, + 0, 0, 3, 0, 1, 1, 2, 2, 0, 5, + 0, 2, 2, 2, 1, 1, 1, 0, 5, 0, + 5, 1, 1, 0, 0, 0, 12, 0, 2, 2, + 0, 1, 2, 1, 3, 2, 0, 5, 0, 0, + 0, 13, 0, 1, 1, 3, 1, 4, 2, 0, + 3, 2, 1, 3, 0, 3, 1, 1, 3, 1, + 2, 3, 4, 4, 0, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 1, 3, 1, + 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 3, 4, 4, 4, 3, 3, 4, 3, 4, 4, - 0, 1, 3, 4, 0, 1, 1, 3, 2, 3, - 1, 2, 3, 2, 1, 1, 0, 1, 1, 3, - 3, 2, 2, 1, 1, 1, 1, 2, 2, 4, - 3, 1, 4, 4, 3, 1, 3, 2, 1, 3, - 1, 1, 1, 4, 3, 2, 2, 6, 3, 7, - 4, 3, 7, 3, 0, 2, 4, 1, 2, 0, - 1, 1, 3, 3, 1, 1, 1, 0, 1, 1, - 2, 2, 3, 1, 2, 0, 1, 2, 4, 1, - 3, 0, 5, 1, 1, 1, 2, 3, 3, 4, - 4, 1, 2, 4, 4, 4, 4, 0, 4, 0, - 5, 0, 1, 0, 4, 4, 1, 2, 2, 4, - 2, 1, 2, 2, 2, 2, 2, 2, 1, 3, - 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, - 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 3, 3, 2, 1, 0, - 1, 1, 1, 0, 2, 1, 1, 0, 4, 0, - 5, 0, 0, 7, 0, 0, 8, 1, 1, 1, - 1, 1, 1, 6, 4, 4, 1, 1, 0, 0, - 0, 0, 15, 0, 1, 0, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 4, 4, 4, 3, 3, 4, 3, 4, 4, 0, + 1, 3, 4, 0, 1, 1, 3, 2, 3, 1, + 2, 3, 2, 1, 1, 0, 1, 1, 3, 3, + 2, 2, 1, 1, 1, 1, 2, 2, 4, 3, + 1, 4, 4, 3, 1, 3, 2, 1, 3, 1, + 1, 1, 4, 3, 2, 2, 6, 3, 7, 4, + 3, 7, 3, 0, 2, 4, 1, 2, 0, 1, + 1, 3, 3, 1, 1, 1, 0, 1, 1, 2, + 2, 3, 1, 2, 0, 1, 2, 4, 1, 3, + 0, 5, 1, 1, 1, 2, 3, 3, 4, 4, + 1, 2, 4, 4, 4, 4, 0, 4, 0, 5, + 0, 1, 0, 4, 4, 1, 2, 2, 4, 2, + 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, + 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, + 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 3, 3, 2, 1, 0, 1, + 1, 1, 0, 2, 1, 1, 0, 4, 0, 5, + 0, 0, 7, 0, 0, 8, 1, 1, 1, 1, + 1, 1, 6, 4, 4, 1, 1, 0, 0, 0, + 0, 15, 0, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 2, 0, 1, 1, 1, - 2, 4, 1, 3, 1, 3, 1, 1, 0, 1, - 1, 1, 0, 4, 1, 1, 0, 4, 0, 1, - 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, + 1, 1, 1, 0, 2, 0, 1, 1, 1, 2, + 4, 1, 3, 1, 3, 1, 1, 0, 1, 1, + 1, 0, 4, 1, 1, 0, 4, 0, 1, 1, + 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 4, 1, 2, 2, 2, 2, - 2, 2, 1, 1, 2, 1, 1, 1, 0, 6, - 0, 7, 0, 2, 2, 1, 0, 1, 0, 1, - 1, 2, 2, 4, 0, 2, 0, 1, 1, 2, - 4, 1, 5, 2, 2, 2, 2, 2, 1, 1, - 1, 1, 1, 5, 7, 4, 0, 8, 0, 1, + 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 2, 1, 1, 1, 0, 6, 0, + 7, 0, 2, 2, 1, 0, 1, 0, 1, 1, + 2, 2, 4, 0, 2, 0, 1, 1, 2, 4, + 1, 5, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 5, 7, 4, 0, 8, 4, 0, 1, 1, 2, 1, 0, 3, 1, 2, 3, 1, 1, - 1, 1, 1, 5, 7, 3, 6, 0, 4, 0, - 0, 0, 10, 1, 0, 1, 0, 5, 1, 0, - 1, 0, 1, 1, 1, 3, 6, 0, 9, 5, - 4, 1, 1, 1, 1, 1, 1, 2, 2, 3, - 4, 3, 3, 3, 4, 3, 0, 1, 3, 4, - 5, 3, 1, 2, 0, 1, 2, 0, 7, 3, - 2, 2, 0, 3, 5, 0, 0, 10, 0, 0, - 9, 5, 2, 1, 0, 2, 2, 2, 2, 2, - 4, 5, 4, 5, 0, 5, 0, 6, 3, 2, - 1, 0, 3, 0, 0, 6, 0, 1, 1, 2, - 1, 1, 1, 1, 1, 0, 5, 0, 3, 0, - 0, 0, 12, 0, 0, 0, 13, 0, 2, 0, - 3, 1, 0, 4, 1, 0, 4, 1, 2, 2, - 1, 2, 2, 0, 0, 4, 2, 3, 0, 4, - 2, 2, 3, 0, 1, 1, 1, 2, 2, 2, - 4, 3, 0, 7, 4, 4, 3, 1, 3, 0, - 0, 4, 0, 1, 1, 3, 2, + 1, 1, 1, 5, 4, 7, 3, 6, 0, 4, + 0, 0, 0, 10, 1, 0, 1, 0, 5, 1, + 0, 1, 0, 1, 1, 1, 3, 4, 5, 0, + 9, 5, 4, 1, 1, 1, 1, 1, 1, 2, + 2, 3, 4, 3, 3, 3, 4, 3, 0, 1, + 3, 4, 5, 3, 1, 2, 0, 1, 2, 0, + 7, 3, 2, 2, 0, 3, 5, 4, 0, 0, + 10, 0, 0, 9, 5, 4, 2, 1, 0, 2, + 2, 2, 2, 2, 4, 5, 4, 5, 0, 5, + 0, 6, 3, 2, 1, 0, 3, 0, 0, 6, + 0, 1, 1, 2, 1, 1, 1, 1, 1, 0, + 5, 0, 3, 0, 0, 0, 12, 0, 0, 0, + 13, 0, 2, 0, 3, 1, 0, 4, 1, 0, + 4, 1, 2, 2, 1, 2, 2, 0, 0, 4, + 2, 3, 0, 4, 2, 2, 3, 0, 1, 1, + 1, 2, 2, 2, 4, 3, 0, 7, 4, 4, + 3, 1, 3, 0, 0, 4, 0, 1, 1, 3, + 2, }; static readonly short [] yyDefRed = { 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 4, - 0, 0, 11, 14, 0, 927, 0, 0, 931, 0, - 0, 15, 17, 18, 374, 380, 387, 375, 377, 0, - 376, 0, 383, 385, 372, 0, 379, 381, 373, 384, - 386, 382, 336, 948, 0, 378, 938, 0, 10, 1, - 0, 0, 0, 12, 0, 771, 0, 0, 0, 0, - 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, - 0, 0, 413, 0, 0, 0, 473, 0, 414, 0, - 512, 0, 853, 0, 0, 0, 623, 0, 0, 0, - 0, 0, 0, 0, 673, 0, 723, 0, 0, 0, - 0, 0, 0, 0, 0, 412, 0, 612, 0, 770, - 0, 706, 0, 0, 0, 0, 389, 390, 0, 392, + 0, 0, 11, 14, 0, 931, 0, 0, 935, 0, + 0, 15, 17, 373, 379, 386, 374, 376, 0, 375, + 0, 382, 384, 371, 0, 378, 380, 372, 383, 385, + 381, 335, 952, 0, 377, 942, 0, 10, 1, 0, + 0, 0, 12, 0, 770, 0, 0, 0, 0, 0, + 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, + 0, 412, 0, 0, 0, 472, 0, 413, 0, 511, + 0, 855, 0, 0, 0, 622, 0, 0, 0, 0, + 0, 0, 0, 672, 0, 722, 0, 0, 0, 0, + 0, 0, 0, 0, 411, 0, 611, 0, 769, 0, + 705, 0, 0, 0, 0, 388, 389, 0, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 410, 411, 619, 542, 0, + 403, 404, 405, 406, 409, 410, 618, 541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 620, 618, 621, 622, 690, 692, 0, 688, 691, - 707, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 708, 0, 0, 0, 772, 773, 790, 791, 792, - 793, 822, 823, 824, 825, 826, 827, 0, 0, 0, - 20, 0, 0, 0, 326, 0, 328, 935, 16, 928, - 0, 0, 239, 238, 235, 240, 241, 234, 253, 252, - 245, 246, 242, 244, 243, 247, 236, 237, 248, 249, - 255, 254, 250, 251, 0, 0, 951, 0, 940, 0, - 939, 3, 52, 0, 0, 0, 42, 39, 41, 43, - 44, 45, 46, 47, 50, 13, 0, 0, 0, 828, - 416, 417, 851, 0, 0, 0, 0, 0, 0, 391, - 0, 829, 0, 534, 528, 533, 722, 769, 693, 720, - 719, 721, 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 705, 0, 0, 0, 798, 0, 0, - 0, 738, 737, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 838, 0, 388, 0, 0, 0, 0, - 0, 0, 852, 0, 0, 0, 736, 732, 0, 0, - 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, - 0, 0, 0, 0, 615, 0, 541, 0, 0, 539, - 543, 544, 538, 548, 547, 545, 546, 608, 523, 0, - 409, 408, 0, 0, 0, 0, 0, 724, 0, 325, - 0, 730, 731, 0, 476, 477, 0, 0, 0, 728, - 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 619, 617, 620, 621, 689, 691, 0, 687, 690, 706, + 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, + 707, 0, 0, 0, 771, 772, 790, 791, 792, 793, + 824, 825, 826, 827, 828, 829, 0, 0, 0, 20, + 0, 0, 0, 325, 0, 327, 939, 16, 932, 0, + 0, 238, 237, 234, 239, 240, 233, 252, 251, 244, + 245, 241, 243, 242, 246, 235, 236, 247, 248, 254, + 253, 249, 250, 0, 0, 955, 0, 944, 0, 943, + 3, 51, 0, 0, 0, 41, 38, 40, 42, 43, + 44, 45, 46, 49, 13, 0, 0, 0, 830, 415, + 416, 853, 0, 0, 0, 0, 0, 0, 390, 0, + 831, 0, 533, 527, 532, 721, 768, 692, 719, 718, + 720, 693, 694, 695, 696, 697, 698, 699, 700, 701, + 702, 703, 704, 0, 0, 0, 799, 0, 0, 0, + 737, 736, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 840, 0, 387, 0, 0, 0, 0, 0, + 0, 854, 0, 0, 0, 735, 731, 0, 0, 0, + 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, + 0, 0, 0, 614, 0, 540, 0, 0, 538, 542, + 543, 537, 547, 546, 544, 545, 607, 522, 0, 408, + 407, 0, 0, 0, 0, 0, 723, 0, 324, 0, + 729, 730, 0, 475, 476, 0, 0, 0, 727, 728, 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, 930, 689, 739, 727, 0, - 767, 768, 881, 898, 0, 0, 0, 910, 869, 867, - 891, 0, 0, 889, 892, 893, 894, 895, 870, 868, - 0, 0, 0, 330, 0, 21, 0, 0, 0, 947, - 0, 337, 0, 0, 0, 949, 0, 0, 40, 645, - 651, 643, 0, 640, 650, 644, 642, 641, 648, 646, - 647, 653, 649, 652, 654, 0, 0, 638, 51, 475, - 0, 471, 472, 0, 0, 469, 0, 741, 0, 0, - 0, 796, 0, 765, 766, 0, 0, 0, 627, 0, - 832, 830, 628, 0, 0, 497, 0, 0, 0, 488, - 0, 492, 502, 504, 0, 484, 0, 0, 0, 0, - 0, 479, 0, 482, 0, 486, 357, 833, 0, 0, - 834, 842, 0, 0, 0, 843, 0, 0, 854, 0, - 0, 735, 0, 367, 363, 364, 0, 0, 362, 365, - 366, 0, 0, 0, 549, 0, 0, 530, 0, 610, - 687, 0, 0, 0, 681, 683, 684, 685, 420, 421, - 0, 333, 334, 0, 177, 176, 178, 0, 0, 0, - 0, 359, 0, 595, 0, 0, 836, 0, 0, 425, - 0, 428, 0, 426, 0, 465, 0, 0, 0, 0, - 0, 454, 457, 0, 0, 449, 456, 455, 0, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 594, 593, - 550, 552, 551, 557, 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 581, 0, 0, 501, 0, 0, 0, 0, 0, 0, - 0, 882, 884, 880, 0, 890, 0, 0, 327, 945, - 946, 351, 0, 0, 348, 0, 0, 174, 0, 0, - 955, 941, 943, 60, 58, 59, 0, 0, 53, 0, - 0, 61, 63, 27, 25, 0, 0, 0, 635, 0, - 639, 424, 0, 474, 0, 525, 0, 536, 164, 185, - 0, 0, 154, 0, 0, 0, 165, 529, 0, 856, - 804, 0, 815, 799, 0, 806, 0, 821, 0, 0, - 831, 776, 0, 0, 0, 487, 0, 503, 505, 0, - 0, 441, 0, 0, 437, 0, 0, 466, 0, 507, - 481, 0, 140, 508, 138, 139, 510, 0, 524, 0, - 847, 0, 840, 0, 844, 516, 0, 0, 0, 352, - 0, 514, 0, 0, 526, 0, 859, 0, 873, 0, - 871, 0, 0, 625, 626, 0, 0, 0, 686, 675, - 676, 674, 682, 603, 609, 602, 0, 0, 332, 598, - 0, 0, 0, 540, 835, 725, 429, 423, 427, 422, - 527, 464, 463, 462, 459, 458, 0, 453, 418, 419, - 430, 0, 0, 746, 0, 0, 899, 875, 0, 900, - 0, 896, 0, 911, 0, 0, 0, 0, 879, 19, - 329, 672, 671, 0, 670, 0, 347, 957, 175, 952, - 0, 0, 54, 0, 0, 0, 0, 0, 0, 354, - 0, 629, 0, 0, 80, 79, 0, 470, 0, 0, - 0, 0, 0, 535, 0, 0, 0, 0, 0, 807, - 800, 0, 0, 820, 0, 0, 855, 494, 493, 444, - 0, 0, 936, 937, 433, 439, 0, 442, 0, 468, - 0, 0, 0, 0, 0, 777, 850, 0, 841, 0, - 522, 517, 0, 0, 513, 0, 862, 0, 794, 874, - 872, 0, 531, 0, 611, 607, 606, 605, 335, 597, - 596, 613, 461, 0, 451, 450, 583, 140, 0, 762, - 744, 0, 0, 0, 751, 0, 877, 0, 904, 0, - 919, 920, 913, 883, 885, 925, 350, 349, 956, 0, - 0, 62, 56, 0, 64, 26, 23, 0, 0, 305, - 0, 211, 0, 102, 0, 77, 756, 113, 114, 0, - 0, 0, 759, 183, 184, 0, 0, 0, 0, 157, - 166, 158, 160, 797, 0, 0, 0, 0, 0, 816, - 817, 0, 0, 443, 445, 446, 440, 434, 438, 0, - 499, 0, 467, 478, 432, 511, 509, 0, 846, 0, - 0, 0, 518, 0, 864, 0, 0, 624, 616, 0, - 460, 0, 0, 740, 752, 876, 0, 0, 0, 897, - 0, 0, 0, 944, 0, 0, 0, 69, 70, 73, - 74, 0, 320, 311, 310, 0, 630, 207, 97, 0, - 742, 760, 169, 0, 181, 0, 0, 0, 795, 866, - 0, 0, 0, 811, 0, 818, 775, 483, 480, 783, - 0, 789, 0, 0, 781, 0, 786, 848, 521, 520, - 863, 860, 0, 614, 0, 0, 878, 901, 0, 0, - 0, 915, 0, 926, 0, 75, 67, 0, 0, 0, - 306, 0, 0, 0, 0, 0, 170, 0, 161, 159, - 857, 808, 801, 0, 0, 778, 782, 0, 787, 0, - 0, 617, 0, 754, 0, 905, 922, 923, 916, 886, - 55, 0, 71, 72, 0, 0, 0, 0, 0, 0, - 0, 761, 168, 0, 180, 0, 0, 819, 788, 0, - 677, 849, 861, 763, 0, 0, 0, 76, 0, 0, - 321, 0, 307, 0, 315, 371, 370, 0, 368, 659, - 0, 631, 0, 660, 208, 98, 171, 858, 0, 0, - 813, 0, 902, 0, 917, 0, 0, 0, 0, 0, - 0, 0, 0, 661, 0, 0, 802, 0, 0, 906, - 29, 24, 322, 0, 0, 316, 369, 0, 0, 0, - 99, 0, 678, 0, 0, 0, 0, 308, 667, 0, - 668, 665, 0, 663, 95, 0, 94, 0, 0, 83, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 141, - 0, 0, 224, 216, 217, 218, 219, 220, 221, 222, - 223, 0, 0, 214, 0, 803, 0, 903, 0, 323, - 319, 0, 0, 0, 632, 84, 0, 267, 262, 266, - 0, 209, 215, 0, 909, 907, 666, 664, 0, 0, - 0, 0, 0, 0, 0, 275, 0, 0, 225, 0, - 0, 233, 0, 152, 142, 151, 0, 100, 0, 0, - 261, 0, 0, 260, 0, 146, 0, 0, 341, 0, - 339, 0, 0, 186, 0, 0, 0, 0, 0, 633, - 210, 0, 103, 0, 338, 0, 0, 0, 0, 117, - 0, 0, 0, 0, 0, 0, 143, 0, 0, 190, - 0, 342, 0, 228, 227, 226, 0, 101, 0, 279, - 0, 258, 119, 0, 256, 0, 0, 0, 121, 0, - 343, 0, 0, 187, 0, 0, 0, 340, 231, 112, - 110, 0, 0, 283, 0, 0, 0, 0, 0, 147, - 0, 264, 0, 0, 0, 0, 125, 0, 0, 0, - 0, 344, 345, 0, 0, 0, 0, 0, 107, 298, - 0, 280, 0, 0, 292, 0, 0, 0, 287, 0, - 137, 0, 0, 0, 0, 132, 0, 0, 276, 0, - 122, 0, 116, 126, 144, 150, 198, 0, 188, 0, - 0, 0, 0, 111, 0, 104, 108, 0, 0, 0, - 294, 0, 295, 284, 0, 0, 278, 288, 259, 0, - 0, 118, 133, 257, 0, 274, 0, 265, 269, 128, - 0, 0, 0, 195, 197, 191, 232, 109, 299, 301, - 281, 0, 0, 293, 290, 136, 134, 148, 0, 0, - 0, 145, 199, 201, 189, 0, 0, 0, 292, 0, - 270, 272, 129, 0, 0, 192, 303, 304, 300, 302, - 291, 149, 0, 0, 205, 204, 203, 200, 202, 0, - 0, 0, 193, 271, 273, + 0, 0, 0, 0, 934, 688, 738, 726, 0, 766, + 767, 885, 902, 0, 0, 0, 914, 873, 871, 895, + 0, 0, 893, 896, 897, 898, 899, 874, 872, 0, + 0, 0, 329, 18, 0, 0, 0, 0, 951, 0, + 336, 0, 0, 0, 953, 0, 0, 39, 644, 650, + 642, 0, 639, 649, 643, 641, 640, 647, 645, 646, + 652, 648, 651, 653, 0, 0, 637, 50, 474, 0, + 470, 471, 0, 0, 468, 0, 740, 0, 0, 0, + 797, 0, 764, 765, 0, 0, 0, 626, 0, 834, + 832, 627, 0, 0, 496, 0, 0, 0, 487, 0, + 491, 501, 503, 0, 483, 0, 0, 0, 0, 0, + 478, 0, 481, 0, 485, 356, 835, 0, 0, 836, + 844, 0, 0, 0, 845, 0, 0, 856, 0, 0, + 734, 0, 366, 362, 363, 0, 0, 361, 364, 365, + 0, 0, 0, 548, 0, 0, 529, 0, 609, 686, + 0, 0, 0, 680, 682, 683, 684, 419, 420, 0, + 332, 333, 0, 176, 175, 177, 0, 0, 0, 0, + 358, 0, 594, 0, 0, 838, 0, 0, 424, 0, + 427, 0, 425, 0, 464, 0, 0, 0, 0, 0, + 453, 456, 0, 0, 448, 455, 454, 0, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 593, 592, 549, + 551, 550, 556, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 580, + 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, + 886, 888, 884, 0, 894, 0, 0, 326, 949, 950, + 350, 0, 0, 347, 0, 0, 173, 0, 0, 959, + 945, 947, 59, 57, 58, 0, 0, 52, 0, 0, + 60, 62, 26, 24, 0, 0, 0, 634, 0, 638, + 423, 0, 473, 0, 524, 0, 535, 163, 184, 0, + 0, 153, 0, 0, 0, 164, 528, 0, 859, 805, + 0, 816, 800, 0, 807, 0, 818, 0, 833, 775, + 0, 858, 0, 0, 486, 0, 502, 504, 0, 0, + 440, 0, 0, 436, 0, 0, 465, 0, 506, 480, + 0, 139, 507, 137, 138, 509, 0, 523, 778, 0, + 849, 0, 842, 0, 846, 515, 0, 0, 0, 351, + 0, 513, 0, 0, 525, 866, 0, 862, 795, 0, + 877, 0, 875, 0, 0, 624, 625, 0, 0, 0, + 685, 674, 675, 673, 681, 602, 608, 601, 0, 0, + 331, 597, 0, 0, 0, 539, 837, 724, 428, 422, + 426, 421, 526, 463, 462, 461, 458, 457, 0, 452, + 417, 418, 429, 0, 0, 745, 0, 0, 903, 879, + 0, 904, 0, 900, 0, 915, 0, 0, 0, 0, + 883, 19, 328, 671, 670, 0, 669, 0, 346, 961, + 174, 956, 0, 0, 53, 0, 0, 0, 0, 0, + 0, 353, 0, 628, 0, 0, 79, 78, 0, 469, + 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 808, 801, 0, 819, 0, 0, 857, 493, 492, + 443, 0, 0, 940, 941, 432, 438, 0, 441, 0, + 467, 0, 0, 0, 0, 0, 776, 852, 0, 843, + 0, 521, 516, 0, 0, 512, 0, 865, 0, 794, + 878, 876, 0, 530, 0, 610, 606, 605, 604, 334, + 596, 595, 612, 460, 0, 450, 449, 582, 139, 0, + 761, 743, 0, 0, 0, 750, 0, 881, 0, 908, + 0, 923, 924, 917, 887, 889, 929, 349, 348, 960, + 0, 0, 61, 55, 0, 63, 25, 22, 0, 0, + 304, 0, 210, 0, 101, 0, 76, 755, 112, 113, + 0, 0, 0, 758, 182, 183, 0, 0, 0, 0, + 156, 165, 157, 159, 798, 0, 0, 0, 0, 0, + 817, 0, 0, 442, 444, 445, 439, 433, 437, 0, + 498, 0, 466, 477, 431, 510, 508, 0, 848, 0, + 0, 0, 517, 0, 868, 0, 0, 623, 615, 0, + 459, 0, 0, 739, 751, 880, 0, 0, 0, 901, + 0, 0, 0, 948, 0, 0, 0, 68, 69, 72, + 73, 0, 319, 310, 309, 0, 629, 206, 96, 0, + 741, 759, 168, 0, 180, 0, 0, 0, 796, 870, + 0, 0, 0, 812, 0, 820, 774, 482, 479, 783, + 0, 789, 0, 0, 781, 0, 786, 850, 520, 519, + 867, 863, 0, 613, 0, 0, 882, 905, 0, 0, + 0, 919, 0, 930, 0, 74, 66, 0, 0, 0, + 305, 0, 0, 0, 0, 0, 169, 0, 160, 158, + 860, 809, 802, 0, 0, 777, 782, 0, 787, 0, + 0, 616, 0, 753, 0, 909, 926, 927, 920, 890, + 54, 0, 70, 71, 0, 0, 0, 0, 0, 0, + 0, 760, 167, 0, 179, 0, 0, 821, 788, 0, + 676, 851, 864, 762, 0, 0, 0, 75, 0, 0, + 320, 0, 306, 0, 314, 370, 369, 0, 367, 658, + 0, 630, 0, 659, 207, 97, 170, 861, 0, 0, + 814, 0, 906, 0, 921, 0, 0, 0, 0, 0, + 0, 0, 0, 660, 0, 0, 803, 0, 0, 910, + 28, 23, 321, 0, 0, 315, 368, 0, 0, 0, + 98, 0, 677, 0, 0, 0, 0, 307, 666, 0, + 667, 664, 0, 662, 94, 0, 93, 0, 0, 82, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 140, + 0, 0, 223, 215, 216, 217, 218, 219, 220, 221, + 222, 0, 0, 213, 0, 804, 0, 907, 0, 322, + 318, 0, 0, 0, 631, 83, 0, 266, 261, 265, + 0, 208, 214, 0, 913, 911, 665, 663, 0, 0, + 0, 0, 0, 0, 0, 274, 0, 0, 224, 0, + 0, 232, 0, 151, 141, 150, 0, 99, 0, 0, + 260, 0, 0, 259, 0, 145, 0, 0, 340, 0, + 338, 0, 0, 185, 0, 0, 0, 0, 0, 632, + 209, 0, 102, 0, 337, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 0, 142, 0, 0, 189, + 0, 341, 0, 227, 226, 225, 0, 100, 0, 278, + 0, 257, 118, 0, 255, 0, 0, 0, 120, 0, + 342, 0, 0, 186, 0, 0, 0, 339, 230, 111, + 109, 0, 0, 282, 0, 0, 0, 0, 0, 146, + 0, 263, 0, 0, 0, 0, 124, 0, 0, 0, + 0, 343, 344, 0, 0, 0, 0, 0, 106, 297, + 0, 279, 0, 0, 291, 0, 0, 0, 286, 0, + 136, 0, 0, 0, 0, 131, 0, 0, 275, 0, + 121, 0, 115, 125, 143, 149, 197, 0, 187, 0, + 0, 0, 0, 110, 0, 103, 107, 0, 0, 0, + 293, 0, 294, 283, 0, 0, 277, 287, 258, 0, + 0, 117, 132, 256, 0, 273, 0, 264, 268, 127, + 0, 0, 0, 194, 196, 190, 231, 108, 298, 300, + 280, 0, 0, 292, 289, 135, 133, 147, 0, 0, + 0, 144, 198, 200, 188, 0, 0, 0, 291, 0, + 269, 271, 128, 0, 0, 191, 302, 303, 299, 301, + 290, 148, 0, 0, 204, 203, 202, 199, 201, 0, + 0, 0, 192, 270, 272, }; protected static readonly short [] yyDgoto = { 7, - 8, 50, 9, 51, 10, 11, 52, 234, 691, 432, - 12, 13, 53, 22, 23, 24, 323, 194, 237, 676, - 838, 1032, 1150, 1487, 835, 238, 239, 240, 241, 242, - 243, 244, 245, 669, 447, 670, 671, 941, 672, 673, - 945, 836, 1027, 1028, 1029, 268, 593, 1122, 111, 847, - 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, - 1228, 1229, 466, 680, 1301, 955, 1129, 1094, 1162, 1186, - 1245, 1312, 1157, 1362, 1339, 1387, 1388, 1389, 957, 1385, - 958, 736, 1278, 1350, 1325, 1375, 516, 1368, 1344, 1404, - 920, 1373, 1376, 1377, 1471, 1405, 1406, 1402, 1230, 1285, - 1257, 1302, 692, 1352, 1451, 1322, 1408, 1480, 467, 269, - 693, 694, 695, 696, 697, 656, 570, 1134, 657, 658, - 853, 1304, 1329, 1419, 1380, 1453, 1305, 1355, 1476, 1500, - 1420, 1421, 1498, 1484, 1485, 953, 1093, 1185, 1242, 1287, - 1243, 1244, 1279, 1336, 1308, 1280, 326, 225, 1384, 1282, - 1369, 1366, 1231, 1259, 1298, 1448, 1410, 1142, 1449, 594, - 1493, 1494, 1297, 1365, 1341, 1397, 1392, 1363, 1429, 1434, - 1395, 1398, 1399, 1479, 1435, 1393, 1394, 1489, 1477, 1478, - 950, 1036, 1153, 1127, 1179, 1154, 1155, 1194, 1090, 1177, - 1206, 535, 195, 113, 352, 197, 564, 442, 226, 1317, - 654, 655, 824, 840, 327, 409, 534, 305, 1158, 1159, - 46, 115, 306, 117, 118, 119, 120, 121, 122, 123, + 8, 49, 9, 50, 10, 11, 51, 233, 690, 431, + 12, 13, 52, 22, 23, 192, 322, 236, 675, 840, + 1032, 1150, 1487, 837, 237, 238, 239, 240, 241, 242, + 243, 244, 668, 446, 669, 670, 942, 671, 672, 946, + 838, 1027, 1028, 1029, 267, 592, 1122, 110, 849, 1218, + 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, + 1229, 465, 679, 1301, 956, 1129, 1094, 1162, 1186, 1245, + 1312, 1157, 1362, 1339, 1387, 1388, 1389, 958, 1385, 959, + 735, 1278, 1350, 1325, 1375, 515, 1368, 1344, 1404, 921, + 1373, 1376, 1377, 1471, 1405, 1406, 1402, 1230, 1285, 1257, + 1302, 691, 1352, 1451, 1322, 1408, 1480, 466, 268, 692, + 693, 694, 695, 696, 655, 569, 1134, 656, 657, 855, + 1304, 1329, 1419, 1380, 1453, 1305, 1355, 1476, 1500, 1420, + 1421, 1498, 1484, 1485, 954, 1093, 1185, 1242, 1287, 1243, + 1244, 1279, 1336, 1308, 1280, 325, 224, 1384, 1282, 1369, + 1366, 1231, 1259, 1298, 1448, 1410, 1142, 1449, 593, 1493, + 1494, 1297, 1365, 1341, 1397, 1392, 1363, 1429, 1434, 1395, + 1398, 1399, 1479, 1435, 1393, 1394, 1489, 1477, 1478, 951, + 1036, 1153, 1127, 1179, 1154, 1155, 1194, 1090, 1177, 1206, + 534, 194, 112, 351, 196, 563, 441, 225, 1317, 653, + 654, 826, 842, 326, 408, 533, 304, 1158, 1159, 45, + 114, 305, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 254, 801, 994, 512, 723, 875, - 724, 725, 987, 138, 200, 729, 595, 596, 597, 598, - 795, 475, 476, 299, 992, 731, 410, 301, 499, 500, - 501, 502, 505, 738, 312, 753, 754, 892, 265, 481, - 766, 266, 480, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 573, 574, - 575, 775, 776, 908, 777, 154, 561, 768, 353, 1010, - 549, 1073, 155, 494, 951, 1092, 1183, 1283, 468, 1163, - 1164, 1213, 1214, 825, 553, 338, 772, 1172, 554, 555, - 270, 271, 272, 158, 159, 160, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 172, 285, - 579, 173, 174, 319, 806, 633, 923, 850, 687, 961, - 921, 924, 1052, 925, 962, 963, 286, 175, 176, 177, - 1063, 998, 1064, 1065, 1066, 1108, 1067, 178, 179, 180, - 181, 704, 487, 705, 1055, 979, 1169, 1137, 1202, 706, - 978, 707, 1171, 1104, 182, 183, 184, 185, 186, 187, - 307, 525, 526, 1000, 1110, 315, 977, 859, 1136, 1007, - 898, 1111, 188, 420, 189, 421, 926, 1017, 422, 645, - 819, 816, 817, 1022, 423, 424, 425, 426, 427, 428, - 930, 635, 928, 1115, 1189, 1248, 1019, 1146, 1205, 814, - 641, 815, 1081, 1021, 1082, 1147, 1023, 17, 19, 47, - 48, 229, 659, 832, 443, 660, 661, + 134, 135, 136, 253, 803, 994, 511, 722, 876, 723, + 724, 987, 137, 199, 728, 594, 595, 596, 597, 797, + 474, 475, 298, 992, 730, 409, 300, 498, 499, 500, + 501, 504, 737, 311, 753, 754, 893, 264, 480, 768, + 265, 479, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 572, 573, 574, + 777, 778, 909, 779, 153, 560, 770, 352, 1010, 548, + 1073, 154, 493, 952, 1092, 1183, 1283, 467, 1163, 1164, + 1213, 1214, 827, 552, 337, 774, 1172, 553, 554, 269, + 270, 271, 157, 158, 159, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 171, 284, 578, + 172, 173, 318, 808, 632, 924, 852, 686, 962, 922, + 925, 1052, 926, 963, 964, 285, 174, 175, 176, 1063, + 998, 1064, 1065, 1066, 1108, 1067, 177, 178, 179, 180, + 703, 486, 704, 1055, 980, 1169, 1137, 1202, 705, 979, + 706, 1171, 1104, 181, 182, 183, 184, 185, 186, 306, + 524, 525, 1000, 1110, 314, 978, 861, 1136, 1007, 899, + 1111, 187, 419, 188, 420, 927, 1017, 421, 644, 821, + 818, 819, 1022, 422, 423, 424, 425, 426, 427, 931, + 634, 929, 1115, 1189, 1248, 1019, 1146, 1205, 816, 640, + 817, 1081, 1021, 1082, 1147, 1023, 17, 19, 46, 47, + 228, 658, 834, 442, 659, 660, }; - protected static readonly short [] yySindex = { -54, - 0, -193, -117, -72, 106,12157, 0, 257, 0, 0, - 106, -72, 0, 0, 180, 0, 6802, 106, 0, -188, - -231, 0, 0, 0, 0, 0, 0, 0, 0, 235, - 0, 301, 0, 0, 0, 1660, 0, 0, 0, 0, - 0, 0, 0, 0, 549, 0, 0, 559, 0, 0, - 257, 267, 106, 0, 291, 0, 243, 315, -259,11657, - 330, 232, 375, 6959, 0, 232, 232, 232, -163, 232, - 232, 12, 0,10760, 232, 232, 0,10760, 0, 374, - 0, -259, 0, 232, 351, 232, 0,11736,11736, 390, - 232, 232, 4,11440, 0,10760, 0,11440,11440,11440, -11440,11440,11440,11440,11440, 0, -237, 0, 8508, 0, - 179, 0, 371, 421, 533, 340, 0, 0, 441, 0, + protected static readonly short [] yySindex = { 55, + 0, -177, -124, -210, 197,12010, 0, 149, 0, 0, + 197, -210, 0, 0, 217, 0, 6687, 197, 0, -165, + -245, 0, 0, 0, 0, 0, 0, 0, 203, 0, + 251, 0, 0, 0, 3719, 0, 0, 0, 0, 0, + 0, 0, 0, 422, 0, 0, 701, 0, 0, 149, + 347, 197, 0, 329, 0, 234, 351, 303,11510, 364, + 174, 415, 6844, 0, 174, 174, 174, 6, 174, 174, + 717, 0,10613, 174, 174, 0,10613, 0, 377, 0, + 303, 0, 174, 444, 174, 0,12029,12029, 480, 174, + 174, -138,11293, 0,10613, 0,11293,11293,11293,11293, +11293,11293,11293,11293, 0, 190, 0, 8098, 0, 191, + 0, 464, 466, 336, -236, 0, 0, 458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, - 668, 50, 20, 462, 463, 508, 458, 518, 544, 408, - 543, 0, 0, 0, 0, 0, 0, 3463, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1141, 681, + 74, 420, 588, 498, 478, 516, 532, 522, 376, 550, + 0, 0, 0, 0, 0, 0, 3420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -262, 589, -266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -168, -158, 267, - 0, 336, 574, 600, 0, 572, 0, 0, 0, 0, - 8508, 8508, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -254, 560, -264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -120, 148, 347, 0, + 419, 572, 596, 0, 575, 0, 0, 0, 0, 8098, + 8098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 660, 584, 0, 621, 0, -260, - 0, 0, 0, 267,12653, 267, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 806, 647,10896, 0, - 0, 0, 0,10760, 232, 232, 819, 367, 533, 0, - -262, 0, 8508, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 660, 607, 0, 624, 0, -248, 0, + 0, 0, 347,12622, 347, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 794, 639,10749, 0, 0, + 0, 0,10613, 174, 174, 784, -277, 336, 0, -254, + 0, 8098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 157, 158,11657, 0, 8508,10760, - 714, 0, 0, 733,10760,10760, 9119, -235, -84, 759, - 8665,11440, -237, 0, 745, 0, 756, 8508,10760, 761, - -118, 232, 0,10760, 374,10216, 0, 0, 351,10760, - 351, -264, 480, 855, -262, 0, 589, 340, 861, -262, -10760,10760,10760, 375, 0, 820, 0, 7116, -263, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4346, - 0, 0,12086, -264, 768, 784,10760, 0, 788, 0, - 233, 0, 0, 461, 0, 0, 793, 8648, 9944, 0, - 0,11440,10760,10760,10760,10760,10760,10760,10760,10760, -10760,10760,10760,11440,11440,11440, 8508, 8508,11440,11440, -11440,11440,11440,11440,11440,11440,11440,11440,11440,11440, -11440,11440,11440,11440,10760, 0, 0, 0, 0, 589, - 0, 0, 0, 0,11736,11736, -262, 0, 0, 0, - 0, 97, 640, 0, 0, 0, 0, 0, 0, 0, - 267, 267, 807, 0, 811, 0, 788, 660, 660, 0, - 73, 0, 618, 660, 837, 0, -183,12653, 0, 0, - 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -145,12696, 0, 0, 0, - 788, 0, 0, 849, 445, 0, 854, 0, 859, -140, - 374, 0, 232, 0, 0, -262, 8196, -201, 0, 856, - 0, 0, 0, -156, 865, 0, 320, 0, 866, 0, - 864, 0, 0, 0, 465, 0, 8332, 664,10760, 759, - 9944, 0, 7587, 0, 351, 0, 0, 0, 867, 868, - 0, 0, -259, 374, 373, 0, 4187, 871, 0, 873, - -262, 0, 874, 0, 0, 0,10760, 953, 0, 0, - 0,10760, 956, 877, 0, 881, 884, 0,12086, 0, - 0, -186, -221, 7116, 0, 0, 0, 0, 0, 0, - 374, 0, 0, 131, 0, 0, 0, 351, -264, -262, - 8822, 0, 885, 0, 889,11440, 0, 886, 7116, 0, - 349, 0, 354, 0, 788, 0, 13,10760,10760, 893, - 1009, 0, 0, -255, 895, 0, 0, 0, 668, 0, + 0, 0, 0, -140, -30,11510, 0, 8098,10613, 697, + 0, 0, 700,10613,10613, 9004, -202, -163, 716, 8393, +11293, 190, 0, 723, 0, 734, 8098,10613, 738, 432, + 174, 0,10613, 377,10069, 0, 0, 444,10613, 444, + 305, 487, 840, -254, 0, 560, -236, 844, -254,10613, +10613,10613, 415, 0, 779, 0, 7001, -310, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4144, 0, + 0,11939, 305, 769, 778,10613, 0, 736, 0, 463, + 0, 0, 491, 0, 0, 780, 8533, 9797, 0, 0, +11293,10613,10613,10613,10613,10613,10613,10613,10613,10613, +10613,10613,11293,11293,11293, 8098, 8098,11293,11293,11293, +11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, +11293,11293,11293,10613, 0, 0, 0, 0, 560, 0, + 0, 0, 0,12029,12029, -254, 0, 0, 0, 0, + -224, 822, 0, 0, 0, 0, 0, 0, 0, 347, + 347, 787, 0, 0, 800, 736, 660, 660, 0, 75, + 0, 534, 660, 823, 0, -197,12622, 0, 0, 0, + 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 284,12652, 0, 0, 0, 736, + 0, 0, 806, 484, 0, 848, 0, 849, 36, 377, + 0, 174, 0, 0, -254, 8081, -176, 0, 847, 0, + 0, 0, -158, -150, 0, 355, 0, 856, 0, 852, + 0, 0, 0, 515, 0, 8217, 622,10613, 716, 9797, + 0, 7472, 0, 444, 0, 0, 0, 855, -143, 0, + 0, 303, 377, 112, 0, 1554, 858, 0, -49, -254, + 0, -46, 0, 0, 0,10613, 934, 0, 0, 0, +10613, 938, 869, 0, 874, 875, 0,11939, 0, 0, + -198, -280, 7001, 0, 0, 0, 0, 0, 0, 377, + 0, 0, 401, 0, 0, 0, 444, 305, -254, 8550, + 0, 876, 0, 879,11293, 0, 877, 7001, 0, 115, + 0, 390, 0, 736, 0, 92,10613,10613, 881, 998, + 0, 0, -291, 882, 0, 0, 0, 681, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 668, 668, 50, 50, 20, - 20, 20, 20, 462, 462, 463, 508, 458, 518, 544, - 0, 892, -198, 0,10760, 976, -262, 977, -262, 896, -10760, 0, 0, 0, 917, 0, 386, 788, 0, 0, - 0, 0, 517, 230, 0, 8822, 618, 0, 904, 905, - 0, 0, 0, 0, 0, 0, -264, 574, 0, 906, - 912, 0, 0, 0, 0, 916, 8979, 872, 0, 250, - 0, 0, 582, 0,10896, 0, 913, 0, 0, 0, - 577, 924, 0, 923, 930, 931, 0, 0,10760, 0, - 0, -262, 0, 0, 935, 0, 932, 0,10760, -119, - 0, 0, 6959, 6959, 8491, 0, 9119, 0, 0,10352, - 236, 0, -55, -112, 0, 878, 890, 0, 28, 0, - 0, 943, 0, 0, 0, 0, 0, 942, 0, 950, - 0, 4505, 0, 374, 0, 0, 351, 511, 897, 0, - 168, 0, 947, 949, 0, 6959, 0, 6959, 0,10760, - 0,10760, 8508, 0, 0, 374, 948, 374, 0, 0, - 0, 0, 0, 0, 0, 0, 8805, 8508, 0, 0, - -262,12086, 980, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9808, 0, 0, 0, - 0,10080,10760, 0, 7744, 958, 0, 0, 1040, 0, - 1041, 0, 614, 0, 962,10760,10760, -262, 0, 0, - 0, 0, 0, 919, 0, 73, 0, 0, 0, 0, - 618, 618, 0, 807, 970, 971, 926, 974, 872, 0, - 972, 0, 1090, 1092, 0, 0,10760, 0,10488, 981, - 577, 8822, 8508, 0, 274, 1098, 1101, -126, 964, 0, - 0,10760, 990, 0,10760, 1083, 0, 0, 0, 0, - -164,10624, 0, 0, 0, 0, 7880, 0, 1108, 0, - 589,10760, 998, 8491, 999, 0, 0, -262, 0, 203, - 0, 0, 788, 897, 0, -262, 0, -167, 0, 0, - 0, 1000, 0, 1027, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 578, 0, 0, 0, 0, 8665, 0, - 0, -262, 995, 958, 0,10760, 0,10760, 0,10760, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1003, - 807, 0, 0,11032, 0, 0, 0, 1004, 7604, 0, - 872, 0, 872, 0, 872, 0, 0, 0, 0, -262, - 1005, 981, 0, 0, 0, -169, -166, 1002, 1008, 0, - 0, 0, 0, 0, 1010, 8491, 958, -198,10760, 0, - 0, 1012, 6959, 0, 0, 0, 0, 0, 0, 1017, - 0, 759, 0, 0, 0, 0, 0, -202, 0, 1016, - 788, 897, 0, 897, 0, 958, 1018, 0, 0, 374, - 0, 951, 1013, 0, 0, 0,10760, 1042,10760, 0, -10760, 1044, 256, 0, 912, 279, 613, 0, 0, 0, - 0, -72, 0, 0, 0, 1026, 0, 0, 0, 1015, - 0, 0, 0, 455, 0, 1029, 1155, 1156, 0, 0, - 958, 1045, 958, 0, 1037, 0, 0, 0, 0, 0, -10760, 0, 1048, -209, 0, -209, 0, 0, 0, 0, - 0, 0, 374, 0,10760, 8039, 0, 0, 1072, 692, - 1050, 0,10760, 0, 1052, 0, 0,11032, 106, -140, - 0, 1051, 1051, 1051,10488, 1063, 0,10760, 0, 0, - 0, 0, 0, 6959, 1060, 0, 0, 7116, 0, 1069, - 6959, 0, 1068, 0,10760, 0, 0, 0, 0, 0, - 0,10760, 0, 0, 267, 1067, 267, 7761, -101, -101, - -101, 0, 0,10760, 0, 6959,10760, 0, 0, 7116, - 0, 0, 0, 0, 1093,10760,10760, 0, 267, 1074, - 0, 1028, 0, 1070, 0, 0, 0, 1071, 0, 0, - 1030, 0, 1111, 0, 0, 0, 0, 0, 1075, 932, - 0, 7116, 0, 1103, 0, 1076, -101, 0, 1085, 267, - 7761, 1080, 1091, 0, 1094, 1095, 0, 1088,10760, 0, - 0, 0, 0, 1078, 1076, 0, 0, 1269, 79, 267, - 0, 6959, 0, 1104,10760, 1081,10760, 0, 0, 1096, - 0, 0, 1099, 0, 0,12696, 0, 1106, 79, 0, + 0, 0, 0, 0, 681, 681, 74, 74, 420, 420, + 420, 420, 588, 588, 498, 478, 516, 532, 522, 0, + 880, -187, 0,10613, 967, -254, 969, -254, 884,10613, + 0, 0, 0, 911, 0, 602, 736, 0, 0, 0, + 0, 542, 410, 0, 8550, 534, 0, 896, 895, 0, + 0, 0, 0, 0, 0, 305, 596, 0, 897, 899, + 0, 0, 0, 0, 901, 8707, 857, 0, 279, 0, + 0, -179, 0,10749, 0, 889, 0, 0, 0, 598, + 904, 0, 903, 905, 908, 0, 0,10613, 0, 0, + -254, 0, 0, 909, 0, 913, 0, -136, 0, 0, + 6844, 0, 6844, 8376, 0, 9004, 0, 0,10205, 173, + 0, -260, -183, 0, 859, 867, 0, 114, 0, 0, + 921, 0, 0, 0, 0, 0, 926, 0, 0, 935, + 0, 4303, 0, 377, 0, 0, 444, 514, 885, 0, + -39, 0, 929, 936, 0, 0, 6844, 0, 0, 6844, + 0,10613, 0,10613, 8098, 0, 0, 377, 941, 377, + 0, 0, 0, 0, 0, 0, 0, 0, 8690, 8098, + 0, 0, -254,11939, 964, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 9661, 0, + 0, 0, 0, 9933,10613, 0, 7629, 940, 0, 0, + 1022, 0, 1023, 0, 644, 0, 944,10613,10613, -254, + 0, 0, 0, 0, 0, 906, 0, 75, 0, 0, + 0, 0, 534, 534, 0, 787, 949, 950, 910, 955, + 857, 0, 951, 0, 1071, 1073, 0, 0,10613, 0, +10341, 956, 598, 8550, 8098, 0, 372, 1075, 1077, 73, + 953, 0, 0,10613, 0,10613, 1055, 0, 0, 0, + 0, 138,10477, 0, 0, 0, 0, 7765, 0, 1081, + 0, 560,10613, 971, 8376, 972, 0, 0, -254, 0, + 28, 0, 0, 736, 885, 0, -254, 0, -161, 0, + 0, 0, 970, 0, 996, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 732, 0, 0, 0, 0, 8393, + 0, 0, -254, 965, 940, 0,10613, 0,10613, 0, +10613, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 973, 787, 0, 0,10885, 0, 0, 0, 976, 4462, + 0, 857, 0, 857, 0, 857, 0, 0, 0, 0, + -254, 968, 956, 0, 0, 0, -154, -153, 974, 977, + 0, 0, 0, 0, 0, 978, 8376, 940, -187,10613, + 0, 980, 6844, 0, 0, 0, 0, 0, 0, 983, + 0, 716, 0, 0, 0, 0, 0, -174, 0, 985, + 736, 885, 0, 885, 0, 940, 988, 0, 0, 377, + 0, 927, 981, 0, 0, 0,10613, 1008,10613, 0, +10613, 1010, 216, 0, 899, 255, 735, 0, 0, 0, + 0, -210, 0, 0, 0, 992, 0, 0, 0, 982, + 0, 0, 0, 488, 0, 984, 1108, 1110, 0, 0, + 940, 995, 940, 0, 993, 0, 0, 0, 0, 0, +10613, 0, 1003, -184, 0, -184, 0, 0, 0, 0, + 0, 0, 377, 0,10613, 7924, 0, 0, 1035, 710, + 1009, 0,10613, 0, 1014, 0, 0,10885, 197, 36, + 0, 1012, 1012, 1012,10341, 1019, 0,10613, 0, 0, + 0, 0, 0, 6844, 1021, 0, 0, 7001, 0, 1030, + 6844, 0, 1028, 0,10613, 0, 0, 0, 0, 0, + 0,10613, 0, 0, 347, 1029, 347, 7489, 187, 187, + 187, 0, 0,10613, 0, 6844,10613, 0, 0, 7001, + 0, 0, 0, 0, 1054,10613,10613, 0, 347, 1036, + 0, 994, 0, 1037, 0, 0, 0, 1039, 0, 0, + 999, 0, 1064, 0, 0, 0, 0, 0, 1042, 913, + 0, 7001, 0, 1072, 0, 1043, 187, 0, 1053, 347, + 7489, 1047, 1056, 0, 1057, 1058, 0, 1059,10613, 0, + 0, 0, 0, 1045, 1043, 0, 0,11589, 117, 347, + 0, 6844, 0, 1078,10613, 1060,10613, 0, 0, 1062, + 0, 0, 1061, 0, 0,12652, 0, 1070, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416,12696, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1107, 267, 0, 79, 0, -262, 0, 1104, 0, - 0, 1097, 1269,11902, 0, 0, 466, 0, 0, 0, -11934, 0, 0, 1110, 0, 0, 0, 0, 8508, 8508, - 370, 8665, 385, 351, 1126, 0, -264, 9744, 0, 1161, - 0, 0, 1076, 0, 0, 0, 1076, 0, 1061, 1062, - 0, 8508, -165, 0, 8508, 0, 1065, 1113, 0, -264, - 0, 1114, 9155, 0, 1112, 1087, -251, 575, 1660, 0, - 0, 1076, 0, -264, 0, 1119, 1105, 1116, 1125, 0, - 1117, 1062, 1135, -140, 1143, 1154, 0, 1157, 1162, 0, - 788, 0, 777, 0, 0, 0, 1159, 0, -154, 0, - 1150, 0, 0, 1163, 0, 1164, 1165, 1166, 0, 1168, - 0, -140, -140, 0, -140, 1160, 1170, 0, 0, 0, - 0, 1171, 81, 0, 1173, -140, 1293, 1176, -140, 0, - 466, 0, 8491, 1133, 1177, 1168, 0, 1180, 1183, 94, - 1186, 0, 0, -140,10488, 1140, 1184, 1171, 0, 0, -12696, 0, 267, 267, 0, 1141, 1185, 1173, 0, 1190, - 0,10760, 1145, 1189, 1176, 0, 1194, -140, 0, -153, - 0, 1191, 0, 0, 0, 0, 0,12696, 0, 94, - 94, 1200, 1202, 0, -154, 0, 0, 62, 1208,12696, - 0,12696, 0, 0, 8491, 1196, 0, 0, 0, 1209, - 1163, 0, 0, 0, 1211, 0, 154, 0, 0, 0, - -101, 829, 1212, 0, 0, 0, 0, 0, 0, 0, - 0, 1266, 1321, 0, 0, 0, 0, 0, 1215, 1217, - 8491, 0, 0, 0, 0, 94, 579, 579, 0, -101, - 0, 0, 0, 19, 19, 0, 0, 0, 0, 0, - 0, 0, 9944, 9944, 0, 0, 0, 0, 0, 1221, - 1223, 1224, 0, 0, 0, + 17,12652, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1074, 347, 0, 117, 0, -254, 0, 1078, 0, + 0, 1068,11589,11755, 0, 0, 158, 0, 0, 0, +11787, 0, 0, 1079, 0, 0, 0, 0, 8098, 8098, + 373, 8393, 409, 444, 1092, 0, 305, 9597, 0, 1140, + 0, 0, 1043, 0, 0, 0, 1043, 0, 1031, 1032, + 0, 8098, -152, 0, 8098, 0, 1033, 1088, 0, 305, + 0, 1089, 1146, 0, 1083, 1044, 134, 446, 3719, 0, + 0, 1043, 0, 305, 0, 1094, 1050, 1098, 1065, 0, + 1099, 1032, 1102, 36, 1093, 1105, 0, 1109, 1114, 0, + 736, 0, 685, 0, 0, 0, 1112, 0, -60, 0, + 1104, 0, 0, 1117, 0, 1116, 1119, 1120, 0, 1115, + 0, 36, 36, 0, 36, 1121, 1122, 0, 0, 0, + 0, 1123, 127, 0, 1125, 36, 1232, 1126, 36, 0, + 158, 0, 8376, 1084, 1127, 1115, 0, 1124, 1129, 151, + 1134, 0, 0, 36,10341, 1087, 1130, 1123, 0, 0, +12652, 0, 347, 347, 0, 1091, 1135, 1125, 0, 1138, + 0,10613, 1096, 1139, 1126, 0, 1144, 36, 0, -132, + 0, 1131, 0, 0, 0, 0, 0,12652, 0, 151, + 151, 1151, 1168, 0, -60, 0, 0, 168, 1155,12652, + 0,12652, 0, 0, 8376, 1160, 0, 0, 0, 1172, + 1117, 0, 0, 0, 1181, 0, 205, 0, 0, 0, + 187, 725, 1186, 0, 0, 0, 0, 0, 0, 0, + 0, 1240, 1293, 0, 0, 0, 0, 0, 1187, 1188, + 8376, 0, 0, 0, 0, 151, 517, 517, 0, 187, + 0, 0, 0, 71, 71, 0, 0, 0, 0, 0, + 0, 0, 9797, 9797, 0, 0, 0, 0, 0, 1189, + 1193, 1195, 0, 0, 0, }; - protected static readonly short [] yyRindex = { 2890, - 0, 0, 7273, 2890, 0, 0, 0, 1593, 0, 0, - 3117, 991, 0, 0, 0, 0, 0, 3117, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyRindex = { 2966, + 0, 0, 7158, 2966, 0, 0, 0, 1560, 0, 0, + 3126, 1305, 0, 0, 0, 0, 0, 3126, 0, 0, + 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1597, 0, 0, 1597, 0, 0, - 1593, 3180, 2959, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1231, 0, 0, 0, 0, 0, 0, 0, - 0,12176, 0, 1225, 0, 0, 0, 1225, 0, 0, - 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4726, 0, 0, 0, - 0, 0, 0, 166, 4663, 3939, 0, 0, 4504, 0, + 0, 0, 0, 1561, 0, 0, 1561, 0, 0, 1560, + 3169, 3009, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1201, 0, 0, 0, 0, 0, 0, 0, 0, + 8864, 0, 1194, 0, 0, 0, 1194, 0, 0, 0, + 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, + 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4683, 0, 0, 0, 0, + 0, 0, 269, 4620, 3896, 0, 0, 4461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4819, - 4923, 5231, 5435, 5775, 5979, 6115, 6251, 6387, 6523, 1053, - 1538, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4776, 4880, + 5188, 5392, 5732, 662, 6004, 6140, -173, 6344, 6468, 2681, + 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 846, 846, 3227, - 0, 541, 1226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 777, 777, 3212, 0, + 604, 0, 1196, 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, 1597, 218, 0, 0, 0, 0, - 0, 0, 0, 3274, 246, 3341, 0, 0, 0, 0, + 0, 0, 0, 1561, 41, 0, 0, 0, 0, 0, + 0, 0, 3255, 370, 3298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3550, 0, 0, + 0, 0, 0, 0, 0, 0, 3507, 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, 1236, 0, 0, 0, - 0, 0, 3550, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2270, 0, - 1607, 118, 2400, 0, 0, 0, 2547, 2400, 0, 0, - 0, 0, 0, 1231, 0, 0, 0, 92, 0, 0, + 0, 0, 0, 0, 0, 1203, 0, 0, 0, 0, + 0, 3507, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2209, 0, 2719, + 223, 2339, 0, 0, 0, 2469, 2339, 0, 0, 0, + 0, 0, 1201, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1233, 1284, 0, 0, 1225, 0, 3550, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, + 0, 1197, 2573, 0, 0, 1194, 0, 3507, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -272, 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, 1430, + 0, 0, 0, 0, 0, 0, 0, 0, 1393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, - 3384, 2714, 0, 0, 0, 0, 2117, 1597, 1597, 0, - -199, 0, 8056, 1597, 1608, 0, 0, 159, 0, 0, + 0, 47, 0, 0, 0, 0, 0, 0, 0, 3341, + 1646, 0, 0, 0, 0, 2063, 1561, 1561, 0, -147, + 0, 7646, 1561, 1574, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 284,11589, 0, 0, 0, - 3550, 0, 0, 0, 0, 0, 0, 0, 0,11978, - 0, 0, 0, 0, 0, 0, 1234, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 862, 957, 0, 0, - 1241, 0, 0, 0, 0, 0, 99, 0, 0, 4027, - 1239, 0, 0, 0, 263, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1821, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 403,11442, 0, 0, 0, 3507, + 0, 0, 0, 0, 0, 0, 0, 0,11831, 0, + 0, 0, 0, 0, 0, 1199, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 553, 750, 0, 0, 1208, + 0, 0, 0, 0, 0, 160, 0, 0, 3984, 1207, + 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1233, 0, - 0, 6642, 0, 115, 0, 0, 0, 0, 0, 0, - 8962, 0, 0, 0, 0, 0, 0, -127, 655, 0, - 0, 0, 1240, 0, 0, 0, 0, 0, 0, 0, - 3550, 0, 3550, 0, 4186, 0, 0, 0, 0, 181, - 0, 0, 0, 0, -28, 0, 0, 0, 4991, 0, + 0, 0, 0, 0, 0, 0, 0, 1197, 0, 0, + 6527, 0, 204, 0, 0, 0, 0, 0, 0, 8847, + 0, 0, 0, 0, 0, 0, 86, 529, 0, 0, + 0, 1209, 0, 0, 0, 0, 0, 0, 0, 3507, + 0, 3507, 0, 4143, 0, 0, 0, 0, 56, 0, + 0, 0, 0, -267, 0, 0, 0, 4948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5095, 5163, 5299, 5367, 5503, - 5571, 5639, 5707, 5843, 5911, 6047, 6183, 6319, 6455, 6579, - 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3830, 0, 0, 2117, 0, 0, - 0, 0, 1195, 0, 0, 0,12230, 0, 0, 707, - 0, 0, 0, 0, 0, 0, 678, 698, 0, 0, - 1244, 0, 0, 0, 0, 1248, 0, 0, 0, 0, - 0, 0,11168, 0, 0, 0, 721, 0, 0, 0, -12247, 0, 0, 736, 742, 751, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1242, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1249, 0, 0, 0, - 3616, 0, 0, 116, 0, -74, 3709, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1251, 0, 0, - 0, 0, 0, 0, 0, 0, 82, 144, 0, 0, - 0, 0, 0, 1250, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8962, 0, 0, + 0, 0, 0, 0, 5052, 5120, 5256, 5324, 5460, 5528, + 5596, 5664, 5800, 5868, 5936, 6072, 6208, 6276, 6400, 0, + 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3787, 0, 0, 2063, 0, 0, 0, + 0, 1166, 0, 0, 0,12083, 0, 0, 761, 0, + 0, 0, 0, 0, 0, 654, 620, 0, 0, 1215, + 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, + 0,11021, 0, 0, 0, 763, 0, 0, 0,12100, + 0, 0, 807, 808, 812, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1225, 0, 0, 0, 3573, + 0, 0, 211, 0, 153, 3666, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 651, 0, 0, + 0, 0, 0, 1219, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 8847, 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, 190, 0, 0, 0, 1245, 0, 0, 0, 0, - 0, 0, 464, 0, 452, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, -12247, 8213, 0, 1246, 0, 712, 0, 0, 0, 0, - 1253, 0, 1206, 1227, 0, 0, 0, 0, 0, 1267, -12301, 0, 0, 0,12054, 0, 0, 0, 780, 0, - 0, 0, 0, 0, 0, 1988, 0, 0, 0, 0, + 0, 0, 0, 239, 0, 0, 0, 1220, 0, 0, + 0, 0, 0, 0, 275, 0, 421, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, + 0, 0,12100, 7941, 0, 1227, 0, 675, 0, 0, + 0, 0, 1228, 0, 1180, 1182, 0, 0, 0, 0, + 0, 1229,12154, 0, 0, 0,11907, 0, 0, 0, + 815, 0, 0, 0, 0, 0, 1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3868, 0, 4345, 1258, 0, 0, 0, 1255, 0, 0, - 0, 0, 343, 0, 0, 0, 0, 780, 0, 0, + 0, 3825, 0, 4302, 1231, 0, 0, 0, 1236, 0, + 0, 0, 0, 304, 0, 0, 0, 0, 815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1270, 0, 0, 0, 0, 0, 794, 798, 0, - 0, 0, 0, 0, 0, 0, 1257, 700, 1272, 0, + 0, 0, 1234, 0, 0, 0, 0, 0, 824, 831, + 0, 0, 0, 0, 0, 0, 0, 1239, 737, 1237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4027, 0, 0, 0, 0, 0, 1274, 0, 0, - 343, 0, 0, 825, 0, 1257, 0, 0, 0, 8962, - 0, 631, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 123, 0, 1244, 9156, 0, 0, 0, 0, - 0,12343, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 719, 0, 730, 0, 0, 0, 0, - 1277, 0, 1245, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1282, 0, 7430, 0, 0, 0, 0, - 0, 0, 8962, 0, 0, 0, 0, 0, 0, 566, - 525, 0, 0, 0, 0, 0, 0, 0,12419,11978, - 0, 113, 113, 113, 0, 0, 0, 0, 0, 0, + 0, 3984, 0, 0, 0, 0, 0, 1235, 0, 0, + 304, 0, 0, 773, 0, 1239, 0, 0, 0, 8847, + 0, 582, 592, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 256, 0, 1215, 9041, 0, 0, 0, 0, + 0,12196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 633, 0, 669, 0, 0, 0, 0, + 1246, 0, 1220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1251, 0, 7315, 0, 0, 0, 0, + 0, 0, 8847, 0, 0, 0, 0, 0, 0, 306, + 459, 0, 0, 0, 0, 0, 0, 0,12272,11831, + 0, 122, 122, 122, 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,12462, 0, 59, 0, 1294, 1294, - 1294, 0, 0, 0, 0, 0, 1299, 0, 0, -172, - 0, 0, 0, 0, 0, 0, 0, 0,12505, 0, - 0, 0, 0, 1304, 0, 0, 0, 122, 0, 0, - 0, 0, 581, 0, 0, 0, 0, 0, 0, 1303, - 0, 1308, 0, 0, 0, 3028, 1301, 560, 0, 210, + 0, 0, 0, 0,12315, 0, 244, 0, 1253, 1253, + 1253, 0, 0, 0, 0, 0, 1249, 0, 0, -213, + 0, 0, 0, 0, 0, 0, 0, 0,12358, 0, + 0, 0, 0, 1256, 0, 0, 0, 183, 0, 0, + 0, 0, 549, 0, 0, 0, 0, 0, 0, 1255, + 0, 1257, 0, 0, 0, 3052, 1254, 539, 0, 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2827, 0, 0, 0, 9310, 9508, - 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, - 0, 0, 366, 0, 0,11760, 0, 0, 9409, 0, + 0, 0, 0, 0, 2877, 0, 0, 0, 9195, 9393, + 0, 0, 0, 526, 0, 0, 0, 0, 0, 0, + 0, 0, 440, 0, 0,11613, 0, 0, 9294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,11828, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9602, 0, 9310, 0, 0, 0, 628, 0, - 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, - 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4660, 324, 0, 9644, 0, 0, 0, - 9714, 0, 2827, 0, 0, 0, 2827, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, - 0, 1322, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2827, 0, 760, 0, 649, 0, 0, 0, 0, - 0, 0, 0,11978, 797, 0, 0, 0, 0, 0, - 1315, 0, 772, 0, 0, 0, 0, 0, 0, 0, - 800, 0, 0, 0, 0, 0, 0, 0, 0, 1314, - 0,11978,11978, 0,12010, 0, 0, 0, 0, 0, - 0, 1317, 3070, 0, 1319,11978,11304, 1320,11978, 0, - 0, 0, 0, 0, 0, 1323, 0, 0, 0,12623, - 0, 0, 0,11978, 0, 0, 0, 1325, 0, 0, - 128, 0,12547,12585, 0, 0, 0, 1327, 0, 0, - 0, 0, 0, 0, 1329, 0, 0,11978, 0, 597, - 0, 808, 0, 0, 0, 0, 0, 840, 0, 411, - 699, 0, 0, 0, 0, 0, 0, 0, 0, 1383, - 0, 1443, 0, 0, 0, 813, 0, 0, 0, 0, + 0,11681, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9487, 0, 9195, 0, 0, 0, 526, 0, + 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, + 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 987, 426, 0, 9529, 0, 0, 0, + 4617, 0, 2877, 0, 0, 0, 2877, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 568, + 0, 1262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2877, 0, 721, 0, 605, 0, 0, 0, 0, + 0, 0, 0,11831, 828, 0, 0, 0, 0, 0, + 1258, 0, 782, 0, 0, 0, 0, 0, 0, 0, + 833, 0, 0, 0, 0, 0, 0, 0, 0, 1259, + 0,11831,11831, 0,11863, 0, 0, 0, 0, 0, + 0, 1261,12582, 0, 1263,11831,11157, 1268,11831, 0, + 0, 0, 0, 0, 0, 1269, 0, 0, 0,12552, + 0, 0, 0,11831, 0, 0, 0, 1274, 0, 0, + 188, 0,12476,12514, 0, 0, 0, 1275, 0, 0, + 0, 0, 0, 0, 1276, 0, 0,11831, 0, 576, + 0, 836, 0, 0, 0, 0, 0, 795, 0,12400, +12438, 0, 0, 0, 0, 0, 0, 0, 0, 1289, + 0, 1369, 0, 0, 0, 837, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12623, 9676,11476, 0, 599, + 0, 0, 0, 0, 0,12552, 9035,11329, 0, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1239, 1239, 0, 0, 0, 0, 0, 0, + 0, 0, 1207, 1207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; protected static readonly short [] yyGindex = { 0, - 0, 1657, 0, 0, 0, 1, -9, -176, -42, 1658, - 0, 1697, 1706, 624, 0, 0, -3, 0, 0, 0, - 0, 0, 0, -850, -694, -210, -349, 0, 0, 0, - 0, 0, -191, 0, 0, 0, 771, 0, 882, 0, - 0, 0, 0, 627, 629, -17, -234, 0, -62, 0, - 473, 0, 500, -858, -595, -569, -567, -544, -504, -491, - -486, 0,-1160, 0, 10, 0, 114, 0,-1083, 0, - 0, 0, 145, 295, 0, 0, 0, 333,-1055, 0, - -271, -298, 1046, 0, 0, 0, -882, 281, 0, 0, - -500, 0, 0, 350, 0, 0, 325, 0, 0, 358, - 0, -516, -867, 0, 0, 0, 0, 0, 447, -13, - 0, 0, 879, 883, 888, 1054, -528, 0, 0, -275, - 898, 443, 0, -838, 0, 0, 0, 0, 0, 0, - 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 0, 0, 0, 0, -239, 437, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 519, 0, -505, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, - 0, 0, 355, 0, 0, 360, 359, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 580, 0, 0, 0, - 0, -52, 0, -12, -189, 0, 0, 424, 0, 481, - 0, 936, 0, 1237, -290, -267, -63, 812, 0, 586, - 0, -30, 11, 0, 0, 21, 0, 0, 0, 0, + 0, 1583, 0, 0, 0, 3, -9, -175, -48, 1605, + 0, 1622, 1652, 497, 0, 0, 9, 0, 0, 0, + 0, 0, -810, -690, -218, -467, 0, 0, 0, 0, + 0, -186, 0, 0, 0, 722, 0, 827, 0, 0, + 0, 0, 570, 571, -17, -221, 0, -62, 0, 423, + 0, 450, -609, -580, -552, -500, -492, -489, -480, -462, + 0,-1145, 0, 5, 0, 121, 0,-1080, 0, 0, + 0, -70, 245, 0, 0, 0, 283,-1038, 0, -270, + -298, 1000, 0, 0, 0, -884, 231, 0, 0, -499, + 0, 0, 299, 0, 0, 273, 0, 0, 308, 0, + -484, -934, 0, 0, 0, 0, 0, 402, -13, 0, + 0, 825, 829, 830, 991, -526, 0, 0, -313, 832, + 394, 0, -805, 0, 0, 0, 0, 0, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, + 445, 0, 0, 0, 0, -287, 380, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 462, 0, -505, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, + 0, 298, 0, 0, 307, 313, 219, 0, 0, 0, + 0, 0, 0, 0, 0, 519, 0, 0, 0, 0, + -41, 0, -12, -69, 0, 0, 374, 0, 430, 0, + 887, 0, 1183, -290, -274, -14, 733, 0, 531, 0, + -37, 4, 0, 0, 1277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -261, 0, 587, 0, 0, 8, 0, 0, - 0, 894, 0, -296, -125, 1038, 968, 0, 973, 0, - 1181, 1404, 1102, 0, 0, 781, 1716, 0, 0, 0, - 0, 1073, 0, 0, 0, 0, 0, -685, 1455, 0, - 0, 0, 0, 0, 1118, 382, 818, 785, 817, 1392, - 1396, 1398, 1405, 1407, 0, 1440, 0, 0, 0, 1079, - 1296, -730, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -299, 0, 0, 0, 0, -447, 0, - 684, 0, 596, 0, 679, 0, 0, 0, 744, -529, - -16, -315, -5, 0, 1696, 0, 66, 0, 68, 101, - 132, 135, 143, 147, 156, 162, 163, 176, 0, -672, - 0, -21, 0, 0, 880, 0, 802, 0, 0, 0, - 786, -241, 850, -844, 0, 902, -453, 0, 0, 0, - 0, 0, 0, 796, 0, 0, 791, 0, 0, 0, + 0, -262, 0, 1325, 0, 0, -741, 0, 0, 0, + 835, 0, -293, -125, 1001, 918, 0, 915, 0, 1133, + 1355, 1040, 0, 0, 731, 1654, 0, 0, 0, 0, + 1011, 0, 0, 0, 0, 0, -575, 1395, 0, 0, + 0, 0, 0, 1136, 506, 774, 661, 820, 1332, 1334, + 1335, 1333, 1336, 0, 1347, 0, 0, 0, 952, 1204, + -735, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -288, 0, 0, 0, 0, -450, 0, 590, + 0, 501, 0, 579, 0, 0, 0, 649, -530, -15, + -309, -5, 0, 1601, 0, 90, 0, 94, 98, 101, + 106, 111, 136, 137, 143, 146, 150, 0, -671, 0, + -16, 0, 0, 783, 0, 706, 0, 0, 0, 708, + -212, 767, -861, 0, 845, -453, 0, 0, 0, 0, + 0, 0, 748, 0, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, - -29, 0, 1341, 0, 0, 0, 969, 0, 0, 0, - 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, - 0, 0, 0, 0, 723, 0, 0, 0, 0, 0, - 0, -19, 1043, 0, 0, 0, 1047, + 677, 0, 0, 0, 0, 0, 0, 0, 0, -23, + 0, 1294, 0, 0, 0, 924, 0, 0, 0, 0, + 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1398, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, + -1, 997, 0, 0, 0, 1002, }; - protected static readonly short [] yyTable = { 110, - 156, 514, 434, 112, 18, 732, 294, 196, 190, 235, - 517, 157, 737, 431, 473, 44, 193, 430, 490, 681, - 533, 318, 557, 449, 773, 324, 329, 116, 231, 259, - 336, 510, 406, 703, 544, 498, 1012, 905, 261, 1132, - 866, 867, 781, 885, 469, 253, 1165, 1166, 310, 786, - 363, 934, 371, 1060, 708, 1254, 304, 804, 1061, 539, - 304, 362, 14, 370, 445, 1061, 311, 191, 313, 769, - 116, 1261, 664, 1332, 116, 196, 196, 571, 339, 1015, - 260, 674, 161, 897, 162, 899, 1043, 413, 1005, 1045, - 1319, 880, 709, 1193, 48, 785, 196, 413, 665, 712, - 292, 1360, 1446, 20, 290, 348, 48, 95, 559, 411, - 408, 251, 291, 572, 260, 689, 799, 163, 260, 260, - 260, 260, 260, 260, 260, 260, 349, 828, 360, 974, - 666, 677, 434, 473, 503, 678, 864, 522, 504, 16, - 110, 156, 634, 876, 112, 447, 770, 235, 164, 350, - 523, 165, 157, 349, 1160, 293, 348, 43, 6, 166, - 252, 292, 412, 167, 434, 560, 1333, 524, 116, 580, - 414, 506, 168, 800, 865, 415, 350, 416, 169, 170, - 414, 934, 805, 417, 418, 415, 474, 416, 196, 196, - 351, 448, 171, 417, 418, 785, 679, 198, 478, 292, - 690, 1, 447, 984, 349, 440, 1015, 771, 1003, 882, - 726, 730, 1062, 976, 868, 713, 293, 346, 48, 1062, - 449, 1447, 1126, 161, 15, 162, 1361, 350, 233, 192, - 1428, 472, 325, 330, 667, 360, 477, 1161, 557, 446, - 469, 351, 360, 675, 360, 975, 360, 649, 1044, 785, - 196, 1046, 1320, 355, 293, 532, 259, 1452, 163, 536, - 419, 877, 538, 557, 541, 486, 259, 543, 792, 1462, - 429, 1463, 489, 571, 1495, 540, 196, 493, 495, 1074, - 334, 682, 507, 880, 508, 2, 251, 750, 196, 164, - 360, 520, 165, 934, 531, 196, 528, 116, 530, 934, - 166, 529, 493, 2, 167, 474, 474, 260, 934, 572, - 1057, 387, 873, 168, 546, 547, 1069, 260, 1070, 169, - 170, 556, 260, 966, 1459, 1192, 116, 578, 652, 1424, - 1085, 572, 558, 171, 1215, 252, 1390, 196, 509, 304, - 196, 1234, 1112, 448, 1208, 438, 439, 388, 116, 1417, - 472, 592, 636, 638, 640, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 292, 1472, 655, 3, - 4, 5, 6, 874, 196, 196, 1460, 656, 297, 434, - 298, 829, 793, 996, 1234, 95, 685, 632, 235, 1293, - 636, 788, 260, 790, 1496, 791, 1492, 881, 653, 858, - 448, 882, 196, 196, 260, 260, 260, 479, 980, 260, - 260, 737, 482, 391, 392, 6, 572, 1469, 650, 651, - 196, 293, 335, 700, 662, 710, 312, 389, 390, 647, - 636, 1138, 1310, 488, 196, 636, 1311, 750, 1143, 636, - 20, 233, 636, 668, 356, 642, 643, 233, 474, 233, - 473, 655, 519, 353, 636, 498, 1348, 738, 821, 679, - 656, 1338, 233, 1168, 749, 702, 435, 698, 757, 888, - 888, 887, 887, 346, 331, 1050, 48, 434, 1470, 655, - 331, 636, 680, 436, 1378, 1379, 331, 1381, 656, 331, - 331, 728, 357, 592, 563, 735, 483, 116, 1400, 353, - 636, 1407, 733, 331, 778, 738, 571, 780, 733, 741, - 743, 413, 324, 49, 751, 324, 1423, 636, 358, 759, - 679, 842, 636, 748, 761, 644, 636, 435, 324, 1246, - 292, 614, 615, 484, 324, 331, 196, 556, 737, 201, - 1445, 636, 572, 680, 436, 843, 779, 774, 558, 888, - 959, 887, 623, 358, 623, 634, 346, 733, 196, 637, - 639, 452, 556, 452, 116, 292, 738, 915, 636, 726, - 794, 794, 844, 558, 809, 964, 811, 314, 348, 634, - 726, 1454, 1455, 324, 346, 893, 485, 636, 346, 116, - 346, 346, 346, 346, 414, 635, 260, 55, 346, 415, - 878, 416, 251, 826, 1235, 202, 634, 417, 418, 623, - 773, 247, 572, 991, 968, 248, 872, 807, 452, 635, - 1001, 348, 474, 813, 726, 1291, 349, 48, 517, 358, - 1236, 358, 1237, 358, 358, 233, 358, 1486, 358, 860, - 1294, 523, 233, 196, 199, 827, 635, 1235, 263, 350, - 581, 252, 287, 288, 289, 1238, 295, 296, 744, 1086, - 582, 308, 309, 351, 196, 249, 246, 472, 314, 349, - 316, 48, 320, 1236, 1292, 1237, 199, 332, 333, 1054, - 358, 493, 358, 703, 536, 358, 259, 841, 894, 1295, - 250, 863, 350, 730, 48, 1239, 360, 735, 1238, 331, - 715, 369, 728, 649, 662, 262, 351, 48, 1240, 1031, - 349, 331, 48, 1241, 331, 331, 433, 48, 910, 48, - 48, 48, 48, 116, 116, 317, 349, 48, 331, 196, - 889, 48, 662, 350, 474, 1051, 317, 260, 1239, 474, - 95, 662, 900, 48, 901, 264, 48, 351, 48, 350, - 196, 1240, 903, 599, 774, 936, 1241, 349, 435, 907, - 331, 820, 350, 737, 1051, 196, 116, 350, 116, 196, - 616, 617, 48, 1315, 48, 48, 787, 360, 194, 592, - 350, 789, 1141, 653, 592, 917, 1328, 735, 359, 1105, - 912, 1258, 557, 361, 351, 912, 959, 912, 934, 935, - 912, 912, 918, 912, 912, 1346, 317, 918, 403, 918, - 822, 821, 918, 918, 684, 918, 918, 45, 685, 372, - 404, 196, 823, 1096, 557, 999, 1135, 1002, 114, 956, - 668, 489, 95, 1004, 718, 1097, 360, 918, 719, 196, - 196, 1284, 314, 393, 394, 369, 400, 982, 948, 1217, - 1233, 1084, 435, 1031, 985, 681, 557, 395, 396, 1013, - 397, 398, 1167, 914, 993, 317, 735, 360, 914, 1217, - 914, 114, 1411, 914, 914, 114, 914, 914, 583, 986, - 912, 474, 565, 890, 851, 511, 888, 845, 584, 566, - 995, 399, 918, 1233, 846, 1217, 317, 1040, 527, 328, - 328, 567, 401, 251, 921, 364, 196, 902, 1016, 921, - 1018, 921, 1020, 331, 921, 921, 331, 921, 921, 227, - 328, 228, 909, 565, 365, 366, 1030, 317, 196, 227, - 566, 230, 405, 317, 1464, 1251, 196, 668, 449, 921, - 318, 95, 567, 402, 367, 95, 435, 658, 1149, 1011, - 1334, 802, 252, 914, 1191, 368, 658, 298, 735, 48, - 1037, 493, 1038, 268, 1039, 657, 908, 931, 932, 114, - 1483, 908, 268, 908, 657, 436, 908, 908, 414, 908, - 908, 517, 48, 415, 1087, 416, 1088, 1501, 1502, 437, - 36, 417, 418, 116, 921, 48, 774, 967, 441, 1077, - 48, 1079, 764, 1080, 764, 48, 764, 48, 48, 48, - 48, 331, 328, 328, 1281, 48, 753, 331, 753, 48, - 753, 1281, 277, 331, 277, 474, 599, 331, 599, 277, - 227, 48, 1089, 727, 48, 336, 48, 504, 444, 336, - 331, 331, 115, 489, 115, 1117, 1118, 331, 331, 115, - 331, 331, 57, 384, 385, 386, 908, 1113, 735, 774, - 48, 470, 48, 48, 471, 1120, 196, 65, 65, 699, - 1030, 65, 331, 743, 328, 743, 954, 489, 954, 1125, - 489, 66, 235, 336, 1152, 66, 959, 434, 167, 491, - 167, 556, 167, 1035, 755, 334, 755, 1145, 114, 179, - 328, 179, 558, 179, 1148, 155, 235, 155, 492, 742, - 1326, 162, 328, 162, 116, 196, 489, 361, 116, 328, - 163, 116, 163, 556, 1326, 513, 336, 114, 1174, 1080, - 336, 518, 331, 336, 558, 336, 521, 1152, 346, 576, - 336, 1356, 346, 1357, 331, 346, 116, 346, 537, 114, - 116, 865, 346, 865, 542, 556, 1216, 1232, 68, 577, - 68, 328, 550, 185, 328, 185, 558, 156, 196, 156, - 120, 1204, 120, 282, 336, 282, 1216, 620, 621, 622, - 623, 127, 116, 127, 1265, 196, 289, 1249, 289, 489, - 350, 441, 1473, 1474, 887, 887, 519, 519, 328, 328, - 1232, 350, 1216, 636, 636, 663, 1130, 1131, 618, 619, - 585, 337, 116, 624, 625, 340, 341, 342, 343, 344, - 345, 346, 347, 683, 354, 686, 328, 328, 648, 495, - 688, 711, 331, 716, 331, 495, 714, 717, 739, 740, - 196, 196, 755, 1286, 756, 758, 760, 36, 196, 762, - 763, 36, 764, 331, 331, 765, 196, 196, 782, 196, - 783, 785, 36, 797, 798, 1306, 803, 36, 802, 808, - 810, 36, 818, 331, 36, 830, 812, 1306, 831, 196, - 833, 331, 196, 331, 331, 834, 36, 36, 837, 43, - 1306, 36, 36, 849, 1335, 854, 855, 36, 114, 36, - 36, 36, 36, 856, 857, 862, 198, 36, 580, 1306, - 861, 36, 879, 36, 883, 884, 886, 891, 895, 904, - 1391, 896, 912, 36, 496, 36, 36, 410, 36, 410, - 496, 922, 36, 927, 929, 933, 937, 1418, 328, 943, - 947, 944, 1212, 946, 976, 952, 949, 954, 410, 410, - 1430, 1432, 36, 972, 960, 735, 973, 1286, 36, 36, - 328, 981, 983, 990, 507, 114, 997, 489, 410, 1009, - 1014, 1008, 1024, 1075, 1033, 1047, 410, 1418, 1418, 410, - 1041, 1048, 328, 1056, 1440, 1049, 1058, 1068, 1078, 1072, - 114, 580, 1091, 1076, 1083, 1095, 580, 1212, 580, 580, - 580, 580, 580, 580, 580, 580, 580, 580, 580, 1098, - 1099, 1100, 1103, 1289, 1290, 1106, 1101, 735, 1116, 337, - 580, 1121, 580, 1119, 580, 1128, 580, 580, 580, 500, - 474, 474, 1133, 1418, 1139, 1141, 1318, 1144, 1151, 1321, - 1173, 1176, 580, 1180, 1181, 1178, 1187, 1182, 545, 1161, - 1190, 1191, 1195, 735, 1198, 1203, 1250, 1199, 1207, 1247, - 1200, 1201, 1296, 1488, 1488, 1309, 1252, 328, 1267, 373, - 1497, 1497, 1253, 1255, 1262, 592, 592, 1288, 1313, 1314, - 1330, 580, 1323, 1324, 1327, 1340, 1342, 1345, 328, 545, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1343, 611, 612, 613, 1331, 1347, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, - 545, 545, 1333, 1349, 114, 114, 1351, 1353, 1354, 1359, - 1364, 1367, 1382, 25, 1370, 26, 1371, 1372, 27, 331, - 1209, 1374, 1383, 28, 1386, 331, 1396, 29, 1401, 1403, - 1412, 1415, 1413, 328, 1416, 1422, 31, 1425, 1436, 1426, - 1437, 1439, 1441, 33, 1442, 1444, 1456, 114, 34, 114, - 1210, 1450, 35, 1457, 328, 1461, 1465, 331, 1466, 1475, - 1460, 331, 1468, 1459, 37, 1481, 38, 1482, 1503, 328, - 39, 1211, 9, 328, 1504, 1505, 950, 532, 40, 41, - 837, 32, 42, 490, 600, 321, 356, 942, 491, 805, - 447, 601, 669, 30, 22, 31, 489, 809, 30, 309, - 747, 515, 331, 206, 545, 31, 845, 331, 749, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 779, 757, 748, 96, 758, 331, 810, 750, 780, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 657, 331, 331, 328, 328, 331, 331, 331, 331, 331, - 812, 313, 331, 331, 814, 679, 657, 331, 331, 331, - 331, 331, 331, 331, 331, 500, 354, 331, 338, 123, - 500, 500, 105, 784, 285, 130, 331, 636, 124, 331, - 106, 331, 286, 331, 131, 636, 331, 232, 54, 236, - 21, 1025, 331, 500, 1123, 942, 1124, 1264, 1256, 1458, - 1427, 1467, 839, 500, 1303, 1414, 500, 500, 1409, 1443, - 328, 500, 1316, 969, 500, 1499, 500, 970, 500, 500, - 500, 500, 971, 1263, 852, 1337, 500, 1491, 965, 1260, - 500, 1431, 1438, 1433, 500, 1490, 1358, 871, 1307, 1196, - 328, 938, 500, 752, 914, 500, 1197, 500, 500, 796, - 989, 587, 1059, 500, 916, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 848, 300, 548, 869, - 626, 500, 500, 582, 114, 627, 500, 500, 628, 500, - 500, 500, 500, 500, 500, 500, 629, 500, 500, 630, - 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 839, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, - 500, 500, 500, 631, 767, 500, 1184, 500, 1268, 500, - 1188, 1140, 500, 407, 1102, 1071, 1109, 1053, 500, 1107, - 911, 1114, 356, 1042, 1170, 745, 1006, 646, 356, 1175, - 1266, 0, 0, 0, 940, 0, 582, 939, 0, 0, - 0, 582, 0, 582, 582, 582, 582, 582, 582, 582, - 582, 582, 582, 582, 0, 0, 0, 0, 0, 0, - 356, 0, 0, 0, 356, 582, 0, 582, 0, 582, - 0, 582, 582, 582, 0, 114, 0, 0, 0, 114, - 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 0, 0, 0, 0, 203, 356, 0, 114, 0, 0, - 356, 114, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 0, 0, 0, 582, 0, 0, 356, - 0, 0, 0, 356, 356, 0, 356, 356, 356, 0, - 356, 356, 356, 114, 356, 356, 204, 774, 356, 356, - 356, 356, 328, 0, 545, 356, 356, 0, 0, 0, - 356, 356, 356, 356, 356, 356, 356, 356, 0, 328, - 0, 0, 0, 114, 0, 0, 0, 0, 0, 356, - 0, 0, 356, 0, 356, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 356, 205, 206, 207, 208, - 0, 209, 210, 211, 212, 213, 214, 215, 216, 0, - 0, 217, 218, 219, 220, 221, 222, 223, 224, 0, - 0, 0, 0, 0, 328, 328, 0, 0, 0, 0, - 0, 0, 328, 0, 0, 0, 839, 839, 0, 0, - 328, 328, 0, 328, 839, 839, 839, 839, 839, 0, - 839, 839, 0, 839, 839, 839, 839, 839, 839, 839, - 839, 0, 0, 328, 0, 839, 328, 839, 839, 839, - 839, 839, 839, 0, 0, 839, 331, 0, 0, 839, - 839, 0, 839, 839, 839, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 839, 0, 839, 0, 839, 839, - 0, 0, 839, 0, 839, 839, 839, 839, 839, 839, - 839, 839, 839, 839, 839, 839, 0, 839, 0, 0, - 839, 839, 0, 0, 839, 839, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, - 839, 839, 839, 839, 0, 0, 0, 839, 839, 0, - 0, 839, 0, 0, 0, 0, 839, 839, 839, 839, - 839, 0, 0, 0, 839, 0, 839, 0, 0, 0, - 0, 0, 839, 839, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyTable = { 109, + 513, 155, 234, 111, 731, 293, 18, 195, 189, 516, + 43, 156, 736, 430, 448, 680, 324, 329, 489, 429, + 115, 258, 775, 509, 323, 328, 472, 556, 193, 335, + 532, 405, 702, 497, 906, 1012, 543, 354, 570, 867, + 345, 868, 260, 783, 252, 230, 886, 788, 468, 1165, + 1166, 538, 6, 309, 785, 303, 1132, 771, 663, 303, + 938, 558, 115, 1015, 571, 310, 115, 312, 806, 317, + 1254, 361, 877, 369, 195, 195, 444, 338, 14, 707, + 801, 1060, 575, 1061, 664, 898, 1261, 772, 900, 20, + 190, 673, 505, 1061, 1005, 195, 1193, 710, 362, 446, + 370, 1043, 1045, 1319, 447, 712, 160, 874, 291, 407, + 161, 410, 739, 348, 162, 481, 665, 163, 559, 865, + 359, 433, 164, 1446, 641, 642, 847, 165, 830, 437, + 438, 986, 16, 848, 633, 412, 349, 802, 333, 109, + 234, 155, 995, 111, 347, 472, 47, 2, 773, 316, + 350, 156, 166, 167, 785, 1126, 446, 866, 47, 168, + 115, 447, 169, 292, 411, 575, 170, 502, 875, 42, + 575, 503, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 197, 447, 473, 291, 195, 195, 1015, + 878, 478, 348, 807, 575, 1360, 575, 477, 575, 482, + 575, 575, 575, 506, 643, 507, 756, 250, 785, 759, + 729, 448, 725, 711, 869, 349, 575, 487, 413, 977, + 666, 713, 439, 414, 291, 415, 575, 575, 740, 350, + 471, 416, 417, 445, 570, 476, 518, 1062, 750, 575, + 15, 292, 1447, 556, 468, 1428, 160, 1062, 258, 195, + 161, 433, 191, 674, 162, 575, 251, 163, 258, 508, + 571, 537, 164, 1044, 1046, 1320, 542, 165, 556, 485, + 47, 488, 1452, 289, 1074, 195, 492, 494, 562, 292, + 334, 290, 571, 433, 1462, 539, 1463, 195, 579, 115, + 519, 688, 166, 167, 195, 527, 345, 529, 530, 168, + 528, 492, 169, 531, 473, 473, 170, 535, 418, 6, + 1, 1057, 540, 545, 546, 613, 614, 938, 115, 1003, + 1361, 555, 757, 291, 635, 760, 1495, 967, 975, 635, + 651, 557, 577, 635, 1085, 386, 195, 1112, 303, 195, + 115, 359, 831, 636, 638, 483, 1424, 794, 635, 471, + 591, 635, 637, 639, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 1192, 648, 571, 291, 881, + 1472, 387, 1215, 195, 195, 635, 689, 654, 894, 345, + 522, 234, 1390, 1141, 1208, 996, 631, 1293, 750, 1348, + 291, 652, 1258, 881, 635, 892, 892, 744, 484, 1492, + 681, 195, 195, 412, 232, 48, 1417, 345, 938, 860, + 981, 345, 2, 345, 345, 345, 345, 1378, 1379, 195, + 1381, 345, 699, 292, 708, 357, 1069, 622, 1070, 622, + 1459, 1400, 1138, 195, 1407, 649, 650, 94, 655, 1143, + 646, 661, 1160, 232, 976, 1001, 1496, 473, 359, 1423, + 635, 388, 389, 497, 667, 359, 355, 359, 1332, 359, + 654, 795, 472, 749, 1168, 684, 697, 758, 1469, 701, + 570, 412, 1310, 1445, 737, 892, 1311, 1050, 3, 4, + 5, 6, 1460, 882, 622, 232, 413, 883, 654, 115, + 727, 414, 591, 415, 734, 232, 571, 678, 433, 416, + 417, 1338, 635, 359, 356, 984, 782, 200, 741, 743, + 790, 883, 792, 751, 793, 347, 736, 198, 761, 232, + 938, 655, 737, 763, 94, 1161, 938, 434, 349, 1470, + 1246, 20, 347, 1284, 748, 195, 357, 555, 357, 965, + 357, 357, 789, 357, 250, 357, 776, 557, 198, 655, + 844, 1333, 960, 873, 413, 201, 115, 195, 678, 414, + 676, 415, 555, 348, 677, 357, 571, 416, 417, 796, + 796, 679, 557, 811, 845, 813, 428, 823, 435, 330, + 348, 115, 916, 737, 725, 330, 349, 357, 434, 357, + 1234, 330, 357, 251, 330, 330, 433, 347, 725, 879, + 350, 846, 246, 349, 891, 891, 247, 991, 330, 775, + 451, 311, 451, 922, 1454, 1455, 809, 350, 922, 1235, + 922, 473, 815, 922, 922, 678, 922, 922, 1291, 516, + 732, 323, 679, 1234, 54, 1086, 732, 323, 862, 435, + 330, 635, 195, 736, 925, 348, 635, 1236, 922, 925, + 635, 925, 313, 725, 925, 925, 248, 925, 925, 352, + 330, 47, 1235, 195, 1294, 635, 471, 451, 349, 94, + 1486, 889, 330, 250, 633, 330, 330, 1292, 258, 925, + 492, 843, 350, 702, 891, 732, 323, 521, 895, 330, + 1236, 1054, 635, 729, 903, 348, 734, 634, 633, 1237, + 522, 727, 47, 922, 245, 352, 250, 1238, 363, 910, + 1239, 635, 969, 1295, 115, 232, 115, 523, 349, 1240, + 911, 634, 251, 1031, 736, 633, 249, 364, 365, 195, + 890, 1217, 1233, 535, 925, 714, 473, 1241, 44, 261, + 232, 473, 1237, 94, 901, 348, 902, 366, 634, 113, + 1238, 1217, 195, 1239, 904, 251, 776, 937, 367, 916, + 115, 908, 1240, 115, 916, 1051, 916, 195, 349, 916, + 916, 195, 916, 916, 780, 1233, 402, 1217, 661, 652, + 1241, 591, 350, 828, 968, 263, 591, 918, 403, 734, + 1105, 113, 226, 1051, 227, 113, 960, 918, 556, 432, + 935, 936, 918, 349, 918, 1315, 661, 918, 918, 348, + 918, 918, 94, 390, 391, 661, 781, 791, 1328, 327, + 327, 1334, 359, 195, 648, 829, 999, 1135, 1002, 316, + 556, 957, 349, 488, 1004, 824, 371, 1346, 360, 564, + 327, 195, 195, 359, 667, 949, 565, 825, 982, 916, + 330, 316, 680, 683, 1084, 985, 1096, 684, 566, 435, + 1013, 398, 556, 1167, 912, 993, 1031, 734, 1097, 912, + 359, 912, 316, 1411, 912, 912, 598, 912, 912, 1035, + 580, 358, 473, 94, 717, 330, 891, 918, 718, 113, + 581, 330, 1191, 615, 616, 396, 397, 330, 1040, 316, + 598, 330, 598, 564, 399, 853, 316, 195, 582, 1016, + 565, 1018, 316, 1020, 330, 657, 400, 569, 583, 317, + 494, 401, 566, 330, 657, 330, 494, 1030, 297, 195, + 448, 823, 327, 327, 335, 1464, 1251, 195, 335, 404, + 330, 114, 267, 114, 330, 330, 330, 434, 114, 1149, + 667, 267, 656, 763, 912, 763, 1037, 763, 1038, 734, + 1039, 656, 492, 752, 330, 752, 1281, 752, 435, 392, + 393, 1483, 330, 1281, 435, 330, 330, 822, 276, 330, + 276, 516, 335, 394, 395, 276, 115, 1501, 1502, 64, + 64, 726, 436, 64, 327, 503, 776, 932, 933, 1077, + 569, 1079, 166, 1080, 166, 569, 166, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 113, 323, + 327, 440, 323, 330, 330, 473, 330, 330, 56, 569, + 226, 569, 327, 569, 1089, 569, 569, 569, 178, 327, + 178, 443, 178, 488, 65, 569, 569, 113, 65, 469, + 569, 569, 619, 620, 621, 622, 470, 1113, 734, 776, + 333, 569, 569, 1117, 1118, 1120, 383, 384, 385, 113, + 1030, 226, 490, 229, 569, 491, 234, 488, 1152, 1125, + 488, 327, 512, 296, 327, 297, 960, 335, 1473, 1474, + 569, 335, 555, 330, 335, 360, 335, 1145, 349, 440, + 234, 335, 557, 1011, 1148, 804, 1087, 115, 1088, 517, + 742, 115, 742, 520, 115, 195, 488, 495, 327, 327, + 409, 549, 409, 495, 555, 891, 891, 1212, 1174, 1080, + 958, 1152, 958, 536, 557, 335, 754, 541, 754, 115, + 575, 409, 409, 115, 518, 518, 327, 327, 345, 349, + 1216, 1232, 345, 576, 330, 345, 555, 345, 635, 635, + 413, 409, 345, 617, 618, 414, 557, 415, 195, 409, + 1216, 1204, 409, 416, 417, 115, 154, 161, 154, 161, + 682, 162, 1212, 162, 1265, 195, 869, 1249, 869, 488, + 67, 662, 67, 184, 1232, 184, 1216, 584, 1289, 1290, + 155, 119, 155, 119, 353, 115, 281, 433, 281, 126, + 288, 126, 288, 1130, 1131, 623, 624, 647, 113, 685, + 687, 1318, 709, 715, 1321, 716, 738, 762, 336, 755, + 1326, 764, 339, 340, 341, 342, 343, 344, 345, 346, + 195, 195, 765, 1286, 1326, 766, 767, 352, 195, 784, + 785, 799, 787, 800, 805, 804, 195, 195, 327, 195, + 810, 1356, 812, 1357, 814, 1306, 820, 832, 833, 851, + 352, 835, 836, 839, 42, 856, 857, 1306, 858, 195, + 327, 859, 195, 352, 863, 113, 864, 197, 352, 880, + 1306, 229, 884, 352, 1335, 352, 352, 352, 352, 885, + 896, 887, 327, 352, 35, 892, 913, 352, 897, 1306, + 113, 352, 905, 923, 1391, 928, 930, 934, 944, 352, + 945, 948, 352, 938, 352, 950, 953, 947, 955, 961, + 973, 1418, 974, 977, 983, 259, 990, 506, 1009, 997, + 1014, 1008, 1024, 1041, 1430, 1432, 1033, 1047, 352, 1075, + 1048, 1056, 1058, 1049, 1078, 734, 1068, 1286, 1091, 1072, + 1083, 1076, 1095, 1099, 1098, 1100, 1101, 488, 1103, 259, + 1106, 1418, 1418, 259, 259, 259, 259, 259, 259, 259, + 259, 1116, 1119, 1121, 1440, 262, 1128, 327, 1133, 286, + 287, 288, 499, 294, 295, 1139, 1141, 1144, 307, 308, + 1151, 1173, 1161, 1176, 352, 313, 449, 315, 327, 319, + 1180, 1178, 1181, 1187, 331, 332, 1182, 734, 1191, 1190, + 1195, 1198, 1199, 1200, 1201, 1207, 1203, 1418, 1296, 450, + 473, 473, 1252, 1247, 1253, 1250, 336, 1255, 368, 1267, + 1343, 1262, 451, 113, 1309, 113, 1288, 453, 1313, 1314, + 1323, 1330, 454, 734, 455, 456, 457, 458, 1324, 1327, + 1340, 1331, 459, 1488, 1488, 544, 460, 1333, 1342, 1345, + 1497, 1497, 1347, 1349, 327, 591, 591, 1351, 461, 1353, + 1354, 462, 1359, 463, 1364, 1367, 1370, 1401, 1374, 113, + 1371, 1372, 113, 1382, 1383, 1415, 1386, 327, 1396, 1403, + 1416, 1412, 1413, 1422, 1425, 1426, 544, 464, 1436, 1439, + 1437, 1450, 327, 1441, 1442, 1444, 327, 1456, 610, 611, + 612, 372, 1461, 544, 544, 544, 544, 544, 544, 544, + 544, 544, 544, 544, 544, 544, 544, 544, 544, 1457, + 1465, 1466, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 1468, 1475, 1460, 1459, 1503, 1481, 1482, 9, + 954, 35, 259, 1314, 1504, 35, 1505, 531, 599, 839, + 489, 31, 259, 946, 806, 490, 35, 259, 446, 313, + 600, 35, 368, 668, 29, 35, 327, 327, 35, 21, + 514, 810, 488, 29, 308, 746, 30, 205, 30, 95, + 35, 35, 779, 635, 756, 35, 35, 847, 747, 757, + 748, 35, 811, 35, 35, 35, 35, 749, 780, 656, + 813, 35, 510, 312, 678, 35, 815, 35, 337, 656, + 330, 635, 231, 53, 122, 526, 104, 35, 284, 35, + 35, 544, 35, 129, 123, 48, 35, 259, 499, 105, + 285, 130, 327, 499, 499, 235, 21, 1123, 1124, 259, + 259, 259, 943, 1025, 259, 259, 35, 1264, 1256, 1458, + 1427, 1467, 35, 35, 1414, 841, 499, 1443, 1409, 1303, + 854, 970, 327, 1316, 966, 971, 972, 1263, 1337, 499, + 499, 1499, 1260, 1491, 499, 1438, 1490, 499, 1196, 499, + 1433, 499, 499, 499, 499, 1431, 1358, 1307, 752, 499, + 786, 1197, 989, 499, 939, 113, 915, 499, 917, 872, + 798, 586, 1059, 850, 299, 499, 870, 547, 499, 625, + 499, 499, 626, 628, 627, 912, 499, 629, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 630, + 1188, 769, 1184, 1268, 499, 499, 1140, 406, 1102, 499, + 499, 1053, 499, 499, 499, 499, 499, 499, 499, 841, + 499, 499, 1071, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 1114, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, + 499, 499, 499, 499, 499, 499, 698, 1042, 499, 746, + 499, 1107, 499, 1170, 1109, 499, 1175, 745, 24, 645, + 25, 499, 1006, 26, 0, 1266, 0, 0, 27, 0, + 941, 0, 28, 0, 940, 0, 113, 0, 0, 0, + 113, 30, 0, 113, 0, 0, 742, 0, 32, 0, + 0, 259, 0, 33, 0, 0, 0, 34, 0, 0, + 327, 0, 0, 0, 0, 0, 0, 0, 113, 36, + 0, 37, 113, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 0, 0, 41, 0, 0, + 747, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 113, 0, 48, 0, 48, 0, + 48, 0, 48, 327, 0, 48, 291, 48, 48, 0, + 48, 0, 48, 0, 48, 0, 48, 48, 48, 48, + 327, 0, 48, 48, 113, 0, 773, 0, 48, 48, + 48, 48, 48, 0, 0, 48, 48, 48, 0, 48, + 0, 48, 48, 48, 48, 48, 48, 48, 48, 0, + 48, 48, 48, 48, 0, 0, 48, 48, 48, 0, + 48, 321, 0, 0, 0, 48, 48, 0, 48, 48, + 0, 48, 48, 48, 0, 327, 327, 48, 0, 0, + 0, 0, 259, 327, 0, 0, 0, 0, 0, 0, + 0, 327, 327, 0, 327, 0, 0, 48, 0, 48, + 48, 0, 0, 544, 0, 0, 0, 0, 0, 0, + 0, 0, 48, 0, 327, 841, 841, 327, 0, 0, + 0, 0, 0, 841, 841, 841, 841, 841, 0, 841, + 841, 0, 841, 841, 841, 841, 841, 841, 841, 841, + 0, 0, 0, 0, 841, 0, 841, 841, 841, 841, + 841, 841, 330, 48, 841, 0, 0, 0, 841, 841, + 0, 841, 841, 841, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 841, 0, 841, 0, 841, 841, 0, + 0, 841, 0, 841, 841, 841, 841, 841, 841, 841, + 841, 841, 841, 841, 841, 0, 841, 0, 0, 841, + 841, 0, 0, 841, 841, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 841, 841, + 841, 841, 841, 0, 0, 0, 841, 841, 0, 0, + 841, 0, 0, 0, 0, 841, 841, 841, 841, 841, + 0, 0, 0, 841, 0, 841, 0, 0, 0, 0, + 0, 841, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 839, 839, 839, - 839, 0, 839, 774, 774, 0, 0, 0, 0, 839, - 0, 774, 774, 774, 774, 774, 0, 774, 774, 0, - 774, 774, 774, 774, 774, 774, 774, 0, 0, 734, - 0, 0, 774, 0, 774, 774, 774, 774, 774, 774, - 0, 0, 774, 0, 0, 0, 774, 774, 0, 774, - 774, 774, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 774, 0, 774, 0, 774, 774, 0, 0, 774, - 0, 774, 774, 774, 774, 774, 774, 774, 774, 774, - 774, 774, 774, 0, 774, 0, 0, 774, 774, 0, - 0, 774, 774, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 774, 774, 774, 774, - 774, 0, 0, 0, 774, 774, 0, 0, 774, 0, - 0, 0, 0, 774, 774, 774, 774, 774, 0, 0, - 0, 774, 331, 774, 0, 0, 0, 331, 331, 774, - 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, - 331, 0, 0, 0, 774, 774, 774, 774, 0, 774, - 331, 0, 0, 331, 331, 0, 774, 0, 331, 0, - 0, 331, 0, 331, 0, 331, 331, 331, 331, 0, - 0, 0, 0, 331, 0, 0, 0, 331, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 331, 0, 331, 331, 0, 0, 0, 0, - 331, 0, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 0, 0, 0, 0, 331, 331, - 0, 0, 0, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 0, 331, 331, 0, 0, 331, 331, - 331, 331, 331, 0, 0, 331, 331, 0, 0, 0, - 331, 331, 331, 331, 331, 331, 331, 331, 0, 0, - 0, 0, 0, 0, 0, 734, 0, 0, 0, 331, - 734, 734, 331, 0, 331, 0, 331, 0, 0, 331, - 0, 0, 0, 0, 0, 331, 361, 0, 0, 0, - 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 734, 0, 0, 734, 734, 0, 0, - 0, 734, 0, 0, 734, 0, 734, 0, 734, 734, - 734, 734, 0, 0, 0, 0, 734, 0, 0, 0, - 734, 0, 0, 0, 734, 0, 0, 0, 0, 0, - 0, 0, 734, 0, 0, 734, 0, 734, 734, 0, - 0, 0, 0, 734, 0, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 0, 0, 0, 0, - 0, 734, 734, 0, 0, 0, 734, 734, 734, 734, - 734, 734, 0, 734, 734, 734, 0, 734, 734, 0, - 0, 734, 734, 734, 734, 324, 0, 0, 734, 734, - 324, 324, 0, 734, 734, 734, 734, 734, 734, 734, - 734, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 734, 324, 0, 734, 0, 734, 0, 734, - 0, 0, 734, 324, 0, 0, 324, 324, 734, 0, - 0, 324, 0, 0, 324, 0, 324, 0, 324, 324, - 324, 324, 0, 49, 0, 0, 324, 0, 0, 0, - 324, 0, 0, 0, 324, 0, 0, 0, 0, 0, - 0, 0, 324, 0, 0, 324, 0, 324, 324, 0, - 0, 0, 0, 324, 0, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 0, 0, 0, 0, - 0, 324, 324, 0, 0, 0, 324, 324, 324, 324, - 324, 324, 0, 324, 324, 324, 0, 324, 324, 0, - 0, 324, 324, 324, 324, 0, 0, 0, 324, 324, - 0, 0, 0, 324, 324, 324, 324, 324, 324, 324, - 324, 0, 361, 0, 0, 0, 0, 361, 361, 0, - 0, 0, 324, 0, 0, 324, 0, 324, 0, 324, - 0, 0, 324, 0, 0, 0, 28, 0, 324, 0, - 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 361, 0, 0, 361, 361, 0, 0, 0, 361, 0, - 0, 361, 0, 361, 0, 361, 361, 361, 361, 0, - 0, 0, 0, 361, 0, 0, 0, 361, 0, 0, - 0, 361, 0, 0, 0, 0, 0, 0, 0, 361, - 0, 0, 361, 0, 361, 361, 0, 0, 0, 35, - 361, 0, 361, 361, 361, 361, 361, 361, 361, 361, - 361, 361, 361, 0, 0, 0, 0, 0, 361, 361, - 0, 0, 0, 361, 361, 0, 361, 361, 361, 0, - 361, 361, 361, 0, 361, 361, 0, 0, 361, 361, - 361, 361, 0, 0, 0, 361, 361, 0, 0, 0, - 361, 361, 361, 361, 361, 361, 361, 361, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 361, - 0, 0, 361, 0, 361, 0, 0, 0, 0, 0, - 49, 0, 0, 0, 49, 361, 49, 0, 49, 0, - 49, 0, 0, 49, 0, 49, 49, 0, 49, 0, - 49, 0, 49, 0, 49, 49, 49, 49, 0, 0, - 49, 49, 0, 0, 0, 0, 49, 49, 49, 49, - 49, 0, 0, 49, 49, 49, 0, 49, 0, 49, - 49, 49, 49, 49, 49, 49, 49, 28, 49, 49, - 49, 49, 0, 0, 49, 49, 49, 0, 49, 0, - 0, 0, 0, 49, 49, 0, 49, 49, 0, 49, - 49, 49, 0, 0, 0, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 841, 841, 841, 841, + 0, 841, 773, 773, 0, 0, 0, 0, 841, 0, + 773, 773, 773, 773, 773, 0, 773, 773, 733, 773, + 773, 773, 773, 773, 773, 773, 0, 0, 0, 0, + 0, 773, 0, 773, 773, 773, 773, 773, 773, 0, + 0, 773, 0, 0, 0, 773, 773, 0, 773, 773, + 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 773, 0, 773, 0, 773, 773, 0, 0, 773, 0, + 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, + 773, 773, 0, 773, 0, 0, 773, 773, 0, 0, + 773, 773, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 773, 773, 773, 773, 773, + 0, 0, 0, 773, 773, 0, 0, 773, 0, 0, + 0, 0, 773, 773, 773, 773, 773, 0, 330, 0, + 773, 0, 773, 330, 330, 0, 0, 0, 773, 773, + 0, 0, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, + 0, 0, 0, 773, 773, 773, 773, 0, 773, 330, + 330, 0, 0, 0, 330, 773, 0, 330, 0, 330, + 0, 330, 330, 330, 330, 0, 0, 0, 0, 330, + 0, 0, 0, 330, 0, 0, 0, 330, 0, 0, + 0, 0, 0, 0, 0, 330, 0, 0, 330, 0, + 330, 330, 0, 0, 0, 0, 330, 0, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 0, 0, 0, 0, 330, 330, 0, 0, 0, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, + 330, 330, 0, 0, 330, 330, 330, 330, 330, 0, + 0, 330, 330, 0, 0, 0, 330, 330, 330, 330, + 330, 330, 330, 330, 733, 0, 0, 0, 360, 733, + 733, 0, 0, 0, 0, 330, 0, 0, 330, 0, + 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, + 0, 330, 733, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 733, 733, 0, 0, 0, + 733, 0, 0, 733, 0, 733, 0, 733, 733, 733, + 733, 0, 0, 0, 0, 733, 0, 0, 0, 733, + 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, + 0, 733, 0, 0, 733, 0, 733, 733, 0, 0, + 0, 0, 733, 0, 733, 733, 733, 733, 733, 733, + 733, 733, 733, 733, 733, 0, 0, 0, 0, 0, + 733, 733, 330, 0, 0, 733, 733, 733, 733, 733, + 733, 0, 733, 733, 733, 0, 733, 733, 0, 0, + 733, 733, 733, 733, 323, 0, 0, 733, 733, 323, + 323, 0, 733, 733, 733, 733, 733, 733, 733, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 0, 49, 49, 0, - 0, 0, 28, 28, 0, 0, 0, 28, 0, 0, - 49, 28, 0, 28, 0, 0, 28, 0, 28, 28, - 0, 28, 0, 28, 0, 28, 0, 28, 28, 28, - 28, 0, 0, 28, 28, 0, 33, 0, 0, 28, - 0, 28, 28, 28, 0, 0, 28, 28, 28, 0, - 28, 49, 0, 28, 0, 28, 28, 28, 28, 0, - 0, 0, 28, 28, 28, 0, 35, 28, 28, 28, - 35, 0, 0, 0, 0, 0, 28, 28, 0, 28, - 28, 35, 28, 28, 28, 0, 35, 0, 28, 0, - 35, 0, 0, 35, 0, 0, 0, 0, 0, 5, - 0, 0, 0, 0, 0, 35, 35, 0, 28, 0, - 35, 35, 0, 0, 28, 28, 35, 0, 35, 35, - 35, 35, 0, 28, 0, 0, 35, 0, 0, 0, - 35, 0, 35, 0, 0, 34, 0, 0, 0, 34, - 0, 0, 35, 0, 35, 35, 932, 35, 0, 0, - 34, 35, 0, 0, 0, 34, 0, 0, 0, 34, - 0, 0, 34, 0, 28, 0, 0, 0, 0, 0, - 0, 35, 0, 0, 34, 34, 0, 0, 35, 34, - 34, 0, 0, 0, 0, 34, 0, 34, 34, 34, - 34, 0, 0, 48, 0, 34, 0, 0, 0, 34, - 0, 34, 0, 0, 28, 0, 0, 0, 28, 0, - 0, 34, 0, 0, 34, 0, 34, 0, 0, 28, - 34, 0, 0, 0, 28, 0, 0, 0, 28, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 0, 0, 28, 28, 0, 34, 34, 28, 28, - 48, 0, 48, 0, 28, 0, 28, 28, 28, 28, - 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, - 28, 0, 0, 48, 0, 0, 0, 0, 0, 0, - 28, 0, 0, 28, 0, 28, 48, 0, 0, 28, - 0, 48, 0, 33, 0, 0, 48, 33, 48, 48, - 48, 48, 0, 933, 48, 0, 48, 0, 33, 28, - 48, 0, 0, 33, 0, 28, 28, 33, 0, 0, - 33, 0, 48, 0, 0, 48, 0, 48, 0, 0, - 0, 0, 33, 33, 0, 0, 0, 33, 33, 0, - 0, 0, 0, 33, 0, 33, 33, 33, 33, 0, - 0, 48, 0, 33, 0, 0, 5, 33, 0, 33, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 0, 48, 33, 0, 33, 0, 48, 0, 33, 0, - 48, 0, 0, 48, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 48, 0, 33, 0, - 48, 48, 0, 932, 0, 33, 48, 48, 48, 48, - 48, 48, 0, 0, 0, 0, 48, 0, 48, 0, - 48, 0, 48, 48, 0, 0, 0, 48, 0, 0, - 48, 0, 48, 0, 0, 48, 0, 48, 0, 0, - 0, 48, 48, 48, 0, 0, 0, 48, 48, 0, - 48, 0, 0, 48, 48, 48, 48, 48, 48, 0, - 0, 48, 0, 48, 0, 48, 0, 48, 0, 48, - 48, 0, 0, 0, 48, 0, 0, 48, 0, 48, - 0, 0, 48, 0, 48, 0, 0, 0, 48, 48, - 48, 0, 0, 0, 48, 48, 0, 0, 0, 0, - 48, 0, 48, 48, 48, 48, 0, 0, 48, 0, - 48, 0, 0, 0, 48, 0, 48, 7, 0, 0, - 0, 49, 0, 0, 0, 0, 48, 0, 0, 48, - 0, 48, 49, 0, 0, 48, 0, 49, 0, 0, - 0, 49, 0, 0, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 49, 49, 0, 0, - 933, 49, 49, 0, 48, 0, 0, 49, 0, 49, - 49, 49, 49, 0, 0, 48, 0, 49, 0, 0, - 48, 49, 0, 49, 48, 0, 0, 48, 0, 0, - 0, 0, 0, 49, 0, 0, 49, 0, 49, 48, - 48, 0, 49, 0, 48, 48, 0, 0, 0, 0, - 48, 0, 48, 48, 48, 48, 0, 0, 0, 0, - 48, 0, 49, 0, 48, 0, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 0, 56, 48, - 0, 48, 0, 0, 0, 48, 57, 25, 58, 26, - 0, 0, 27, 59, 0, 60, 61, 28, 62, 63, - 64, 29, 0, 0, 0, 48, 0, 65, 0, 66, - 31, 67, 68, 69, 70, 0, 0, 33, 0, 0, - 0, 71, 34, 0, 72, 73, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 0, 37, 0, - 38, 75, 0, 0, 39, 0, 76, 77, 78, 79, - 80, 81, 40, 41, 82, 83, 42, 84, 0, 85, - 0, 0, 86, 87, 0, 331, 88, 89, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 0, 0, 0, 95, - 0, 0, 0, 96, 0, 0, 0, 0, 97, 98, - 99, 100, 101, 0, 0, 0, 102, 331, 103, 0, - 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, + 0, 733, 323, 0, 733, 0, 733, 0, 733, 0, + 0, 733, 0, 0, 0, 323, 323, 733, 0, 0, + 323, 0, 0, 323, 0, 323, 0, 323, 323, 323, + 323, 0, 0, 0, 0, 323, 0, 0, 0, 323, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, + 0, 323, 0, 0, 323, 0, 323, 323, 0, 0, + 0, 0, 323, 0, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 323, 0, 0, 0, 0, 0, + 323, 323, 0, 0, 0, 323, 323, 323, 323, 323, + 323, 0, 323, 323, 323, 0, 323, 323, 355, 0, + 323, 323, 323, 323, 360, 0, 0, 323, 323, 360, + 360, 0, 323, 323, 323, 323, 323, 323, 323, 323, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 323, 360, 0, 323, 0, 323, 0, 323, 0, + 0, 323, 0, 0, 0, 360, 360, 323, 0, 0, + 360, 0, 0, 360, 0, 360, 0, 360, 360, 360, + 360, 0, 0, 0, 0, 360, 0, 0, 0, 360, + 0, 0, 0, 360, 0, 0, 0, 0, 0, 0, + 0, 360, 0, 0, 360, 0, 360, 360, 0, 0, + 0, 0, 360, 0, 360, 360, 360, 360, 360, 360, + 360, 360, 360, 360, 360, 0, 0, 0, 330, 0, + 360, 360, 0, 0, 330, 360, 360, 0, 360, 360, + 360, 0, 360, 360, 360, 0, 360, 360, 0, 0, + 360, 360, 360, 360, 0, 0, 0, 360, 360, 0, + 0, 0, 360, 360, 360, 360, 360, 360, 360, 360, + 330, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 0, 360, 0, 0, 360, 0, 360, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 331, 0, 106, - 107, 108, 109, 0, 0, 0, 0, 0, 331, 0, - 0, 198, 0, 331, 0, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, - 0, 0, 331, 331, 0, 0, 0, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 0, 331, 331, 0, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 0, 502, 0, 0, 331, 0, 331, - 502, 0, 331, 0, 0, 0, 0, 0, 331, 0, - 0, 0, 0, 331, 0, 0, 331, 0, 331, 331, - 0, 0, 0, 331, 331, 0, 0, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 502, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 331, 331, 0, - 0, 0, 0, 0, 0, 331, 0, 0, 331, 0, - 0, 0, 0, 0, 331, 0, 0, 502, 0, 0, - 0, 0, 502, 0, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 924, 502, 502, 0, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 0, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 0, 498, 0, 0, 0, 0, 502, 498, - 0, 0, 0, 0, 0, 0, 0, 502, 0, 0, + 0, 330, 0, 0, 0, 0, 330, 0, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 0, 0, 0, 0, 0, 330, 581, 0, 0, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, + 330, 330, 0, 0, 330, 330, 330, 330, 330, 0, + 0, 330, 330, 0, 0, 34, 330, 330, 330, 330, + 330, 330, 330, 330, 355, 0, 0, 0, 0, 0, + 355, 0, 0, 0, 0, 330, 0, 0, 330, 0, + 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, + 0, 330, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 355, 0, 0, 581, + 0, 0, 0, 0, 581, 0, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 581, 0, + 581, 27, 581, 0, 581, 581, 581, 355, 0, 0, + 0, 0, 355, 0, 355, 355, 355, 355, 355, 355, + 355, 355, 355, 355, 355, 0, 0, 0, 0, 0, + 0, 355, 0, 0, 0, 355, 355, 0, 355, 355, + 355, 0, 355, 355, 355, 0, 355, 355, 0, 0, + 355, 355, 355, 355, 0, 0, 0, 355, 355, 581, + 0, 0, 355, 355, 355, 355, 355, 355, 355, 355, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 0, 355, 27, 27, 355, 0, 355, 27, 0, 0, + 0, 27, 0, 27, 0, 0, 27, 355, 27, 27, + 0, 27, 0, 27, 0, 27, 0, 27, 27, 27, + 27, 0, 0, 27, 27, 0, 0, 0, 5, 27, + 0, 27, 27, 27, 0, 0, 27, 27, 27, 0, + 27, 0, 0, 27, 0, 27, 27, 27, 27, 0, + 0, 0, 27, 27, 27, 0, 0, 27, 27, 27, + 0, 0, 0, 0, 0, 0, 27, 27, 0, 27, + 27, 936, 27, 27, 27, 0, 0, 0, 27, 0, + 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, 27, 0, + 0, 0, 34, 0, 27, 27, 34, 0, 0, 34, + 0, 0, 0, 27, 47, 0, 0, 0, 0, 0, + 0, 34, 34, 0, 0, 33, 34, 34, 0, 33, + 0, 0, 34, 0, 34, 34, 34, 34, 0, 0, + 33, 0, 34, 0, 0, 33, 34, 0, 34, 33, + 0, 0, 33, 0, 27, 0, 0, 7, 34, 0, + 34, 34, 0, 34, 33, 33, 0, 34, 27, 33, + 33, 0, 27, 0, 0, 33, 0, 33, 33, 33, + 33, 0, 0, 27, 0, 33, 0, 34, 27, 33, + 0, 33, 27, 0, 34, 27, 0, 0, 0, 0, + 937, 33, 0, 0, 33, 0, 33, 27, 27, 0, + 33, 0, 27, 27, 0, 0, 0, 0, 27, 0, + 27, 27, 27, 27, 0, 0, 0, 0, 27, 0, + 33, 0, 27, 0, 27, 0, 33, 33, 0, 0, + 0, 0, 32, 0, 27, 0, 32, 27, 0, 27, + 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, + 0, 0, 32, 0, 0, 0, 32, 0, 0, 32, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 27, + 27, 32, 32, 0, 0, 5, 32, 32, 0, 47, + 0, 0, 32, 0, 32, 32, 32, 32, 0, 0, + 47, 0, 32, 0, 0, 47, 32, 0, 32, 47, + 0, 0, 47, 0, 0, 0, 0, 0, 32, 0, + 0, 32, 0, 32, 47, 47, 0, 32, 936, 47, + 47, 0, 47, 0, 0, 47, 0, 47, 47, 47, + 47, 0, 0, 47, 0, 47, 0, 32, 47, 47, + 0, 47, 47, 0, 32, 47, 0, 0, 0, 0, + 0, 47, 0, 0, 47, 0, 47, 47, 47, 0, + 47, 47, 47, 47, 0, 47, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, + 47, 47, 47, 0, 47, 47, 0, 0, 47, 0, + 0, 0, 0, 0, 47, 0, 0, 47, 0, 47, + 47, 47, 0, 47, 7, 47, 47, 0, 48, 0, + 0, 47, 0, 47, 47, 47, 47, 0, 0, 48, + 0, 47, 0, 47, 48, 47, 0, 47, 48, 0, + 0, 48, 0, 0, 0, 0, 0, 47, 0, 0, + 47, 0, 47, 48, 48, 0, 47, 937, 48, 48, + 0, 47, 0, 0, 48, 0, 48, 48, 48, 48, + 0, 0, 47, 0, 48, 0, 47, 47, 48, 0, + 48, 47, 0, 0, 47, 0, 0, 0, 0, 0, + 48, 0, 0, 48, 0, 48, 47, 47, 0, 48, + 0, 47, 47, 0, 0, 0, 0, 47, 0, 47, + 47, 47, 47, 0, 0, 0, 0, 47, 0, 48, + 0, 47, 0, 47, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 0, 55, 47, 0, 47, 0, + 0, 0, 47, 56, 24, 57, 25, 0, 0, 26, + 58, 0, 59, 60, 27, 61, 62, 63, 28, 0, + 0, 0, 47, 0, 64, 0, 65, 30, 66, 67, + 68, 69, 0, 0, 32, 0, 0, 0, 70, 33, + 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 73, 0, 36, 0, 37, 74, 0, + 0, 38, 0, 75, 76, 77, 78, 79, 80, 39, + 40, 81, 82, 41, 83, 0, 84, 0, 0, 85, + 86, 0, 330, 87, 88, 0, 0, 0, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, + 91, 92, 93, 0, 0, 0, 94, 0, 0, 0, + 95, 0, 0, 0, 0, 96, 97, 98, 99, 100, + 0, 0, 0, 101, 330, 102, 0, 0, 0, 0, + 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, + 0, 0, 0, 0, 330, 0, 105, 106, 107, 108, + 0, 0, 0, 0, 0, 330, 0, 0, 197, 0, + 330, 0, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 0, 0, 0, 0, 0, 330, + 330, 0, 0, 0, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 0, 330, 330, 0, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 0, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 0, 501, 0, 0, 330, 0, 330, 501, 0, 330, + 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, + 330, 0, 0, 330, 0, 330, 330, 0, 0, 0, + 330, 330, 0, 0, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 501, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 330, 330, 0, 0, 0, 0, + 0, 0, 330, 0, 0, 330, 0, 0, 0, 0, + 0, 330, 0, 202, 501, 0, 0, 0, 0, 501, + 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 928, 501, 501, 203, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 0, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, + 497, 0, 0, 0, 0, 501, 497, 0, 0, 0, + 0, 0, 0, 0, 501, 204, 205, 206, 207, 0, + 208, 209, 210, 211, 212, 213, 214, 215, 0, 0, + 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, + 0, 0, 497, 0, 0, 928, 0, 0, 0, 0, + 928, 0, 928, 928, 928, 928, 928, 928, 928, 928, + 928, 928, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 387, 0, 0, 928, 0, 928, 387, 928, 0, + 928, 928, 928, 497, 0, 0, 0, 0, 497, 0, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 497, 497, 387, 497, 497, 497, 497, 497, 497, + 497, 0, 497, 497, 0, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 928, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 0, 505, + 0, 0, 0, 0, 497, 505, 0, 497, 0, 0, + 0, 0, 0, 497, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 323, 0, 387, 387, 387, 387, + 0, 387, 0, 387, 387, 0, 387, 387, 387, 387, + 387, 505, 387, 387, 387, 387, 0, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 0, + 0, 0, 0, 323, 0, 387, 0, 0, 387, 0, + 0, 0, 505, 0, 387, 0, 0, 505, 0, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 505, 0, 505, 505, 505, 505, 505, 505, 505, + 0, 505, 505, 0, 505, 505, 505, 505, 505, 505, + 505, 505, 505, 505, 0, 505, 505, 505, 505, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 505, 505, 505, 505, 505, 0, 330, 561, + 0, 0, 0, 505, 330, 0, 505, 0, 24, 0, + 25, 0, 505, 26, 0, 0, 0, 0, 27, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, + 330, 0, 0, 33, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, + 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 0, 0, 41, 0, 0, + 320, 330, 0, 0, 0, 0, 330, 0, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 498, 0, 0, 924, 0, - 0, 0, 0, 924, 0, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 924, 0, 924, - 388, 924, 0, 924, 924, 924, 498, 0, 0, 0, - 0, 498, 0, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 498, 498, 388, 498, 498, 498, - 498, 498, 498, 498, 0, 498, 498, 0, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 498, 924, 498, - 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 0, 506, 0, 0, 0, 0, 498, 506, 0, - 498, 0, 0, 0, 0, 0, 498, 0, 0, 0, - 0, 324, 0, 0, 0, 0, 0, 324, 0, 388, - 388, 388, 388, 0, 388, 0, 388, 388, 0, 388, - 388, 388, 388, 388, 506, 388, 388, 388, 388, 0, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 0, 0, 0, 0, 324, 0, 388, 0, - 0, 388, 0, 0, 0, 506, 0, 388, 0, 0, - 506, 0, 506, 506, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 506, 0, 506, 506, 506, 506, - 506, 506, 506, 0, 506, 506, 0, 506, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 0, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, - 0, 331, 746, 0, 0, 0, 506, 331, 0, 506, - 0, 25, 0, 26, 0, 506, 27, 0, 0, 0, - 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 33, 0, 331, 0, 0, 34, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 38, 0, 0, 0, 39, 0, - 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, - 42, 0, 0, 747, 331, 0, 0, 0, 0, 331, - 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 0, 0, 0, 0, 0, 0, 0, 292, - 0, 0, 0, 331, 0, 331, 331, 331, 331, 331, - 331, 331, 0, 331, 331, 0, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 0, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, - 431, 562, 0, 0, 322, 331, 431, 0, 331, 0, - 25, 0, 26, 0, 331, 27, 0, 0, 0, 0, - 28, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 33, 0, 431, 0, 0, 34, 0, 0, 0, 35, + 330, 0, 330, 330, 330, 330, 330, 330, 330, 0, + 330, 330, 0, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 0, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 0, 430, 888, 0, + 0, 353, 330, 430, 0, 330, 0, 24, 0, 25, + 0, 330, 26, 0, 0, 0, 0, 27, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 430, + 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 39, 40, 0, 0, 41, 0, 0, 320, + 430, 0, 0, 0, 0, 430, 0, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 430, + 0, 430, 430, 430, 430, 430, 430, 430, 0, 430, + 430, 0, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 0, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 430, 430, 430, 430, 430, 0, 390, 1034, 0, 0, + 353, 430, 390, 0, 430, 0, 24, 0, 25, 0, + 430, 26, 0, 0, 0, 0, 27, 0, 0, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 0, 0, 32, 0, 390, 0, + 0, 33, 0, 0, 0, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, + 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 0, 0, 41, 0, 0, 320, 390, + 0, 0, 0, 0, 390, 0, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 390, 0, + 390, 390, 390, 390, 390, 390, 390, 0, 390, 0, + 0, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 0, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 0, 536, 0, 351, 0, 353, + 390, 536, 0, 390, 0, 0, 0, 0, 0, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 40, 41, 0, 0, 42, - 0, 0, 321, 431, 0, 0, 0, 0, 431, 0, - 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, - 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 431, 0, 431, 431, 431, 431, 431, 431, - 431, 0, 431, 431, 0, 431, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 0, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, - 431, 431, 431, 431, 431, 431, 431, 431, 0, 391, - 887, 0, 0, 354, 431, 391, 0, 431, 0, 25, - 0, 26, 0, 431, 27, 0, 0, 0, 0, 28, - 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 391, 0, 0, 34, 0, 0, 0, 35, 0, + 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 351, 0, 0, 0, 536, 351, 0, + 0, 228, 0, 351, 0, 351, 351, 351, 351, 0, + 0, 0, 0, 351, 0, 0, 0, 351, 330, 0, + 0, 351, 0, 0, 330, 0, 0, 0, 736, 351, + 0, 0, 351, 0, 351, 0, 0, 0, 536, 0, + 0, 0, 0, 536, 0, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 0, 0, 351, 0, + 330, 0, 0, 0, 0, 0, 0, 536, 0, 536, + 0, 536, 0, 536, 536, 536, 736, 536, 536, 0, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 0, 0, 0, 536, 536, 536, 536, 536, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 548, 536, 0, 351, 0, 0, 548, 0, 330, + 0, 0, 0, 0, 0, 330, 0, 0, 536, 0, + 0, 330, 330, 330, 330, 330, 330, 736, 330, 0, + 330, 330, 0, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 548, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 0, 0, 0, 0, + 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, + 0, 330, 0, 0, 548, 0, 0, 0, 0, 548, + 0, 548, 548, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 0, 0, 0, 552, 0, 0, 0, 0, + 0, 552, 0, 548, 0, 548, 0, 548, 0, 548, + 548, 548, 0, 548, 548, 0, 0, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 0, 0, 0, 548, + 548, 548, 548, 548, 548, 548, 548, 552, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 38, 0, 0, 0, 39, 0, 0, 0, - 0, 0, 0, 0, 40, 41, 0, 0, 42, 0, - 0, 321, 391, 0, 0, 0, 0, 391, 0, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 0, 0, 0, 555, 548, 0, 0, 0, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 552, 0, + 0, 0, 0, 552, 0, 552, 552, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 555, 0, 552, 0, 552, + 0, 552, 0, 552, 552, 552, 0, 552, 552, 0, + 0, 552, 552, 552, 552, 0, 0, 0, 552, 552, + 0, 0, 0, 552, 552, 552, 552, 552, 552, 552, + 552, 0, 0, 0, 0, 0, 555, 0, 0, 0, + 0, 555, 552, 555, 555, 555, 555, 555, 555, 555, + 555, 555, 555, 555, 0, 0, 0, 553, 552, 0, + 0, 0, 0, 553, 0, 555, 0, 555, 0, 555, + 0, 555, 555, 555, 0, 555, 555, 0, 0, 555, + 555, 555, 555, 0, 0, 0, 555, 555, 0, 0, + 0, 555, 555, 555, 555, 555, 555, 555, 555, 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 391, 0, 391, 391, 391, 391, 391, 391, 391, - 0, 391, 0, 0, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 0, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 391, 391, 0, 537, 0, - 353, 0, 354, 391, 537, 0, 391, 0, 0, 0, - 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, - 537, 353, 0, 0, 230, 0, 353, 0, 353, 353, - 353, 353, 0, 0, 0, 0, 353, 0, 0, 0, - 353, 331, 0, 0, 353, 0, 0, 331, 0, 0, - 0, 737, 353, 0, 0, 353, 0, 353, 0, 0, - 0, 537, 0, 0, 0, 0, 537, 0, 537, 537, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 0, - 0, 353, 0, 331, 0, 0, 0, 0, 0, 0, - 537, 0, 537, 0, 537, 0, 537, 537, 537, 737, - 537, 537, 0, 537, 537, 537, 537, 537, 537, 537, - 537, 537, 537, 0, 0, 0, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, - 537, 537, 537, 537, 549, 537, 0, 353, 0, 0, - 549, 0, 331, 0, 0, 0, 0, 0, 331, 0, - 0, 537, 0, 0, 331, 331, 331, 331, 331, 331, - 737, 331, 0, 331, 331, 0, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 549, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, - 0, 0, 0, 331, 0, 331, 0, 0, 331, 0, - 0, 0, 0, 0, 331, 0, 0, 549, 0, 0, - 0, 0, 549, 0, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 0, 0, 0, 553, 0, - 0, 0, 0, 0, 553, 0, 549, 0, 549, 0, - 549, 0, 549, 549, 549, 0, 549, 549, 0, 0, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 0, - 0, 0, 549, 549, 549, 549, 549, 549, 549, 549, - 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 556, 549, 0, 0, - 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, - 0, 553, 0, 0, 0, 0, 553, 0, 553, 553, - 553, 553, 553, 553, 553, 553, 553, 553, 553, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 556, 0, - 553, 0, 553, 0, 553, 0, 553, 553, 553, 0, - 553, 553, 0, 0, 553, 553, 553, 553, 0, 0, - 0, 553, 553, 0, 0, 0, 553, 553, 553, 553, - 553, 553, 553, 553, 0, 0, 0, 0, 0, 556, - 0, 0, 0, 0, 556, 553, 556, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 0, 0, 0, - 554, 553, 0, 0, 0, 0, 554, 0, 556, 0, - 556, 0, 556, 0, 556, 556, 556, 0, 556, 556, - 0, 0, 556, 556, 556, 556, 0, 0, 0, 556, - 556, 0, 0, 0, 556, 556, 556, 556, 556, 556, - 556, 556, 554, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 555, 556, - 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 554, 0, 0, 0, 0, 554, 0, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 555, 0, 554, 0, 554, 0, 554, 0, 554, 554, - 554, 0, 554, 554, 0, 0, 554, 554, 554, 554, - 0, 0, 0, 554, 554, 0, 559, 0, 554, 554, + 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 554, 555, 0, 0, 0, + 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, + 553, 0, 0, 0, 0, 553, 0, 553, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 553, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 554, 0, 553, + 0, 553, 0, 553, 0, 553, 553, 553, 0, 553, + 553, 0, 0, 553, 553, 553, 553, 0, 0, 0, + 553, 553, 0, 558, 0, 553, 553, 553, 553, 553, + 553, 553, 553, 0, 0, 0, 0, 0, 554, 0, + 0, 0, 0, 554, 553, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, 0, 0, 0, 0, - 0, 555, 0, 0, 0, 0, 555, 554, 555, 555, - 555, 555, 555, 555, 555, 555, 555, 555, 555, 0, - 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, - 555, 0, 555, 0, 555, 0, 555, 555, 555, 0, - 555, 555, 0, 0, 555, 555, 555, 555, 0, 0, - 0, 555, 555, 0, 560, 0, 555, 555, 555, 555, - 555, 555, 555, 555, 0, 0, 0, 0, 0, 559, - 0, 0, 0, 0, 559, 555, 559, 559, 559, 559, + 553, 0, 0, 0, 0, 0, 0, 554, 0, 554, + 0, 554, 0, 554, 554, 554, 0, 554, 554, 0, + 0, 554, 554, 554, 554, 0, 0, 0, 554, 554, + 0, 559, 0, 554, 554, 554, 554, 554, 554, 554, + 554, 0, 0, 0, 0, 0, 558, 0, 0, 0, + 0, 558, 554, 558, 558, 558, 558, 558, 558, 558, + 558, 558, 558, 558, 0, 0, 0, 0, 554, 0, + 0, 0, 0, 0, 0, 558, 0, 558, 0, 558, + 0, 558, 558, 558, 0, 0, 0, 0, 0, 558, + 558, 558, 558, 0, 0, 0, 558, 558, 0, 560, + 0, 558, 558, 558, 558, 558, 558, 558, 558, 0, + 0, 0, 0, 0, 559, 0, 0, 0, 0, 559, + 558, 559, 559, 559, 559, 559, 559, 559, 559, 559, + 559, 559, 0, 0, 0, 0, 558, 0, 0, 0, + 0, 0, 0, 559, 0, 559, 0, 559, 0, 559, + 559, 559, 0, 0, 0, 0, 0, 559, 559, 559, + 559, 0, 0, 0, 559, 559, 0, 561, 0, 559, 559, 559, 559, 559, 559, 559, 559, 0, 0, 0, - 0, 555, 0, 0, 0, 0, 0, 0, 559, 0, - 559, 0, 559, 0, 559, 559, 559, 0, 0, 0, - 0, 0, 559, 559, 559, 559, 0, 0, 0, 559, - 559, 0, 561, 0, 559, 559, 559, 559, 559, 559, - 559, 559, 0, 0, 0, 0, 0, 560, 0, 0, - 0, 0, 560, 559, 560, 560, 560, 560, 560, 560, - 560, 560, 560, 560, 560, 0, 0, 0, 0, 559, - 0, 0, 0, 0, 0, 0, 560, 0, 560, 0, - 560, 0, 560, 560, 560, 0, 0, 0, 0, 0, - 560, 560, 560, 560, 0, 0, 0, 560, 560, 0, - 562, 0, 560, 560, 560, 560, 560, 560, 560, 560, - 0, 0, 0, 0, 0, 561, 0, 0, 0, 0, - 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 0, 0, 0, 0, 560, 0, 0, - 0, 0, 0, 0, 561, 0, 561, 0, 561, 0, - 561, 561, 561, 0, 0, 0, 0, 0, 561, 561, - 561, 561, 0, 0, 0, 561, 561, 0, 563, 0, + 0, 0, 560, 0, 0, 0, 0, 560, 559, 560, + 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, + 0, 0, 0, 0, 559, 0, 0, 0, 0, 0, + 0, 560, 0, 560, 0, 560, 0, 560, 560, 560, + 0, 0, 0, 0, 0, 560, 560, 560, 560, 0, + 0, 0, 560, 560, 0, 562, 0, 560, 560, 560, + 560, 560, 560, 560, 560, 0, 0, 0, 0, 0, + 561, 0, 0, 0, 0, 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, 0, 0, - 0, 0, 0, 562, 0, 0, 0, 0, 562, 561, - 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, - 562, 0, 0, 0, 0, 561, 0, 0, 0, 0, - 0, 0, 562, 0, 562, 0, 562, 0, 562, 562, - 562, 0, 0, 0, 0, 0, 562, 562, 562, 562, - 0, 0, 0, 562, 562, 0, 564, 0, 0, 0, + 0, 0, 560, 0, 0, 0, 0, 0, 0, 561, + 0, 561, 0, 561, 0, 561, 561, 561, 0, 0, + 0, 0, 0, 561, 561, 561, 561, 0, 0, 0, + 561, 561, 0, 563, 0, 0, 0, 561, 561, 561, + 561, 561, 561, 0, 0, 0, 0, 0, 562, 0, + 0, 0, 0, 562, 561, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, 0, 0, 0, 0, - 0, 563, 0, 0, 0, 0, 563, 562, 563, 563, - 563, 563, 563, 563, 563, 563, 563, 563, 563, 0, - 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, - 563, 0, 563, 0, 563, 0, 563, 563, 563, 0, - 0, 0, 0, 0, 563, 563, 563, 563, 0, 0, - 0, 563, 563, 0, 565, 0, 0, 0, 563, 563, - 563, 563, 563, 563, 0, 0, 0, 0, 0, 564, - 0, 0, 0, 0, 564, 563, 564, 564, 564, 564, - 564, 564, 564, 564, 564, 564, 564, 0, 0, 0, - 0, 563, 0, 0, 0, 0, 0, 0, 564, 0, - 564, 0, 564, 0, 564, 564, 564, 0, 0, 0, - 0, 0, 564, 564, 564, 564, 0, 0, 0, 564, - 564, 0, 566, 0, 0, 0, 564, 564, 564, 564, - 564, 564, 0, 0, 0, 0, 0, 565, 0, 0, - 0, 0, 565, 564, 565, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 0, 0, 0, 0, 564, - 0, 0, 0, 0, 0, 0, 565, 0, 565, 0, - 565, 0, 565, 565, 565, 0, 0, 0, 0, 0, - 565, 565, 565, 565, 0, 0, 0, 565, 565, 0, - 567, 0, 0, 0, 565, 565, 565, 565, 565, 565, - 0, 0, 0, 0, 0, 566, 0, 0, 0, 0, - 566, 565, 566, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 0, 0, 0, 0, 565, 0, 0, - 0, 0, 0, 0, 566, 0, 566, 0, 566, 0, - 566, 566, 566, 0, 0, 0, 0, 0, 566, 566, - 566, 566, 0, 0, 0, 566, 566, 0, 568, 0, - 0, 0, 566, 566, 566, 566, 566, 566, 0, 0, - 0, 0, 0, 567, 0, 0, 0, 0, 567, 566, - 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, - 567, 0, 0, 0, 0, 566, 0, 0, 0, 0, - 0, 0, 567, 0, 567, 0, 567, 0, 567, 567, - 567, 0, 0, 0, 0, 0, 0, 0, 567, 567, - 0, 0, 0, 567, 567, 0, 569, 0, 0, 0, - 0, 0, 567, 567, 567, 567, 0, 0, 0, 0, - 0, 568, 0, 0, 0, 0, 568, 567, 568, 568, - 568, 568, 568, 568, 568, 568, 568, 568, 568, 0, - 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, - 568, 0, 568, 0, 568, 0, 568, 568, 568, 0, - 0, 0, 0, 0, 0, 0, 568, 568, 0, 0, - 0, 568, 568, 0, 570, 0, 0, 0, 0, 0, - 568, 568, 568, 568, 0, 0, 0, 0, 0, 569, - 0, 0, 0, 0, 569, 568, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 0, 0, 0, - 0, 568, 0, 0, 0, 0, 0, 0, 569, 0, - 569, 0, 569, 0, 569, 569, 569, 0, 0, 0, - 0, 0, 0, 0, 569, 569, 0, 0, 0, 569, - 569, 0, 571, 0, 0, 0, 0, 0, 569, 569, - 569, 569, 0, 0, 0, 0, 0, 570, 0, 0, - 0, 0, 570, 569, 570, 570, 570, 570, 570, 570, - 570, 570, 570, 570, 570, 0, 0, 0, 0, 569, - 0, 0, 0, 0, 0, 0, 570, 0, 570, 0, - 570, 0, 570, 570, 570, 0, 0, 0, 0, 0, - 0, 0, 570, 570, 0, 0, 0, 570, 570, 0, - 572, 0, 0, 0, 0, 0, 0, 0, 570, 570, - 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, - 571, 570, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 0, 0, 0, 0, 570, 0, 0, - 0, 0, 0, 0, 571, 0, 571, 0, 571, 0, - 571, 571, 571, 0, 0, 0, 0, 0, 0, 0, - 571, 571, 0, 0, 0, 571, 571, 0, 573, 0, - 0, 0, 0, 0, 0, 0, 571, 571, 0, 0, - 0, 0, 0, 572, 0, 0, 0, 0, 572, 571, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 0, 0, 0, 0, 571, 0, 0, 0, 0, - 0, 0, 572, 0, 572, 0, 572, 0, 572, 572, - 572, 0, 0, 0, 0, 0, 0, 0, 0, 572, - 0, 0, 0, 572, 572, 0, 574, 0, 0, 0, - 0, 0, 0, 0, 572, 572, 0, 0, 0, 0, - 0, 573, 0, 0, 0, 0, 573, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 573, 0, - 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, - 573, 0, 573, 0, 573, 0, 573, 573, 573, 0, - 0, 0, 0, 0, 0, 0, 0, 573, 0, 0, - 0, 573, 573, 0, 575, 0, 0, 0, 0, 0, - 0, 0, 573, 573, 0, 0, 0, 0, 0, 574, - 0, 0, 0, 0, 574, 573, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 0, 0, 0, - 0, 573, 0, 0, 0, 0, 0, 0, 574, 0, - 574, 0, 574, 0, 574, 574, 574, 0, 0, 0, - 0, 0, 0, 0, 0, 574, 0, 0, 0, 0, - 574, 0, 576, 0, 0, 0, 0, 0, 0, 0, - 574, 574, 0, 0, 0, 0, 0, 575, 0, 0, - 0, 0, 575, 574, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 0, 0, 0, 0, 574, - 0, 0, 0, 0, 0, 0, 575, 0, 575, 0, - 575, 0, 575, 575, 575, 0, 0, 0, 0, 0, - 0, 0, 0, 575, 0, 0, 0, 0, 575, 0, - 577, 0, 0, 0, 0, 0, 0, 0, 575, 575, + 561, 0, 0, 0, 0, 0, 0, 562, 0, 562, + 0, 562, 0, 562, 562, 562, 0, 0, 0, 0, + 0, 562, 562, 562, 562, 0, 0, 0, 562, 562, + 0, 564, 0, 0, 0, 562, 562, 562, 562, 562, + 562, 0, 0, 0, 0, 0, 563, 0, 0, 0, + 0, 563, 562, 563, 563, 563, 563, 563, 563, 563, + 563, 563, 563, 563, 0, 0, 0, 0, 562, 0, + 0, 0, 0, 0, 0, 563, 0, 563, 0, 563, + 0, 563, 563, 563, 0, 0, 0, 0, 0, 563, + 563, 563, 563, 0, 0, 0, 563, 563, 0, 565, + 0, 0, 0, 563, 563, 563, 563, 563, 563, 0, + 0, 0, 0, 0, 564, 0, 0, 0, 0, 564, + 563, 564, 564, 564, 564, 564, 564, 564, 564, 564, + 564, 564, 0, 0, 0, 0, 563, 0, 0, 0, + 0, 0, 0, 564, 0, 564, 0, 564, 0, 564, + 564, 564, 0, 0, 0, 0, 0, 564, 564, 564, + 564, 0, 0, 0, 564, 564, 0, 566, 0, 0, + 0, 564, 564, 564, 564, 564, 564, 0, 0, 0, + 0, 0, 565, 0, 0, 0, 0, 565, 564, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, + 0, 565, 0, 565, 0, 565, 0, 565, 565, 565, + 0, 0, 0, 0, 0, 565, 565, 565, 565, 0, + 0, 0, 565, 565, 0, 567, 0, 0, 0, 565, + 565, 565, 565, 565, 565, 0, 0, 0, 0, 0, + 566, 0, 0, 0, 0, 566, 565, 566, 566, 566, + 566, 566, 566, 566, 566, 566, 566, 566, 0, 0, + 0, 0, 565, 0, 0, 0, 0, 0, 0, 566, + 0, 566, 0, 566, 0, 566, 566, 566, 0, 0, + 0, 0, 0, 0, 0, 566, 566, 0, 0, 0, + 566, 566, 0, 568, 0, 0, 0, 0, 0, 566, + 566, 566, 566, 0, 0, 0, 0, 0, 567, 0, + 0, 0, 0, 567, 566, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 0, 0, 0, 0, + 566, 0, 0, 0, 0, 0, 0, 567, 0, 567, + 0, 567, 0, 567, 567, 567, 0, 0, 0, 0, + 0, 0, 0, 567, 567, 0, 0, 0, 567, 567, + 0, 570, 0, 0, 0, 0, 0, 567, 567, 567, + 567, 0, 0, 0, 0, 0, 568, 0, 0, 0, + 0, 568, 567, 568, 568, 568, 568, 568, 568, 568, + 568, 568, 568, 568, 0, 0, 0, 0, 567, 0, + 0, 0, 0, 0, 0, 568, 0, 568, 0, 568, + 0, 568, 568, 568, 0, 0, 0, 0, 0, 0, + 0, 568, 568, 0, 0, 0, 568, 568, 0, 571, + 0, 0, 0, 0, 0, 568, 568, 568, 568, 0, + 0, 0, 0, 0, 570, 0, 0, 0, 0, 570, + 568, 570, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 0, 0, 0, 0, 568, 0, 0, 0, + 0, 0, 0, 570, 0, 570, 0, 570, 0, 570, + 570, 570, 0, 0, 0, 0, 0, 0, 0, 570, + 570, 0, 0, 0, 570, 570, 0, 572, 0, 0, + 0, 0, 0, 0, 0, 570, 570, 0, 0, 0, + 0, 0, 571, 0, 0, 0, 0, 571, 570, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 0, 0, 0, 0, 570, 0, 0, 0, 0, 0, + 0, 571, 0, 571, 0, 571, 0, 571, 571, 571, + 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, + 0, 0, 571, 571, 0, 573, 0, 0, 0, 0, + 0, 0, 0, 571, 571, 0, 0, 0, 0, 0, + 572, 0, 0, 0, 0, 572, 571, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 0, 0, + 0, 0, 571, 0, 0, 0, 0, 0, 0, 572, + 0, 572, 0, 572, 0, 572, 572, 572, 0, 0, + 0, 0, 0, 0, 0, 0, 572, 0, 0, 0, + 572, 572, 0, 574, 0, 0, 0, 0, 0, 0, + 0, 572, 572, 0, 0, 0, 0, 0, 573, 0, + 0, 0, 0, 573, 572, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 0, 0, 0, 0, + 572, 0, 0, 0, 0, 0, 0, 573, 0, 573, + 0, 573, 0, 573, 573, 573, 0, 0, 0, 0, + 0, 0, 0, 0, 573, 0, 0, 0, 0, 573, + 0, 576, 0, 0, 0, 0, 0, 0, 0, 573, + 573, 0, 0, 0, 0, 0, 574, 0, 0, 0, + 0, 574, 573, 574, 574, 574, 574, 574, 574, 574, + 574, 574, 574, 574, 0, 0, 0, 0, 573, 0, + 0, 0, 0, 0, 0, 574, 0, 574, 0, 574, + 0, 574, 574, 574, 0, 0, 0, 0, 0, 0, + 0, 0, 574, 0, 0, 0, 0, 574, 0, 577, + 0, 0, 0, 0, 0, 0, 0, 574, 574, 0, + 0, 0, 0, 0, 576, 0, 0, 0, 0, 576, + 574, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 0, 0, 0, 0, 574, 0, 0, 0, + 0, 0, 0, 576, 0, 576, 0, 576, 0, 576, + 576, 576, 0, 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 576, 0, 0, 0, 0, - 576, 575, 576, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 576, 0, 0, 0, 0, 575, 0, 0, - 0, 0, 0, 0, 576, 0, 576, 0, 576, 0, - 576, 576, 576, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 576, 0, 578, 0, - 0, 0, 0, 0, 0, 0, 576, 576, 0, 0, - 0, 0, 0, 577, 0, 0, 0, 0, 577, 576, + 0, 0, 0, 0, 0, 576, 576, 0, 0, 0, + 0, 0, 577, 0, 0, 0, 0, 577, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 0, 0, 0, 0, 576, 0, 0, 0, 0, - 0, 0, 577, 0, 577, 0, 577, 0, 577, 577, - 577, 0, 0, 0, 579, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, - 0, 578, 0, 0, 0, 0, 578, 577, 578, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 0, - 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, - 578, 0, 578, 0, 578, 0, 578, 578, 578, 0, - 0, 0, 0, 331, 0, 0, 0, 737, 0, 0, - 0, 0, 578, 0, 0, 0, 0, 579, 0, 0, - 0, 0, 579, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 579, 578, 0, 0, 0, 331, - 0, 0, 0, 0, 0, 0, 579, 0, 579, 0, - 579, 578, 579, 579, 579, 737, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 579, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 579, + 0, 0, 0, 0, 576, 0, 0, 0, 0, 0, + 0, 577, 0, 577, 0, 577, 0, 577, 577, 577, + 0, 0, 0, 579, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 577, 0, 0, 0, 0, 578, 0, + 0, 0, 0, 578, 577, 578, 578, 578, 578, 578, + 578, 578, 578, 578, 578, 578, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 578, 0, 578, + 0, 578, 577, 578, 578, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 330, 578, + 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, + 578, 0, 0, 0, 0, 0, 579, 0, 0, 0, + 0, 579, 578, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 330, 0, 0, 0, 578, 0, + 0, 0, 0, 0, 0, 579, 0, 579, 0, 579, + 736, 579, 579, 579, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 579, 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, 330, 0, 0, 0, 0, 0, 330, + 0, 0, 0, 0, 0, 330, 579, 330, 0, 330, + 0, 736, 330, 0, 330, 330, 0, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 0, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 0, 0, 55, 0, 330, 0, 330, 0, 0, 330, + 56, 24, 57, 25, 0, 330, 26, 58, 0, 59, + 60, 27, 61, 62, 63, 28, 0, 0, 0, 0, + 0, 64, 0, 65, 30, 66, 67, 68, 69, 0, + 0, 32, 0, 0, 0, 70, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 73, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 75, 76, 77, 78, 79, 80, 39, 40, 81, 82, + 41, 83, 0, 84, 0, 0, 85, 86, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, + 0, 0, 96, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 579, 0, 0, 0, 0, 0, 0, 331, 0, - 0, 0, 0, 0, 331, 0, 0, 579, 0, 0, - 331, 0, 331, 0, 331, 0, 737, 331, 0, 331, - 331, 0, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 0, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 0, 0, 56, 0, 331, - 0, 331, 0, 0, 331, 57, 25, 58, 26, 0, - 331, 27, 59, 0, 60, 61, 28, 62, 63, 64, - 29, 0, 0, 0, 0, 0, 65, 0, 66, 31, - 67, 68, 69, 70, 0, 0, 33, 0, 0, 0, - 71, 34, 0, 72, 73, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 74, 0, 37, 0, 38, - 75, 0, 0, 39, 0, 76, 77, 78, 79, 80, - 81, 40, 41, 82, 83, 42, 84, 0, 85, 0, - 0, 86, 87, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, + 0, 0, 0, 105, 106, 107, 108, 56, 24, 57, + 25, 0, 0, 26, 58, 0, 59, 60, 27, 61, + 62, 63, 28, 0, 0, 0, 0, 0, 64, 0, + 65, 30, 66, 67, 68, 69, 0, 0, 32, 0, + 0, 0, 70, 33, 0, 71, 72, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 36, + 0, 37, 74, 0, 0, 38, 0, 75, 76, 77, + 78, 79, 80, 39, 40, 81, 82, 41, 83, 0, + 84, 0, 0, 85, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 0, 0, 0, 95, 0, - 0, 0, 96, 0, 0, 0, 0, 97, 98, 99, - 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, + 94, 0, 0, 0, 95, 0, 0, 0, 0, 96, + 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, + 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 267, 0, 0, 0, 106, 107, - 108, 109, 57, 25, 58, 26, 0, 0, 27, 59, - 0, 60, 61, 28, 62, 63, 64, 29, 0, 0, - 0, 0, 0, 65, 0, 66, 31, 67, 68, 69, - 70, 0, 0, 33, 0, 0, 0, 71, 34, 0, - 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 74, 0, 37, 0, 38, 75, 0, 0, - 39, 0, 76, 77, 78, 79, 80, 81, 40, 41, - 82, 83, 42, 84, 0, 85, 0, 0, 86, 87, - 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 0, 0, 0, 95, 0, 0, 0, 96, - 0, 0, 0, 0, 97, 98, 99, 100, 101, 0, - 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, - 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 550, 0, 0, 0, + 105, 106, 107, 108, 56, 24, 57, 25, 0, 0, + 26, 58, 0, 59, 60, 27, 61, 62, 63, 28, + 0, 0, 0, 0, 0, 64, 0, 65, 30, 66, + 67, 68, 69, 0, 0, 32, 0, 0, 0, 70, + 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 73, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 75, 76, 77, 78, 79, 80, + 39, 40, 81, 82, 41, 83, 0, 84, 0, 0, + 85, 86, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 91, 92, 93, 0, 0, 0, 94, 0, 0, + 0, 95, 0, 0, 0, 0, 96, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 551, 0, 0, 0, 106, 107, 108, 109, 57, - 25, 58, 26, 0, 0, 27, 59, 0, 60, 61, - 28, 62, 63, 64, 29, 0, 0, 0, 0, 0, - 65, 0, 66, 31, 67, 68, 69, 70, 0, 0, - 33, 0, 0, 0, 71, 34, 0, 72, 73, 35, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, - 0, 37, 0, 38, 75, 0, 0, 39, 0, 76, - 77, 78, 79, 80, 81, 40, 41, 82, 83, 42, - 84, 0, 85, 0, 0, 86, 87, 0, 0, 88, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, - 0, 97, 98, 99, 100, 101, 0, 0, 0, 102, - 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 933, 0, 0, 0, 105, 551, 107, + 108, 933, 933, 933, 933, 0, 0, 933, 933, 0, + 933, 933, 933, 933, 933, 933, 933, 0, 0, 0, + 0, 0, 933, 0, 933, 933, 933, 933, 933, 933, + 0, 0, 933, 0, 0, 0, 933, 933, 0, 933, + 933, 933, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 933, 0, 933, 0, 933, 933, 0, 0, 933, + 0, 933, 933, 933, 933, 933, 933, 933, 933, 933, + 933, 933, 933, 0, 933, 0, 0, 933, 933, 0, + 0, 933, 933, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 933, 933, 933, 933, + 933, 0, 0, 0, 933, 0, 0, 0, 933, 0, + 0, 0, 0, 933, 933, 933, 933, 933, 0, 0, + 0, 933, 0, 933, 0, 0, 0, 0, 0, 933, + 933, 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, 929, 0, - 0, 0, 106, 552, 108, 109, 929, 929, 929, 929, - 0, 0, 929, 929, 0, 929, 929, 929, 929, 929, - 929, 929, 0, 0, 0, 0, 0, 929, 0, 929, - 929, 929, 929, 929, 929, 0, 0, 929, 0, 0, - 0, 929, 929, 0, 929, 929, 929, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 929, 0, 929, 0, - 929, 929, 0, 0, 929, 0, 929, 929, 929, 929, - 929, 929, 929, 929, 929, 929, 929, 929, 0, 929, - 0, 0, 929, 929, 0, 0, 929, 929, 0, 0, + 784, 0, 0, 0, 933, 933, 933, 933, 784, 784, + 784, 784, 0, 0, 784, 784, 0, 784, 784, 784, + 784, 784, 784, 784, 0, 0, 0, 0, 0, 784, + 0, 784, 784, 784, 784, 784, 784, 0, 0, 784, + 0, 0, 0, 784, 784, 0, 784, 784, 784, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, + 784, 0, 784, 784, 0, 0, 784, 0, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 0, 784, 0, 0, 784, 784, 0, 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 929, 929, 929, 929, 929, 0, 0, 0, 929, - 0, 0, 0, 929, 0, 0, 0, 0, 929, 929, - 929, 929, 929, 0, 0, 0, 929, 0, 929, 0, - 0, 0, 0, 0, 929, 929, 0, 0, 0, 0, + 0, 0, 0, 784, 784, 784, 784, 784, 0, 0, + 0, 784, 0, 0, 0, 784, 0, 0, 0, 0, + 784, 784, 784, 784, 784, 0, 0, 0, 784, 0, + 784, 0, 0, 0, 0, 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 784, 0, 0, 0, 929, - 929, 929, 929, 784, 784, 784, 784, 0, 0, 784, - 784, 0, 784, 784, 784, 784, 784, 784, 784, 0, - 0, 0, 0, 0, 784, 0, 784, 784, 784, 784, - 784, 784, 0, 0, 784, 0, 0, 0, 784, 784, - 0, 784, 784, 784, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 784, 0, 784, 0, 784, 784, 0, - 0, 784, 0, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 784, 0, 784, 0, 0, 784, - 784, 0, 0, 784, 784, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 784, 784, - 784, 784, 784, 0, 0, 0, 784, 0, 0, 0, - 784, 0, 0, 0, 0, 784, 784, 784, 784, 784, - 0, 0, 0, 784, 0, 784, 0, 0, 0, 0, - 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 732, 0, 0, + 0, 784, 784, 784, 784, 56, 24, 0, 25, 0, + 0, 26, 254, 0, 1156, 0, 27, 61, 62, 0, + 28, 0, 0, 24, 0, 25, 64, 0, 26, 30, + 0, 0, 0, 27, 0, 0, 32, 28, 0, 0, + 0, 33, 0, 71, 72, 34, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 36, 33, 37, + 74, 0, 34, 38, 0, 0, 76, 0, 78, 0, + 80, 39, 40, 255, 36, 41, 37, 0, 0, 0, + 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, + 0, 0, 41, 0, 0, 320, 0, 0, 0, 0, + 89, 90, 91, 92, 301, 0, 0, 0, 512, 733, + 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, + 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, + 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 733, 0, 0, 0, 784, 784, 784, 784, - 57, 25, 0, 26, 0, 0, 27, 255, 0, 1034, - 0, 28, 62, 63, 0, 29, 0, 0, 25, 0, - 26, 65, 0, 27, 31, 0, 0, 0, 28, 0, - 0, 33, 29, 0, 0, 0, 34, 0, 72, 73, - 35, 31, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 37, 34, 38, 75, 0, 35, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 37, - 42, 38, 0, 0, 0, 39, 0, 87, 0, 0, - 88, 89, 0, 40, 41, 0, 0, 42, 0, 0, - 321, 0, 0, 0, 0, 90, 91, 92, 93, 302, - 0, 0, 0, 513, 734, 0, 0, 96, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, - 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, + 0, 0, 0, 0, 919, 0, 0, 0, 105, 302, + 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, + 0, 0, 0, 27, 61, 62, 353, 28, 0, 0, + 171, 0, 171, 64, 0, 171, 30, 0, 0, 0, + 171, 0, 0, 32, 171, 0, 0, 0, 33, 0, + 71, 72, 34, 171, 0, 0, 0, 0, 0, 0, + 171, 0, 0, 0, 36, 171, 37, 74, 920, 171, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 255, 171, 41, 171, 0, 0, 0, 171, 0, 86, + 0, 0, 87, 88, 0, 171, 171, 0, 0, 171, + 0, 0, 171, 0, 0, 0, 0, 89, 90, 91, + 92, 301, 0, 0, 0, 512, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 0, 0, 957, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, + 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 302, 107, 108, 64, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 171, 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 918, - 0, 0, 0, 106, 303, 108, 109, 57, 25, 0, - 26, 0, 0, 27, 255, 0, 1156, 0, 28, 62, - 63, 354, 29, 0, 0, 25, 0, 26, 65, 0, - 27, 31, 0, 0, 0, 28, 0, 0, 33, 29, - 0, 0, 0, 34, 0, 72, 73, 35, 31, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, - 34, 38, 75, 919, 35, 39, 0, 0, 77, 0, - 79, 0, 81, 40, 41, 256, 37, 42, 38, 0, - 0, 0, 39, 0, 87, 0, 0, 88, 89, 0, - 40, 41, 0, 0, 42, 0, 0, 321, 0, 0, - 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, - 513, 0, 0, 0, 96, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, - 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, - 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, - 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, - 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 354, 34, - 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, - 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, - 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 302, 0, 0, 0, 720, 988, 0, 0, - 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, - 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, + 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, + 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 733, 0, 106, 721, 108, 109, - 0, 0, 57, 25, 0, 26, 0, 722, 27, 255, - 0, 0, 0, 28, 62, 63, 0, 29, 0, 0, - 172, 0, 172, 65, 0, 172, 31, 0, 0, 0, - 172, 0, 0, 33, 172, 0, 0, 0, 34, 0, - 72, 73, 35, 172, 0, 0, 0, 0, 0, 0, - 172, 0, 0, 0, 37, 172, 38, 75, 919, 172, - 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, - 256, 172, 42, 172, 0, 0, 0, 172, 0, 87, - 0, 0, 88, 89, 0, 172, 172, 0, 0, 172, - 0, 0, 172, 0, 0, 0, 0, 90, 91, 92, - 93, 302, 0, 0, 0, 513, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, - 0, 0, 102, 0, 103, 0, 0, 953, 0, 0, - 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 91, 92, 301, 0, 0, + 0, 719, 988, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 701, 0, 0, 0, 106, 303, 108, 109, 57, - 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, - 28, 62, 63, 172, 29, 0, 0, 172, 0, 172, - 65, 0, 172, 31, 0, 0, 0, 172, 0, 0, - 33, 172, 0, 0, 0, 34, 0, 72, 73, 35, - 172, 0, 0, 0, 0, 0, 0, 172, 0, 0, - 0, 37, 172, 38, 75, 0, 172, 39, 0, 0, - 77, 0, 79, 0, 81, 40, 41, 256, 172, 42, - 172, 0, 85, 0, 172, 0, 87, 0, 0, 88, - 89, 0, 172, 172, 0, 0, 172, 0, 0, 172, - 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, - 0, 103, 953, 0, 0, 0, 0, 104, 105, 0, - 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, - 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, - 29, 0, 106, 303, 108, 109, 65, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 172, 34, 0, 72, 73, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, - 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, - 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, - 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 732, + 0, 105, 720, 107, 108, 0, 0, 56, 24, 0, + 25, 0, 721, 26, 254, 0, 0, 0, 27, 61, + 62, 0, 28, 0, 0, 171, 0, 171, 64, 0, + 171, 30, 0, 0, 0, 171, 0, 0, 32, 171, + 0, 0, 0, 33, 0, 71, 72, 34, 171, 0, + 0, 0, 0, 0, 0, 171, 0, 0, 0, 36, + 171, 37, 74, 920, 171, 38, 0, 0, 76, 0, + 78, 0, 80, 39, 40, 255, 171, 41, 171, 0, + 0, 0, 171, 0, 86, 0, 0, 87, 88, 0, + 171, 171, 0, 0, 171, 0, 0, 171, 0, 0, + 0, 0, 89, 90, 91, 92, 301, 0, 0, 0, + 512, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, + 957, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 302, 0, 0, 0, 720, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 700, 0, 0, 0, + 105, 302, 107, 108, 56, 24, 0, 25, 0, 0, + 26, 254, 0, 0, 0, 27, 61, 62, 171, 28, + 0, 0, 24, 0, 25, 64, 0, 26, 30, 0, + 0, 0, 27, 0, 0, 32, 28, 0, 0, 0, + 33, 0, 71, 72, 34, 30, 0, 0, 0, 0, + 0, 0, 32, 0, 0, 0, 36, 33, 37, 74, + 0, 34, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 255, 36, 41, 37, 0, 84, 0, 38, + 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, + 0, 41, 0, 0, 320, 0, 0, 0, 0, 89, + 90, 91, 92, 301, 0, 0, 0, 0, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 302, 107, + 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 353, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, + 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 301, + 0, 0, 0, 719, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 733, 0, 106, 721, - 108, 109, 0, 0, 57, 25, 0, 26, 0, 722, - 27, 255, 0, 0, 0, 28, 62, 63, 0, 29, - 0, 0, 25, 0, 26, 65, 0, 27, 31, 0, - 0, 0, 28, 0, 0, 33, 29, 0, 0, 0, - 34, 0, 72, 73, 35, 31, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 37, 34, 38, 75, - 0, 35, 39, 0, 0, 77, 0, 79, 0, 81, - 40, 41, 256, 37, 42, 38, 0, 0, 0, 39, - 0, 87, 0, 0, 88, 89, 0, 40, 41, 0, - 0, 42, 0, 0, 321, 0, 0, 0, 0, 90, - 91, 92, 93, 302, 0, 0, 0, 513, 0, 0, - 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, - 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, - 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 586, 0, 0, 0, 106, 303, 108, - 109, 57, 25, 0, 26, 0, 0, 27, 255, 0, - 0, 0, 28, 62, 63, 354, 29, 0, 0, 25, - 0, 26, 65, 0, 27, 31, 0, 0, 0, 28, - 0, 0, 33, 29, 0, 0, 0, 34, 0, 72, - 73, 35, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 37, 34, 38, 75, 0, 35, 39, - 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, - 37, 42, 38, 0, 0, 0, 39, 0, 87, 0, - 0, 88, 89, 0, 40, 41, 0, 0, 42, 0, - 0, 515, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, - 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 732, 0, 105, 720, 107, 108, 0, 0, 56, + 24, 0, 25, 0, 721, 26, 254, 0, 0, 0, + 27, 61, 62, 0, 28, 0, 0, 24, 0, 25, + 64, 0, 26, 30, 0, 0, 0, 27, 0, 0, + 32, 28, 0, 0, 0, 33, 0, 71, 72, 34, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 36, 33, 37, 74, 0, 34, 38, 0, 0, + 76, 0, 78, 0, 80, 39, 40, 255, 36, 41, + 37, 0, 0, 0, 38, 0, 86, 0, 0, 87, + 88, 0, 39, 40, 0, 0, 41, 0, 0, 514, + 0, 0, 0, 0, 89, 90, 91, 92, 301, 0, + 0, 0, 512, 0, 0, 0, 95, 0, 0, 0, + 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, + 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 906, 0, 0, 0, 106, 107, 108, 109, 57, 25, - 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, - 62, 63, 354, 29, 0, 0, 25, 0, 26, 65, - 0, 27, 31, 0, 0, 0, 28, 0, 0, 33, - 29, 0, 0, 0, 34, 0, 72, 73, 35, 31, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 37, 34, 38, 75, 0, 35, 39, 0, 0, 77, - 0, 79, 0, 81, 40, 41, 256, 37, 42, 38, - 0, 0, 0, 39, 0, 87, 0, 0, 88, 89, - 0, 40, 41, 0, 0, 42, 0, 0, 568, 0, - 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, - 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, - 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 585, 0, + 0, 0, 105, 302, 107, 108, 56, 24, 0, 25, + 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, + 353, 28, 0, 0, 24, 0, 25, 64, 0, 26, + 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, + 0, 0, 33, 0, 71, 72, 34, 30, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 36, 33, + 37, 74, 0, 34, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 255, 36, 41, 37, 0, 0, + 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, + 40, 0, 0, 41, 0, 0, 567, 0, 0, 0, + 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 604, 0, 0, - 0, 106, 303, 108, 109, 604, 604, 0, 604, 0, - 0, 604, 604, 0, 0, 0, 604, 604, 604, 354, - 604, 0, 0, 25, 0, 26, 604, 0, 27, 604, - 0, 0, 0, 28, 0, 0, 604, 29, 0, 0, - 0, 604, 0, 604, 604, 604, 31, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 604, 34, 604, - 604, 0, 35, 604, 0, 0, 604, 0, 604, 0, - 604, 604, 604, 604, 37, 604, 38, 0, 0, 0, - 39, 0, 604, 0, 0, 604, 604, 0, 40, 41, - 0, 0, 42, 0, 0, 747, 0, 0, 0, 0, - 604, 604, 604, 604, 604, 0, 0, 0, 0, 0, - 0, 0, 604, 0, 0, 0, 0, 0, 604, 604, - 604, 604, 0, 0, 0, 604, 0, 604, 0, 0, - 0, 0, 0, 604, 604, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 907, 0, 0, 0, 105, + 106, 107, 108, 56, 24, 0, 25, 0, 0, 26, + 254, 0, 0, 0, 27, 61, 62, 353, 28, 0, + 0, 24, 0, 25, 64, 0, 26, 30, 0, 0, + 0, 27, 0, 0, 32, 28, 0, 0, 0, 33, + 0, 71, 72, 34, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 36, 33, 37, 74, 0, + 34, 38, 0, 0, 76, 0, 78, 0, 80, 39, + 40, 255, 36, 41, 37, 0, 0, 0, 38, 0, + 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, + 41, 0, 0, 747, 0, 0, 0, 0, 89, 90, + 91, 92, 301, 0, 0, 0, 0, 0, 0, 0, + 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, + 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, + 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 496, 0, 0, 0, 604, 604, - 604, 604, 57, 25, 0, 26, 0, 0, 27, 255, - 0, 0, 0, 28, 62, 63, 354, 29, 0, 0, - 0, 0, 0, 65, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 33, 0, 450, 0, 331, 34, 0, - 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 38, 75, 451, 0, - 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, - 256, 452, 42, 331, 0, 0, 454, 0, 0, 0, - 0, 455, 0, 456, 457, 458, 459, 0, 0, 0, - 0, 460, 0, 0, 0, 461, 0, 90, 91, 92, - 257, 0, 0, 0, 0, 0, 0, 462, 0, 96, - 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 0, 105, 302, 107, 108, + 603, 603, 0, 603, 0, 0, 603, 603, 0, 0, + 0, 603, 603, 603, 353, 603, 0, 0, 484, 0, + 484, 603, 0, 484, 603, 0, 0, 0, 484, 0, + 0, 603, 484, 0, 0, 0, 603, 0, 603, 603, + 603, 484, 0, 0, 0, 0, 0, 0, 484, 0, + 0, 0, 603, 484, 603, 603, 0, 484, 603, 0, + 0, 603, 0, 603, 0, 603, 603, 603, 603, 484, + 603, 484, 0, 0, 0, 484, 0, 603, 0, 0, + 603, 603, 0, 484, 484, 0, 0, 484, 0, 0, + 484, 0, 0, 0, 0, 603, 603, 603, 603, 603, + 0, 0, 0, 0, 0, 0, 0, 603, 0, 0, + 0, 0, 0, 603, 603, 603, 603, 0, 0, 0, + 603, 0, 603, 0, 0, 0, 0, 0, 603, 603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 465, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 331, 331, 331, 331, - 737, 0, 0, 331, 331, 106, 497, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 0, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, - 48, 0, 1314, 0, 48, 331, 48, 0, 331, 48, - 0, 48, 48, 0, 48, 0, 48, 0, 48, 0, - 48, 48, 48, 48, 0, 0, 48, 48, 0, 0, - 0, 0, 48, 0, 48, 48, 48, 0, 0, 48, - 0, 48, 0, 48, 0, 0, 48, 0, 48, 48, - 48, 48, 0, 0, 0, 48, 48, 48, 0, 0, - 48, 48, 48, 0, 0, 0, 0, 0, 0, 48, - 48, 0, 48, 48, 0, 48, 48, 48, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, - 0, 48, 0, 48, 0, 48, 0, 81, 48, 0, - 48, 48, 0, 48, 0, 48, 48, 48, 0, 48, - 48, 48, 48, 0, 0, 48, 48, 0, 0, 0, - 0, 48, 0, 48, 48, 48, 0, 0, 48, 0, - 48, 0, 48, 0, 0, 48, 0, 48, 48, 48, - 48, 0, 0, 0, 48, 48, 48, 48, 0, 48, - 48, 48, 0, 0, 0, 0, 0, 0, 48, 48, - 0, 48, 48, 0, 48, 48, 48, 0, 0, 0, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, - 48, 0, 48, 0, 48, 0, 82, 48, 0, 48, - 48, 0, 48, 0, 48, 48, 48, 0, 48, 48, - 48, 48, 0, 0, 48, 48, 0, 0, 0, 0, - 48, 0, 48, 48, 48, 0, 0, 48, 0, 48, - 0, 48, 0, 0, 48, 0, 48, 48, 48, 48, - 0, 0, 0, 48, 48, 48, 48, 0, 48, 48, - 48, 0, 0, 0, 0, 0, 0, 48, 48, 0, - 48, 48, 0, 48, 48, 48, 0, 0, 0, 48, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 495, + 0, 0, 0, 603, 603, 603, 603, 56, 24, 0, + 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, + 62, 484, 28, 0, 0, 0, 0, 0, 64, 0, + 0, 30, 0, 0, 0, 27, 0, 0, 32, 0, + 0, 0, 330, 33, 0, 71, 72, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 36, + 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, + 78, 27, 80, 39, 40, 255, 27, 41, 330, 0, + 0, 27, 0, 27, 27, 27, 27, 0, 0, 27, + 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, + 0, 0, 89, 90, 91, 256, 0, 27, 0, 0, + 27, 0, 27, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 0, 0, 48, 0, 48, 48, - 0, 48, 0, 48, 48, 212, 48, 0, 48, 0, - 48, 0, 48, 48, 48, 48, 0, 0, 48, 48, - 0, 0, 0, 0, 48, 0, 48, 48, 48, 0, - 0, 48, 0, 48, 331, 48, 0, 0, 48, 0, - 48, 48, 48, 48, 0, 0, 0, 48, 48, 48, - 0, 0, 48, 48, 48, 48, 0, 331, 0, 0, - 0, 48, 48, 0, 48, 48, 28, 48, 48, 48, - 331, 0, 0, 48, 0, 331, 0, 0, 331, 0, - 331, 0, 331, 331, 331, 331, 0, 0, 0, 28, - 331, 0, 0, 48, 331, 0, 0, 0, 331, 213, - 0, 0, 28, 0, 352, 0, 331, 28, 0, 331, - 0, 331, 28, 0, 28, 28, 28, 28, 0, 0, - 28, 0, 28, 0, 0, 0, 28, 352, 0, 0, - 331, 0, 0, 0, 450, 331, 0, 0, 28, 0, - 352, 28, 331, 28, 263, 352, 331, 0, 229, 48, - 352, 0, 352, 352, 352, 352, 0, 451, 0, 331, - 352, 0, 0, 0, 352, 0, 0, 28, 352, 0, - 452, 0, 0, 28, 28, 454, 352, 0, 0, 352, - 455, 352, 456, 457, 458, 459, 0, 0, 0, 0, - 460, 331, 0, 0, 461, 0, 0, 0, 1299, 0, - 0, 57, 25, 0, 26, 352, 462, 27, 255, 463, - 0, 464, 28, 62, 63, 0, 29, 0, 0, 0, - 0, 0, 65, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 465, 0, 34, 0, 72, - 73, 35, 0, 588, 0, 0, 0, 0, 0, 0, - 589, 0, 0, 37, 0, 38, 75, 0, 0, 39, - 0, 352, 77, 0, 79, 0, 81, 40, 41, 256, - 0, 42, 0, 0, 0, 0, 0, 0, 590, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, - 0, 1300, 0, 0, 0, 0, 90, 91, 92, 93, - 94, 0, 0, 0, 0, 0, 0, 0, 96, 913, - 0, 591, 0, 0, 98, 99, 100, 101, 0, 0, - 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, - 105, 0, 0, 0, 0, 0, 0, 57, 25, 0, - 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, - 63, 0, 29, 0, 106, 107, 108, 109, 65, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 34, 0, 72, 73, 35, 0, 588, - 0, 0, 0, 0, 0, 0, 589, 0, 0, 37, - 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, - 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, - 0, 0, 0, 0, 590, 0, 0, 88, 89, 0, + 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 0, 0, 27, 27, 0, 0, 0, 0, 0, 0, + 0, 330, 330, 330, 330, 736, 0, 0, 330, 330, + 105, 496, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 0, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 0, 47, 0, 0, 0, 47, + 330, 47, 0, 330, 47, 0, 47, 47, 0, 47, + 0, 47, 0, 47, 0, 47, 47, 47, 47, 0, + 0, 47, 47, 0, 0, 0, 0, 47, 0, 47, + 47, 47, 0, 0, 47, 0, 47, 0, 47, 0, + 0, 47, 0, 47, 47, 47, 47, 0, 0, 0, + 47, 47, 47, 0, 0, 47, 47, 47, 0, 0, + 0, 0, 0, 0, 47, 47, 0, 47, 47, 0, + 47, 47, 47, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 94, 0, 0, 0, - 0, 0, 0, 0, 96, 0, 0, 591, 0, 0, - 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, - 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, - 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, - 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, - 106, 107, 108, 109, 65, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, - 0, 72, 73, 35, 0, 588, 0, 0, 0, 0, - 0, 0, 589, 0, 0, 37, 0, 38, 75, 0, - 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, - 590, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 94, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, - 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, - 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, - 28, 62, 63, 0, 29, 0, 106, 107, 108, 109, - 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, + 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, + 47, 0, 80, 47, 0, 47, 47, 0, 47, 0, + 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, + 47, 47, 0, 0, 0, 0, 47, 0, 47, 47, + 47, 0, 0, 47, 0, 47, 0, 47, 0, 0, + 47, 0, 47, 47, 47, 47, 0, 0, 0, 47, + 47, 47, 47, 0, 47, 47, 47, 0, 0, 0, + 0, 0, 0, 47, 47, 0, 47, 47, 0, 47, + 47, 47, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, - 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, - 0, 0, 85, 0, 0, 0, 87, 0, 0, 88, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, - 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, - 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, - 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, - 29, 0, 106, 303, 108, 109, 65, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, - 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, - 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, - 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, + 0, 0, 0, 47, 0, 47, 0, 47, 0, 47, + 0, 81, 47, 0, 47, 47, 0, 47, 0, 47, + 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, + 47, 0, 0, 0, 0, 47, 0, 47, 47, 47, + 0, 0, 47, 0, 47, 0, 47, 0, 0, 47, + 0, 47, 47, 47, 47, 0, 0, 0, 47, 47, + 47, 47, 0, 47, 47, 47, 0, 0, 0, 0, + 0, 0, 47, 47, 0, 47, 47, 0, 47, 47, + 47, 0, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, + 0, 47, 0, 47, 47, 0, 47, 0, 47, 47, + 211, 47, 0, 47, 0, 47, 0, 47, 47, 47, + 47, 0, 0, 47, 47, 0, 0, 0, 0, 47, + 0, 47, 47, 47, 0, 0, 47, 0, 47, 330, + 47, 0, 0, 47, 0, 47, 47, 47, 47, 0, + 0, 0, 47, 47, 47, 0, 0, 47, 47, 47, + 47, 0, 330, 0, 0, 0, 47, 47, 0, 47, + 47, 0, 47, 47, 47, 330, 0, 0, 47, 0, + 330, 0, 0, 330, 0, 330, 0, 330, 330, 330, + 330, 0, 0, 0, 0, 330, 0, 0, 47, 330, + 0, 0, 0, 330, 212, 0, 0, 449, 0, 0, + 0, 330, 0, 0, 330, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 302, 0, 0, 0, 0, 870, - 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, - 0, 57, 25, 0, 26, 0, 0, 27, 255, 0, - 0, 0, 28, 62, 63, 0, 29, 0, 106, 303, - 108, 109, 65, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 34, 0, 72, - 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 38, 75, 0, 0, 39, - 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, - 0, 42, 0, 0, 0, 0, 0, 0, 87, 0, - 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, - 302, 0, 0, 0, 513, 0, 0, 0, 96, 0, - 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, - 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, - 105, 0, 0, 0, 0, 0, 0, 57, 25, 0, - 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, - 63, 0, 29, 0, 106, 303, 108, 109, 65, 0, - 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, - 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, - 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, - 0, 0, 0, 0, 87, 0, 0, 88, 89, 0, + 450, 0, 0, 0, 0, 330, 0, 0, 0, 0, + 330, 0, 0, 451, 0, 0, 0, 330, 453, 262, + 0, 330, 0, 454, 47, 455, 456, 457, 458, 0, + 0, 0, 0, 459, 330, 0, 0, 460, 0, 0, + 0, 1299, 0, 0, 56, 24, 0, 25, 0, 461, + 26, 254, 462, 0, 463, 27, 61, 62, 0, 28, + 0, 0, 0, 0, 0, 64, 330, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 464, 0, + 33, 0, 71, 72, 34, 0, 587, 0, 0, 0, + 0, 0, 0, 588, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, + 0, 589, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 1300, 0, 0, 0, 0, 89, + 90, 91, 92, 93, 0, 0, 0, 0, 0, 0, + 0, 95, 914, 0, 590, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 106, 107, + 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, + 34, 0, 587, 0, 0, 0, 0, 0, 0, 588, + 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, + 41, 0, 0, 0, 0, 0, 0, 589, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 590, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 105, 106, 107, 108, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 33, 0, 71, 72, 34, 0, 587, 0, + 0, 0, 0, 0, 0, 588, 0, 0, 36, 0, + 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, + 0, 0, 0, 589, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, - 507, 0, 0, 0, 96, 0, 0, 0, 0, 0, - 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, - 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, - 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, - 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, - 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, - 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, - 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, - 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, - 92, 93, 302, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, - 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, - 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, - 28, 62, 63, 0, 29, 0, 106, 303, 108, 109, - 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, + 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 56, 24, 0, 25, 0, 0, 26, 254, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, + 106, 107, 108, 64, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, + 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 255, 0, 41, 0, 0, 84, 0, 0, 0, 86, + 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, + 92, 301, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, + 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 302, 107, 108, 64, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, - 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, - 0, 0, 0, 0, 0, 0, 87, 0, 0, 88, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, - 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, - 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, - 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, - 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, - 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, - 29, 0, 106, 107, 108, 109, 65, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, - 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, - 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, - 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, + 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, + 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, - 0, 78, 78, 0, 78, 0, 0, 78, 78, 0, - 0, 0, 78, 78, 78, 0, 78, 0, 106, 1026, - 108, 109, 78, 0, 0, 78, 0, 0, 0, 0, - 0, 0, 78, 0, 0, 0, 0, 78, 0, 78, - 78, 78, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 0, 78, 78, 0, 0, 78, - 0, 0, 78, 0, 78, 0, 78, 78, 78, 78, - 0, 78, 0, 0, 0, 0, 0, 0, 78, 0, - 0, 78, 78, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 78, 78, 78, 78, - 78, 0, 0, 0, 0, 0, 0, 0, 78, 0, - 0, 0, 0, 0, 78, 78, 78, 78, 0, 0, - 0, 78, 0, 78, 0, 0, 0, 0, 0, 78, - 78, 0, 0, 0, 0, 0, 0, 135, 135, 0, - 135, 0, 0, 135, 135, 0, 0, 0, 135, 135, - 135, 0, 135, 0, 78, 78, 78, 78, 135, 0, - 0, 135, 0, 0, 0, 0, 0, 0, 135, 0, - 0, 0, 0, 135, 0, 135, 135, 135, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, - 0, 135, 135, 0, 0, 135, 0, 0, 135, 0, - 135, 0, 135, 135, 135, 135, 0, 135, 0, 0, - 0, 0, 0, 0, 135, 0, 0, 135, 135, 0, + 0, 0, 0, 89, 90, 91, 92, 301, 0, 0, + 0, 0, 871, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, + 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, + 0, 105, 302, 107, 108, 64, 0, 0, 30, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, + 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, + 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, + 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 91, 92, 301, 0, 0, 0, 512, 0, 0, + 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, + 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, + 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, + 0, 27, 61, 62, 0, 28, 0, 105, 302, 107, + 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, + 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, + 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, + 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 90, 91, 92, 301, + 0, 0, 0, 506, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, + 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 105, 302, 107, 108, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 33, 0, 71, 72, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, + 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 135, 135, 135, 135, 0, 0, 0, - 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, - 135, 135, 135, 135, 0, 0, 0, 135, 0, 135, - 0, 0, 0, 0, 0, 135, 135, 0, 0, 0, - 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, - 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, - 135, 135, 135, 135, 65, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 33, 0, 28, 0, 28, 34, - 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 37, 0, 38, 75, 28, - 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 28, 42, 0, 0, 0, 28, 0, 0, - 0, 0, 28, 0, 28, 28, 28, 28, 0, 0, - 0, 0, 28, 0, 0, 0, 28, 0, 90, 91, - 92, 257, 302, 0, 0, 0, 0, 0, 28, 0, - 96, 28, 0, 28, 0, 0, 98, 99, 100, 101, - 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, - 0, 104, 105, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 28, 28, 0, 0, 0, 0, 0, - 0, 637, 0, 637, 0, 637, 106, 258, 637, 109, - 637, 637, 0, 637, 0, 637, 0, 637, 0, 637, - 637, 637, 0, 0, 0, 637, 637, 0, 0, 0, - 0, 637, 0, 637, 637, 0, 0, 0, 637, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 637, 637, 0, 637, 0, 0, 0, - 637, 637, 0, 0, 0, 0, 0, 0, 637, 637, - 57, 25, 637, 26, 0, 637, 27, 255, 0, 0, - 637, 28, 62, 63, 0, 29, 0, 0, 0, 0, - 0, 65, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 33, 637, 637, 0, 0, 34, 0, 72, 73, - 35, 0, 0, 0, 0, 637, 0, 0, 0, 0, - 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, - 42, 0, 0, 85, 0, 0, 0, 0, 0, 0, - 25, 0, 26, 0, 0, 27, 637, 0, 0, 0, - 28, 0, 0, 0, 29, 90, 91, 92, 257, 0, - 0, 0, 0, 31, 636, 0, 636, 96, 0, 636, - 33, 636, 636, 0, 636, 34, 636, 0, 636, 35, - 636, 636, 636, 0, 0, 0, 636, 636, 0, 0, - 0, 37, 636, 38, 636, 636, 0, 39, 0, 636, - 0, 0, 0, 636, 0, 40, 41, 0, 0, 42, - 0, 0, 321, 106, 258, 636, 0, 636, 0, 0, - 0, 636, 636, 0, 0, 0, 0, 0, 0, 636, - 636, 0, 636, 636, 636, 0, 636, 636, 292, 636, - 636, 636, 636, 0, 636, 0, 636, 0, 636, 636, - 636, 0, 0, 0, 636, 636, 0, 0, 0, 0, - 636, 0, 636, 636, 0, 0, 0, 636, 0, 0, - 0, 636, 0, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 636, 0, 636, 0, 0, 0, 636, - 636, 0, 0, 322, 0, 0, 0, 636, 636, 0, - 0, 636, 0, 0, 636, 0, 25, 0, 26, 636, - 0, 27, 0, 0, 1269, 0, 28, 636, 677, 0, - 29, 0, 678, 1270, 1271, 0, 0, 0, 1272, 31, - 0, 0, 0, 0, 1273, 0, 33, 0, 25, 0, - 26, 34, 0, 27, 0, 35, 1269, 0, 28, 0, - 677, 0, 29, 0, 678, 1270, 1271, 37, 0, 38, - 1272, 31, 0, 39, 0, 0, 1273, 0, 33, 0, - 0, 40, 41, 34, 0, 42, 0, 35, 1274, 0, - 0, 0, 48, 1275, 48, 636, 0, 48, 0, 37, - 0, 38, 48, 0, 0, 39, 48, 0, 0, 0, - 0, 0, 0, 40, 41, 48, 0, 42, 0, 0, - 1274, 0, 48, 0, 48, 1275, 48, 48, 1276, 48, - 0, 48, 0, 48, 48, 48, 0, 0, 48, 0, - 48, 0, 0, 48, 0, 48, 0, 48, 0, 48, - 0, 0, 48, 0, 48, 0, 0, 48, 48, 48, - 0, 48, 0, 48, 48, 48, 0, 48, 48, 1277, - 48, 0, 48, 48, 0, 48, 0, 48, 48, 0, - 0, 48, 48, 0, 48, 0, 0, 0, 0, 48, - 48, 48, 0, 48, 0, 0, 48, 0, 48, 153, - 25, 1277, 26, 48, 0, 27, 0, 48, 0, 48, - 28, 48, 0, 0, 29, 0, 48, 0, 0, 48, - 0, 48, 0, 31, 0, 48, 0, 0, 48, 153, - 33, 0, 0, 48, 48, 34, 0, 48, 0, 35, - 48, 565, 0, 0, 0, 48, 0, 0, 566, 0, - 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, - 567, 0, 0, 0, 0, 40, 41, 0, 0, 42, - 0, 25, 568, 26, 0, 0, 27, 48, 0, 0, - 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, - 485, 0, 485, 0, 31, 485, 0, 0, 0, 32, - 485, 33, 0, 0, 485, 0, 34, 0, 0, 0, - 35, 36, 0, 485, 0, 0, 0, 0, 0, 0, - 485, 48, 37, 0, 38, 485, 0, 0, 39, 485, - 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, - 42, 485, 0, 485, 173, 0, 173, 485, 0, 173, - 0, 0, 0, 569, 173, 485, 485, 0, 173, 485, - 0, 172, 485, 172, 0, 0, 172, 173, 0, 0, - 0, 172, 0, 0, 173, 172, 0, 0, 0, 173, - 0, 0, 0, 173, 172, 0, 0, 0, 0, 0, - 0, 172, 0, 0, 0, 173, 172, 173, 0, 0, - 172, 173, 0, 0, 0, 0, 0, 0, 0, 173, - 173, 0, 172, 173, 172, 182, 173, 182, 172, 0, - 182, 0, 0, 0, 43, 182, 172, 172, 0, 182, - 172, 0, 0, 172, 0, 0, 0, 0, 182, 0, - 0, 0, 0, 485, 0, 182, 0, 0, 0, 0, - 182, 0, 0, 35, 182, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 182, 0, 182, 35, - 0, 0, 182, 35, 0, 0, 35, 0, 0, 0, - 182, 182, 0, 0, 182, 0, 0, 182, 35, 35, - 0, 0, 0, 35, 35, 0, 0, 173, 0, 35, - 0, 35, 35, 35, 35, 0, 0, 0, 0, 35, - 0, 0, 0, 35, 172, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 35, 35, 33, - 35, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 33, 0, 0, 0, 33, - 0, 0, 33, 0, 35, 0, 0, 0, 0, 0, - 35, 35, 0, 0, 33, 33, 0, 0, 182, 33, - 33, 0, 48, 0, 0, 33, 0, 33, 33, 33, - 33, 0, 0, 48, 0, 33, 0, 0, 48, 33, - 0, 33, 48, 0, 0, 48, 0, 0, 0, 0, - 0, 33, 0, 0, 33, 0, 33, 48, 48, 0, - 33, 0, 48, 48, 0, 48, 0, 0, 48, 0, - 48, 48, 48, 48, 0, 0, 48, 0, 48, 0, - 33, 48, 48, 0, 48, 48, 33, 33, 48, 0, - 0, 0, 0, 0, 48, 0, 0, 48, 0, 48, - 48, 48, 0, 48, 0, 48, 48, 48, 0, 0, - 0, 48, 0, 48, 48, 48, 48, 0, 0, 0, - 0, 48, 0, 48, 0, 48, 0, 48, 0, 37, - 48, 0, 0, 0, 0, 0, 0, 48, 0, 0, - 48, 0, 48, 48, 0, 48, 48, 48, 48, 0, - 0, 0, 0, 48, 0, 48, 48, 48, 48, 0, - 0, 48, 0, 48, 0, 0, 48, 48, 48, 0, - 0, 0, 38, 0, 0, 0, 0, 0, 0, 48, - 0, 48, 48, 48, 48, 0, 48, 0, 0, 0, - 0, 48, 0, 48, 48, 48, 48, 0, 0, 0, - 0, 48, 0, 0, 0, 48, 48, 0, 48, 0, - 0, 0, 0, 450, 296, 0, 0, 48, 0, 48, - 48, 0, 48, 0, 48, 0, 0, 0, 0, 48, - 0, 48, 48, 48, 48, 0, 451, 0, 0, 48, - 0, 0, 0, 48, 0, 0, 48, 0, 0, 452, - 0, 0, 297, 453, 454, 48, 450, 0, 48, 455, - 48, 456, 457, 458, 459, 0, 0, 0, 0, 460, - 0, 0, 0, 461, 0, 0, 0, 0, 0, 451, - 0, 0, 0, 0, 48, 462, 48, 48, 463, 0, - 464, 0, 452, 0, 0, 0, 0, 454, 0, 0, - 0, 0, 455, 0, 456, 457, 458, 459, 0, 0, - 0, 0, 460, 0, 465, 0, 461, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, - 0, 463, 0, 464, 0, 0, 0, 0, 0, 0, + 0, 89, 90, 91, 92, 301, 0, 0, 0, 0, + 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 0, 0, 56, 24, 0, 25, 0, 0, 26, 254, + 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, + 302, 107, 108, 64, 0, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, + 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, + 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, + 255, 0, 41, 0, 0, 0, 0, 0, 0, 86, + 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, + 92, 93, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, + 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, + 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, + 61, 62, 0, 28, 0, 105, 106, 107, 108, 64, + 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 465, + 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, + 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, + 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, + 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, + 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, + 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 77, 77, 0, 77, 0, 0, + 77, 77, 0, 0, 0, 77, 77, 77, 0, 77, + 0, 105, 1026, 107, 108, 77, 0, 0, 77, 0, + 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, + 77, 0, 77, 77, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, + 0, 0, 77, 0, 0, 77, 0, 77, 0, 77, + 77, 77, 77, 0, 77, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 77, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, + 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, + 0, 77, 0, 0, 0, 0, 0, 77, 77, 77, + 77, 0, 0, 0, 77, 0, 77, 0, 0, 0, + 0, 0, 77, 77, 0, 0, 0, 0, 0, 0, + 134, 134, 0, 134, 0, 0, 134, 134, 0, 0, + 0, 134, 134, 134, 0, 134, 0, 77, 77, 77, + 77, 134, 0, 0, 134, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 0, 0, 134, 0, 134, 134, + 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 134, 0, 134, 134, 0, 0, 134, 0, + 0, 134, 0, 134, 0, 134, 134, 134, 134, 0, + 134, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 134, 134, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 134, 134, 134, 134, + 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, + 0, 0, 0, 134, 134, 134, 134, 0, 0, 0, + 134, 0, 134, 0, 0, 0, 0, 0, 134, 134, + 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, + 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, + 0, 28, 0, 134, 134, 134, 134, 64, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 32, 0, 27, + 0, 27, 33, 0, 71, 72, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, + 37, 74, 27, 0, 38, 0, 0, 76, 0, 78, + 0, 80, 39, 40, 255, 27, 41, 0, 0, 0, + 27, 0, 0, 0, 0, 27, 0, 27, 27, 27, + 27, 0, 0, 0, 0, 27, 0, 0, 0, 27, + 0, 89, 90, 91, 256, 301, 0, 0, 0, 0, + 0, 27, 0, 95, 27, 0, 27, 0, 0, 97, + 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, + 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 27, 27, 0, 0, + 0, 0, 0, 0, 636, 0, 636, 0, 636, 105, + 257, 636, 108, 636, 636, 0, 636, 0, 636, 0, + 636, 0, 636, 636, 636, 0, 0, 0, 636, 636, + 0, 0, 0, 0, 636, 0, 636, 636, 0, 0, + 0, 636, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 636, 636, 0, 636, + 0, 0, 0, 636, 636, 0, 0, 0, 0, 0, + 0, 636, 636, 56, 24, 636, 25, 0, 636, 26, + 254, 0, 0, 636, 27, 61, 62, 0, 28, 0, + 0, 0, 0, 0, 64, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 32, 636, 636, 0, 0, 33, + 0, 71, 72, 34, 0, 0, 0, 0, 636, 0, + 0, 0, 0, 0, 0, 36, 0, 37, 74, 0, + 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, + 40, 255, 0, 41, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 24, 0, 25, 0, 0, 26, 636, + 1209, 0, 0, 27, 0, 0, 0, 28, 89, 90, + 91, 256, 0, 0, 0, 0, 30, 635, 0, 635, + 95, 0, 635, 32, 635, 635, 0, 635, 33, 635, + 1210, 635, 34, 635, 635, 635, 0, 0, 0, 635, + 635, 0, 0, 0, 36, 635, 37, 635, 635, 0, + 38, 1211, 635, 0, 0, 0, 635, 0, 39, 40, + 0, 0, 41, 0, 0, 320, 105, 257, 635, 0, + 635, 0, 0, 0, 635, 635, 0, 0, 0, 0, + 0, 0, 635, 635, 0, 635, 635, 635, 0, 635, + 635, 0, 635, 635, 635, 635, 0, 635, 0, 635, + 0, 635, 635, 635, 0, 0, 0, 635, 635, 0, + 0, 0, 0, 635, 0, 635, 635, 0, 0, 0, + 635, 0, 0, 0, 635, 0, 0, 0, 0, 635, + 0, 0, 0, 0, 0, 0, 635, 0, 635, 0, + 0, 0, 635, 635, 0, 0, 353, 0, 0, 0, + 635, 635, 0, 0, 635, 0, 0, 635, 0, 24, + 0, 25, 635, 0, 26, 0, 0, 1269, 0, 27, + 635, 676, 0, 28, 0, 677, 1270, 1271, 0, 0, + 0, 1272, 30, 0, 0, 0, 0, 1273, 0, 32, + 0, 24, 0, 25, 33, 0, 26, 0, 34, 1269, + 0, 27, 0, 676, 0, 28, 0, 677, 1270, 1271, + 36, 0, 37, 1272, 30, 0, 38, 0, 0, 1273, + 0, 32, 0, 0, 39, 40, 33, 0, 41, 0, + 34, 1274, 0, 0, 0, 47, 1275, 47, 635, 0, + 47, 0, 36, 0, 37, 47, 0, 0, 38, 47, + 0, 0, 0, 0, 0, 0, 39, 40, 47, 0, + 41, 0, 0, 1274, 0, 47, 0, 47, 1275, 47, + 47, 1276, 47, 0, 47, 0, 47, 47, 47, 0, + 0, 47, 0, 47, 0, 0, 47, 0, 47, 0, + 47, 0, 47, 0, 0, 47, 0, 47, 0, 0, + 47, 47, 47, 0, 47, 0, 47, 47, 47, 0, + 47, 47, 1277, 47, 0, 47, 47, 0, 47, 0, + 47, 47, 0, 0, 47, 47, 0, 47, 0, 0, + 0, 0, 47, 47, 47, 0, 47, 0, 0, 47, + 0, 47, 152, 24, 1277, 25, 47, 0, 26, 0, + 47, 0, 47, 27, 47, 0, 0, 28, 0, 47, + 0, 0, 47, 0, 47, 0, 30, 0, 47, 0, + 0, 47, 152, 32, 0, 0, 47, 47, 33, 0, + 47, 0, 34, 47, 564, 0, 0, 0, 47, 0, + 0, 565, 0, 0, 36, 0, 37, 0, 0, 0, + 38, 0, 0, 566, 0, 0, 0, 0, 39, 40, + 0, 0, 41, 0, 24, 567, 25, 0, 0, 26, + 47, 0, 0, 0, 27, 0, 0, 0, 28, 0, + 0, 0, 29, 24, 0, 25, 0, 30, 26, 0, + 0, 0, 31, 27, 32, 0, 0, 28, 0, 33, + 0, 0, 0, 34, 35, 0, 30, 0, 0, 0, + 0, 0, 0, 32, 47, 36, 0, 37, 33, 0, + 0, 38, 34, 0, 0, 0, 0, 0, 0, 39, + 40, 0, 0, 41, 36, 0, 37, 172, 0, 172, + 38, 0, 172, 0, 0, 0, 568, 172, 39, 40, + 0, 172, 41, 0, 171, 320, 171, 0, 0, 171, + 172, 0, 0, 0, 171, 0, 0, 172, 171, 0, + 0, 0, 172, 0, 0, 0, 172, 171, 0, 0, + 0, 291, 0, 0, 171, 0, 0, 0, 172, 171, + 172, 0, 0, 171, 172, 0, 0, 0, 0, 0, + 0, 0, 172, 172, 0, 171, 172, 171, 181, 172, + 181, 171, 0, 181, 0, 0, 0, 42, 181, 171, + 171, 0, 181, 171, 0, 0, 171, 0, 0, 0, + 0, 181, 0, 0, 0, 0, 321, 0, 181, 0, + 0, 0, 0, 181, 0, 0, 34, 181, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, 0, 181, + 0, 181, 34, 0, 0, 181, 34, 0, 0, 34, + 0, 0, 0, 181, 181, 0, 0, 181, 0, 0, + 181, 34, 34, 0, 0, 0, 34, 34, 0, 0, + 172, 0, 34, 0, 34, 34, 34, 34, 0, 0, + 0, 0, 34, 0, 0, 0, 34, 171, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, + 34, 34, 32, 34, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 32, 0, 34, 0, 0, + 0, 0, 0, 34, 34, 0, 0, 32, 32, 0, + 0, 181, 32, 32, 0, 47, 0, 0, 32, 0, + 32, 32, 32, 32, 0, 0, 47, 0, 32, 0, + 0, 47, 32, 0, 32, 47, 0, 0, 47, 0, + 0, 0, 0, 0, 32, 0, 0, 32, 0, 32, + 47, 47, 0, 32, 0, 47, 47, 0, 47, 0, + 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, + 0, 47, 0, 32, 47, 47, 0, 47, 47, 32, + 32, 47, 0, 0, 0, 0, 0, 47, 0, 0, + 47, 0, 47, 47, 47, 0, 47, 0, 47, 47, + 47, 0, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, + 47, 0, 36, 47, 0, 0, 0, 0, 0, 0, + 47, 0, 0, 47, 0, 47, 47, 0, 47, 47, + 0, 47, 0, 0, 0, 0, 47, 0, 47, 47, + 47, 47, 0, 0, 0, 0, 47, 0, 0, 47, + 47, 47, 0, 0, 0, 37, 0, 0, 0, 0, + 0, 0, 47, 0, 47, 47, 47, 47, 0, 47, + 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, + 0, 0, 0, 0, 47, 0, 0, 0, 47, 47, + 0, 47, 0, 47, 47, 0, 0, 193, 0, 0, + 47, 0, 47, 47, 47, 47, 47, 47, 0, 0, + 0, 0, 47, 0, 47, 47, 47, 47, 0, 0, + 47, 0, 47, 0, 0, 0, 47, 47, 0, 47, + 0, 47, 47, 0, 0, 195, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 47, 0, 0, 0, 0, + 47, 0, 47, 47, 47, 47, 0, 0, 0, 0, + 47, 0, 0, 0, 47, 47, 0, 47, 0, 0, + 0, 0, 47, 295, 47, 0, 47, 0, 47, 47, + 0, 47, 0, 47, 0, 0, 0, 0, 47, 0, + 47, 47, 47, 47, 0, 47, 0, 0, 47, 0, + 0, 0, 47, 0, 0, 47, 0, 0, 47, 0, + 0, 296, 449, 47, 47, 0, 0, 47, 47, 47, + 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, + 0, 0, 47, 0, 0, 450, 0, 0, 0, 0, + 0, 0, 449, 47, 47, 47, 47, 47, 451, 47, + 0, 0, 452, 453, 0, 0, 0, 0, 454, 0, + 455, 456, 457, 458, 0, 450, 0, 0, 459, 0, + 0, 0, 460, 47, 0, 0, 0, 0, 451, 0, + 0, 0, 0, 453, 461, 0, 0, 462, 454, 463, + 455, 456, 457, 458, 0, 0, 0, 0, 459, 0, + 0, 0, 460, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 464, 461, 0, 0, 462, 0, 463, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 464, }; protected static readonly short [] yyCheck = { 17, - 17, 300, 192, 17, 4, 511, 69, 20, 18, 52, - 301, 17, 513, 190, 249, 6, 20, 189, 290, 467, - 320, 85, 338, 234, 554, 88, 89, 17, 48, 60, - 93, 299, 158, 487, 331, 297, 919, 768, 60, 1095, - 713, 714, 571, 738, 236, 59, 1130, 1131, 78, 579, - 114, 0, 116, 256, 256, 1216, 74, 256, 268, 327, - 78, 114, 256, 116, 325, 268, 80, 256, 82, 256, - 60, 1232, 256, 325, 64, 88, 89, 353, 96, 924, - 60, 256, 17, 756, 17, 758, 256, 256, 256, 256, - 256, 256, 294, 1177, 294, 268, 109, 256, 282, 256, - 363, 256, 256, 335, 268, 343, 306, 367, 372, 376, - 173, 371, 276, 353, 94, 256, 372, 17, 98, 99, - 100, 101, 102, 103, 104, 105, 391, 656, 256, 256, - 314, 277, 322, 368, 370, 281, 256, 256, 374, 257, - 158, 158, 410, 256, 158, 372, 368, 190, 17, 414, - 269, 17, 158, 391, 256, 418, 343, 418, 0, 17, - 420, 363, 429, 17, 354, 429, 418, 286, 158, 359, - 339, 256, 17, 429, 294, 344, 414, 346, 17, 17, - 339, 256, 381, 352, 353, 344, 249, 346, 201, 202, - 428, 234, 17, 352, 353, 368, 342, 429, 261, 363, - 341, 256, 429, 368, 391, 225, 1051, 429, 894, 374, - 507, 510, 422, 381, 715, 372, 418, 0, 418, 422, - 431, 375, 1090, 158, 418, 158, 381, 414, 369, 418, - 1391, 249, 88, 89, 418, 363, 254, 339, 554, 230, - 432, 428, 370, 418, 372, 372, 374, 437, 418, 422, - 263, 418, 418, 109, 418, 319, 287, 1418, 158, 323, - 429, 374, 325, 579, 328, 287, 297, 330, 256, 1430, - 429, 1432, 290, 549, 256, 328, 289, 295, 296, 1010, - 277, 471, 367, 256, 369, 358, 371, 527, 301, 158, - 418, 309, 158, 368, 316, 308, 314, 287, 316, 374, - 158, 315, 320, 358, 158, 368, 369, 287, 257, 549, - 983, 262, 368, 158, 332, 333, 1002, 297, 1004, 158, - 158, 338, 302, 852, 263, 1176, 316, 357, 256, 1385, - 1025, 571, 338, 158, 256, 420, 256, 350, 423, 357, - 353, 1200, 1073, 372, 1195, 201, 202, 298, 338, 256, - 368, 369, 415, 416, 417, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 363, 1451, 256, 424, - 425, 426, 427, 429, 387, 388, 315, 256, 367, 569, - 369, 657, 370, 884, 1243, 367, 374, 405, 431, 1272, - 263, 581, 372, 583, 376, 585, 1480, 370, 441, 699, - 429, 374, 415, 416, 384, 385, 386, 263, 862, 389, - 390, 294, 256, 394, 395, 257, 656, 264, 438, 439, - 433, 418, 419, 486, 444, 488, 368, 378, 379, 433, - 272, 1104, 1283, 289, 447, 277, 1287, 677, 1111, 281, - 335, 369, 315, 447, 266, 349, 350, 369, 511, 369, - 685, 339, 308, 372, 296, 717, 1324, 266, 648, 368, - 339, 1312, 369, 1136, 527, 487, 368, 481, 531, 349, - 350, 349, 350, 256, 357, 976, 418, 667, 325, 367, - 363, 323, 368, 368, 1352, 1353, 369, 1355, 367, 372, - 373, 509, 314, 511, 350, 513, 340, 487, 1366, 418, - 342, 1369, 363, 386, 374, 314, 782, 570, 369, 523, - 524, 256, 369, 257, 527, 372, 1384, 272, 256, 537, - 429, 272, 277, 527, 542, 429, 281, 429, 363, 1202, - 363, 387, 388, 376, 369, 418, 549, 554, 421, 305, - 1408, 296, 782, 429, 429, 296, 416, 561, 554, 429, - 849, 429, 372, 375, 374, 272, 339, 418, 571, 415, - 416, 372, 579, 374, 554, 363, 375, 802, 323, 363, - 588, 589, 323, 579, 637, 851, 639, 368, 343, 296, - 877, 1420, 1421, 418, 367, 418, 429, 342, 371, 579, - 373, 374, 375, 376, 339, 272, 576, 418, 381, 344, - 726, 346, 371, 374, 1200, 305, 323, 352, 353, 429, - 1140, 369, 852, 881, 341, 373, 381, 635, 429, 296, - 418, 343, 685, 641, 418, 256, 391, 418, 919, 367, - 1200, 369, 1200, 371, 372, 369, 374, 1476, 376, 702, - 256, 269, 369, 656, 21, 416, 323, 1243, 62, 414, - 418, 420, 66, 67, 68, 1200, 70, 71, 286, 381, - 428, 75, 76, 428, 677, 423, 376, 685, 82, 391, - 84, 261, 86, 1243, 305, 1243, 53, 91, 92, 979, - 418, 699, 420, 1137, 748, 423, 717, 678, 751, 305, - 376, 709, 414, 992, 284, 1200, 357, 715, 1243, 357, - 381, 115, 720, 893, 339, 376, 428, 297, 1200, 944, - 391, 369, 302, 1200, 372, 373, 381, 307, 781, 309, - 310, 311, 312, 713, 714, 386, 391, 317, 386, 742, - 744, 321, 367, 414, 797, 977, 386, 717, 1243, 802, - 367, 376, 760, 333, 762, 371, 336, 428, 338, 414, - 763, 1243, 766, 372, 768, 818, 1243, 391, 373, 777, - 371, 376, 414, 421, 1006, 778, 756, 414, 758, 782, - 389, 390, 362, 1290, 364, 365, 428, 357, 368, 797, - 414, 428, 367, 826, 802, 803, 1303, 805, 418, 1061, - 339, 376, 1108, 373, 428, 344, 1095, 346, 816, 817, - 349, 350, 339, 352, 353, 1322, 386, 344, 401, 346, - 294, 1001, 349, 350, 370, 352, 353, 6, 374, 379, - 413, 834, 306, 369, 1140, 888, 1098, 890, 17, 847, - 834, 849, 367, 896, 370, 381, 357, 374, 374, 852, - 853, 376, 256, 382, 383, 259, 389, 865, 839, 1199, - 1200, 1023, 373, 1088, 872, 1303, 1172, 396, 397, 922, - 398, 399, 1134, 339, 882, 386, 884, 357, 344, 1219, - 346, 60, 1373, 349, 350, 64, 352, 353, 418, 872, - 429, 944, 306, 373, 308, 299, 742, 306, 428, 313, - 883, 384, 429, 1243, 313, 1245, 386, 960, 312, 88, - 89, 325, 385, 371, 339, 373, 919, 763, 926, 344, - 928, 346, 930, 373, 349, 350, 376, 352, 353, 371, - 109, 373, 778, 306, 392, 393, 944, 368, 941, 371, - 313, 373, 390, 374, 1435, 1207, 949, 941, 1149, 374, - 381, 367, 325, 400, 412, 367, 373, 367, 1125, 372, - 376, 374, 420, 429, 376, 423, 376, 369, 976, 261, - 951, 979, 953, 367, 955, 367, 339, 354, 355, 158, - 1471, 344, 376, 346, 376, 376, 349, 350, 339, 352, - 353, 1272, 284, 344, 372, 346, 374, 1493, 1494, 418, - 0, 352, 353, 983, 429, 297, 1010, 853, 415, 1017, - 302, 1019, 372, 1021, 374, 307, 376, 309, 310, 311, - 312, 357, 201, 202, 1254, 317, 372, 363, 374, 321, - 376, 1261, 374, 369, 376, 1088, 372, 373, 374, 381, - 371, 333, 1032, 370, 336, 367, 338, 374, 418, 371, - 386, 373, 374, 1061, 376, 354, 355, 370, 371, 381, - 373, 374, 375, 386, 387, 388, 429, 1075, 1076, 1073, - 362, 256, 364, 365, 418, 1083, 368, 370, 371, 483, - 1088, 374, 418, 374, 263, 376, 370, 1095, 372, 1089, - 1098, 370, 1125, 415, 1127, 374, 1385, 1277, 370, 376, - 372, 1108, 374, 949, 374, 277, 376, 1115, 287, 370, - 289, 372, 1108, 374, 1122, 370, 1149, 372, 376, 523, - 1300, 370, 301, 372, 1104, 1128, 1134, 373, 1108, 308, - 370, 1111, 372, 1140, 1314, 367, 367, 316, 1146, 1147, - 371, 376, 373, 374, 1140, 376, 376, 1180, 367, 372, - 381, 1331, 371, 1333, 373, 374, 1136, 376, 294, 338, - 1140, 372, 381, 374, 294, 1172, 1199, 1200, 372, 376, - 374, 350, 343, 370, 353, 372, 1172, 370, 1181, 372, - 374, 1189, 376, 374, 415, 376, 1219, 393, 394, 395, - 396, 374, 1172, 376, 1247, 1198, 374, 1205, 376, 1207, - 414, 415, 364, 365, 349, 350, 372, 373, 387, 388, - 1243, 414, 1245, 364, 365, 369, 1093, 1094, 391, 392, - 418, 94, 1202, 397, 398, 98, 99, 100, 101, 102, - 103, 104, 105, 375, 418, 372, 415, 416, 418, 368, - 372, 376, 371, 368, 373, 374, 372, 374, 372, 372, - 1253, 1254, 372, 1257, 372, 372, 294, 257, 1261, 294, - 374, 261, 372, 392, 393, 372, 1269, 1270, 374, 1272, - 372, 376, 272, 371, 256, 1278, 375, 277, 374, 294, - 294, 281, 356, 412, 284, 372, 381, 1290, 374, 1292, - 375, 420, 1295, 0, 423, 374, 296, 297, 373, 418, - 1303, 301, 302, 381, 1308, 372, 374, 307, 487, 309, - 310, 311, 312, 374, 374, 374, 429, 317, 256, 1322, - 376, 321, 423, 323, 372, 374, 367, 421, 372, 372, - 1363, 373, 343, 333, 368, 335, 336, 371, 338, 373, - 374, 374, 342, 294, 294, 374, 418, 1380, 527, 370, - 367, 371, 1198, 418, 381, 256, 375, 256, 392, 393, - 1393, 1394, 362, 256, 374, 1373, 256, 1371, 368, 369, - 549, 372, 280, 256, 367, 554, 368, 1385, 412, 343, - 376, 372, 370, 423, 371, 374, 420, 1420, 1421, 423, - 376, 374, 571, 372, 1402, 376, 370, 372, 347, 372, - 579, 339, 367, 381, 351, 381, 344, 1253, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 381, - 256, 256, 376, 1269, 1270, 368, 372, 1435, 347, 302, - 368, 370, 370, 374, 372, 375, 374, 375, 376, 0, - 1493, 1494, 370, 1476, 375, 367, 1292, 370, 372, 1295, - 348, 368, 390, 374, 374, 418, 372, 418, 331, 339, - 348, 376, 368, 1471, 375, 368, 376, 367, 381, 356, - 367, 367, 337, 1477, 1478, 305, 371, 656, 372, 381, - 1484, 1485, 374, 368, 368, 1493, 1494, 368, 418, 418, - 369, 429, 418, 371, 371, 367, 371, 371, 677, 372, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 376, 384, 385, 386, 418, 371, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 418, 381, 713, 714, 373, 371, 367, 371, - 381, 369, 373, 265, 371, 267, 372, 372, 270, 256, - 272, 374, 373, 275, 374, 262, 374, 279, 256, 374, - 418, 372, 376, 742, 372, 370, 288, 418, 418, 376, - 376, 372, 418, 295, 376, 372, 367, 756, 300, 758, - 302, 381, 304, 372, 763, 368, 381, 294, 370, 368, - 315, 298, 372, 263, 316, 371, 318, 371, 368, 778, - 322, 323, 0, 782, 372, 372, 0, 367, 330, 331, - 376, 376, 334, 368, 372, 337, 0, 0, 368, 376, - 372, 372, 418, 370, 367, 370, 368, 376, 368, 367, - 376, 372, 339, 418, 507, 368, 372, 344, 372, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 368, 376, 376, 418, 376, 363, 376, 372, 368, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 367, 378, 379, 852, 853, 382, 383, 384, 385, 386, - 372, 368, 389, 390, 372, 368, 376, 394, 395, 396, - 397, 398, 399, 400, 401, 256, 418, 373, 367, 376, - 261, 262, 376, 576, 376, 376, 413, 315, 376, 416, - 376, 418, 376, 420, 376, 263, 423, 51, 12, 52, - 5, 941, 429, 284, 1088, 834, 1088, 1245, 1219, 1425, - 1388, 1441, 677, 294, 1278, 1376, 297, 298, 1371, 1405, - 919, 302, 1290, 855, 305, 1485, 307, 855, 309, 310, - 311, 312, 855, 1243, 691, 1309, 317, 1479, 851, 1231, - 321, 1393, 1398, 1394, 325, 1478, 1333, 720, 1278, 1180, - 949, 826, 333, 527, 797, 336, 1181, 338, 339, 589, - 877, 368, 992, 344, 802, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 685, 72, 334, 717, - 399, 362, 363, 256, 983, 400, 367, 368, 401, 370, - 371, 372, 373, 374, 375, 376, 402, 378, 379, 403, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 0, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 404, 549, 416, 1163, 418, 1253, 420, - 1172, 1108, 423, 158, 1053, 1006, 1066, 978, 429, 1064, - 782, 1076, 256, 962, 1137, 525, 898, 423, 262, 1147, - 1249, -1, -1, -1, 832, -1, 339, 831, -1, -1, - -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, - 294, -1, -1, -1, 298, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, 1104, -1, -1, -1, 1108, - -1, -1, 1111, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 1128, - -1, -1, -1, -1, 285, 339, -1, 1136, -1, -1, - 344, 1140, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, 429, -1, -1, 363, - -1, -1, -1, 367, 368, -1, 370, 371, 372, -1, - 374, 375, 376, 1172, 378, 379, 327, 0, 382, 383, - 384, 385, 1181, -1, 877, 389, 390, -1, -1, -1, - 394, 395, 396, 397, 398, 399, 400, 401, -1, 1198, - -1, -1, -1, 1202, -1, -1, -1, -1, -1, 413, - -1, -1, 416, -1, 418, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 429, 377, 378, 379, 380, - -1, 382, 383, 384, 385, 386, 387, 388, 389, -1, - -1, 392, 393, 394, 395, 396, 397, 398, 399, -1, - -1, -1, -1, -1, 1253, 1254, -1, -1, -1, -1, - -1, -1, 1261, -1, -1, -1, 256, 257, -1, -1, - 1269, 1270, -1, 1272, 264, 265, 266, 267, 268, -1, - 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, - 280, -1, -1, 1292, -1, 285, 1295, 287, 288, 289, - 290, 291, 292, -1, -1, 295, 0, -1, -1, 299, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, - -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, - 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, - -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 417, 418, 419, - 420, -1, 422, 256, 257, -1, -1, -1, -1, 429, - -1, 264, 265, 266, 267, 268, -1, 270, 271, -1, - 273, 274, 275, 276, 277, 278, 279, -1, -1, 0, - -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, - -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 314, -1, 316, -1, 318, 319, -1, -1, 322, - -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, -1, 337, -1, -1, 340, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, 367, 368, -1, -1, 371, -1, - -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, - -1, 384, 256, 386, -1, -1, -1, 261, 262, 392, - 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, - 284, -1, -1, -1, 417, 418, 419, 420, -1, 422, - 294, -1, -1, 297, 298, -1, 429, -1, 302, -1, - -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, - -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, - -1, -1, 336, -1, 338, 339, -1, -1, -1, -1, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, 362, 363, - -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, - 384, 385, 386, -1, -1, 389, 390, -1, -1, -1, - 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, - -1, -1, -1, -1, -1, 256, -1, -1, -1, 413, - 261, 262, 416, -1, 418, -1, 420, -1, -1, 423, - -1, -1, -1, -1, -1, 429, 0, -1, -1, -1, - -1, -1, -1, 284, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 294, -1, -1, 297, 298, -1, -1, - -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, - 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, - -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, - -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - -1, 362, 363, -1, -1, -1, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, -1, 378, 379, -1, - -1, 382, 383, 384, 385, 256, -1, -1, 389, 390, - 261, 262, -1, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 413, 284, -1, 416, -1, 418, -1, 420, - -1, -1, 423, 294, -1, -1, 297, 298, 429, -1, - -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, - 311, 312, -1, 0, -1, -1, 317, -1, -1, -1, - 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, - -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, - -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - -1, 362, 363, -1, -1, -1, 367, 368, 369, 370, - 371, 372, -1, 374, 375, 376, -1, 378, 379, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 256, -1, -1, -1, -1, 261, 262, -1, - -1, -1, 413, -1, -1, 416, -1, 418, -1, 420, - -1, -1, 423, -1, -1, -1, 0, -1, 429, -1, - 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 294, -1, -1, 297, 298, -1, -1, -1, 302, -1, - -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, - -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, - -1, -1, 336, -1, 338, 339, -1, -1, -1, 0, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, -1, 362, 363, - -1, -1, -1, 367, 368, -1, 370, 371, 372, -1, - 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, - 384, 385, -1, -1, -1, 389, 390, -1, -1, -1, - 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0, 413, - -1, -1, 416, -1, 418, -1, -1, -1, -1, -1, - 257, -1, -1, -1, 261, 429, 263, -1, 265, -1, - 267, -1, -1, 270, -1, 272, 273, -1, 275, -1, - 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, - 287, 288, -1, -1, -1, -1, 293, 294, 295, 296, - 297, -1, -1, 300, 301, 302, -1, 304, -1, 306, - 307, 308, 309, 310, 311, 312, 313, 0, 315, 316, - 317, 318, -1, -1, 321, 322, 323, -1, 325, -1, - -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, - 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, + 299, 17, 51, 17, 510, 68, 4, 20, 18, 300, + 6, 17, 512, 189, 233, 466, 87, 88, 289, 188, + 17, 59, 553, 298, 87, 88, 248, 337, 20, 92, + 319, 157, 486, 296, 770, 920, 330, 108, 352, 711, + 0, 713, 59, 570, 58, 47, 737, 578, 235, 1130, + 1131, 326, 0, 77, 268, 73, 1095, 256, 256, 77, + 0, 372, 59, 925, 352, 79, 63, 81, 256, 84, + 1216, 113, 256, 115, 87, 88, 325, 95, 256, 256, + 372, 256, 256, 268, 282, 757, 1232, 368, 760, 335, + 256, 256, 256, 268, 256, 108, 1177, 256, 113, 372, + 115, 256, 256, 256, 372, 256, 17, 368, 363, 172, + 17, 376, 256, 391, 17, 256, 314, 17, 429, 256, + 357, 191, 17, 256, 349, 350, 306, 17, 655, 200, + 201, 873, 257, 313, 409, 256, 414, 429, 277, 157, + 189, 157, 884, 157, 343, 367, 294, 358, 429, 386, + 428, 157, 17, 17, 368, 1090, 429, 294, 306, 17, + 157, 429, 17, 418, 429, 339, 17, 370, 429, 418, + 344, 374, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 429, 233, 248, 363, 200, 201, 1051, + 374, 262, 391, 381, 368, 256, 370, 260, 372, 340, + 374, 375, 376, 367, 429, 369, 256, 371, 422, 256, + 509, 430, 506, 372, 714, 414, 390, 288, 339, 381, + 418, 372, 224, 344, 363, 346, 400, 401, 372, 428, + 248, 352, 353, 229, 548, 253, 307, 422, 526, 413, + 418, 418, 375, 553, 431, 1391, 157, 422, 286, 262, + 157, 321, 418, 418, 157, 429, 420, 157, 296, 423, + 548, 324, 157, 418, 418, 418, 329, 157, 578, 286, + 418, 289, 1418, 268, 1010, 288, 294, 295, 349, 418, + 419, 276, 570, 353, 1430, 327, 1432, 300, 358, 286, + 308, 256, 157, 157, 307, 313, 256, 315, 315, 157, + 314, 319, 157, 318, 367, 368, 157, 322, 429, 257, + 256, 983, 327, 331, 332, 386, 387, 257, 315, 895, + 381, 337, 372, 363, 272, 372, 256, 854, 256, 277, + 256, 337, 356, 281, 1025, 262, 349, 1073, 356, 352, + 337, 256, 656, 414, 415, 376, 1385, 256, 296, 367, + 368, 414, 415, 416, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 1176, 436, 655, 363, 256, + 1451, 298, 256, 386, 387, 323, 341, 256, 418, 339, + 269, 430, 256, 367, 1195, 885, 404, 1272, 676, 1324, + 363, 440, 376, 256, 342, 349, 350, 286, 429, 1480, + 470, 414, 415, 256, 369, 257, 256, 367, 256, 698, + 864, 371, 358, 373, 374, 375, 376, 1352, 1353, 432, + 1355, 381, 485, 418, 487, 256, 1002, 372, 1004, 374, + 263, 1366, 1104, 446, 1369, 437, 438, 367, 256, 1111, + 432, 443, 256, 369, 372, 418, 376, 510, 363, 1384, + 263, 378, 379, 716, 446, 370, 266, 372, 325, 374, + 339, 370, 684, 526, 1136, 374, 480, 530, 264, 486, + 784, 256, 1283, 1408, 266, 429, 1287, 977, 424, 425, + 426, 427, 315, 370, 429, 369, 339, 374, 367, 486, + 508, 344, 510, 346, 512, 369, 784, 368, 568, 352, + 353, 1312, 315, 418, 314, 368, 569, 305, 522, 523, + 580, 374, 582, 526, 584, 343, 294, 21, 536, 369, + 368, 339, 314, 541, 367, 339, 374, 368, 414, 325, + 1202, 335, 343, 376, 526, 548, 367, 553, 369, 853, + 371, 372, 428, 374, 371, 376, 560, 553, 52, 367, + 272, 418, 851, 381, 339, 305, 553, 570, 429, 344, + 277, 346, 578, 391, 281, 375, 854, 352, 353, 587, + 588, 368, 578, 636, 296, 638, 429, 647, 368, 357, + 391, 578, 804, 375, 878, 363, 414, 418, 429, 420, + 1200, 369, 423, 420, 372, 373, 666, 343, 363, 725, + 428, 323, 369, 414, 349, 350, 373, 882, 386, 1140, + 372, 368, 374, 339, 1420, 1421, 634, 428, 344, 1200, + 346, 684, 640, 349, 350, 342, 352, 353, 256, 920, + 363, 363, 429, 1243, 418, 381, 369, 369, 701, 429, + 418, 272, 655, 421, 339, 391, 277, 1200, 374, 344, + 281, 346, 368, 418, 349, 350, 423, 352, 353, 372, + 357, 418, 1243, 676, 256, 296, 684, 429, 414, 367, + 1476, 742, 369, 371, 272, 372, 373, 305, 716, 374, + 698, 677, 428, 1137, 429, 418, 418, 256, 751, 386, + 1243, 980, 323, 992, 765, 391, 714, 272, 296, 1200, + 269, 719, 418, 429, 376, 418, 371, 1200, 373, 780, + 1200, 342, 341, 305, 711, 369, 713, 286, 414, 1200, + 783, 296, 420, 945, 421, 323, 376, 392, 393, 742, + 744, 1199, 1200, 748, 429, 381, 799, 1200, 6, 376, + 369, 804, 1243, 367, 762, 391, 764, 412, 323, 17, + 1243, 1219, 765, 1243, 768, 420, 770, 820, 423, 339, + 757, 779, 1243, 760, 344, 978, 346, 780, 414, 349, + 350, 784, 352, 353, 374, 1243, 401, 1245, 339, 828, + 1243, 799, 428, 374, 855, 371, 804, 805, 413, 807, + 1061, 59, 371, 1006, 373, 63, 1095, 339, 1108, 381, + 818, 819, 344, 414, 346, 1290, 367, 349, 350, 391, + 352, 353, 367, 394, 395, 376, 416, 428, 1303, 87, + 88, 376, 357, 836, 894, 416, 889, 1098, 891, 386, + 1140, 849, 414, 851, 897, 294, 379, 1322, 373, 306, + 108, 854, 855, 357, 836, 841, 313, 306, 866, 429, + 371, 386, 1303, 370, 1023, 873, 369, 374, 325, 373, + 923, 384, 1172, 1134, 339, 883, 1088, 885, 381, 344, + 357, 346, 386, 1373, 349, 350, 371, 352, 353, 950, + 418, 418, 945, 367, 370, 357, 373, 429, 374, 157, + 428, 363, 376, 388, 389, 398, 399, 369, 961, 386, + 372, 373, 374, 306, 389, 308, 368, 920, 418, 927, + 313, 929, 374, 931, 386, 367, 385, 256, 428, 381, + 368, 400, 325, 371, 376, 373, 374, 945, 369, 942, + 1149, 1001, 200, 201, 367, 1435, 1207, 950, 371, 390, + 373, 374, 367, 376, 392, 393, 418, 376, 381, 1125, + 942, 376, 367, 372, 429, 374, 952, 376, 954, 977, + 956, 376, 980, 372, 412, 374, 1254, 376, 373, 382, + 383, 1471, 420, 1261, 373, 423, 373, 376, 374, 376, + 376, 1272, 415, 396, 397, 381, 983, 1493, 1494, 370, + 371, 370, 418, 374, 262, 374, 1010, 354, 355, 1017, + 339, 1019, 370, 1021, 372, 344, 374, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 286, 369, + 288, 415, 372, 370, 371, 1088, 373, 374, 375, 368, + 371, 370, 300, 372, 1032, 374, 375, 376, 370, 307, + 372, 418, 374, 1061, 370, 384, 385, 315, 374, 256, + 389, 390, 392, 393, 394, 395, 418, 1075, 1076, 1073, + 277, 400, 401, 354, 355, 1083, 386, 387, 388, 337, + 1088, 371, 376, 373, 413, 376, 1125, 1095, 1127, 1089, + 1098, 349, 367, 367, 352, 369, 1385, 367, 364, 365, + 429, 371, 1108, 373, 374, 373, 376, 1115, 414, 415, + 1149, 381, 1108, 372, 1122, 374, 372, 1104, 374, 376, + 374, 1108, 376, 376, 1111, 1128, 1134, 368, 386, 387, + 371, 343, 373, 374, 1140, 349, 350, 1198, 1146, 1147, + 370, 1180, 372, 294, 1140, 415, 374, 294, 376, 1136, + 372, 392, 393, 1140, 372, 373, 414, 415, 367, 414, + 1199, 1200, 371, 376, 373, 374, 1172, 376, 364, 365, + 339, 412, 381, 390, 391, 344, 1172, 346, 1181, 420, + 1219, 1189, 423, 352, 353, 1172, 370, 370, 372, 372, + 375, 370, 1253, 372, 1247, 1198, 372, 1205, 374, 1207, + 372, 369, 374, 370, 1243, 372, 1245, 418, 1269, 1270, + 370, 374, 372, 376, 418, 1202, 374, 1277, 376, 374, + 374, 376, 376, 1093, 1094, 396, 397, 418, 486, 372, + 372, 1292, 376, 368, 1295, 374, 372, 294, 93, 372, + 1300, 294, 97, 98, 99, 100, 101, 102, 103, 104, + 1253, 1254, 374, 1257, 1314, 372, 372, 261, 1261, 374, + 372, 371, 376, 256, 375, 374, 1269, 1270, 526, 1272, + 294, 1331, 294, 1333, 381, 1278, 356, 372, 374, 381, + 284, 375, 374, 373, 418, 372, 374, 1290, 374, 1292, + 548, 374, 1295, 297, 376, 553, 374, 429, 302, 423, + 1303, 305, 372, 307, 1308, 309, 310, 311, 312, 374, + 372, 367, 570, 317, 0, 421, 343, 321, 373, 1322, + 578, 325, 372, 374, 1363, 294, 294, 374, 370, 333, + 371, 367, 336, 418, 338, 375, 256, 418, 256, 374, + 256, 1380, 256, 381, 280, 59, 256, 367, 343, 368, + 376, 372, 370, 376, 1393, 1394, 371, 374, 362, 423, + 374, 372, 370, 376, 347, 1373, 372, 1371, 367, 372, + 351, 381, 381, 256, 381, 256, 372, 1385, 376, 93, + 368, 1420, 1421, 97, 98, 99, 100, 101, 102, 103, + 104, 347, 374, 370, 1402, 61, 375, 655, 370, 65, + 66, 67, 0, 69, 70, 375, 367, 370, 74, 75, + 372, 348, 339, 368, 418, 81, 261, 83, 676, 85, + 374, 418, 374, 372, 90, 91, 418, 1435, 376, 348, + 368, 375, 367, 367, 367, 381, 368, 1476, 337, 284, + 1493, 1494, 371, 356, 374, 376, 301, 368, 114, 372, + 376, 368, 297, 711, 305, 713, 368, 302, 418, 418, + 418, 369, 307, 1471, 309, 310, 311, 312, 371, 371, + 367, 418, 317, 1477, 1478, 330, 321, 418, 371, 371, + 1484, 1485, 371, 381, 742, 1493, 1494, 373, 333, 371, + 367, 336, 371, 338, 381, 369, 371, 256, 374, 757, + 372, 372, 760, 373, 373, 372, 374, 765, 374, 374, + 372, 418, 376, 370, 418, 376, 371, 362, 418, 372, + 376, 381, 780, 418, 376, 372, 784, 367, 383, 384, + 385, 381, 368, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 372, + 381, 370, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 372, 368, 315, 263, 368, 371, 371, 0, + 0, 257, 286, 418, 372, 261, 372, 367, 372, 376, + 368, 376, 296, 0, 376, 368, 272, 301, 372, 255, + 372, 277, 258, 418, 370, 281, 854, 855, 284, 367, + 372, 376, 368, 368, 367, 376, 370, 418, 368, 418, + 296, 297, 368, 315, 376, 301, 302, 372, 376, 376, + 372, 307, 376, 309, 310, 311, 312, 372, 368, 367, + 372, 317, 298, 368, 368, 321, 372, 323, 367, 376, + 373, 263, 50, 12, 376, 311, 376, 333, 376, 335, + 336, 506, 338, 376, 376, 0, 342, 371, 256, 376, + 376, 376, 920, 261, 262, 51, 5, 1088, 1088, 383, + 384, 385, 836, 942, 388, 389, 362, 1245, 1219, 1425, + 1388, 1441, 368, 369, 1376, 676, 284, 1405, 1371, 1278, + 690, 857, 950, 1290, 853, 857, 857, 1243, 1309, 297, + 298, 1485, 1231, 1479, 302, 1398, 1478, 305, 1180, 307, + 1394, 309, 310, 311, 312, 1393, 1333, 1278, 526, 317, + 575, 1181, 878, 321, 828, 983, 799, 325, 804, 719, + 588, 367, 992, 684, 71, 333, 716, 333, 336, 398, + 338, 339, 399, 401, 400, 784, 344, 402, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 403, + 1172, 548, 1163, 1253, 362, 363, 1108, 157, 1053, 367, + 368, 979, 370, 371, 372, 373, 374, 375, 376, 0, + 378, 379, 1006, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 1076, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 482, 963, 416, 256, + 418, 1064, 420, 1137, 1066, 423, 1147, 524, 265, 422, + 267, 429, 899, 270, -1, 1249, -1, -1, 275, -1, + 834, -1, 279, -1, 833, -1, 1104, -1, -1, -1, + 1108, 288, -1, 1111, -1, -1, 522, -1, 295, -1, + -1, 575, -1, 300, -1, -1, -1, 304, -1, -1, + 1128, -1, -1, -1, -1, -1, -1, -1, 1136, 316, + -1, 318, 1140, -1, -1, 322, -1, -1, -1, -1, + -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 257, -1, 1172, -1, 261, -1, 263, -1, + 265, -1, 267, 1181, -1, 270, 363, 272, 273, -1, + 275, -1, 277, -1, 279, -1, 281, 282, 283, 284, + 1198, -1, 287, 288, 1202, -1, 0, -1, 293, 294, + 295, 296, 297, -1, -1, 300, 301, 302, -1, 304, + -1, 306, 307, 308, 309, 310, 311, 312, 313, -1, + 315, 316, 317, 318, -1, -1, 321, 322, 323, -1, + 325, 418, -1, -1, -1, 330, 331, -1, 333, 334, + -1, 336, 337, 338, -1, 1253, 1254, 342, -1, -1, + -1, -1, 716, 1261, -1, -1, -1, -1, -1, -1, + -1, 1269, 1270, -1, 1272, -1, -1, 362, -1, 364, + 365, -1, -1, 878, -1, -1, -1, -1, -1, -1, + -1, -1, 377, -1, 1292, 256, 257, 1295, -1, -1, + -1, -1, -1, 264, 265, 266, 267, 268, -1, 270, + 271, -1, 273, 274, 275, 276, 277, 278, 279, 280, + -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, + 291, 292, 0, 418, 295, -1, -1, -1, 299, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, + -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 362, -1, 364, 365, -1, - -1, -1, 256, 257, -1, -1, -1, 261, -1, -1, - 377, 265, -1, 267, -1, -1, 270, -1, 272, 273, - -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, - 284, -1, -1, 287, 288, -1, 0, -1, -1, 293, - -1, 295, 296, 297, -1, -1, 300, 301, 302, -1, - 304, 418, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, 316, 317, 318, -1, 257, 321, 322, 323, - 261, -1, -1, -1, -1, -1, 330, 331, -1, 333, - 334, 272, 336, 337, 338, -1, 277, -1, 342, -1, - 281, -1, -1, 284, -1, -1, -1, -1, -1, 0, - -1, -1, -1, -1, -1, 296, 297, -1, 362, -1, - 301, 302, -1, -1, 368, 369, 307, -1, 309, 310, - 311, 312, -1, 377, -1, -1, 317, -1, -1, -1, - 321, -1, 323, -1, -1, 257, -1, -1, -1, 261, - -1, -1, 333, -1, 335, 336, 0, 338, -1, -1, - 272, 342, -1, -1, -1, 277, -1, -1, -1, 281, - -1, -1, 284, -1, 418, -1, -1, -1, -1, -1, - -1, 362, -1, -1, 296, 297, -1, -1, 369, 301, - 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 0, -1, 317, -1, -1, -1, 321, - -1, 323, -1, -1, 257, -1, -1, -1, 261, -1, - -1, 333, -1, -1, 336, -1, 338, -1, -1, 272, - 342, -1, -1, -1, 277, -1, -1, -1, 281, -1, - -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, - 362, -1, -1, 296, 297, -1, 368, 369, 301, 302, - 261, -1, 263, -1, 307, -1, 309, 310, 311, 312, - 0, -1, -1, -1, 317, -1, -1, -1, 321, -1, - 323, -1, -1, 284, -1, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 297, -1, -1, 342, - -1, 302, -1, 257, -1, -1, 307, 261, 309, 310, - 311, 312, -1, 0, 315, -1, 317, -1, 272, 362, - 321, -1, -1, 277, -1, 368, 369, 281, -1, -1, - 284, -1, 333, -1, -1, 336, -1, 338, -1, -1, - -1, -1, 296, 297, -1, -1, -1, 301, 302, -1, - -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, 362, -1, 317, -1, -1, 257, 321, -1, 323, - 261, -1, -1, -1, -1, -1, -1, -1, -1, 333, - -1, 272, 336, -1, 338, -1, 277, -1, 342, -1, - 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 296, 297, -1, 362, -1, - 301, 302, -1, 257, -1, 369, 307, 261, 309, 310, - 311, 312, -1, -1, -1, -1, 317, -1, 272, -1, - 321, -1, 323, 277, -1, -1, -1, 281, -1, -1, - 284, -1, 333, -1, -1, 336, -1, 338, -1, -1, - -1, 342, 296, 297, -1, -1, -1, 301, 302, -1, - 257, -1, -1, 307, 261, 309, 310, 311, 312, -1, - -1, 362, -1, 317, -1, 272, -1, 321, -1, 323, - 277, -1, -1, -1, 281, -1, -1, 284, -1, 333, - -1, -1, 336, -1, 338, -1, -1, -1, 342, 296, - 297, -1, -1, -1, 301, 302, -1, -1, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, 362, -1, - 317, -1, -1, -1, 321, -1, 323, 257, -1, -1, - -1, 261, -1, -1, -1, -1, 333, -1, -1, 336, - -1, 338, 272, -1, -1, 342, -1, 277, -1, -1, - -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 362, 296, 297, -1, -1, - 257, 301, 302, -1, 261, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, 272, -1, 317, -1, -1, - 277, 321, -1, 323, 281, -1, -1, 284, -1, -1, - -1, -1, -1, 333, -1, -1, 336, -1, 338, 296, - 297, -1, 342, -1, 301, 302, -1, -1, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, 362, -1, 321, -1, 323, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 333, -1, 256, 336, - -1, 338, -1, -1, -1, 342, 264, 265, 266, 267, - -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, -1, -1, -1, 362, -1, 285, -1, 287, - 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, - -1, 299, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, - 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, - -1, -1, 340, 341, -1, 256, 344, 345, -1, -1, - -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, - -1, -1, -1, 371, -1, -1, -1, -1, 376, 377, - 378, 379, 380, -1, -1, -1, 384, 298, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 417, 418, 419, 420, + -1, 422, 256, 257, -1, -1, -1, -1, 429, -1, + 264, 265, 266, 267, 268, -1, 270, 271, 0, 273, + 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, + -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, + -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, + -1, -1, 376, 377, 378, 379, 380, -1, 256, -1, + 384, -1, 386, 261, 262, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, 284, -1, -1, -1, + -1, -1, -1, 417, 418, 419, 420, -1, 422, 297, + 298, -1, -1, -1, 302, 429, -1, 305, -1, 307, + -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, + -1, -1, -1, 321, -1, -1, -1, 325, -1, -1, + -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, + 338, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + -1, -1, -1, -1, 362, 363, -1, -1, -1, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, -1, -1, 382, 383, 384, 385, 386, -1, + -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, + 398, 399, 400, 401, 256, -1, -1, -1, 0, 261, + 262, -1, -1, -1, -1, 413, -1, -1, 416, -1, + 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, + -1, 429, 284, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 297, 298, -1, -1, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + 362, 363, 0, -1, -1, 367, 368, 369, 370, 371, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, 256, -1, -1, 389, 390, 261, + 262, -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, -1, -1, -1, 262, -1, 417, - 418, 419, 420, -1, -1, -1, -1, -1, 339, -1, - -1, 429, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, - -1, -1, 363, 298, -1, -1, -1, 368, 369, 370, - 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, -1, 256, -1, -1, 418, -1, 420, - 262, -1, 423, -1, -1, -1, -1, -1, 429, -1, - -1, -1, -1, 368, -1, -1, 371, -1, 373, 374, - -1, -1, -1, 378, 379, -1, -1, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 298, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 412, 413, -1, - -1, -1, -1, -1, -1, 420, -1, -1, 423, -1, - -1, -1, -1, -1, 429, -1, -1, 339, -1, -1, + -1, 413, 284, -1, 416, -1, 418, -1, 420, -1, + -1, 423, -1, -1, -1, 297, 298, 429, -1, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 256, 378, 379, -1, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, -1, 256, -1, -1, -1, -1, 420, 262, - -1, -1, -1, -1, -1, -1, -1, 429, -1, -1, + 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, + 372, -1, 374, 375, 376, -1, 378, 379, 0, -1, + 382, 383, 384, 385, 256, -1, -1, 389, 390, 261, + 262, -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, 284, -1, 416, -1, 418, -1, 420, -1, + -1, 423, -1, -1, -1, 297, 298, 429, -1, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, 256, -1, + 362, 363, -1, -1, 262, 367, 368, -1, 370, 371, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, + 298, -1, -1, -1, -1, -1, 0, -1, -1, -1, + -1, 413, -1, -1, 416, -1, 418, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 298, -1, -1, 339, -1, - -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, - 262, 372, -1, 374, 375, 376, 339, -1, -1, -1, - -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 367, 368, 298, 370, 371, 372, - 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 429, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, 256, -1, -1, -1, -1, 420, 262, -1, - 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, - -1, 363, -1, -1, -1, -1, -1, 369, -1, 371, - 372, 373, 374, -1, 376, -1, 378, 379, -1, 381, - 382, 383, 384, 385, 298, 387, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, -1, -1, -1, -1, 418, -1, 420, -1, - -1, 423, -1, -1, -1, 339, -1, 429, -1, -1, + -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + -1, -1, -1, -1, -1, 363, 256, -1, -1, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, -1, -1, 382, 383, 384, 385, 386, -1, + -1, 389, 390, -1, -1, 0, 394, 395, 396, 397, + 398, 399, 400, 401, 256, -1, -1, -1, -1, -1, + 262, -1, -1, -1, -1, 413, -1, -1, 416, -1, + 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, 298, -1, -1, 339, + -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, + 370, 0, 372, -1, 374, 375, 376, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + -1, 363, -1, -1, -1, 367, 368, -1, 370, 371, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, 429, + -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, + -1, 413, 256, 257, 416, -1, 418, 261, -1, -1, + -1, 265, -1, 267, -1, -1, 270, 429, 272, 273, + -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, -1, -1, 0, 293, + -1, 295, 296, 297, -1, -1, 300, 301, 302, -1, + 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, + -1, -1, -1, -1, -1, -1, 330, 331, -1, 333, + 334, 0, 336, 337, 338, -1, -1, -1, 342, -1, + -1, -1, 257, -1, -1, -1, 261, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 272, 362, -1, + -1, -1, 277, -1, 368, 369, 281, -1, -1, 284, + -1, -1, -1, 377, 0, -1, -1, -1, -1, -1, + -1, 296, 297, -1, -1, 257, 301, 302, -1, 261, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, + -1, -1, 284, -1, 418, -1, -1, 0, 333, -1, + 335, 336, -1, 338, 296, 297, -1, 342, 257, 301, + 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, 272, -1, 317, -1, 362, 277, 321, + -1, 323, 281, -1, 369, 284, -1, -1, -1, -1, + 0, 333, -1, -1, 336, -1, 338, 296, 297, -1, + 342, -1, 301, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + 362, -1, 321, -1, 323, -1, 368, 369, -1, -1, + -1, -1, 257, -1, 333, -1, 261, 336, -1, 338, + -1, -1, -1, 342, -1, -1, -1, 272, -1, -1, + -1, -1, 277, -1, -1, -1, 281, -1, -1, 284, + -1, -1, -1, 362, -1, -1, -1, -1, -1, 368, + 369, 296, 297, -1, -1, 257, 301, 302, -1, 261, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, + -1, -1, 284, -1, -1, -1, -1, -1, 333, -1, + -1, 336, -1, 338, 296, 297, -1, 342, 257, 301, + 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, 272, -1, 317, -1, 362, 277, 321, + -1, 323, 281, -1, 369, 284, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, + 342, 257, 301, 302, -1, 261, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, + 362, 277, 321, -1, 323, 281, -1, -1, 284, -1, + -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, + 296, 297, -1, 342, 257, 301, 302, -1, 261, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, + -1, 317, -1, 362, 277, 321, -1, 323, 281, -1, + -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 296, 297, -1, 342, 257, 301, 302, + -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, 272, -1, 317, -1, 362, 277, 321, -1, + 323, 281, -1, -1, 284, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 296, 297, -1, 342, + -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, + 310, 311, 312, -1, -1, -1, -1, 317, -1, 362, + -1, 321, -1, 323, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 333, -1, 256, 336, -1, 338, -1, + -1, -1, 342, 264, 265, 266, 267, -1, -1, 270, + 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, + -1, -1, 362, -1, 285, -1, 287, 288, 289, 290, + 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, + -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, + 341, -1, 256, 344, 345, -1, -1, -1, 262, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, + -1, -1, -1, 384, 298, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, + -1, -1, -1, -1, 262, -1, 417, 418, 419, 420, + -1, -1, -1, -1, -1, 339, -1, -1, 429, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, + 354, 355, 356, 357, -1, -1, -1, -1, -1, 363, + 298, -1, -1, -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - -1, 256, 256, -1, -1, -1, 420, 262, -1, 423, - -1, 265, -1, 267, -1, 429, 270, -1, -1, -1, - -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, - -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, 298, -1, -1, 300, -1, -1, -1, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, -1, -1, -1, 322, -1, - -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, - 334, -1, -1, 337, 339, -1, -1, -1, -1, 344, + -1, 256, -1, -1, 418, -1, 420, 262, -1, 423, + -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, + 368, -1, -1, 371, -1, 373, 374, -1, -1, -1, + 378, 379, -1, -1, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 298, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 412, 413, -1, -1, -1, -1, + -1, -1, 420, -1, -1, 423, -1, -1, -1, -1, + -1, 429, -1, 285, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, -1, -1, -1, 363, - -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, - 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, + 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 256, 378, 379, 327, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 256, 256, -1, -1, 418, 420, 262, -1, 423, -1, - 265, -1, 267, -1, 429, 270, -1, -1, -1, -1, - 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, - -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, 298, -1, -1, 300, -1, -1, -1, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, - -1, -1, -1, -1, -1, 330, 331, -1, -1, 334, - -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, + 256, -1, -1, -1, -1, 420, 262, -1, -1, -1, + -1, -1, -1, -1, 429, 377, 378, 379, 380, -1, + 382, 383, 384, 385, 386, 387, 388, 389, -1, -1, + 392, 393, 394, 395, 396, 397, 398, 399, -1, -1, + -1, -1, 298, -1, -1, 339, -1, -1, -1, -1, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, -1, -1, 368, -1, 370, 262, 372, -1, + 374, 375, 376, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, + -1, 367, 368, 298, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, + 386, 387, 388, 389, 390, 429, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 256, - 256, -1, -1, 418, 420, 262, -1, 423, -1, 265, - -1, 267, -1, 429, 270, -1, -1, -1, -1, 275, - -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, 298, -1, -1, 300, -1, -1, -1, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, -1, -1, -1, 322, -1, -1, -1, - -1, -1, -1, -1, 330, 331, -1, -1, 334, -1, - -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, + -1, -1, -1, -1, 420, 262, -1, 423, -1, -1, + -1, -1, -1, 429, -1, -1, -1, -1, 363, -1, + -1, -1, -1, -1, 369, -1, 371, 372, 373, 374, + -1, 376, -1, 378, 379, -1, 381, 382, 383, 384, + 385, 298, 387, 388, 389, 390, -1, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, 418, -1, 420, -1, -1, 423, -1, + -1, -1, 339, -1, 429, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, - -1, 378, -1, -1, 381, 382, 383, 384, 385, 386, + -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, -1, 256, -1, - 261, -1, 418, 420, 262, -1, 423, -1, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 284, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, - 298, 302, -1, -1, 305, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, - 321, 256, -1, -1, 325, -1, -1, 262, -1, -1, - -1, 266, 333, -1, -1, 336, -1, 338, -1, -1, - -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 407, 408, 409, 410, 411, 412, 413, -1, 256, 256, + -1, -1, -1, 420, 262, -1, 423, -1, 265, -1, + 267, -1, 429, 270, -1, -1, -1, -1, 275, -1, + -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + 298, -1, -1, 300, -1, -1, -1, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, + -1, 318, -1, -1, -1, 322, -1, -1, -1, -1, + -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, + 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, 362, -1, 298, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, 314, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, -1, -1, 394, 395, 396, 397, + 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 256, 413, -1, 418, -1, -1, - 262, -1, 357, -1, -1, -1, -1, -1, 363, -1, - -1, 429, -1, -1, 369, 370, 371, 372, 373, 374, - 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 298, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, 418, -1, 420, -1, -1, 423, -1, - -1, -1, -1, -1, 429, -1, -1, 339, -1, -1, - -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, 256, -1, - -1, -1, -1, -1, 262, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, - 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, 429, -1, -1, - -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, - -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - 256, 429, -1, -1, -1, -1, 262, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, - -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, - 400, 401, 298, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, 429, - -1, -1, -1, -1, 262, -1, -1, -1, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 298, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, - -1, -1, -1, 389, 390, -1, 256, -1, 394, 395, - 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, - -1, 389, 390, -1, 256, -1, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, 256, -1, 394, 395, 396, 397, 398, 399, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, - 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, - -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, - 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, - -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, - 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, - 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, - 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, - -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, - 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, - -1, 389, 390, -1, 256, -1, -1, -1, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, - 390, -1, 256, -1, -1, -1, 396, 397, 398, 399, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, - 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, - -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, - 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, - -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, - 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, - 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, - -1, -1, 396, 397, 398, 399, 400, 401, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, 384, 385, - -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, - -1, -1, 398, 399, 400, 401, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, - -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, - 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, - 390, -1, 256, -1, -1, -1, -1, -1, 398, 399, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, - 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, - -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, - 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, - -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, - -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, 385, - -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, - -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, - -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, - -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, - -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, - 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, 385, -1, -1, -1, -1, - 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, - 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, -1, 385, -1, -1, -1, -1, 390, -1, - 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, - -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, - 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, - -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 390, -1, 256, -1, - -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, - -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, - -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, - 376, -1, -1, -1, 256, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, - 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, - -1, -1, -1, 262, -1, -1, -1, 266, -1, -1, - -1, -1, 390, -1, -1, -1, -1, 339, -1, -1, - -1, -1, 344, 401, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 413, -1, -1, -1, 298, - -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, - 372, 429, 374, 375, 376, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 401, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, -1, -1, -1, -1, -1, -1, 357, -1, - -1, -1, -1, -1, 363, -1, -1, 429, -1, -1, - 369, -1, 371, -1, 373, -1, 375, 376, -1, 378, + 408, 409, 410, 411, 412, 413, -1, 256, 256, -1, + -1, 418, 420, 262, -1, 423, -1, 265, -1, 267, + -1, 429, 270, -1, -1, -1, -1, 275, -1, -1, + -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, 298, + -1, -1, 300, -1, -1, -1, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, -1, -1, -1, 322, -1, -1, -1, -1, -1, + -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, + 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, + -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, -1, -1, 256, -1, 418, - -1, 420, -1, -1, 423, 264, 265, 266, 267, -1, - 429, 270, 271, -1, 273, 274, 275, 276, 277, 278, - 279, -1, -1, -1, -1, -1, 285, -1, 287, 288, - 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, - 299, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, - 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, - -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, + 409, 410, 411, 412, 413, -1, 256, 256, -1, -1, + 418, 420, 262, -1, 423, -1, 265, -1, 267, -1, + 429, 270, -1, -1, -1, -1, 275, -1, -1, -1, + 279, -1, -1, -1, -1, -1, -1, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, 298, -1, + -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + -1, -1, -1, 322, -1, -1, -1, -1, -1, -1, + -1, 330, 331, -1, -1, 334, -1, -1, 337, 339, + -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, + 370, 371, 372, 373, 374, 375, 376, -1, 378, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, -1, 256, -1, 261, -1, 418, + 420, 262, -1, 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, - -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 297, -1, -1, -1, 298, 302, -1, + -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, -1, 317, -1, -1, -1, 321, 256, -1, + -1, 325, -1, -1, 262, -1, -1, -1, 266, 333, + -1, -1, 336, -1, 338, -1, -1, -1, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, 362, -1, + 298, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, 314, 378, 379, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 256, 413, -1, 418, -1, -1, 262, -1, 357, + -1, -1, -1, -1, -1, 363, -1, -1, 429, -1, + -1, 369, 370, 371, 372, 373, 374, 375, 376, -1, + 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 298, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, + -1, 429, -1, -1, 339, -1, -1, -1, -1, 344, + -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, 256, -1, -1, -1, -1, + -1, 262, -1, 368, -1, 370, -1, 372, -1, 374, + 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, + 385, 386, 387, 388, 389, 390, -1, -1, -1, 394, + 395, 396, 397, 398, 399, 400, 401, 298, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, - 419, 420, 264, 265, 266, 267, -1, -1, 270, 271, - -1, 273, 274, 275, 276, 277, 278, 279, -1, -1, - -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, - 292, -1, -1, 295, -1, -1, -1, 299, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, - 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, -1, 337, -1, -1, 340, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, - -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 256, 429, -1, -1, -1, -1, 262, + -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 298, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, + -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, 256, 429, -1, + -1, -1, -1, 262, -1, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, + 383, 384, 385, -1, -1, -1, 389, 390, -1, -1, + -1, 394, 395, 396, 397, 398, 399, 400, 401, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, - 265, 266, 267, -1, -1, 270, 271, -1, 273, 274, - 275, 276, 277, 278, 279, -1, -1, -1, -1, -1, - 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, - 295, -1, -1, -1, 299, 300, -1, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, - -1, 316, -1, 318, 319, -1, -1, 322, -1, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, -1, 337, -1, -1, 340, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, - -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 256, 429, -1, -1, -1, + -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, + 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 298, -1, 368, + -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, + 379, -1, -1, 382, 383, 384, 385, -1, -1, -1, + 389, 390, -1, 256, -1, 394, 395, 396, 397, 398, + 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, + -1, 256, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, + -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, + 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, + -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, + -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, + 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, + 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, + 385, -1, -1, -1, 389, 390, -1, 256, -1, 394, + 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, + -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, + -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, + -1, -1, 389, 390, -1, 256, -1, 394, 395, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, + -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, + -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, + 389, 390, -1, 256, -1, -1, -1, 396, 397, 398, + 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, + -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, + -1, 256, -1, -1, -1, 396, 397, 398, 399, 400, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, + -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, + 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, + -1, -1, -1, 396, 397, 398, 399, 400, 401, -1, + -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, + 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, + 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, + 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, + -1, 396, 397, 398, 399, 400, 401, -1, -1, -1, + -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, + -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, + -1, -1, 389, 390, -1, 256, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, + -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, + -1, -1, -1, -1, -1, 384, 385, -1, -1, -1, + 389, 390, -1, 256, -1, -1, -1, -1, -1, 398, + 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, + -1, -1, -1, 384, 385, -1, -1, -1, 389, 390, + -1, 256, -1, -1, -1, -1, -1, 398, 399, 400, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, + -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, + -1, 384, 385, -1, -1, -1, 389, 390, -1, 256, + -1, -1, -1, -1, -1, 398, 399, 400, 401, -1, + -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, + 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, 384, + 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, + -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, + -1, -1, -1, -1, -1, -1, -1, -1, 385, -1, + -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, + -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, + 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, + -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, + -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, + -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, + 389, 390, -1, 256, -1, -1, -1, -1, -1, -1, + -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, + -1, -1, -1, -1, 385, -1, -1, -1, -1, 390, + -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, + -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, + -1, -1, 385, -1, -1, -1, -1, 390, -1, 256, + -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, + -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, + 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, + 375, 376, -1, -1, -1, 256, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, + -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, + -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, + -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 390, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, 401, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 413, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, + -1, 372, 429, 374, 375, 376, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 262, 390, + -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, + 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, + -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 298, -1, -1, -1, 429, -1, + -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, + 314, 374, 375, 376, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, 417, 418, 419, 420, 264, 265, 266, 267, - -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, -1, -1, -1, -1, -1, 285, -1, 287, - 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, - -1, 299, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, - 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, - -1, -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, - -1, -1, -1, 371, -1, -1, -1, -1, 376, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, - 418, 419, 420, 264, 265, 266, 267, -1, -1, 270, - 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, - -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, - 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, - -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, - 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, - 264, 265, -1, 267, -1, -1, 270, 271, -1, 256, - -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, - 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, - -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, - 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, - 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, - 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, - 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + -1, -1, -1, 357, -1, -1, -1, -1, -1, 363, + -1, -1, -1, -1, -1, 369, 429, 371, -1, 373, + -1, 375, 376, -1, 378, 379, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + -1, -1, 256, -1, 418, -1, 420, -1, -1, 423, + 264, 265, 266, 267, -1, 429, 270, 271, -1, 273, + 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, + -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, + -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, - 267, -1, -1, 270, 271, -1, 256, -1, 275, 276, - 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, - 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, - -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, - 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, - -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, - 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, + -1, -1, -1, 417, 418, 419, 420, 264, 265, 266, + 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, + 277, 278, 279, -1, -1, -1, -1, -1, 285, -1, + 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, + -1, -1, 299, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, + -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, + 337, -1, -1, 340, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, 418, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, - 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 256, -1, 417, 418, 419, 420, - -1, -1, 264, 265, -1, 267, -1, 428, 270, 271, - -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, - 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, - 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, - 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, 316, 300, 318, 319, 320, 304, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, - -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, - -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, 372, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, - 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, - 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, - 318, -1, 337, -1, 322, -1, 341, -1, -1, 344, - 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, - -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, 370, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, - 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - 418, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, - -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, - -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, 417, 418, - 419, 420, -1, -1, 264, 265, -1, 267, -1, 428, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, - -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, - 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, - -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, - -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, + -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, + 417, 418, 419, 420, 264, 265, 266, 267, -1, -1, + 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, + -1, -1, -1, -1, -1, 285, -1, 287, 288, 289, + 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, + -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, + 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, - 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, 418, 279, -1, -1, 265, - -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, - -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, - 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, 316, 300, 318, 319, -1, 304, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, - -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, - -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + 420, 264, 265, 266, 267, -1, -1, 270, 271, -1, + 273, 274, 275, 276, 277, 278, 279, -1, -1, -1, + -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, + -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 314, -1, 316, -1, 318, 319, -1, -1, 322, + -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, -1, 337, -1, -1, 340, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, + -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, - -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, - 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - 316, 300, 318, 319, -1, 304, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, - -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, - -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, + 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, + 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, + -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, + -1, -1, -1, 299, 300, -1, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, + 316, -1, 318, 319, -1, -1, 322, -1, 324, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, + -1, 337, -1, -1, 340, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, + 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, + -1, 270, 271, -1, 256, -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, @@ -11906,7 +11834,7 @@ void case_957() 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, @@ -11914,375 +11842,520 @@ void case_957() -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, -1, - -1, -1, -1, 285, -1, -1, 288, -1, -1, -1, - -1, -1, -1, 295, -1, 261, -1, 262, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, -1, 318, 319, 284, -1, + 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, + 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, + 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, 316, 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, 297, 334, 298, -1, -1, 302, -1, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, -1, -1, 321, -1, 359, 360, 361, - 362, -1, -1, -1, -1, -1, -1, 333, -1, 371, - 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, + 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, + -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, + -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, 372, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, 418, 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 362, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, - 375, -1, -1, 378, 379, 417, 418, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 261, -1, 418, -1, 265, 420, 267, -1, 423, 270, - -1, 272, 273, -1, 275, -1, 277, -1, 279, -1, - 281, 282, 283, 284, -1, -1, 287, 288, -1, -1, - -1, -1, 293, -1, 295, 296, 297, -1, -1, 300, - -1, 302, -1, 304, -1, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, 316, 317, 318, -1, -1, - 321, 322, 323, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 333, 334, -1, 336, 337, 338, -1, -1, - -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, - -1, 362, -1, 265, -1, 267, -1, 368, 270, -1, - 272, 273, -1, 275, -1, 277, 377, 279, -1, 281, - 282, 283, 284, -1, -1, 287, 288, -1, -1, -1, - -1, 293, -1, 295, 296, 297, -1, -1, 300, -1, - 302, -1, 304, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, 316, 317, 318, 418, -1, 321, - 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, - -1, 333, 334, -1, 336, 337, 338, -1, -1, -1, - 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, - 362, -1, 265, -1, 267, -1, 368, 270, -1, 272, - 273, -1, 275, -1, 277, 377, 279, -1, 281, 282, - 283, 284, -1, -1, 287, 288, -1, -1, -1, -1, - 293, -1, 295, 296, 297, -1, -1, 300, -1, 302, - -1, 304, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, 316, 317, 318, 418, -1, 321, 322, - 323, -1, -1, -1, -1, -1, -1, 330, 331, -1, - 333, 334, -1, 336, 337, 338, -1, -1, -1, 342, + 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, + -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 261, -1, -1, -1, 265, -1, 267, 362, - -1, 270, -1, 272, 273, 368, 275, -1, 277, -1, - 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, - -1, 300, -1, 302, 261, 304, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, 316, 317, 318, - -1, -1, 321, 322, 323, 418, -1, 284, -1, -1, - -1, 330, 331, -1, 333, 334, 261, 336, 337, 338, - 297, -1, -1, 342, -1, 302, -1, -1, 305, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, 284, - 317, -1, -1, 362, 321, -1, -1, -1, 325, 368, - -1, -1, 297, -1, 261, -1, 333, 302, -1, 336, - -1, 338, 307, -1, 309, 310, 311, 312, -1, -1, - 315, -1, 317, -1, -1, -1, 321, 284, -1, -1, - 357, -1, -1, -1, 261, 362, -1, -1, 333, -1, - 297, 336, 369, 338, 371, 302, 373, -1, 305, 418, - 307, -1, 309, 310, 311, 312, -1, 284, -1, 386, - 317, -1, -1, -1, 321, -1, -1, 362, 325, -1, - 297, -1, -1, 368, 369, 302, 333, -1, -1, 336, - 307, 338, 309, 310, 311, 312, -1, -1, -1, -1, - 317, 418, -1, -1, 321, -1, -1, -1, 325, -1, - -1, 264, 265, -1, 267, 362, 333, 270, 271, 336, - -1, 338, 275, 276, 277, -1, 279, -1, -1, -1, - -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, 362, -1, 300, -1, 302, - 303, 304, -1, 306, -1, -1, -1, -1, -1, -1, - 313, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, 418, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, 418, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, 372, - -1, 374, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, 306, - -1, -1, -1, -1, -1, -1, 313, -1, -1, 316, - -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, + -1, 417, 418, 419, 420, -1, -1, 264, 265, -1, + 267, -1, 428, 270, 271, -1, -1, -1, 275, 276, + 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, + 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, + -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, + 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, + -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, + 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, 374, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, - -1, 302, 303, 304, -1, 306, -1, -1, -1, -1, - -1, -1, 313, -1, -1, 316, -1, 318, 319, -1, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, - 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, - 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, + 370, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, - -1, -1, 337, -1, -1, -1, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, + 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, + -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, + -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, + 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, + -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, 316, 334, 318, -1, 337, -1, 322, + -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, + -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, 418, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, -1, 417, 418, 419, 420, -1, -1, 264, + 265, -1, 267, -1, 428, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, + 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, + 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, + 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, + 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, - 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, - -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, 368, - -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, - 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, - -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, + -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, + 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, + -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, + 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, + -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, + 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, + 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, + -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, + -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, + -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, 316, 300, 318, 319, -1, + 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, + 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, + 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, - 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, - 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, - -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, - -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, - -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, - -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, - 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, - -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, - 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, - -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, + -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, + 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, + -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, + 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, + 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, + 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, - -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, - 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, - -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, - -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, - -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, - -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, - 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, + -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, + 277, 418, 279, -1, -1, -1, -1, -1, 285, -1, + -1, 288, -1, -1, -1, 261, -1, -1, 295, -1, + -1, -1, 262, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 284, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, - -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + 327, 297, 329, 330, 331, 332, 302, 334, 298, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, 315, + -1, 317, -1, -1, -1, 321, -1, -1, -1, -1, + -1, -1, 359, 360, 361, 362, -1, 333, -1, -1, + 336, -1, 338, -1, 371, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, - 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, -1, 261, -1, 263, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, 284, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, 297, 334, -1, -1, -1, 302, -1, -1, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, -1, -1, 321, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, 333, -1, - 371, 336, -1, 338, -1, -1, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, 362, -1, -1, - -1, -1, -1, 368, 369, -1, -1, -1, -1, -1, - -1, 263, -1, 265, -1, 267, 417, 418, 270, 420, - 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, - 282, 283, -1, -1, -1, 287, 288, -1, -1, -1, - -1, 293, -1, 295, 296, -1, -1, -1, 300, -1, - -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 315, 316, -1, 318, -1, -1, -1, - 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, - 264, 265, 334, 267, -1, 337, 270, 271, -1, -1, - 342, 275, 276, 277, -1, 279, -1, -1, -1, -1, - -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, 364, 365, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, 377, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 362, -1, -1, -1, + -1, -1, 368, 369, -1, -1, -1, -1, -1, -1, + -1, 371, 372, 373, 374, 375, -1, -1, 378, 379, + 417, 418, 382, 383, 384, 385, 386, 387, 388, 389, + 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, -1, 261, -1, -1, -1, 265, + 420, 267, -1, 423, 270, -1, 272, 273, -1, 275, + -1, 277, -1, 279, -1, 281, 282, 283, 284, -1, + -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, + 296, 297, -1, -1, 300, -1, 302, -1, 304, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, + 316, 317, 318, -1, -1, 321, 322, 323, -1, -1, + -1, -1, -1, -1, 330, 331, -1, 333, 334, -1, + 336, 337, 338, -1, -1, -1, 342, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 261, -1, 362, -1, 265, -1, + 267, -1, 368, 270, -1, 272, 273, -1, 275, -1, + 277, 377, 279, -1, 281, 282, 283, 284, -1, -1, + 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, + 297, -1, -1, 300, -1, 302, -1, 304, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, 316, + 317, 318, 418, -1, 321, 322, 323, -1, -1, -1, + -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, + 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 261, -1, 362, -1, 265, -1, 267, + -1, 368, 270, -1, 272, 273, -1, 275, -1, 277, + 377, 279, -1, 281, 282, 283, 284, -1, -1, 287, + 288, -1, -1, -1, -1, 293, -1, 295, 296, 297, + -1, -1, 300, -1, 302, -1, 304, -1, -1, 307, + -1, 309, 310, 311, 312, -1, -1, -1, 316, 317, + 318, 418, -1, 321, 322, 323, -1, -1, -1, -1, + -1, -1, 330, 331, -1, 333, 334, -1, 336, 337, + 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, + -1, 265, -1, 267, 362, -1, 270, -1, 272, 273, + 368, 275, -1, 277, -1, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, -1, -1, -1, 293, + -1, 295, 296, 297, -1, -1, 300, -1, 302, 261, + 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, + 418, -1, 284, -1, -1, -1, 330, 331, -1, 333, + 334, -1, 336, 337, 338, 297, -1, -1, 342, -1, + 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, 362, 321, + -1, -1, -1, 325, 368, -1, -1, 261, -1, -1, + -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 284, -1, -1, -1, -1, 357, -1, -1, -1, -1, + 362, -1, -1, 297, -1, -1, -1, 369, 302, 371, + -1, 373, -1, 307, 418, 309, 310, 311, 312, -1, + -1, -1, -1, 317, 386, -1, -1, 321, -1, -1, + -1, 325, -1, -1, 264, 265, -1, 267, -1, 333, + 270, 271, 336, -1, 338, 275, 276, 277, -1, 279, + -1, -1, -1, -1, -1, 285, 418, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, 362, -1, + 300, -1, 302, 303, 304, -1, 306, -1, -1, -1, + -1, -1, -1, 313, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, 418, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 371, 372, -1, 374, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, 306, -1, -1, -1, -1, -1, -1, 313, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + 374, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, -1, 300, -1, 302, 303, 304, -1, 306, -1, + -1, -1, -1, -1, -1, 313, -1, -1, 316, -1, + 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, + -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, + 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, + -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, -1, 334, -1, -1, 337, -1, -1, -1, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, + -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, 368, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, + -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, + 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, + -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, -1, 334, -1, -1, -1, -1, -1, -1, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, + -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, + -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, + -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, + 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, 337, -1, -1, -1, -1, -1, -1, - 265, -1, 267, -1, -1, 270, 418, -1, -1, -1, - 275, -1, -1, -1, 279, 359, 360, 361, 362, -1, - -1, -1, -1, 288, 265, -1, 267, 371, -1, 270, - 295, 272, 273, -1, 275, 300, 277, -1, 279, 304, - 281, 282, 283, -1, -1, -1, 287, 288, -1, -1, - -1, 316, 293, 318, 295, 296, -1, 322, -1, 300, - -1, -1, -1, 304, -1, 330, 331, -1, -1, 334, - -1, -1, 337, 417, 418, 316, -1, 318, -1, -1, - -1, 322, 323, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 265, 334, 267, -1, 337, 270, 363, 272, - 273, 342, 275, -1, 277, -1, 279, -1, 281, 282, - 283, -1, -1, -1, 287, 288, -1, -1, -1, -1, - 293, -1, 295, 296, -1, -1, -1, 300, -1, -1, - -1, 304, -1, -1, -1, -1, 377, -1, -1, -1, - -1, -1, -1, 316, -1, 318, -1, -1, -1, 322, - 323, -1, -1, 418, -1, -1, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, 265, -1, 267, 342, - -1, 270, -1, -1, 273, -1, 275, 418, 277, -1, + 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, + 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, + -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, + -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, 261, + -1, 263, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, 319, 284, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, 297, 334, -1, -1, -1, + 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, 333, -1, 371, 336, -1, 338, -1, -1, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + 362, -1, -1, -1, -1, -1, 368, 369, -1, -1, + -1, -1, -1, -1, 263, -1, 265, -1, 267, 417, + 418, 270, 420, 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, -1, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, -1, 265, -1, - 267, 300, -1, 270, -1, 304, 273, -1, 275, -1, - 277, -1, 279, -1, 281, 282, 283, 316, -1, 318, - 287, 288, -1, 322, -1, -1, 293, -1, 295, -1, - -1, 330, 331, 300, -1, 334, -1, 304, 337, -1, - -1, -1, 265, 342, 267, 418, -1, 270, -1, 316, - -1, 318, 275, -1, -1, 322, 279, -1, -1, -1, - -1, -1, -1, 330, 331, 288, -1, 334, -1, -1, - 337, -1, 295, -1, 265, 342, 267, 300, 377, 270, - -1, 304, -1, 306, 275, 308, -1, -1, 279, -1, - 313, -1, -1, 316, -1, 318, -1, 288, -1, 322, - -1, -1, 325, -1, 295, -1, -1, 330, 331, 300, - -1, 334, -1, 304, 337, 306, -1, 308, 265, 418, - 267, -1, 313, 270, -1, 316, -1, 318, 275, -1, - -1, 322, 279, -1, 325, -1, -1, -1, -1, 330, - 331, 288, -1, 334, -1, -1, 337, -1, 295, 372, - 265, 418, 267, 300, -1, 270, -1, 304, -1, 306, - 275, 308, -1, -1, 279, -1, 313, -1, -1, 316, - -1, 318, -1, 288, -1, 322, -1, -1, 325, 370, - 295, -1, -1, 330, 331, 300, -1, 334, -1, 304, - 337, 306, -1, -1, -1, 418, -1, -1, 313, -1, - -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, - 325, -1, -1, -1, -1, 330, 331, -1, -1, 334, - -1, 265, 337, 267, -1, -1, 270, 418, -1, -1, - -1, 275, -1, -1, -1, 279, -1, -1, -1, 283, - 265, -1, 267, -1, 288, 270, -1, -1, -1, 293, - 275, 295, -1, -1, 279, -1, 300, -1, -1, -1, - 304, 305, -1, 288, -1, -1, -1, -1, -1, -1, - 295, 418, 316, -1, 318, 300, -1, -1, 322, 304, - -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, - 334, 316, -1, 318, 265, -1, 267, 322, -1, 270, - -1, -1, -1, 418, 275, 330, 331, -1, 279, 334, - -1, 265, 337, 267, -1, -1, 270, 288, -1, -1, - -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, - -1, -1, -1, 304, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, 316, 300, 318, -1, -1, - 304, 322, -1, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 316, 334, 318, 265, 337, 267, 322, -1, - 270, -1, -1, -1, 418, 275, 330, 331, -1, 279, - 334, -1, -1, 337, -1, -1, -1, -1, 288, -1, - -1, -1, -1, 418, -1, 295, -1, -1, -1, -1, - 300, -1, -1, 261, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, -1, 316, -1, 318, 277, - -1, -1, 322, 281, -1, -1, 284, -1, -1, -1, - 330, 331, -1, -1, 334, -1, -1, 337, 296, 297, - -1, -1, -1, 301, 302, -1, -1, 418, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, -1, 321, 418, 323, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 333, -1, 335, 336, 261, - 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, - 272, -1, -1, -1, -1, 277, -1, -1, -1, 281, - -1, -1, 284, -1, 362, -1, -1, -1, -1, -1, - 368, 369, -1, -1, 296, 297, -1, -1, 418, 301, - 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 272, -1, 317, -1, -1, 277, 321, - -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, - 342, -1, 301, 302, -1, 261, -1, -1, 307, -1, + -1, -1, -1, -1, 293, -1, 295, 296, -1, -1, + -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, + -1, -1, -1, 322, 323, -1, -1, -1, -1, -1, + -1, 330, 331, 264, 265, 334, 267, -1, 337, 270, + 271, -1, -1, 342, 275, 276, 277, -1, 279, -1, + -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, 364, 365, -1, -1, 300, + -1, 302, 303, 304, -1, -1, -1, -1, 377, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, 337, -1, -1, -1, + -1, -1, -1, 265, -1, 267, -1, -1, 270, 418, + 272, -1, -1, 275, -1, -1, -1, 279, 359, 360, + 361, 362, -1, -1, -1, -1, 288, 265, -1, 267, + 371, -1, 270, 295, 272, 273, -1, 275, 300, 277, + 302, 279, 304, 281, 282, 283, -1, -1, -1, 287, + 288, -1, -1, -1, 316, 293, 318, 295, 296, -1, + 322, 323, 300, -1, -1, -1, 304, -1, 330, 331, + -1, -1, 334, -1, -1, 337, 417, 418, 316, -1, + 318, -1, -1, -1, 322, 323, -1, -1, -1, -1, + -1, -1, 330, 331, -1, 265, 334, 267, -1, 337, + 270, -1, 272, 273, 342, 275, -1, 277, -1, 279, + -1, 281, 282, 283, -1, -1, -1, 287, 288, -1, + -1, -1, -1, 293, -1, 295, 296, -1, -1, -1, + 300, -1, -1, -1, 304, -1, -1, -1, -1, 377, + -1, -1, -1, -1, -1, -1, 316, -1, 318, -1, + -1, -1, 322, 323, -1, -1, 418, -1, -1, -1, + 330, 331, -1, -1, 334, -1, -1, 337, -1, 265, + -1, 267, 342, -1, 270, -1, -1, 273, -1, 275, + 418, 277, -1, 279, -1, 281, 282, 283, -1, -1, + -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, + -1, 265, -1, 267, 300, -1, 270, -1, 304, 273, + -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, + 316, -1, 318, 287, 288, -1, 322, -1, -1, 293, + -1, 295, -1, -1, 330, 331, 300, -1, 334, -1, + 304, 337, -1, -1, -1, 265, 342, 267, 418, -1, + 270, -1, 316, -1, 318, 275, -1, -1, 322, 279, + -1, -1, -1, -1, -1, -1, 330, 331, 288, -1, + 334, -1, -1, 337, -1, 295, -1, 265, 342, 267, + 300, 377, 270, -1, 304, -1, 306, 275, 308, -1, + -1, 279, -1, 313, -1, -1, 316, -1, 318, -1, + 288, -1, 322, -1, -1, 325, -1, 295, -1, -1, + 330, 331, 300, -1, 334, -1, 304, 337, 306, -1, + 308, 265, 418, 267, -1, 313, 270, -1, 316, -1, + 318, 275, -1, -1, 322, 279, -1, 325, -1, -1, + -1, -1, 330, 331, 288, -1, 334, -1, -1, 337, + -1, 295, 372, 265, 418, 267, 300, -1, 270, -1, + 304, -1, 306, 275, 308, -1, -1, 279, -1, 313, + -1, -1, 316, -1, 318, -1, 288, -1, 322, -1, + -1, 325, 370, 295, -1, -1, 330, 331, 300, -1, + 334, -1, 304, 337, 306, -1, -1, -1, 418, -1, + -1, 313, -1, -1, 316, -1, 318, -1, -1, -1, + 322, -1, -1, 325, -1, -1, -1, -1, 330, 331, + -1, -1, 334, -1, 265, 337, 267, -1, -1, 270, + 418, -1, -1, -1, 275, -1, -1, -1, 279, -1, + -1, -1, 283, 265, -1, 267, -1, 288, 270, -1, + -1, -1, 293, 275, 295, -1, -1, 279, -1, 300, + -1, -1, -1, 304, 305, -1, 288, -1, -1, -1, + -1, -1, -1, 295, 418, 316, -1, 318, 300, -1, + -1, 322, 304, -1, -1, -1, -1, -1, -1, 330, + 331, -1, -1, 334, 316, -1, 318, 265, -1, 267, + 322, -1, 270, -1, -1, -1, 418, 275, 330, 331, + -1, 279, 334, -1, 265, 337, 267, -1, -1, 270, + 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, + -1, -1, 300, -1, -1, -1, 304, 288, -1, -1, + -1, 363, -1, -1, 295, -1, -1, -1, 316, 300, + 318, -1, -1, 304, 322, -1, -1, -1, -1, -1, + -1, -1, 330, 331, -1, 316, 334, 318, 265, 337, + 267, 322, -1, 270, -1, -1, -1, 418, 275, 330, + 331, -1, 279, 334, -1, -1, 337, -1, -1, -1, + -1, 288, -1, -1, -1, -1, 418, -1, 295, -1, + -1, -1, -1, 300, -1, -1, 261, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 272, -1, 316, + -1, 318, 277, -1, -1, 322, 281, -1, -1, 284, + -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, + 337, 296, 297, -1, -1, -1, 301, 302, -1, -1, + 418, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, 418, 323, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, + 335, 336, 261, 338, -1, -1, -1, 342, -1, -1, + -1, -1, -1, 272, -1, -1, -1, -1, 277, -1, + -1, -1, 281, -1, -1, 284, -1, 362, -1, -1, + -1, -1, -1, 368, 369, -1, -1, 296, 297, -1, + -1, 418, 301, 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, - 362, 277, 321, -1, 323, 281, 368, 369, 284, -1, + -1, 277, 321, -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 296, 297, -1, 342, -1, 301, 302, 261, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, 362, -1, 321, -1, 323, -1, 368, - 284, -1, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 297, -1, 261, 342, 263, 302, -1, - -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, 315, -1, 317, -1, -1, 362, 321, 284, -1, - -1, -1, 368, -1, -1, -1, -1, -1, -1, 333, - -1, 297, 336, 261, 338, -1, 302, -1, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, -1, -1, 321, 284, -1, 362, -1, - -1, -1, -1, 261, 368, -1, -1, 333, -1, 297, - 336, -1, 338, -1, 302, -1, -1, -1, -1, 307, - -1, 309, 310, 311, 312, -1, 284, -1, -1, 317, - -1, -1, -1, 321, -1, -1, 362, -1, -1, 297, - -1, -1, 368, 301, 302, 333, 261, -1, 336, 307, - 338, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, -1, 321, -1, -1, -1, -1, -1, 284, - -1, -1, -1, -1, 362, 333, 364, 365, 336, -1, - 338, -1, 297, -1, -1, -1, -1, 302, -1, -1, + 296, 297, -1, 342, -1, 301, 302, -1, 261, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, + -1, 317, -1, 362, 277, 321, -1, 323, 281, 368, + 369, 284, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 296, 297, -1, 342, -1, 301, 302, + 261, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, 362, -1, 321, -1, + 323, -1, 368, 284, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 297, -1, 261, 342, + -1, 302, -1, -1, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, 362, + 321, 284, -1, -1, -1, 368, -1, -1, -1, -1, + -1, -1, 333, -1, 297, 336, 261, 338, -1, 302, + -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, 284, + -1, 362, -1, 364, 365, -1, -1, 368, -1, -1, + 333, -1, 297, 336, 261, 338, 263, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, 362, -1, 321, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, - -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, + 315, -1, 317, -1, -1, -1, 321, 284, -1, 362, + -1, 364, 365, -1, -1, 368, -1, -1, 333, -1, + 297, 336, 261, 338, -1, 302, -1, -1, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, + 317, -1, -1, -1, 321, 284, -1, 362, -1, -1, + -1, -1, 261, 368, 263, -1, 333, -1, 297, 336, + -1, 338, -1, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, + -1, -1, 321, -1, -1, 362, -1, -1, 297, -1, + -1, 368, 261, 302, 333, -1, -1, 336, 307, 338, + 309, 310, 311, 312, -1, -1, 315, -1, 317, -1, + -1, -1, 321, -1, -1, 284, -1, -1, -1, -1, + -1, -1, 261, 362, 333, 364, 365, 336, 297, 338, + -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, + -1, -1, 321, 362, -1, -1, -1, -1, 297, -1, + -1, -1, -1, 302, 333, -1, -1, 336, 307, 338, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, -1, 321, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 362, 333, -1, -1, 336, -1, 338, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 362, + -1, -1, -1, 362, }; -#line 6425 "cs-parser.jay" +#line 6476 "cs-parser.jay" // // A class used to hold info about an operator declarator @@ -12608,12 +12681,12 @@ void start_anonymous (bool isLambda, ParametersCompiled parameters, bool isAsync if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (loc, "lambda expressions"); - current_anonymous_method = new LambdaExpression (isAsync, loc); + current_anonymous_method = new LambdaExpression (loc); } else { if (lang_version == LanguageVersion.ISO_1) FeatureIsNotAvailable (loc, "anonymous methods"); - current_anonymous_method = new AnonymousMethodExpression (isAsync, loc); + current_anonymous_method = new AnonymousMethodExpression (loc); } async_block = isAsync; @@ -12645,7 +12718,12 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block) void Error_SyntaxError (int token) { - Error_SyntaxError (0, token, "Unexpected symbol"); + Error_SyntaxError (0, token); +} + +void Error_SyntaxError (int error_code, int token) +{ + Error_SyntaxError (error_code, token, "Unexpected symbol"); } void Error_SyntaxError (int error_code, int token, string msg) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index c8a844e2d5..56d424c4f4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -428,19 +428,26 @@ extern_alias_directive { var lt = (Tokenizer.LocatedToken) $2; string s = lt.Value; - if (s != "alias"){ + if (s != "alias") { syntax_error (lt.Location, "`alias' expected"); - } else if (lang_version == LanguageVersion.ISO_1) { - FeatureIsNotAvailable (lt.Location, "external alias"); } else { - lt = (Tokenizer.LocatedToken) $3; - current_namespace.AddUsingExternalAlias (lt.Value, lt.Location, report); - ubag.AddExternAlias (GetLocation ($1), GetLocation ($2), lt, GetLocation ($4)); + if (lang_version == LanguageVersion.ISO_1) + FeatureIsNotAvailable (lt.Location, "external alias"); + + lt = (Tokenizer.LocatedToken) $3; + if (lt.Value == QualifiedAliasMember.GlobalAlias) { + RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location); + } + + var na = new UsingExternAlias (new MemberName (lt.Value, lt.Location), GetLocation ($1)); + current_namespace.AddUsing (na); + + lbag.AddLocation (na, GetLocation ($2), GetLocation ($4)); } } | EXTERN_ALIAS error { - syntax_error (GetLocation ($1), "`alias' expected"); // TODO: better + Error_SyntaxError (yyToken); } ; @@ -450,20 +457,22 @@ using_directives ; using_directive - : using_alias_directive - { - if (doc_support) - Lexer.doc_state = XmlCommentState.Allowed; - } - | using_namespace_directive + : using_namespace { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } ; -using_alias_directive - : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON +using_namespace + : USING namespace_name SEMICOLON + { + var un = new UsingNamespace ((MemberName) $2, GetLocation ($1)); + current_namespace.AddUsing (un); + + lbag.AddLocation (un, GetLocation ($3)); + } + | USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON { var lt = (Tokenizer.LocatedToken) $2; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -471,22 +480,16 @@ using_alias_directive "An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead"); } - current_namespace.AddUsingAlias (lt.Value, (MemberName) $4, GetLocation ($1)); - ubag.AddUsingAlias (GetLocation ($1), lt, GetLocation ($3), (MemberName) $4, GetLocation ($5)); - } + var un = new UsingAliasNamespace (new MemberName (lt.Value, lt.Location), (MemberName) $4, GetLocation ($1)); + current_namespace.AddUsing (un); + + lbag.AddLocation (un, GetLocation ($3), GetLocation ($5)); + } | USING error { Error_SyntaxError (yyToken); $$ = null; - } - ; - -using_namespace_directive - : USING namespace_name SEMICOLON - { - current_namespace.AddUsing ((MemberName) $2, GetLocation ($1)); - ubag.AddUsing (GetLocation ($1), (MemberName) $2, GetLocation ($3)); - } + } ; // @@ -5103,7 +5106,7 @@ statement_expression ExpressionStatement s = $1 as ExpressionStatement; if (s == null) { Expression.Error_InvalidExpressionStatement (report, GetLocation ($1)); - $$ = new InvalidStatementExpression ($1 as Expression); + $$ = new StatementErrorExpression ($1 as Expression); } else { $$ = new StatementExpression (s); } @@ -5152,9 +5155,10 @@ if_statement if ($7 is EmptyStatement) Warning_EmptyStatement (GetLocation ($7)); } - | IF open_parens_any boolean_expression error { - var eloc = GetLocation ($3); - report.Error (1026, eloc, "Expected a ')'"); + | IF open_parens_any boolean_expression error + { + Error_SyntaxError (yyToken); + $$ = new If ((BooleanExpression) $3, null, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2)); } @@ -5171,6 +5175,13 @@ switch_statement end_block (GetLocation ($8)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4), GetLocation ($5), GetLocation ($8)); } + | SWITCH open_parens_any expression error + { + Error_SyntaxError (yyToken); + + $$ = new Switch ((Expression) $3, null, null, GetLocation ($1)); + lbag.AddStatement ($$, GetLocation ($2)); + } ; opt_switch_sections @@ -5199,7 +5210,7 @@ switch_sections } | error { - Error_SyntaxError (yyToken); + Error_SyntaxError (yyToken); $$ = new List (); } ; @@ -5260,24 +5271,30 @@ while_statement $$ = new While ((BooleanExpression) $3, (Statement) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); } + | WHILE open_parens_any boolean_expression error + { + Error_SyntaxError (yyToken); + + $$ = new While ((BooleanExpression) $3, null, GetLocation ($1)); + lbag.AddStatement ($$, GetLocation ($2)); + } ; do_statement - : DO embedded_statement - WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON + : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON { $$ = new Do ((Statement) $2, (BooleanExpression) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($3), GetLocation ($4), GetLocation ($6), GetLocation ($7)); } | DO embedded_statement error { - var loc = GetLocation ($1); - report.Error (-100, loc, "Expected `while'"); - $$ = new Do ((Statement) $2, null, loc); + Error_SyntaxError (yyToken); + $$ = new Do ((Statement) $2, null, GetLocation ($1)); } - | DO embedded_statement - WHILE open_parens_any boolean_expression error + | DO embedded_statement WHILE open_parens_any boolean_expression error { + Error_SyntaxError (yyToken); + $$ = new Do ((Statement) $2, (BooleanExpression) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($3), GetLocation ($4)); } @@ -5383,10 +5400,35 @@ statement_expression_list ; foreach_statement - : FOREACH open_parens_any type IN expression CLOSE_PARENS + : FOREACH open_parens_any type error { report.Error (230, GetLocation ($1), "Type and identifier are both required in a foreach statement"); - $$ = null; + + start_block (GetLocation ($2)); + current_block.IsCompilerGenerated = true; + + Foreach f = new Foreach ((Expression) $3, null, null, null, GetLocation ($1)); + current_block.AddStatement (f); + + lbag.AddStatement (f, GetLocation ($2)); + $$ = end_block (GetLocation ($4)); + } + | FOREACH open_parens_any type identifier_inside_body error + { + Error_SyntaxError (yyToken); + + start_block (GetLocation ($2)); + current_block.IsCompilerGenerated = true; + + var lt = (Tokenizer.LocatedToken) $4; + var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location); + current_block.AddLocalName (li); + + Foreach f = new Foreach ((Expression) $3, li, null, null, GetLocation ($1)); + current_block.AddStatement (f); + + lbag.AddStatement (f, GetLocation ($2)); + $$ = end_block (GetLocation ($5)); } | FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS { @@ -5544,9 +5586,9 @@ try_statement $$ = new TryFinally (new TryCatch ((Block) $2, (List) $3, GetLocation ($1), true), (Block) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($4)); } - | TRY block error + | TRY block error { - report.Error (1524, GetLocation ($1), "Expected catch or finally"); + Error_SyntaxError (1524, yyToken); $$ = new TryCatch ((Block) $2, null, GetLocation ($1), false); } ; @@ -5564,15 +5606,11 @@ catch_clauses var l = (List) $1; Catch c = (Catch) $2; - if (l [0].IsGeneral) { + if (l [l.Count - 1].IsGeneral) { report.Error (1017, c.loc, "Try statement already has an empty catch block"); - } else { - if (c.IsGeneral) - l.Insert (0, c); - else - l.Add (c); } + l.Add (c); $$ = l; } ; @@ -5652,6 +5690,13 @@ lock_statement $$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); } + | LOCK open_parens_any expression error + { + Error_SyntaxError (yyToken); + + $$ = new Lock ((Expression) $3, null, GetLocation ($1)); + lbag.AddStatement ($$, GetLocation ($2)); + } ; fixed_statement @@ -5713,9 +5758,15 @@ using_statement if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation ($5)); - Using u = new Using ((Expression) $3, (Statement) $5, GetLocation ($1)); - lbag.AddStatement (u, GetLocation ($2), GetLocation ($4)); - $$ = u; + $$ = new Using ((Expression) $3, (Statement) $5, GetLocation ($1)); + lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); + } + | USING open_parens_any expression error + { + Error_SyntaxError (yyToken); + + $$ = new Using ((Expression) $3, null, GetLocation ($1)); + lbag.AddStatement ($$, GetLocation ($2)); } ; @@ -5959,7 +6010,7 @@ let_clause var sn = new Linq.RangeVariable (lt.Value, lt.Location); $$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1)); lbag.AddLocation ($$, GetLocation ($3)); - + current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -6747,12 +6798,12 @@ void start_anonymous (bool isLambda, ParametersCompiled parameters, bool isAsync if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (loc, "lambda expressions"); - current_anonymous_method = new LambdaExpression (isAsync, loc); + current_anonymous_method = new LambdaExpression (loc); } else { if (lang_version == LanguageVersion.ISO_1) FeatureIsNotAvailable (loc, "anonymous methods"); - current_anonymous_method = new AnonymousMethodExpression (isAsync, loc); + current_anonymous_method = new AnonymousMethodExpression (loc); } async_block = isAsync; @@ -6784,7 +6835,12 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block) void Error_SyntaxError (int token) { - Error_SyntaxError (0, token, "Unexpected symbol"); + Error_SyntaxError (0, token); +} + +void Error_SyntaxError (int error_code, int token) +{ + Error_SyntaxError (error_code, token, "Unexpected symbol"); } void Error_SyntaxError (int error_code, int token, string msg) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs index 69b5e04302..ef00985889 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs @@ -47,7 +47,6 @@ namespace Mono.CSharp { bool is_double_colon; - public bool IsDoubleColon { get { return is_double_colon; } } #if FULL_AST public Location DotLocation { @@ -124,6 +123,12 @@ namespace Mono.CSharp { } } + public bool IsDoubleColon { + get { + return is_double_colon; + } + } + public bool IsGeneric { get { if (TypeArguments != null) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs index b7efb87219..4150add5b4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs @@ -81,6 +81,13 @@ namespace Mono.CSharp { return parameters; } } + + public FullNamedExpression TypExpression { + get { + return ReturnType; + } + } + #endregion public override void Accept (StructuralVisitor visitor) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs index bdd059d9a6..bc09888f7b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs @@ -300,7 +300,7 @@ namespace Mono.CSharp tr.Start (TimeReporter.TimerType.UsingResolve); foreach (var source_file in ctx.SourceFiles) { - source_file.NamespaceContainer.Resolve (); + source_file.NamespaceContainer.Define (); } tr.Stop (TimeReporter.TimerType.UsingResolve); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs index 410dd4da0b..0d375367a5 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs @@ -4418,7 +4418,10 @@ namespace Mono.CSharp { var ac_p = p as ArrayContainer; if (ac_p != null) { - var ac_q = ((ArrayContainer) q); + var ac_q = q as ArrayContainer; + if (ac_q == null) + return null; + TypeSpec specific = MoreSpecific (ac_p.Element, ac_q.Element); if (specific == ac_p.Element) return p; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs index c996bc5e2a..ca2e34ff82 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs @@ -373,6 +373,7 @@ namespace Mono.CSharp // Need to setup MemberCache parser_result.CreateType (); + parser_result.NamespaceEntry.Define (); var method = parser_result.Methods[0] as Method; BlockContext bc = new BlockContext (method, method.Block, ctx.BuiltinTypes.Void); @@ -768,12 +769,17 @@ namespace Mono.CSharp return sb.ToString (); } - internal ICollection GetUsingList () + internal List GetUsingList () { var res = new List (); - foreach (var ue in source_file.NamespaceContainer.Usings) - res.Add (ue.Name); + foreach (var ue in source_file.NamespaceContainer.Usings) { + if (ue.Alias != null) + continue; + + res.Add (ue.NamespaceName.Name); + } + return res; } @@ -814,7 +820,7 @@ namespace Mono.CSharp public void LoadAssembly (string file) { var loader = new DynamicLoader (importer, ctx); - var assembly = loader.LoadAssemblyFile (file); + var assembly = loader.LoadAssemblyFile (file, false); if (assembly == null) return; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index b5928273d9..5c6602b7db 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -801,18 +801,18 @@ namespace Mono.CSharp LocalTemporary temporary; bool prepared; - public Expression Expr { - get { - return expr; - } - } - public Indirection (Expression expr, Location l) { this.expr = expr; loc = l; } + public Expression Expr { + get { + return expr; + } + } + public bool IsFixed { get { return true; } } @@ -1017,6 +1017,13 @@ namespace Mono.CSharp // Holds the real operation Expression operation; + public UnaryMutator (Mode m, Expression e, Location loc) + { + mode = m; + this.loc = loc; + expr = e; + } + public Mode UnaryMutatorMode { get { return mode; @@ -1029,13 +1036,6 @@ namespace Mono.CSharp } } - public UnaryMutator (Mode m, Expression e, Location loc) - { - mode = m; - this.loc = loc; - expr = e; - } - public override bool ContainsEmitWithAwait () { return expr.ContainsEmitWithAwait (); @@ -1283,6 +1283,7 @@ namespace Mono.CSharp target.expr = expr.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1371,6 +1372,10 @@ namespace Mono.CSharp { } + protected override string OperatorName { + get { return "is"; } + } + public override Expression CreateExpressionTree (ResolveContext ec) { Arguments args = Arguments.CreateForExpressionTree (ec, null, @@ -1545,10 +1550,6 @@ namespace Mono.CSharp return this; } - protected override string OperatorName { - get { return "is"; } - } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1566,6 +1567,10 @@ namespace Mono.CSharp { } + protected override string OperatorName { + get { return "as"; } + } + public override Expression CreateExpressionTree (ResolveContext ec) { Arguments args = Arguments.CreateForExpressionTree (ec, null, @@ -1644,14 +1649,10 @@ namespace Mono.CSharp return null; } - protected override string OperatorName { - get { return "as"; } - } public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); } - } // @@ -1753,13 +1754,6 @@ namespace Mono.CSharp public class DefaultValueExpression : Expression { Expression expr; - - - public Expression Expr { - get { - return this.expr; - } - } public DefaultValueExpression (Expression expr, Location loc) { @@ -1767,6 +1761,12 @@ namespace Mono.CSharp this.loc = loc; } + public Expression Expr { + get { + return this.expr; + } + } + public override bool IsSideEffectFree { get { return true; @@ -2225,11 +2225,15 @@ namespace Mono.CSharp } public Expression Left { - get { return this.left; } + get { + return this.left; + } } public Expression Right { - get { return this.right; } + get { + return this.right; + } } #endregion @@ -5235,7 +5239,7 @@ namespace Mono.CSharp } } - public Expression Expression { + public Expression Exp { get { return expr; } @@ -5490,6 +5494,7 @@ namespace Mono.CSharp return SLE.Expression.Call (instance_expr, (MethodInfo) mi.GetMetaInfo (), Arguments.MakeExpression (args, ctx)); #endif } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -5541,6 +5546,12 @@ namespace Mono.CSharp } } + public Expression TypeExpression { + get { + return RequestedType; + } + } + #endregion /// @@ -5933,6 +5944,12 @@ namespace Mono.CSharp get { return elements.Count; } } + public List Elements { + get { + return elements; + } + } + public Expression this [int index] { get { return elements [index]; @@ -5947,12 +5964,6 @@ namespace Mono.CSharp variable = value; } } - - public List Elements { - get { - return this.elements; - } - } #endregion public void Add (Expression expr) @@ -6044,24 +6055,16 @@ namespace Mono.CSharp // The number of constants in array initializers int const_initializers_count; -// bool only_constant_initializers; + bool only_constant_initializers; public List Arguments { get { return this.arguments; } } - public ComposedTypeSpecifier Rank { - get { return this.rank; } - } - public FullNamedExpression NewType { get { return this.requested_base_type; } } - public ArrayInitializer Initializers { - get { return this.initializers; } - } - public ArrayCreation (FullNamedExpression requested_base_type, List exprs, ComposedTypeSpecifier rank, ArrayInitializer initializers, Location l) : this (requested_base_type, rank, initializers, l) { @@ -6099,6 +6102,24 @@ namespace Mono.CSharp { } + public ComposedTypeSpecifier Rank { + get { + return this.rank; + } + } + + public FullNamedExpression TypeExpression { + get { + return this.requested_base_type; + } + } + + public ArrayInitializer Initializers { + get { + return this.initializers; + } + } + bool CheckIndices (ResolveContext ec, ArrayInitializer probe, int idx, bool specified_dims, int child_bounds) { if (initializers != null && bounds == null) { @@ -6179,7 +6200,7 @@ namespace Mono.CSharp ++const_initializers_count; } } else { -// only_constant_initializers = false; + only_constant_initializers = false; } array_data.Add (element); @@ -6284,7 +6305,7 @@ namespace Mono.CSharp protected bool ResolveInitializers (ResolveContext ec) { -// only_constant_initializers = true; + only_constant_initializers = true; if (arguments != null) { bool res = true; @@ -7124,8 +7145,8 @@ namespace Mono.CSharp /// public class Arglist : Expression { - public Arguments Arguments { get; private set; } - + Arguments arguments; + public Arglist (Location loc) : this (null, loc) { @@ -7133,18 +7154,24 @@ namespace Mono.CSharp public Arglist (Arguments args, Location l) { - Arguments = args; + arguments = args; loc = l; } + public Arguments Arguments { + get { + return arguments; + } + } + public MetaType[] ArgumentTypes { get { - if (Arguments == null) + if (arguments == null) return MetaType.EmptyTypes; - var retval = new MetaType[Arguments.Count]; - for (int i = 0; i < retval.Length; i++) - retval[i] = Arguments[i].Expr.Type.GetMetaInfo (); + var retval = new MetaType[arguments.Count]; + for (int i = 0; i < retval.Length; i++) + retval[i] = arguments[i].Expr.Type.GetMetaInfo (); return retval; } @@ -7165,9 +7192,9 @@ namespace Mono.CSharp { eclass = ExprClass.Variable; type = InternalType.Arglist; - if (Arguments != null) { + if (arguments != null) { bool dynamic; // Can be ignored as there is always only 1 overload - Arguments.Resolve (ec, out dynamic); + arguments.Resolve (ec, out dynamic); } return this; @@ -7175,17 +7202,18 @@ namespace Mono.CSharp public override void Emit (EmitContext ec) { - if (Arguments != null) - Arguments.Emit (ec); + if (arguments != null) + arguments.Emit (ec); } protected override void CloneTo (CloneContext clonectx, Expression t) { Arglist target = (Arglist) t; - if (Arguments != null) - target.Arguments = Arguments.Clone (clonectx); + if (arguments != null) + target.arguments = arguments.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -7207,6 +7235,12 @@ namespace Mono.CSharp this.loc = loc; } + public FullNamedExpression TypeExpression { + get { + return texpr; + } + } + public override bool ContainsEmitWithAwait () { return false; @@ -7597,12 +7631,12 @@ namespace Mono.CSharp /// Implements the sizeof expression /// public class SizeOf : Expression { - public readonly Expression QueriedType; + readonly Expression texpr; TypeSpec type_queried; public SizeOf (Expression queried_type, Location l) { - this.QueriedType = queried_type; + this.texpr = queried_type; loc = l; } @@ -7612,6 +7646,12 @@ namespace Mono.CSharp } } + public Expression TypeExpression { + get { + return texpr; + } + } + public override bool ContainsEmitWithAwait () { return false; @@ -7625,7 +7665,7 @@ namespace Mono.CSharp protected override Expression DoResolve (ResolveContext ec) { - type_queried = QueriedType.ResolveAsType (ec); + type_queried = texpr.ResolveAsType (ec); if (type_queried == null) return null; @@ -7693,6 +7733,12 @@ namespace Mono.CSharp this.alias = alias; } + public string Alias { + get { + return alias; + } + } + public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext ec) { if (alias == GlobalAlias) { @@ -7707,19 +7753,8 @@ namespace Mono.CSharp ec.Module.Compiler.Report.Error (432, loc, "Alias `{0}' not found", alias); return null; } - - FullNamedExpression fne = base.ResolveAsTypeOrNamespace (ec); - if (fne == null) - return null; - - if (expr.eclass == ExprClass.Type) { - ec.Module.Compiler.Report.Error (431, loc, - "Alias `{0}' cannot be used with '::' since it denotes a type. Consider replacing '::' with '.'", alias); - - return null; - } - - return fne; + + return base.ResolveAsTypeOrNamespace (ec); } protected override Expression DoResolve (ResolveContext ec) @@ -7727,13 +7762,6 @@ namespace Mono.CSharp return ResolveAsTypeOrNamespace (ec); } - protected override void Error_IdentifierNotFound (IMemberContext rc, TypeSpec expr_type, string identifier) - { - rc.Module.Compiler.Report.Error (687, loc, - "A namespace alias qualifier `{0}' did not resolve to a namespace or a type", - GetSignatureForError ()); - } - public override string GetSignatureForError () { string name = Name; @@ -7746,6 +7774,14 @@ namespace Mono.CSharp public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions) { + if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) { + rc.Module.Compiler.Report.Error (687, loc, + "The namespace alias qualifier `::' cannot be used to invoke a method. Consider using `.' instead", + GetSignatureForError ()); + + return null; + } + return DoResolve (rc); } @@ -8105,6 +8141,14 @@ namespace Mono.CSharp return null; } + var qam = this as QualifiedAliasMember; + if (qam != null) { + rc.Module.Compiler.Report.Error (431, loc, + "Alias `{0}' cannot be used with `::' since it denotes a type. Consider replacing `::' with `.'", + qam.Alias); + + } + TypeSpec nested = null; while (expr_type != null) { nested = MemberCache.FindNestedType (expr_type, Name, Arity); @@ -8265,6 +8309,7 @@ namespace Mono.CSharp target.Expr = Expr.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -8329,6 +8374,7 @@ namespace Mono.CSharp target.Expr = Expr.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -9539,15 +9585,7 @@ namespace Mono.CSharp TypeSpec otype; Expression t; Expression count; - - public Expression TypeExpression { - get { return this.t; } - } - public Expression CountExpression { - get { return this.count; } - } - public StackAlloc (Expression type, Expression count, Location l) { t = type; @@ -9555,6 +9593,18 @@ namespace Mono.CSharp loc = l; } + public Expression TypeExpression { + get { + return this.t; + } + } + + public Expression CountExpression { + get { + return this.count; + } + } + public override bool ContainsEmitWithAwait () { return false; @@ -10033,18 +10083,18 @@ namespace Mono.CSharp CollectionOrObjectInitializers initializers; IMemoryLocation instance; - public CollectionOrObjectInitializers Initializers { - get { - return initializers; - } - } - public NewInitialize (FullNamedExpression requested_type, Arguments arguments, CollectionOrObjectInitializers initializers, Location l) : base (requested_type, arguments, l) { this.initializers = initializers; } + public CollectionOrObjectInitializers Initializers { + get { + return initializers; + } + } + protected override void CloneTo (CloneContext clonectx, Expression t) { base.CloneTo (clonectx, t); @@ -10155,10 +10205,6 @@ namespace Mono.CSharp readonly TypeContainer parent; AnonymousTypeClass anonymous_type; - public List Parameters { - get { return this.parameters; } - } - public NewAnonymousType (List parameters, TypeContainer parent, Location loc) : base (null, null, loc) { @@ -10166,6 +10212,12 @@ namespace Mono.CSharp this.parent = parent; } + public List Parameters { + get { + return this.parameters; + } + } + protected override void CloneTo (CloneContext clonectx, Expression target) { if (parameters == null) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs index 44001051fd..34ac89f8b3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs @@ -94,6 +94,12 @@ namespace Mono.CSharp { #region Properties + public List TypeExpressions { + get { + return constraints; + } + } + public Location Location { get { return loc; @@ -385,6 +391,12 @@ namespace Mono.CSharp { } } + public Constraints Constraints { + get { + return constraints; + } + } + public IAssemblyDefinition DeclaringAssembly { get { return Module.DeclaringAssembly; @@ -440,12 +452,6 @@ namespace Mono.CSharp { } } - public Constraints Constraints { - get { - return this.constraints; - } - } - #endregion // @@ -1911,6 +1917,12 @@ namespace Mono.CSharp { } } + public List TypeExpressions { + get { + return this.args; + } + } + public string GetSignatureForError() { StringBuilder sb = new StringBuilder (); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs index b60e5b53f9..df73d2466f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs @@ -33,16 +33,16 @@ namespace Mono.CSharp protected T machine_initializer; int resume_pc; - public Expression Expr { - get { return this.expr; } - } - protected YieldStatement (Expression expr, Location l) { this.expr = expr; loc = l; } + public Expression Expr { + get { return this.expr; } + } + protected override void CloneTo (CloneContext clonectx, Statement t) { var target = (YieldStatement) t; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs index d7d8a5932d..f1cc07b195 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs @@ -24,13 +24,8 @@ namespace Mono.CSharp { // A list of Parameters (explicitly typed parameters) // An ImplicitLambdaParameter // - public LambdaExpression (bool isAsync, Location loc) - : base (isAsync, loc) - { - } - public LambdaExpression (Location loc) - : this (false, loc) + : base (loc) { } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs index 998f340a98..60310f02c4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs @@ -287,6 +287,12 @@ namespace Mono.CSharp.Linq this.identifier = identifier; } + public RangeVariable Identifier { + get { + return identifier; + } + } + public FullNamedExpression IdentifierType { get; set; } protected Invocation CreateCastExpression (Expression lSide) @@ -476,6 +482,12 @@ namespace Mono.CSharp.Linq } } + public Expression SelectorExpression { + get { + return element_selector; + } + } + protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args) { base.CreateArguments (ec, parameter, ref args); @@ -519,6 +531,13 @@ namespace Mono.CSharp.Linq get { return this.GetIntoVariable (); } } + public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc) + : base (block, lt, inner, loc) + { + this.outer_selector = outerSelector; + this.inner_selector = innerSelector; + } + public QueryBlock InnerSelector { get { return inner_selector; @@ -530,13 +549,6 @@ namespace Mono.CSharp.Linq return outer_selector; } } - - public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc) - : base (block, lt, inner, loc) - { - this.outer_selector = outerSelector; - this.inner_selector = innerSelector; - } protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs index 95be95d40b..bb0370914b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs @@ -95,8 +95,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class CharLiteral : CharConstant, ILiteralConstant @@ -111,8 +116,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class IntLiteral : IntConstant, ILiteralConstant @@ -143,8 +153,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class UIntLiteral : UIntConstant, ILiteralConstant @@ -159,8 +174,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class LongLiteral : LongConstant, ILiteralConstant @@ -175,8 +195,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class ULongLiteral : ULongConstant, ILiteralConstant @@ -191,8 +216,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class FloatLiteral : FloatConstant, ILiteralConstant @@ -207,8 +237,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class DoubleLiteral : DoubleConstant, ILiteralConstant @@ -245,8 +280,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class DecimalLiteral : DecimalConstant, ILiteralConstant @@ -261,8 +301,13 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } public class StringLiteral : StringConstant, ILiteralConstant @@ -277,7 +322,12 @@ namespace Mono.CSharp } #if FULL_AST - char[] ILiteralConstant.ParsedValue { get; set; } + public char[] ParsedValue { get; set; } #endif + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs index b545ce9051..4550e2042c 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs @@ -899,6 +899,11 @@ namespace Mono.CSharp { #endregion + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public static Method Create (DeclSpace parent, GenericMethod generic, FullNamedExpression returnType, Modifiers mod, MemberName name, ParametersCompiled parameters, Attributes attrs, bool hasConstraints) { @@ -1175,11 +1180,6 @@ namespace Mono.CSharp { return true; } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - // // Creates the type // @@ -1569,6 +1569,11 @@ namespace Mono.CSharp { (Initializer.Arguments == null); } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.IsValidSecurityAttribute ()) { @@ -1614,11 +1619,6 @@ namespace Mono.CSharp { return true; } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - // // Creates the ConstructorBuilder // @@ -2155,6 +2155,11 @@ namespace Mono.CSharp { ModFlags |= Modifiers.PROTECTED | Modifiers.OVERRIDE; } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.Conditional) { @@ -2164,10 +2169,6 @@ namespace Mono.CSharp { base.ApplyAttributeBuilder (a, ctor, cdata, pa); } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } protected override bool CheckBase () { @@ -2514,6 +2515,11 @@ namespace Mono.CSharp { Block = block; } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.Conditional) { @@ -2524,11 +2530,6 @@ namespace Mono.CSharp { base.ApplyAttributeBuilder (a, ctor, cdata, pa); } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override bool Define () { const Modifiers RequiredModifiers = Modifiers.PUBLIC | Modifiers.STATIC; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs index 3cdac0f082..f5865f2495 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs @@ -35,6 +35,11 @@ namespace Mono.CSharp { } } + public static void Error_GlobalNamespaceRedefined (Report report, Location loc) + { + report.Error (1681, loc, "The global extern alias cannot be redefined"); + } + public void RegisterNamespace (Namespace child) { if (child != this) @@ -578,6 +583,9 @@ namespace Mono.CSharp { // public class NamespaceContainer : IMemberContext, ITypesContainer { + static readonly Namespace[] empty_namespaces = new Namespace[0]; + static readonly string[] empty_using_list = new string[0]; + Namespace ns; readonly ModuleContainer module; @@ -588,20 +596,18 @@ namespace Mono.CSharp { NamespaceContainer implicit_parent; int symfile_id; - // Namespace using import block - List using_aliases; - List using_clauses; + List clauses; + + // Used by parsed to check for parser errors public bool DeclarationFound; - // End bool resolved; public readonly bool IsImplicit; public readonly TypeContainer SlaveDeclSpace; - static readonly Namespace [] empty_namespaces = new Namespace [0]; - static readonly string[] empty_using_list = new string[0]; - Namespace [] namespace_using_table; + Namespace[] namespace_using_table; + Dictionary aliases; public NamespaceContainer (MemberName name, ModuleContainer module, NamespaceContainer parent, CompilationSourceFile sourceFile) { @@ -644,89 +650,30 @@ namespace Mono.CSharp { } } - public CompilationSourceFile SourceFile { + public NamespaceContainer Parent { get { - return file; + return parent; } } - public List Usings { + public CompilationSourceFile SourceFile { get { - return using_clauses; + return file; } } - #endregion - - // - // Extracts the using alises and using clauses into a couple of - // arrays that might already have the same information; Used by the - // C# Eval mode. - // - public void Extract (List out_using_aliases, List out_using_clauses) - { - if (using_aliases != null){ - foreach (NamespaceUsingAlias uae in using_aliases){ - bool replaced = false; - - for (int i = 0; i < out_using_aliases.Count; i++){ - NamespaceUsingAlias out_uea = (NamespaceUsingAlias) out_using_aliases [i]; - - if (out_uea.Alias == uae.Alias){ - out_using_aliases [i] = uae; - replaced = true; - break; - } - } - if (!replaced) - out_using_aliases.Add (uae); - } - } - - if (using_clauses != null){ - foreach (NamespaceUsing ue in using_clauses){ - bool found = false; - - foreach (NamespaceUsing out_ue in out_using_clauses) - if (out_ue.Name == ue.Name){ - found = true; - break; - } - if (!found) - out_using_clauses.Add (ue); - } - } - } - - // - // According to section 16.3.1 (using-alias-directive), the namespace-or-type-name is - // resolved as if the immediately containing namespace body has no using-directives. - // - // Section 16.3.2 says that the same rule is applied when resolving the namespace-name - // in the using-namespace-directive. - // - // To implement these rules, the expressions in the using directives are resolved using - // the "doppelganger" (ghostly bodiless duplicate). - // - NamespaceContainer doppelganger; - NamespaceContainer Doppelganger { + public List Usings { get { - if (!IsImplicit && doppelganger == null) { - doppelganger = new NamespaceContainer (module, ImplicitParent, file, ns, true); - doppelganger.using_aliases = using_aliases; - } - return doppelganger; + return clauses; } } + #endregion + public Namespace NS { get { return ns; } } - public NamespaceContainer Parent { - get { return parent; } - } - public NamespaceContainer ImplicitParent { get { if (parent == null) @@ -740,78 +687,47 @@ namespace Mono.CSharp { } } - /// - /// Records a new namespace for resolving name references - /// - public void AddUsing (MemberName name, Location loc) + public void AddUsing (UsingNamespace un) { if (DeclarationFound){ - Compiler.Report.Error (1529, loc, "A using clause must precede all other namespace elements except extern alias declarations"); + Compiler.Report.Error (1529, un.Location, "A using clause must precede all other namespace elements except extern alias declarations"); } - if (using_clauses == null) { - using_clauses = new List (); - } else { - foreach (NamespaceUsing old_entry in using_clauses) { - if (name.Equals (old_entry.MemberName)) { - Compiler.Report.SymbolRelatedToPreviousError (old_entry.Location, old_entry.GetSignatureForError ()); - Compiler.Report.Warning (105, 3, loc, "The using directive for `{0}' appeared previously in this namespace", name.GetSignatureForError ()); - return; - } - } - } + if (clauses == null) + clauses = new List (); - using_clauses.Add (new NamespaceUsing (name)); - } + clauses.Add (un); - public void AddUsingAlias (string alias, MemberName name, Location loc) - { - if (DeclarationFound){ - Compiler.Report.Error (1529, loc, "A using clause must precede all other namespace elements except extern alias declarations"); - } - - AddUsingAlias (new LocalUsingAliasEntry (alias, name, loc)); + resolved = false; } - public void AddUsingExternalAlias (string alias, Location loc, Report Report) + public void AddUsing (UsingAliasNamespace un) { - bool not_first = using_clauses != null || DeclarationFound; - if (using_aliases != null && !not_first) { - foreach (NamespaceUsingAlias uae in using_aliases) { - if (uae is LocalUsingAliasEntry) { - not_first = true; - break; - } - } - } - - if (not_first) - Report.Error (439, loc, "An extern alias declaration must precede all other elements"); - - if (alias == "global") { - Error_GlobalNamespaceRedefined (loc, Report); - return; + if (DeclarationFound){ + Compiler.Report.Error (1529, un.Location, "A using clause must precede all other namespace elements except extern alias declarations"); } - AddUsingAlias (new NamespaceUsingAlias (alias, loc)); + AddAlias (un); } - void AddUsingAlias (NamespaceUsingAlias uae) + void AddAlias (UsingAliasNamespace un) { - if (using_aliases == null) { - using_aliases = new List (); + if (clauses == null) { + clauses = new List (); } else { - foreach (NamespaceUsingAlias entry in using_aliases) { - if (uae.Alias == entry.Alias) { - Compiler.Report.SymbolRelatedToPreviousError (uae.Location, uae.Alias); - Compiler.Report.Error (1537, entry.Location, "The using alias `{0}' appeared previously in this namespace", - entry.Alias); - return; + foreach (var entry in clauses) { + var a = entry as UsingAliasNamespace; + if (a != null && a.Alias.Equals (un.Alias)) { + Compiler.Report.SymbolRelatedToPreviousError (a.Location, ""); + Compiler.Report.Error (1537, un.Location, + "The using alias `{0}' appeared previously in this namespace", un.Alias.GetSignatureForError ()); } } } - using_aliases.Add (uae); + clauses.Add (un); + + resolved = false; } // @@ -821,7 +737,7 @@ namespace Mono.CSharp { public ExtensionMethodCandidates LookupExtensionMethod (TypeSpec extensionType, string name, int arity) { List candidates = null; - foreach (Namespace n in GetUsingTable ()) { + foreach (Namespace n in namespace_using_table) { var a = n.LookupExtensionMethod (this, extensionType, name, arity); if (a == null) continue; @@ -866,7 +782,7 @@ namespace Mono.CSharp { IEnumerable all = Enumerable.Empty (); for (NamespaceContainer curr_ns = this; curr_ns != null; curr_ns = curr_ns.ImplicitParent){ - foreach (Namespace using_ns in GetUsingTable ()){ + foreach (Namespace using_ns in namespace_using_table){ if (prefix.StartsWith (using_ns.Name)){ int ld = prefix.LastIndexOf ('.'); if (ld != -1){ @@ -881,18 +797,35 @@ namespace Mono.CSharp { return all.Distinct ().ToList (); } + + + // + // Looks-up a alias named @name in this and surrounding namespace declarations + // + public FullNamedExpression LookupExternAlias (string name) + { + if (aliases == null) + return null; + + UsingAliasNamespace uan; + if (aliases.TryGetValue (name, out uan) && uan is UsingExternAlias) + return uan.ResolvedExpression; + + return null; + } + // // Looks-up a alias named @name in this and surrounding namespace declarations + // public FullNamedExpression LookupNamespaceAlias (string name) { for (NamespaceContainer n = this; n != null; n = n.ImplicitParent) { - if (n.using_aliases == null) + if (n.aliases == null) continue; - foreach (NamespaceUsingAlias ue in n.using_aliases) { - if (ue.Alias == name) - return ue.Resolve (Doppelganger ?? this, Doppelganger == null); - } + UsingAliasNamespace uan; + if (n.aliases.TryGetValue (name, out uan)) + return uan.ResolvedExpression; } return null; @@ -908,26 +841,19 @@ namespace Mono.CSharp { // // Check aliases. // - if (using_aliases != null && arity == 0) { - foreach (NamespaceUsingAlias ue in using_aliases) { - if (ue.Alias == name) { - if (fne != null) { - if (Doppelganger != null) { - if (mode == LookupMode.Normal) { - // TODO: Namespace has broken location - //Report.SymbolRelatedToPreviousError (fne.Location, null); - Compiler.Report.SymbolRelatedToPreviousError (ue.Location, null); - Compiler.Report.Error (576, loc, - "Namespace `{0}' contains a definition with same name as alias `{1}'", - GetSignatureForError (), name); - } - } else { - return fne; - } - } - - return ue.Resolve (Doppelganger ?? this, Doppelganger == null); + if (aliases != null && arity == 0) { + UsingAliasNamespace uan; + if (aliases.TryGetValue (name, out uan)) { + if (fne != null) { + // TODO: Namespace has broken location + //Report.SymbolRelatedToPreviousError (fne.Location, null); + Compiler.Report.SymbolRelatedToPreviousError (uan.Location, null); + Compiler.Report.Error (576, loc, + "Namespace `{0}' contains a definition with same name as alias `{1}'", + GetSignatureForError (), name); } + + return uan.ResolvedExpression; } } @@ -941,9 +867,11 @@ namespace Mono.CSharp { // Check using entries. // FullNamedExpression match = null; - foreach (Namespace using_ns in GetUsingTable ()) { + foreach (Namespace using_ns in namespace_using_table) { + // // A using directive imports only types contained in the namespace, it // does not import any nested namespaces + // fne = using_ns.LookupType (this, name, arity, mode, loc); if (fne == null) continue; @@ -983,41 +911,20 @@ namespace Mono.CSharp { return match; } - Namespace [] GetUsingTable () - { - if (namespace_using_table != null) - return namespace_using_table; - - if (using_clauses == null) - return empty_namespaces; - - var list = new List (using_clauses.Count); - - foreach (NamespaceUsing ue in using_clauses) { - Namespace using_ns = ue.Resolve (Doppelganger); - if (using_ns == null) - continue; - - list.Add (using_ns); - } - - if (Compiler.Settings.StatementMode) - return list.ToArray (); - - namespace_using_table = list.ToArray (); - return namespace_using_table; - } - public int SymbolFileID { get { if (symfile_id == 0 && file.SourceFileEntry != null) { int parent_id = parent == null ? 0 : parent.SymbolFileID; string [] using_list = empty_using_list; - if (using_clauses != null) { - using_list = new string [using_clauses.Count]; - for (int i = 0; i < using_clauses.Count; i++) - using_list [i] = ((NamespaceUsing) using_clauses [i]).MemberName.GetName (); + if (clauses != null) { + // TODO: Why is it needed, what to do with aliases + var ul = new List (); + foreach (var c in clauses) { + ul.Add (c.NamespaceName.GetName ()); + } + + using_list = ul.ToArray (); } symfile_id = SymbolWriter.DefineNamespace (ns.Name, file.CompileUnitEntry, using_list, parent_id); @@ -1036,11 +943,6 @@ namespace Mono.CSharp { Console.WriteLine (" Try using -pkg:" + s); } - public static void Error_GlobalNamespaceRedefined (Location loc, Report Report) - { - Report.Error (1681, loc, "The global extern alias cannot be redefined"); - } - public static void Error_NamespaceNotFound (Location loc, string name, Report Report) { Report.Error (246, loc, "The type or namespace name `{0}' could not be found. Are you missing a using directive or an assembly reference?", @@ -1069,29 +971,76 @@ namespace Mono.CSharp { } } - /// - /// Used to validate that all the using clauses are correct - /// after we are finished parsing all the files. - /// - public void Resolve () + public void Define () { if (resolved) return; + // FIXME: Because we call Define from bottom not top + if (parent != null) + parent.Define (); + + namespace_using_table = empty_namespaces; resolved = true; - if (using_aliases != null) { - foreach (NamespaceUsingAlias ue in using_aliases) - ue.Resolve (Doppelganger, Doppelganger == null); - } + if (clauses != null) { + var list = new List (clauses.Count); + bool post_process_using_aliases = false; + + for (int i = 0; i < clauses.Count; ++i) { + var entry = clauses[i]; + + if (entry.Alias != null) { + if (aliases == null) + aliases = new Dictionary (); + + // + // Aliases are not available when resolving using section + // except extern aliases + // + if (entry is UsingExternAlias) { + entry.Define (this); + if (entry.ResolvedExpression != null) + aliases.Add (entry.Alias.Name, (UsingExternAlias) entry); + + clauses.RemoveAt (i--); + } else { + post_process_using_aliases = true; + } - if (using_clauses != null) { - foreach (NamespaceUsing ue in using_clauses) - ue.Resolve (Doppelganger); - } + continue; + } - if (parent != null) - parent.Resolve (); + entry.Define (this); + + Namespace using_ns = entry.ResolvedExpression as Namespace; + if (using_ns == null) + continue; + + if (list.Contains (using_ns)) { + Compiler.Report.Warning (105, 3, entry.Location, + "The using directive for `{0}' appeared previously in this namespace", using_ns.GetSignatureForError ()); + } else { + list.Add (using_ns); + } + } + + namespace_using_table = list.ToArray (); + + if (post_process_using_aliases) { + for (int i = 0; i < clauses.Count; ++i) { + var entry = clauses[i]; + if (entry.Alias != null) { + entry.Define (this); + if (entry.ResolvedExpression != null) { + aliases.Add (entry.Alias.Name, (UsingAliasNamespace) entry); + } + + clauses.RemoveAt (i--); + } + } + } + } } public string GetSignatureForError () @@ -1118,7 +1067,7 @@ namespace Mono.CSharp { } public bool IsObsolete { - get { return SlaveDeclSpace.IsObsolete; } + get { return false; } } public bool IsUnsafe { @@ -1136,106 +1085,199 @@ namespace Mono.CSharp { #endregion } - public class NamespaceUsing + public class UsingNamespace { readonly MemberName name; - Namespace resolved; + readonly Location loc; + protected FullNamedExpression resolved; - public NamespaceUsing (MemberName name) + public UsingNamespace (MemberName name, Location loc) { this.name = name; + this.loc = loc; } - public string GetSignatureForError () - { - return name.GetSignatureForError (); - } + #region Properties - public Location Location - { - get { return name.Location; } + public virtual MemberName Alias { + get { + return null; + } } - public MemberName MemberName - { - get { return name; } + public Location Location { + get { + return loc; + } } - public string Name - { - get { return GetSignatureForError (); } + public MemberName NamespaceName { + get { + return name; + } } - public Namespace Resolve (IMemberContext rc) - { - if (resolved != null) + public FullNamedExpression ResolvedExpression { + get { return resolved; + } + } - FullNamedExpression fne = name.GetTypeExpression ().ResolveAsTypeOrNamespace (rc); - if (fne == null) - return null; + #endregion - resolved = fne as Namespace; - if (resolved == null) { - rc.Module.Compiler.Report.SymbolRelatedToPreviousError (fne.Type); - rc.Module.Compiler.Report.Error (138, Location, - "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", - GetSignatureForError ()); + public string GetSignatureForError () + { + return name.GetSignatureForError (); + } + + public virtual void Define (NamespaceContainer ctx) + { + resolved = name.GetTypeExpression ().ResolveAsTypeOrNamespace (ctx); + var ns = resolved as Namespace; + if (ns == null) { + if (resolved != null) { + ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (resolved.Type); + ctx.Module.Compiler.Report.Error (138, Location, + "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", + GetSignatureForError ()); + } } - return resolved; } } - public class NamespaceUsingAlias + public class UsingExternAlias : UsingAliasNamespace { - public readonly string Alias; - public Location Location; - - public NamespaceUsingAlias (string alias, Location loc) + public UsingExternAlias (MemberName alias, Location loc) + : base (alias, null, loc) { - this.Alias = alias; - this.Location = loc; } - public virtual FullNamedExpression Resolve (IMemberContext rc, bool local) + public override void Define (NamespaceContainer ctx) { - FullNamedExpression fne = rc.Module.GetRootNamespace (Alias); - if (fne == null) { - rc.Module.Compiler.Report.Error (430, Location, + resolved = ctx.Module.GetRootNamespace (Alias.Name); + if (resolved == null) { + ctx.Module.Compiler.Report.Error (430, Location, "The extern alias `{0}' was not specified in -reference option", - Alias); + Alias.Name); } - - return fne; } } - class LocalUsingAliasEntry : NamespaceUsingAlias + public class UsingAliasNamespace : UsingNamespace { - FullNamedExpression resolved; - MemberName value; + readonly MemberName alias; - public LocalUsingAliasEntry (string alias, MemberName name, Location loc) - : base (alias, loc) + struct AliasContext : IMemberContext { - this.value = name; - } + readonly NamespaceContainer ns; - public override FullNamedExpression Resolve (IMemberContext rc, bool local) - { - if (resolved != null || value == null) - return resolved; + public AliasContext (NamespaceContainer ns) + { + this.ns = ns; + } + + public TypeSpec CurrentType { + get { + return null; + } + } + + public TypeParameter[] CurrentTypeParameters { + get { + return null; + } + } + + public MemberCore CurrentMemberDefinition { + get { + return null; + } + } + + public bool IsObsolete { + get { + return false; + } + } + + public bool IsUnsafe { + get { + throw new NotImplementedException (); + } + } + + public bool IsStatic { + get { + throw new NotImplementedException (); + } + } + + public ModuleContainer Module { + get { + return ns.Module; + } + } + + public string GetSignatureForError () + { + throw new NotImplementedException (); + } - if (local) + public ExtensionMethodCandidates LookupExtensionMethod (TypeSpec extensionType, string name, int arity) + { return null; + } + + public FullNamedExpression LookupNamespaceOrType (string name, int arity, LookupMode mode, Location loc) + { + var fne = ns.NS.LookupTypeOrNamespace (ns, name, arity, mode, loc); + if (fne != null) + return fne; + + // + // Only extern aliases are allowed in this context + // + fne = ns.LookupExternAlias (name); + if (fne != null) + return fne; + + if (ns.ImplicitParent != null) + return ns.ImplicitParent.LookupNamespaceOrType (name, arity, mode, loc); - resolved = value.GetTypeExpression ().ResolveAsTypeOrNamespace (rc); - if (resolved == null) { - value = null; return null; } - return resolved; + public FullNamedExpression LookupNamespaceAlias (string name) + { + return ns.LookupNamespaceAlias (name); + } + } + + public UsingAliasNamespace (MemberName alias, MemberName ns, Location loc) + : base (ns, loc) + { + this.alias = alias; + } + + public override MemberName Alias { + get { + return alias; + } + } + + public override void Define (NamespaceContainer ctx) + { + // + // The namespace-or-type-name of a using-alias-directive is resolved as if + // the immediately containing compilation unit or namespace body had no + // using-directives. A using-alias-directive may however be affected + // by extern-alias-directives in the immediately containing compilation + // unit or namespace body + // + // We achieve that by introducing alias-context which redirect any local + // namespace or type resolve calls to parent namespace + // + resolved = NamespaceName.GetTypeExpression ().ResolveAsTypeOrNamespace (new AliasContext (ctx)); } } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs index b173304cb2..e451167dc5 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs @@ -1001,20 +1001,24 @@ namespace Mono.CSharp.Nullable Expression left, right; Unwrap unwrap; - public Expression Left { - get { return this.left; } - } - - public Expression Right { - get { return this.right; } - } - public NullCoalescingOperator (Expression left, Expression right, Location loc) { this.left = left; this.right = right; this.loc = loc; } + + public Expression LeftExpression { + get { + return left; + } + } + + public Expression Right { + get { + return right; + } + } public override Expression CreateExpressionTree (ResolveContext ec) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs index 9fb4a57ffe..0a5590703e 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs @@ -234,10 +234,7 @@ namespace Mono.CSharp { TemporaryVariableReference expr_tree_variable; HoistedVariable hoisted_variant; - - public Modifier ParameterModifier { get { return modFlags; }} - public Expression DefaultExpression { get { return default_expr; }} - + public Parameter (FullNamedExpression type, string name, Modifier mod, Attributes attrs, Location loc) { this.name = name; @@ -251,6 +248,12 @@ namespace Mono.CSharp { #region Properties + public Expression DefaultExpression { + get { + return default_expr; + } + } + public DefaultParameterValueExpression DefaultValue { get { return default_expr as DefaultParameterValueExpression; @@ -279,6 +282,12 @@ namespace Mono.CSharp { } } + public Modifier ParameterModifier { + get { + return modFlags; + } + } + public TypeSpec Type { get { return parameter_type; @@ -1212,7 +1221,7 @@ namespace Mono.CSharp { // // Default parameter value expression. We need this wrapper to handle - // default parameter values of folded constants when for indexer parameters + // default parameter values of folded constants (e.g. indexer parameters). // The expression is resolved only once but applied to two methods which // both share reference to this expression and we ensure that resolving // this expression always returns same instance diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs index 7c8f069b17..6f415517b4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs @@ -733,6 +733,12 @@ namespace Mono.CSharp { } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + + void CreateAutomaticProperty () { // Create backing field @@ -757,11 +763,6 @@ namespace Mono.CSharp Set.Block.AddStatement (new StatementExpression (a)); } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override bool Define () { if (!base.Define ()) @@ -857,6 +858,11 @@ namespace Mono.CSharp { } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override bool Define() { if (!base.Define ()) @@ -871,12 +877,6 @@ namespace Mono.CSharp return attribute_targets; } } - - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - } /// @@ -999,6 +999,12 @@ namespace Mono.CSharp #region Properties + public List Declarators { + get { + return this.declarators; + } + } + bool HasBackingField { get { return !IsInterface && (ModFlags & Modifiers.ABSTRACT) == 0; @@ -1020,14 +1026,14 @@ namespace Mono.CSharp } } - public List Declarators { - get { - return this.declarators; - } - } - #endregion + + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public void AddDeclarator (FieldDeclarator declarator) { if (declarators == null) @@ -1105,11 +1111,6 @@ namespace Mono.CSharp return true; } - - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } } public abstract class Event : PropertyBasedMember @@ -1513,6 +1514,12 @@ namespace Mono.CSharp #endregion + + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.IndexerName) { @@ -1534,11 +1541,6 @@ namespace Mono.CSharp return Parent.MemberCache.CheckExistingMembersOverloads (this, parameters); } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override bool Define () { if (!base.Define ()) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs index 6f2f183a83..5181e3f325 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs @@ -442,12 +442,7 @@ namespace Mono.CSharp return assembly.GetType (compiler.BuiltinTypes.Object.FullName) != null; } - public override Assembly LoadAssemblyFile (string fileName) - { - return LoadAssemblyFile (fileName, false); - } - - Assembly LoadAssemblyFile (string assembly, bool soft) + public override Assembly LoadAssemblyFile (string assembly, bool isImplicitReference) { Assembly a = null; @@ -464,7 +459,7 @@ namespace Mono.CSharp a = Assembly.Load (ass); } } catch (FileNotFoundException) { - bool err = !soft; + bool err = !isImplicitReference; foreach (string dir in paths) { string full_path = Path.Combine (dir, assembly); if (!assembly.EndsWith (".dll") && !assembly.EndsWith (".exe")) @@ -490,11 +485,6 @@ namespace Mono.CSharp return a; } - public override Assembly LoadAssemblyDefault (string fileName) - { - return LoadAssemblyFile (fileName, true); - } - Module LoadModuleFile (AssemblyDefinitionDynamic assembly, string module) { string total_log = ""; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs index 962937befc..48f2b266b3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs @@ -367,7 +367,7 @@ namespace Mono.CSharp public RootNamespace CreateRootNamespace (string alias) { if (alias == global_ns.Alias) { - NamespaceContainer.Error_GlobalNamespaceRedefined (Location.Null, Report); + RootNamespace.Error_GlobalNamespaceRedefined (Report, Location.Null); return global_ns; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs index 2e9d9731f7..104e15371f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs @@ -154,9 +154,11 @@ namespace Mono.CSharp { FalseStatement = false_statement; loc = l; } - + public Expression Expr { - get { return this.expr; } + get { + return this.expr; + } } public override bool Resolve (BlockContext ec) @@ -639,9 +641,11 @@ namespace Mono.CSharp { this.expr = expr; loc = expr.Location; } - + public ExpressionStatement Expr { - get { return this.expr; } + get { + return this.expr; + } } protected override void CloneTo (CloneContext clonectx, Statement t) @@ -676,7 +680,7 @@ namespace Mono.CSharp { this.expr = expr; } - public Expression Expression { + public Expression Expr { get { return expr; } @@ -779,25 +783,30 @@ namespace Mono.CSharp { /// public class Return : ExitStatement { - public Expression Expr { get; protected set; } + Expression expr; public Return (Expression expr, Location l) { - Expr = expr; + this.expr = expr; loc = l; } #region Properties - public Expression Expression { + + public Expression Expr { get { - return Expr; + return expr; + } + protected set { + expr = value; } } + #endregion protected override bool DoResolve (BlockContext ec) { - if (Expr == null) { + if (expr == null) { if (ec.ReturnType.Kind == MemberKind.Void) return true; @@ -811,7 +820,7 @@ namespace Mono.CSharp { // // Extra trick not to emit ret/leave inside awaiter body // - Expr = EmptyExpression.Null; + expr = EmptyExpression.Null; return true; } } @@ -827,7 +836,7 @@ namespace Mono.CSharp { return false; } - Expr = Expr.Resolve (ec); + expr = expr.Resolve (ec); TypeSpec block_return_type = ec.ReturnType; AnonymousExpression am = ec.CurrentAnonymousMethod; @@ -845,12 +854,12 @@ namespace Mono.CSharp { var async_block = am as AsyncInitializer; if (async_block != null) { - if (Expr != null) { + if (expr != null) { var storey = (AsyncTaskStorey) am.Storey; var async_type = storey.ReturnType; if (async_type == null && async_block.ReturnTypeInference != null) { - async_block.ReturnTypeInference.AddCommonTypeBound (Expr.Type); + async_block.ReturnTypeInference.AddCommonTypeBound (expr.Type); return true; } @@ -871,20 +880,20 @@ namespace Mono.CSharp { } } else { var l = am as AnonymousMethodBody; - if (l != null && l.ReturnTypeInference != null && Expr != null) { - l.ReturnTypeInference.AddCommonTypeBound (Expr.Type); + if (l != null && l.ReturnTypeInference != null && expr != null) { + l.ReturnTypeInference.AddCommonTypeBound (expr.Type); return true; } } } - if (Expr == null) + if (expr == null) return false; - if (Expr.Type != block_return_type) { - Expr = Convert.ImplicitConversionRequired (ec, Expr, block_return_type, loc); + if (expr.Type != block_return_type) { + expr = Convert.ImplicitConversionRequired (ec, expr, block_return_type, loc); - if (Expr == null) { + if (expr == null) { if (am != null && block_return_type == ec.ReturnType) { ec.Report.Error (1662, loc, "Cannot convert `{0}' to delegate type `{1}' because some of the return types in the block are not implicitly convertible to the delegate return type", @@ -899,8 +908,8 @@ namespace Mono.CSharp { protected override void DoEmit (EmitContext ec) { - if (Expr != null) { - Expr.Emit (ec); + if (expr != null) { + expr.Emit (ec); var async_body = ec.CurrentAnonymousMethod as AsyncInitializer; if (async_body != null) { @@ -936,9 +945,10 @@ namespace Mono.CSharp { { Return target = (Return) t; // It's null for simple return; - if (Expr != null) - target.Expr = Expr.Clone (clonectx); + if (expr != null) + target.expr = expr.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1135,9 +1145,11 @@ namespace Mono.CSharp { expr = e; loc = l; } - + public Expression Expr { - get { return this.expr; } + get { + return this.expr; + } } public override bool Resolve (BlockContext ec) @@ -1207,11 +1219,13 @@ namespace Mono.CSharp { this.expr = expr; loc = l; } - + public Expression Expr { - get { return this.expr; } + get { + return this.expr; + } } - + public override bool Resolve (BlockContext ec) { if (expr == null) { @@ -1872,6 +1886,7 @@ namespace Mono.CSharp { public static string GetCompilerGeneratedName (Block block) { + // HACK: Debugger depends on the name semantics return "$locvar" + block.ParametersBlock.TemporaryLocalsCount++.ToString ("X"); } @@ -1988,7 +2003,7 @@ namespace Mono.CSharp { int? resolving_init_idx; - protected Block original; + Block original; #if DEBUG static int id; @@ -2035,6 +2050,9 @@ namespace Mono.CSharp { get { return original; } + protected set { + original = value; + } } public bool IsCompilerGenerated { @@ -2051,10 +2069,11 @@ namespace Mono.CSharp { get { return (flags & Flags.Unsafe) != 0; } set { flags |= Flags.Unsafe; } } - + public List Statements { - get { return this.statements; } + get { return statements; } } + #endregion public Block CreateSwitchBlock (Location start) @@ -2328,6 +2347,7 @@ namespace Mono.CSharp { foreach (Statement s in statements) target.statements.Add (s.Clone (clonectx)); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -2692,7 +2712,7 @@ namespace Mono.CSharp { // Overwrite original for comparison purposes when linking cross references // between anonymous methods // - original = source; + Original = source; } #region Properties @@ -2906,7 +2926,7 @@ namespace Mono.CSharp { ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation); pb.EndLocation = EndLocation; pb.statements = statements; - pb.original = this; + pb.Original = this; var iterator = new Iterator (pb, method, host, iterator_type, is_enumerable); am_storey = new IteratorStorey (iterator); @@ -2921,7 +2941,7 @@ namespace Mono.CSharp { ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation); pb.EndLocation = EndLocation; pb.statements = statements; - pb.original = this; + pb.Original = this; var block_type = host.Module.Compiler.BuiltinTypes.Void; var initializer = new AsyncInitializer (pb, host, block_type); @@ -4468,11 +4488,13 @@ namespace Mono.CSharp { { this.expr = expr; } - + public Expression Expr { - get { return this.expr; } + get { + return this.expr; + } } - + public override bool Resolve (BlockContext ec) { expr = expr.Resolve (ec); @@ -5151,6 +5173,12 @@ namespace Mono.CSharp { this.fini = fini; } + public Block Finallyblock { + get { + return fini; + } + } + public override bool Resolve (BlockContext ec) { bool ok = true; @@ -5202,23 +5230,20 @@ namespace Mono.CSharp { public class TryCatch : ExceptionStatement { public Block Block; - public List Specific; - public Catch General; + List clauses; readonly bool inside_try_finally; public TryCatch (Block block, List catch_clauses, Location l, bool inside_try_finally) : base (l) { this.Block = block; - this.Specific = catch_clauses; + this.clauses = catch_clauses; this.inside_try_finally = inside_try_finally; - - if (catch_clauses != null) { - Catch c = catch_clauses [0]; - if (c.IsGeneral) { - this.General = c; - catch_clauses.RemoveAt (0); - } + } + + public List Clauses { + get { + return clauses; } } @@ -5237,9 +5262,8 @@ namespace Mono.CSharp { if (!Block.Resolve (ec)) ok = false; - TypeSpec[] prev_catches = new TypeSpec [Specific.Count]; - int last_index = 0; - foreach (Catch c in Specific){ + for (int i = 0; i < clauses.Count; ++i) { + var c = clauses[i]; ec.CurrentBranching.CreateSibling (c.Block, FlowBranching.SiblingType.Catch); if (!c.Resolve (ec)) { @@ -5248,37 +5272,40 @@ namespace Mono.CSharp { } TypeSpec resolved_type = c.CatchType; - for (int ii = 0; ii < last_index; ++ii) { - if (resolved_type == prev_catches[ii] || TypeSpec.IsBaseClass (resolved_type, prev_catches[ii], true)) { - ec.Report.Error (160, c.loc, - "A previous catch clause already catches all exceptions of this or a super type `{0}'", - TypeManager.CSharpName (prev_catches [ii])); - ok = false; - } - } + for (int ii = 0; ii < clauses.Count; ++ii) { + if (ii == i) + continue; - prev_catches [last_index++] = resolved_type; - } + if (clauses[ii].IsGeneral) { + if (resolved_type.BuiltinType != BuiltinTypeSpec.Type.Exception) + continue; + + if (!ec.Module.DeclaringAssembly.WrapNonExceptionThrows) + continue; + + if (!ec.Module.PredefinedAttributes.RuntimeCompatibility.IsDefined) + continue; + + ec.Report.Warning (1058, 1, c.loc, + "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'"); - if (General != null) { - foreach (Catch c in Specific) { - if (c.CatchType.BuiltinType != BuiltinTypeSpec.Type.Exception) continue; + } - if (!ec.Module.DeclaringAssembly.WrapNonExceptionThrows) + if (ii >= i) continue; - if (!ec.Module.PredefinedAttributes.RuntimeCompatibility.IsDefined) + var ct = clauses[ii].CatchType; + if (ct == null) continue; - ec.Report.Warning (1058, 1, c.loc, - "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'"); + if (resolved_type == ct || TypeSpec.IsBaseClass (resolved_type, ct, true)) { + ec.Report.Error (160, c.loc, + "A previous catch clause already catches all exceptions of this or a super type `{0}'", + ct.GetSignatureForError ()); + ok = false; + } } - - ec.CurrentBranching.CreateSibling (General.Block, FlowBranching.SiblingType.Catch); - - if (!General.Resolve (ec)) - ok = false; } ec.EndFlowBranching (); @@ -5293,12 +5320,9 @@ namespace Mono.CSharp { Block.Emit (ec); - foreach (Catch c in Specific) + foreach (Catch c in clauses) c.Emit (ec); - if (General != null) - General.Emit (ec); - if (!inside_try_finally) ec.EndExceptionBlock (); } @@ -5308,14 +5332,13 @@ namespace Mono.CSharp { TryCatch target = (TryCatch) t; target.Block = clonectx.LookupBlock (Block); - if (General != null) - target.General = (Catch) General.Clone (clonectx); - if (Specific != null){ - target.Specific = new List (); - foreach (Catch c in Specific) - target.Specific.Add ((Catch) c.Clone (clonectx)); + if (clauses != null){ + target.clauses = new List (); + foreach (Catch c in clauses) + target.clauses.Add ((Catch) c.Clone (clonectx)); } } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -5468,7 +5491,7 @@ namespace Mono.CSharp { declarators = null; return stmt; - } + } public override object Accept (StructuralVisitor visitor) { @@ -5492,7 +5515,7 @@ namespace Mono.CSharp { #region Properties - public Expression Expression { + public Expression Expr { get { return decl.Variable == null ? decl.Initializer : null; } @@ -5571,6 +5594,7 @@ namespace Mono.CSharp { target.decl = (VariableDeclaration) decl.Clone (clonectx); target.stmt = stmt.Clone (clonectx); } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -6114,14 +6138,6 @@ namespace Mono.CSharp { LocalVariable variable; Expression expr; Statement statement; - - public Expression TypeExpr { - get { return this.type; } - } - - public LocalVariable Variable { - get { return this.variable; } - } public Foreach (Expression type, LocalVariable var, Expression expr, Statement stmt, Location l) { @@ -6132,14 +6148,23 @@ namespace Mono.CSharp { loc = l; } + public Expression Expr { + get { return expr; } + } + public Statement Statement { get { return statement; } } - public Expression Expr { - get { return this.expr; } + public Expression TypeExpression { + get { return type; } } + public LocalVariable Variable { + get { return variable; } + } + + public override bool Resolve (BlockContext ec) { expr = expr.Resolve (ec); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs index d1025a2176..3a518a4fed 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs @@ -37,7 +37,7 @@ namespace Mono.CSharp { return System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode (obj); } } - +#if !NET_4_0 public class Tuple : IEquatable> { public Tuple (T1 item1, T2 item2) @@ -107,6 +107,7 @@ namespace Mono.CSharp { return new Tuple (item1, item2, item3); } } +#endif static class ArrayComparer {