diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 664b1ae57..328b38a9e 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "6"; public const string Build = "3"; - public const string Revision = "2509"; + public const string Revision = "2511"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 33b6c37a4..88db08972 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=6 -%REVISION%=2509 +%REVISION%=2511 %COREVERSION%=3 %MAJOR%=3 diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index 6d9e52816..4527792ab 100644 Binary files a/Localization/DefaultLang.resources and b/Localization/DefaultLang.resources differ diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs new file mode 100644 index 000000000..b28c86e63 --- /dev/null +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -0,0 +1,3102 @@ +// +// This CSharp output file generated by Gardens Point LEX +// Version: 1.1.3.301 +// Machine: DESKTOP-G8V08V4 +// DateTime: 08.06.2020 21:36:35 +// UserName: ????????? +// GPLEX input file +// GPLEX frame file +// +// Option settings: unicode, parser, minimize +// Option settings: classes, compressMap, compressNext, persistBuffer, embedbuffers +// Fallback code page: Target machine default +// + +// +// Experimental embedded frame +// Version 1.1.3 of 18-April-2010 +// +// +#define BACKUP +#define PERSIST + +using System; +using System.IO; +using System.Text; +using System.Globalization; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Diagnostics.CodeAnalysis; + +using PascalABCSavParser; +using PascalABCCompiler.SyntaxTree; +using PascalABCCompiler.ParserTools; +using QUT.Gppg; + +namespace GPPGParserScanner +{ + /// + /// Summary Canonical example of GPLEX automaton + /// + +#if STANDALONE + // + // These are the dummy declarations for stand-alone GPLEX applications + // normally these declarations would come from the parser. + // If you declare /noparser, or %option noparser then you get this. + // + + public enum Tokens + { + EOF = 0, maxParseToken = int.MaxValue + // must have at least these two, values are almost arbitrary + } + + public abstract class ScanBase + { + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")] + public abstract int yylex(); + + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yywrap")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yywrap")] + protected virtual bool yywrap() { return true; } + +#if BABEL + protected abstract int CurrentSc { get; set; } + // EolState is the 32-bit of state data persisted at + // the end of each line for Visual Studio colorization. + // The default is to return CurrentSc. You must override + // this if you want more complicated behavior. + public virtual int EolState { + get { return CurrentSc; } + set { CurrentSc = value; } + } + } + + public interface IColorScan + { + void SetSource(string source, int offset); + int GetNext(ref int state, out int start, out int end); +#endif // BABEL + } + +#endif // STANDALONE + + // If the compiler can't find the scanner base class maybe you + // need to run GPPG with the /gplex option, or GPLEX with /noparser +#if BABEL + public sealed partial class Scanner : ScanBase, IColorScan + { + private ScanBuff buffer; + int currentScOrd; // start condition ordinal + + protected override int CurrentSc + { + // The current start state is a property + // to try to avoid the user error of setting + // scState but forgetting to update the FSA + // start state "currentStart" + // + get { return currentScOrd; } // i.e. return YY_START; + set { currentScOrd = value; // i.e. BEGIN(value); + currentStart = startState[value]; } + } +#else // BABEL + public sealed partial class Scanner : ScanBase + { + private ScanBuff buffer; + int currentScOrd; // start condition ordinal +#endif // BABEL + + /// + /// The input buffer for this scanner. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public ScanBuff Buffer { get { return buffer; } } + + private static int GetMaxParseToken() { + System.Reflection.FieldInfo f = typeof(Tokens).GetField("maxParseToken"); + return (f == null ? int.MaxValue : (int)f.GetValue(null)); + } + + static int parserMax = GetMaxParseToken(); + + enum Result {accept, noMatch, contextFound}; + + const int maxAccept = 67; + const int initial = 68; + const int eofNum = 0; + const int goStart = -1; + const int INITIAL = 0; + const int COMMENT = 1; + const int COMMENT1 = 2; + const int COMMENTONELINE = 3; + const int INCL = 4; + const int EXCLUDETEXT = 5; + +#region user code +public PT parsertools; + Stack buffStack = new Stack(); + Stack fNameStack = new Stack(); + Stack IfStack = new Stack(); // 0 - if, 1 - else + public List Defines = new List(); + int IfExclude; + string Pars; + string directivename; + string directiveparam; + LexLocation currentLexLocation; +#endregion user code + + int state; + int currentStart = startState[0]; + int code; // last code read + int cCol; // column number of code + int lNum; // current line number + // + // The following instance variables are used, among other + // things, for constructing the yylloc location objects. + // + int tokPos; // buffer position at start of token + int tokCol; // zero-based column number at start of token + int tokLin; // line number at start of token + int tokEPos; // buffer position at end of token + int tokECol; // column number at end of token + int tokELin; // line number at end of token + string tokTxt; // lazily constructed text of token +#if STACK + private Stack scStack = new Stack(); +#endif // STACK + +#region ScannerTables + struct Table { + public int min; public int rng; public int dflt; + public sbyte[] nxt; + public Table(int m, int x, int d, sbyte[] n) { + min = m; rng = x; dflt = d; nxt = n; + } + }; + + static int[] startState = new int[] {68, 103, 104, 105, 105, 106, + 0}; + +#region TwoLevelCharacterMap + // + // There are 49 equivalence classes + // There are 256 character sequence regions + // There are 47 tables, 12032 entries + // + static sbyte[] mLo0 = new sbyte[256] { +/* '\0' */ 48, 41, 48, 48, 48, 48, 48, 48, 48, 5, 0, 48, 48, 6, 48, 48, +/* '\x10' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\x20' */ 5, 26, 48, 47, 4, 48, 10, 46, 7, 9, 8, 21, 11, 22, 13, 1, +/* '0' */ 43, 43, 28, 43, 43, 43, 43, 43, 43, 27, 12, 14, 24, 20, 23, 17, +/* '@' */ 19, 44, 44, 44, 44, 45, 44, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* 'P' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 15, 48, 16, 25, 18, +/* '`' */ 48, 38, 44, 44, 44, 29, 44, 42, 42, 34, 42, 42, 42, 39, 36, 35, +/* 'p' */ 31, 42, 32, 33, 37, 42, 42, 42, 30, 40, 42, 3, 48, 2, 48, 48, +/* '\x80' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\x90' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\xA0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 48, 48, 48, 48, 48, +/* '\xB0' */ 48, 48, 48, 48, 48, 42, 48, 48, 48, 48, 42, 48, 48, 48, 48, 48, +/* '\xC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\xD0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\xE0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\xF0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo1 = new sbyte[256] { +/* '\u0100' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0110' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0120' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0130' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0140' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0150' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0160' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0170' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0180' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0190' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u01F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo2 = new sbyte[256] { +/* '\u0200' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0210' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0220' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0230' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0240' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0250' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0260' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0270' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0280' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0290' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u02A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u02B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u02C0' */ 42, 42, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u02D0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u02E0' */ 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 48, +/* '\u02F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo3 = new sbyte[256] { +/* '\u0300' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0310' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0320' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0330' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0340' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0350' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0360' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0370' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 48, 48, +/* '\u0380' */ 48, 48, 48, 48, 48, 48, 42, 48, 42, 42, 42, 48, 42, 48, 42, 42, +/* '\u0390' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u03A0' */ 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u03B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u03C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u03D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u03E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u03F0' */ 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo4 = new sbyte[256] { +/* '\u0400' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0410' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0420' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0430' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0440' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0450' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0460' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0470' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0480' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\u0490' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u04F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo5 = new sbyte[256] { +/* '\u0500' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0510' */ 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0520' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0530' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0540' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0550' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 42, 48, 48, 48, 48, 48, 48, +/* '\u0560' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0570' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0580' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0590' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u05A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u05B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u05C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u05D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u05E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u05F0' */ 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo6 = new sbyte[256] { +/* '\u0600' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0610' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0620' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0630' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u0640' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u0650' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0660' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, +/* '\u0670' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0680' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0690' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u06A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u06B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u06C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u06D0' */ 42, 42, 42, 42, 48, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u06E0' */ 48, 48, 48, 48, 48, 42, 42, 48, 48, 48, 48, 48, 48, 48, 42, 42, +/* '\u06F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 48, 48, 42 }; + static sbyte[] mLo7 = new sbyte[256] { +/* '\u0700' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0710' */ 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0720' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0730' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0740' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, +/* '\u0750' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0760' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\u0770' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0780' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0790' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u07A0' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u07B0' */ 48, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u07C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\u07D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u07E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u07F0' */ 48, 48, 48, 48, 42, 42, 48, 48, 48, 48, 42, 48, 48, 48, 48, 48 }; + static sbyte[] mLo8 = new sbyte[256] { +/* '\u0800' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0810' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0820' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0830' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0840' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0850' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0860' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0870' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0880' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0890' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u08F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo9 = new sbyte[256] { +/* '\u0900' */ 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0910' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0920' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0930' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 42, 48, 48, +/* '\u0940' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0950' */ 42, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0960' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0970' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, +/* '\u0980' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 42, +/* '\u0990' */ 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u09A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u09B0' */ 42, 48, 42, 48, 48, 48, 42, 42, 42, 42, 48, 48, 48, 42, 48, 48, +/* '\u09C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 48, +/* '\u09D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 48, 42, +/* '\u09E0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u09F0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo10 = new sbyte[256] { +/* '\u0A00' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 42, +/* '\u0A10' */ 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0A20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0A30' */ 42, 48, 42, 42, 48, 42, 42, 48, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\u0A40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0A50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 48, 42, 48, +/* '\u0A60' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0A70' */ 48, 48, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0A80' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, +/* '\u0A90' */ 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0AA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0AB0' */ 42, 48, 42, 42, 48, 42, 42, 42, 42, 42, 48, 48, 48, 42, 48, 48, +/* '\u0AC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0AD0' */ 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0AE0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0AF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo11 = new sbyte[256] { +/* '\u0B00' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 42, +/* '\u0B10' */ 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0B20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0B30' */ 42, 48, 42, 42, 48, 42, 42, 42, 42, 42, 48, 48, 48, 42, 48, 48, +/* '\u0B40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0B50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 48, 42, +/* '\u0B60' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0B70' */ 48, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0B80' */ 48, 48, 48, 42, 48, 42, 42, 42, 42, 42, 42, 48, 48, 48, 42, 42, +/* '\u0B90' */ 42, 48, 42, 42, 42, 42, 48, 48, 48, 42, 42, 48, 42, 48, 42, 42, +/* '\u0BA0' */ 48, 48, 48, 42, 42, 48, 48, 48, 42, 42, 42, 48, 48, 48, 42, 42, +/* '\u0BB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\u0BC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0BD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0BE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0BF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo12 = new sbyte[256] { +/* '\u0C00' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\u0C10' */ 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0C20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0C30' */ 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\u0C40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0C50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0C60' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0C70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0C80' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\u0C90' */ 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0CA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0CB0' */ 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 48, 48, 48, 42, 48, 48, +/* '\u0CC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0CD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 48, +/* '\u0CE0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0CF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo13 = new sbyte[256] { +/* '\u0D00' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\u0D10' */ 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0D20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\u0D30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\u0D40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0D50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0D60' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0D70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0D80' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0D90' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\u0DA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0DB0' */ 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, 48, +/* '\u0DC0' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0DD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0DE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0DF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo14 = new sbyte[256] { +/* '\u0E00' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0E10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0E20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0E30' */ 42, 48, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0E40' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0E50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0E60' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0E70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0E80' */ 48, 42, 42, 48, 42, 48, 48, 42, 42, 48, 42, 48, 48, 42, 48, 48, +/* '\u0E90' */ 48, 48, 48, 48, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, +/* '\u0EA0' */ 48, 42, 42, 42, 48, 42, 48, 42, 48, 48, 42, 42, 48, 42, 42, 42, +/* '\u0EB0' */ 42, 48, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 48, 48, +/* '\u0EC0' */ 42, 42, 42, 42, 42, 48, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0ED0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 48, 48, +/* '\u0EE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0EF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo15 = new sbyte[256] { +/* '\u0F00' */ 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0F10' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0F20' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0F30' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0F40' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, +/* '\u0F50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u0F60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u0F70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0F80' */ 48, 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 48, 48, 48, 48, +/* '\u0F90' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FA0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FB0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u0FF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo16 = new sbyte[256] { +/* '\u1000' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1010' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1020' */ 42, 42, 48, 42, 42, 42, 42, 42, 48, 42, 42, 48, 48, 48, 48, 48, +/* '\u1030' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1040' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1050' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1060' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1070' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1080' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1090' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u10A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u10B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u10C0' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u10D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u10E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u10F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, 48, 48 }; + static sbyte[] mLo17 = new sbyte[256] { +/* '\u1100' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1110' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1120' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1130' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1140' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1150' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 42, +/* '\u1160' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1170' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1180' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1190' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11A0' */ 42, 42, 42, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u11F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo18 = new sbyte[256] { +/* '\u1200' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1210' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1220' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1230' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1240' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 48, 48, +/* '\u1250' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, 42, 42, 42, 42, 48, 48, +/* '\u1260' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1270' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1280' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 48, 48, +/* '\u1290' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u12A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u12B0' */ 42, 48, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u12C0' */ 42, 48, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u12D0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u12E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u12F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo19 = new sbyte[256] { +/* '\u1300' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1310' */ 42, 48, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1320' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1330' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1340' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1350' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u1360' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1370' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1380' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1390' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u13A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u13B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u13C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u13D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u13E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u13F0' */ 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo20 = new sbyte[256] { +/* '\u1400' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1410' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1420' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1430' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1440' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1450' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1460' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1470' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1480' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1490' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u14F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo22 = new sbyte[256] { +/* '\u1600' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1610' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1620' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1630' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1640' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1650' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1660' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 42, +/* '\u1670' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1680' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1690' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u16A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u16B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u16C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u16D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u16E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\u16F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo23 = new sbyte[256] { +/* '\u1700' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\u1710' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1720' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1730' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1740' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1750' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1760' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\u1770' */ 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1780' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1790' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u17A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u17B0' */ 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u17C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u17D0' */ 48, 48, 48, 48, 48, 48, 48, 42, 48, 48, 48, 48, 42, 48, 48, 48, +/* '\u17E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u17F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo24 = new sbyte[256] { +/* '\u1800' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1810' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1820' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1830' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1840' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1850' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1860' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1870' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1880' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1890' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u18A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, +/* '\u18B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u18C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u18D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u18E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u18F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo25 = new sbyte[256] { +/* '\u1900' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1910' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\u1920' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1930' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1940' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1950' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1960' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\u1970' */ 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1980' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1990' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u19A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\u19B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u19C0' */ 48, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u19D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u19E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u19F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo26 = new sbyte[256] { +/* '\u1A00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1A10' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A20' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A30' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A60' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A80' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1A90' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AA0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AB0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1AF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo27 = new sbyte[256] { +/* '\u1B00' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1B10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1B20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1B30' */ 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1B40' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, +/* '\u1B50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1B60' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1B70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1B80' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1B90' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BA0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BB0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1BF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo29 = new sbyte[256] { +/* '\u1D00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1D90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1DA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1DB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1DC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1DD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1DE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u1DF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo30 = new sbyte[256] { +/* '\u1E00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1E90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, +/* '\u1EA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1EB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1EC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1ED0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1EE0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1EF0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo31 = new sbyte[256] { +/* '\u1F00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1F10' */ 42, 42, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\u1F20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1F30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1F40' */ 42, 42, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\u1F50' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, 42, 48, 42, 48, 42, +/* '\u1F60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1F70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\u1F80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1F90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1FA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u1FB0' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, +/* '\u1FC0' */ 48, 48, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\u1FD0' */ 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, +/* '\u1FE0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\u1FF0' */ 48, 48, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48 }; + static sbyte[] mLo32 = new sbyte[256] { +/* '\u2000' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2010' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2020' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2030' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2040' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2050' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2060' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2070' */ 48, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, +/* '\u2080' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2090' */ 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u20F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo33 = new sbyte[256] { +/* '\u2100' */ 48, 48, 42, 48, 48, 48, 48, 42, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\u2110' */ 42, 42, 42, 42, 48, 42, 48, 48, 48, 42, 42, 42, 42, 42, 48, 48, +/* '\u2120' */ 48, 48, 48, 48, 42, 48, 42, 48, 42, 48, 42, 42, 42, 42, 48, 42, +/* '\u2130' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, +/* '\u2140' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 48, 48, 48, 48, 42, 48, +/* '\u2150' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2160' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2170' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2180' */ 48, 48, 48, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2190' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u21F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo44 = new sbyte[256] { +/* '\u2C00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2C10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2C20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2C30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2C40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2C50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2C60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\u2C70' */ 48, 48, 48, 48, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2C80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2C90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2CA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2CB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2CC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2CD0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2CE0' */ 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2CF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo45 = new sbyte[256] { +/* '\u2D00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D20' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2D30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D60' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 42, +/* '\u2D70' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2D80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u2D90' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2DA0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2DB0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2DC0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2DD0' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u2DE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u2DF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo48 = new sbyte[256] { +/* '\u3000' */ 48, 48, 48, 48, 48, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u3010' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u3020' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u3030' */ 48, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 42, 42, 48, 48, 48, +/* '\u3040' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3050' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3060' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3070' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3080' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3090' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 42, 42, 42, +/* '\u30A0' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u30B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u30C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u30D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u30E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u30F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42 }; + static sbyte[] mLo49 = new sbyte[256] { +/* '\u3100' */ 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3110' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3120' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\u3130' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3140' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3150' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3160' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3170' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u3180' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\u3190' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u31A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u31B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u31C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u31D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u31E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u31F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo77 = new sbyte[256] { +/* '\u4D00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4D90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4DA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u4DB0' */ 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u4DC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u4DD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u4DE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u4DF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo159 = new sbyte[256] { +/* '\u9F00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9F90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9FA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\u9FB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, +/* '\u9FC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u9FD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u9FE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\u9FF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo164 = new sbyte[256] { +/* '\uA400' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA410' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA420' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA430' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA440' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA450' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA460' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA470' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA480' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, +/* '\uA490' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA4F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo167 = new sbyte[256] { +/* '\uA700' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA710' */ 48, 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\uA720' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA730' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA740' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA750' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA760' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA770' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA780' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA790' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA7F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo168 = new sbyte[256] { +/* '\uA800' */ 42, 42, 48, 42, 42, 42, 48, 42, 42, 42, 42, 48, 42, 42, 42, 42, +/* '\uA810' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA820' */ 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA830' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA840' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA850' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA860' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uA870' */ 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA880' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA890' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8A0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uA8F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo215 = new sbyte[256] { +/* '\uD700' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD710' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD720' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD730' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD740' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD750' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD760' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD770' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD780' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD790' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uD7A0' */ 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uD7B0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uD7C0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uD7D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uD7E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uD7F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo250 = new sbyte[256] { +/* '\uFA00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\uFA30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA40' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\uFA70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFA90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFAA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFAB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFAC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFAD0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\uFAE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFAF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mLo251 = new sbyte[256] { +/* '\uFB00' */ 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFB10' */ 48, 48, 48, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 42, 48, 42, +/* '\uFB20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\uFB30' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 48, 42, 48, +/* '\uFB40' */ 42, 42, 48, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFB50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFB60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFB70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFB80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFB90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFBA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFBB0' */ 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFBC0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFBD0' */ 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFBE0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFBF0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mLo253 = new sbyte[256] { +/* '\uFD00' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD10' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\uFD40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFD50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD60' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFD90' */ 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFDA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFDB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFDC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFDD0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFDE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFDF0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48 }; + static sbyte[] mLo254 = new sbyte[256] { +/* '\uFE00' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE10' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE20' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE30' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE40' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE50' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE60' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFE70' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFE80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFE90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFEA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFEB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFEC0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFED0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFEE0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFEF0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48 }; + static sbyte[] mLo255 = new sbyte[256] { +/* '\uFF00' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFF10' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFF20' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFF30' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\uFF40' */ 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFF50' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, +/* '\uFF60' */ 48, 48, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFF70' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFF80' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFF90' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFFA0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\uFFB0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\uFFC0' */ 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\uFFD0' */ 48, 48, 42, 42, 42, 42, 42, 42, 48, 48, 42, 42, 42, 48, 48, 48, +/* '\uFFE0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\uFFF0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + + static sbyte[][] map = new sbyte[256][] { +/* '\u00xx' */ mLo0, mLo1, mLo2, mLo3, mLo4, mLo5, mLo6, mLo7, mLo8, mLo9, mLo10, mLo11, mLo12, mLo13, mLo14, mLo15, +/* '\u10xx' */ mLo16, mLo17, mLo18, mLo19, mLo20, mLo1, mLo22, mLo23, mLo24, mLo25, mLo26, mLo27, mLo8, mLo29, mLo30, mLo31, +/* '\u20xx' */ mLo32, mLo33, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo44, mLo45, mLo8, mLo8, +/* '\u30xx' */ mLo48, mLo49, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\u40xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo77, mLo1, mLo1, +/* '\u50xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\u60xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\u70xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\u80xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\u90xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo159, +/* '\uA0xx' */ mLo1, mLo1, mLo1, mLo1, mLo164, mLo8, mLo8, mLo167, mLo168, mLo8, mLo8, mLo8, mLo1, mLo1, mLo1, mLo1, +/* '\uB0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\uC0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, +/* '\uD0xx' */ mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo1, mLo215, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, +/* '\uE0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, +/* '\uF0xx' */ mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo8, mLo1, mLo250, mLo251, mLo1, mLo253, mLo254, mLo255}; + +#endregion + +#region CompressedCharacterMap + // + // There are 49 equivalence classes + // There are 21 character sequence regions + // There are 6 tables, 1255 entries + // There are 15 runs, 0 singletons + // Decision tree depth is 5 + // + static sbyte[] mapC0 = new sbyte[251] { +/* '\U00010000' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, +/* '\U00010010' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010020' */ 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010030' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 48, 42, +/* '\U00010040' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\U00010050' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\U00010060' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010070' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010080' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010090' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100C0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000100F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 }; + static sbyte[] mapC2 = new sbyte[256] { +/* '\U00010300' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010310' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\U00010320' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010330' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010340' */ 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, 48, 48, 48, 48, +/* '\U00010350' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010360' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010370' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010380' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010390' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 48, +/* '\U000103A0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000103B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000103C0' */ 42, 42, 42, 42, 48, 48, 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U000103D0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U000103E0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U000103F0' */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; + static sbyte[] mapC5 = new sbyte[64] { +/* '\U00010800' */ 42, 42, 42, 42, 42, 42, 48, 48, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\U00010810' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010820' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010830' */ 42, 42, 42, 42, 42, 42, 48, 42, 42, 48, 48, 48, 42, 48, 48, 42 }; + static sbyte[] mapC9 = new sbyte[52] { +/* '\U00010A00' */ 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* '\U00010A10' */ 42, 42, 42, 42, 48, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010A20' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U00010A30' */ 42, 42, 42, 42 }; + static sbyte[] mapC13 = new sbyte[338] { +/* '\U0001D400' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D410' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D420' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D430' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D440' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D450' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D460' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D470' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D480' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D490' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\U0001D4A0' */ 48, 48, 42, 48, 48, 42, 42, 48, 48, 42, 42, 42, 42, 48, 42, 42, +/* '\U0001D4B0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 48, 42, 42, 42, +/* '\U0001D4C0' */ 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D4D0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D4E0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D4F0' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D500' */ 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 48, 48, 42, 42, 42, +/* '\U0001D510' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\U0001D520' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D530' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 48, +/* '\U0001D540' */ 42, 42, 42, 42, 42, 48, 42, 48, 48, 48, 42, 42, 42, 42, 42, 42, +/* '\U0001D550' */ 42, 48 }; + static sbyte[] mapC15 = new sbyte[294] { +/* '\U0001D6A6' */ 48, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D6B6' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, +/* '\U0001D6C6' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D6D6' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D6E6' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D6F6' */ 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D706' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\U0001D716' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D726' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, +/* '\U0001D736' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D746' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\U0001D756' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D766' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, +/* '\U0001D776' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D786' */ 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D796' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D7A6' */ 42, 42, 42, 48, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, +/* '\U0001D7B6' */ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 48, 42, 42, +/* '\U0001D7C6' */ 42, 42, 42, 42, 42, 42 }; + + static sbyte MapC(int code) + { // '\U00010000' <= code <= '\U0010FFFF' + if (code < 68148) // '\U00010000' <= code <= '\U00010A33' + if (code < 67584) // '\U00010000' <= code <= '\U000107FF' + if (code < 66304) // '\U00010000' <= code <= '\U000102FF' + if (code < 65787) // '\U00010000' <= code <= '\U000100FA' + return mapC0[code - 65536]; + else // '\U000100FB' <= code <= '\U000102FF' + return (sbyte)48; + else // '\U00010300' <= code <= '\U000107FF' + if (code < 66560) // '\U00010300' <= code <= '\U000103FF' + return mapC2[code - 66304]; + else // '\U00010400' <= code <= '\U000107FF' + if (code < 66718) // '\U00010400' <= code <= '\U0001049D' + return (sbyte)42; + else // '\U0001049E' <= code <= '\U000107FF' + return (sbyte)48; + else // '\U00010800' <= code <= '\U00010A33' + if (code < 67840) // '\U00010800' <= code <= '\U000108FF' + if (code < 67648) // '\U00010800' <= code <= '\U0001083F' + return mapC5[code - 67584]; + else // '\U00010840' <= code <= '\U000108FF' + return (sbyte)48; + else // '\U00010900' <= code <= '\U00010A33' + if (code < 67862) // '\U00010900' <= code <= '\U00010915' + return (sbyte)42; + else // '\U00010916' <= code <= '\U00010A33' + if (code < 68096) // '\U00010916' <= code <= '\U000109FF' + return (sbyte)48; + else // '\U00010A00' <= code <= '\U00010A33' + return mapC9[code - 68096]; + else // '\U00010A34' <= code <= '\U0010FFFF' + if (code < 120486) // '\U00010A34' <= code <= '\U0001D6A5' + if (code < 74607) // '\U00010A34' <= code <= '\U0001236E' + if (code < 73728) // '\U00010A34' <= code <= '\U00011FFF' + return (sbyte)48; + else // '\U00012000' <= code <= '\U0001236E' + return (sbyte)42; + else // '\U0001236F' <= code <= '\U0001D6A5' + if (code < 119808) // '\U0001236F' <= code <= '\U0001D3FF' + return (sbyte)48; + else // '\U0001D400' <= code <= '\U0001D6A5' + if (code < 120146) // '\U0001D400' <= code <= '\U0001D551' + return mapC13[code - 119808]; + else // '\U0001D552' <= code <= '\U0001D6A5' + return (sbyte)42; + else // '\U0001D6A6' <= code <= '\U0010FFFF' + if (code < 173783) // '\U0001D6A6' <= code <= '\U0002A6D6' + if (code < 120780) // '\U0001D6A6' <= code <= '\U0001D7CB' + return mapC15[code - 120486]; + else // '\U0001D7CC' <= code <= '\U0002A6D6' + if (code < 131072) // '\U0001D7CC' <= code <= '\U0001FFFF' + return (sbyte)48; + else // '\U00020000' <= code <= '\U0002A6D6' + return (sbyte)42; + else // '\U0002A6D7' <= code <= '\U0010FFFF' + if (code < 194560) // '\U0002A6D7' <= code <= '\U0002F7FF' + return (sbyte)48; + else // '\U0002F800' <= code <= '\U0010FFFF' + if (code < 195102) // '\U0002F800' <= code <= '\U0002FA1D' + return (sbyte)42; + else // '\U0002FA1E' <= code <= '\U0010FFFF' + return (sbyte)48; + } +#endregion + + + static sbyte Map(int code) + { + if (code <= 65535) + return map[code / 256][code % 256]; + else + return MapC(code); + } + + static Table[] NxS = new Table[108] { +/* NxS[ 0] */ new Table(0, 0, 0, null), +/* NxS[ 1] */ new Table(1, 20, -1, new sbyte[] {56, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57}), +/* NxS[ 2] */ new Table(0, 0, -1, null), +/* NxS[ 3] */ new Table(4, 1, -1, new sbyte[] {102}), +/* NxS[ 4] */ new Table(27, 20, -1, new sbyte[] {53, 53, 53, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, 53, 53, 53, 101}), +/* NxS[ 5] */ new Table(8, 1, -1, new sbyte[] {52}), +/* NxS[ 6] */ new Table(8, 13, -1, new sbyte[] {50, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 51}), +/* NxS[ 7] */ new Table(0, 0, -1, null), +/* NxS[ 8] */ new Table(18, 28, -1, new sbyte[] {26, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, -1, 26, -1, 26, 26}), +/* NxS[ 9] */ new Table(0, 0, -1, null), +/* NxS[ 10] */ new Table(20, 1, -1, new sbyte[] {49}), +/* NxS[ 11] */ new Table(13, 1, -1, new sbyte[] {48}), +/* NxS[ 12] */ new Table(0, 0, -1, null), +/* NxS[ 13] */ new Table(0, 0, -1, null), +/* NxS[ 14] */ new Table(0, 0, -1, null), +/* NxS[ 15] */ new Table(13, 5, -1, new sbyte[] {45, -1, 46, -1, 47}), +/* NxS[ 16] */ new Table(18, 28, -1, new sbyte[] {26, -1, -1, -1, -1, -1, + -1, -1, -1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, -1, 26, 26, 26, 26}), +/* NxS[ 17] */ new Table(0, 0, -1, null), +/* NxS[ 18] */ new Table(0, 0, -1, null), +/* NxS[ 19] */ new Table(20, 1, -1, new sbyte[] {44}), +/* NxS[ 20] */ new Table(20, 4, -1, new sbyte[] {42, -1, -1, 43}), +/* NxS[ 21] */ new Table(20, 1, -1, new sbyte[] {41}), +/* NxS[ 22] */ new Table(20, 5, -1, new sbyte[] {36, -1, -1, 37, 74}), +/* NxS[ 23] */ new Table(0, 0, -1, null), +/* NxS[ 24] */ new Table(27, 1, -1, new sbyte[] {73}), +/* NxS[ 25] */ new Table(13, 33, -1, new sbyte[] {70, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 25, 25, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, 71}), +/* NxS[ 26] */ new Table(18, 28, -1, new sbyte[] {26, -1, -1, -1, -1, -1, + -1, -1, -1, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, -1, 26, 26, 26, 26}), +/* NxS[ 27] */ new Table(0, 0, -1, null), +/* NxS[ 28] */ new Table(46, 4, 69, new sbyte[] {32, 69, 69, -1}), +/* NxS[ 29] */ new Table(18, 28, -1, new sbyte[] {30, -1, -1, -1, -1, -1, + -1, -1, -1, 31, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, -1, 30, 31, 30, 30}), +/* NxS[ 30] */ new Table(18, 28, -1, new sbyte[] {30, -1, -1, -1, -1, -1, + -1, -1, -1, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, -1, 30, 30, 30, 30}), +/* NxS[ 31] */ new Table(27, 17, -1, new sbyte[] {31, 31, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31}), +/* NxS[ 32] */ new Table(46, 1, -1, new sbyte[] {69}), +/* NxS[ 33] */ new Table(27, 17, -1, new sbyte[] {33, 33, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33}), +/* NxS[ 34] */ new Table(27, 19, -1, new sbyte[] {34, 34, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, 71}), +/* NxS[ 35] */ new Table(0, 0, -1, null), +/* NxS[ 36] */ new Table(0, 0, -1, null), +/* NxS[ 37] */ new Table(0, 0, -1, null), +/* NxS[ 38] */ new Table(0, 0, -1, null), +/* NxS[ 39] */ new Table(0, 0, -1, null), +/* NxS[ 40] */ new Table(0, 0, -1, null), +/* NxS[ 41] */ new Table(0, 0, -1, null), +/* NxS[ 42] */ new Table(0, 0, -1, null), +/* NxS[ 43] */ new Table(0, 0, -1, null), +/* NxS[ 44] */ new Table(0, 0, -1, null), +/* NxS[ 45] */ new Table(0, 0, -1, null), +/* NxS[ 46] */ new Table(0, 0, -1, null), +/* NxS[ 47] */ new Table(0, 0, -1, null), +/* NxS[ 48] */ new Table(0, 0, -1, null), +/* NxS[ 49] */ new Table(0, 0, -1, null), +/* NxS[ 50] */ new Table(0, 0, -1, null), +/* NxS[ 51] */ new Table(0, 0, -1, null), +/* NxS[ 52] */ new Table(0, 0, -1, null), +/* NxS[ 53] */ new Table(27, 19, -1, new sbyte[] {53, 53, 53, -1, -1, -1, + -1, -1, -1, -1, -1, 53, -1, -1, -1, -1, 53, 53, 53}), +/* NxS[ 54] */ new Table(46, 1, -1, new sbyte[] {101}), +/* NxS[ 55] */ new Table(0, 0, -1, null), +/* NxS[ 56] */ new Table(0, 7, 56, new sbyte[] {-1, 56, 56, 56, 56, 56, + -1}), +/* NxS[ 57] */ new Table(0, 0, -1, null), +/* NxS[ 58] */ new Table(0, 0, -1, null), +/* NxS[ 59] */ new Table(0, 0, -1, null), +/* NxS[ 60] */ new Table(0, 0, -1, null), +/* NxS[ 61] */ new Table(9, 1, -1, new sbyte[] {62}), +/* NxS[ 62] */ new Table(0, 0, -1, null), +/* NxS[ 63] */ new Table(0, 0, -1, null), +/* NxS[ 64] */ new Table(1, 1, -1, new sbyte[] {67}), +/* NxS[ 65] */ new Table(4, 1, -1, new sbyte[] {107}), +/* NxS[ 66] */ new Table(0, 0, -1, null), +/* NxS[ 67] */ new Table(0, 7, 67, new sbyte[] {-1, 67, 67, 67, 67, 67, + -1}), +/* NxS[ 68] */ new Table(41, 37, 26, new sbyte[] {27, 26, 25, 26, 26, 28, + 29, 2, -1, 1, 2, 3, 4, -1, -1, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25}), +/* NxS[ 69] */ new Table(46, 4, 69, new sbyte[] {32, 69, 69, -1}), +/* NxS[ 70] */ new Table(27, 17, -1, new sbyte[] {34, 34, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34}), +/* NxS[ 71] */ new Table(21, 23, -1, new sbyte[] {72, 72, -1, -1, -1, -1, + 33, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 33}), +/* NxS[ 72] */ new Table(27, 17, -1, new sbyte[] {33, 33, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33}), +/* NxS[ 73] */ new Table(28, 1, -1, new sbyte[] {35}), +/* NxS[ 74] */ new Table(29, 9, -1, new sbyte[] {75, -1, -1, -1, 76, -1, + -1, -1, 77}), +/* NxS[ 75] */ new Table(30, 1, -1, new sbyte[] {91}), +/* NxS[ 76] */ new Table(37, 1, -1, new sbyte[] {82}), +/* NxS[ 77] */ new Table(40, 1, -1, new sbyte[] {78}), +/* NxS[ 78] */ new Table(31, 1, -1, new sbyte[] {79}), +/* NxS[ 79] */ new Table(29, 1, -1, new sbyte[] {80}), +/* NxS[ 80] */ new Table(23, 1, -1, new sbyte[] {81}), +/* NxS[ 81] */ new Table(23, 1, -1, new sbyte[] {38}), +/* NxS[ 82] */ new Table(38, 1, -1, new sbyte[] {83}), +/* NxS[ 83] */ new Table(37, 1, -1, new sbyte[] {84}), +/* NxS[ 84] */ new Table(29, 1, -1, new sbyte[] {85}), +/* NxS[ 85] */ new Table(39, 1, -1, new sbyte[] {86}), +/* NxS[ 86] */ new Table(29, 1, -1, new sbyte[] {87}), +/* NxS[ 87] */ new Table(36, 1, -1, new sbyte[] {88}), +/* NxS[ 88] */ new Table(37, 1, -1, new sbyte[] {89}), +/* NxS[ 89] */ new Table(23, 1, -1, new sbyte[] {90}), +/* NxS[ 90] */ new Table(23, 1, -1, new sbyte[] {39}), +/* NxS[ 91] */ new Table(31, 1, -1, new sbyte[] {92}), +/* NxS[ 92] */ new Table(32, 1, -1, new sbyte[] {93}), +/* NxS[ 93] */ new Table(29, 1, -1, new sbyte[] {94}), +/* NxS[ 94] */ new Table(33, 1, -1, new sbyte[] {95}), +/* NxS[ 95] */ new Table(33, 1, -1, new sbyte[] {96}), +/* NxS[ 96] */ new Table(34, 1, -1, new sbyte[] {97}), +/* NxS[ 97] */ new Table(35, 1, -1, new sbyte[] {98}), +/* NxS[ 98] */ new Table(36, 1, -1, new sbyte[] {99}), +/* NxS[ 99] */ new Table(23, 1, -1, new sbyte[] {100}), +/* NxS[ 100] */ new Table(23, 1, -1, new sbyte[] {40}), +/* NxS[ 101] */ new Table(46, 4, 101, new sbyte[] {54, 101, 101, -1}), +/* NxS[ 102] */ new Table(0, 7, 102, new sbyte[] {-1, 102, 55, 102, 102, 102, + -1}), +/* NxS[ 103] */ new Table(2, 1, 58, new sbyte[] {59}), +/* NxS[ 104] */ new Table(8, 1, 60, new sbyte[] {61}), +/* NxS[ 105] */ new Table(0, 0, -1, null), +/* NxS[ 106] */ new Table(1, 3, 63, new sbyte[] {64, 63, 65}), +/* NxS[ 107] */ new Table(0, 7, 107, new sbyte[] {-1, 107, 66, 107, 107, 107, + -1}), + }; + +int NextState() { + if (code == ScanBuff.EndOfFile) + return eofNum; + else + unchecked { + int rslt; + int idx = Map(code) - NxS[state].min; + if (idx < 0) idx += 49; + if ((uint)idx >= (uint)NxS[state].rng) rslt = NxS[state].dflt; + else rslt = NxS[state].nxt[idx]; + return rslt; + } +} + +#endregion + + +#if BACKUP + // ============================================================== + // == Nested struct used for backup in automata that do backup == + // ============================================================== + + struct Context // class used for automaton backup. + { + public int bPos; + public int rPos; // scanner.readPos saved value + public int cCol; + public int lNum; // Need this in case of backup over EOL. + public int state; + public int cChr; + } + + private Context ctx = new Context(); +#endif // BACKUP + + // ============================================================== + // ==== Nested struct to support input switching in scanners ==== + // ============================================================== + + struct BufferContext { + internal ScanBuff buffSv; + internal int chrSv; + internal int cColSv; + internal int lNumSv; + } + + // ============================================================== + // ===== Private methods to save and restore buffer contexts ==== + // ============================================================== + + /// + /// This method creates a buffer context record from + /// the current buffer object, together with some + /// scanner state values. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + BufferContext MkBuffCtx() + { + BufferContext rslt; + rslt.buffSv = this.buffer; + rslt.chrSv = this.code; + rslt.cColSv = this.cCol; + rslt.lNumSv = this.lNum; + return rslt; + } + + /// + /// This method restores the buffer value and allied + /// scanner state from the given context record value. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void RestoreBuffCtx(BufferContext value) + { + this.buffer = value.buffSv; + this.code = value.chrSv; + this.cCol = value.cColSv; + this.lNum = value.lNumSv; + } + // =================== End Nested classes ======================= + +#if !NOFILES + public Scanner(Stream file) { + SetSource(file, 0); // unicode option + } + + public Scanner(Stream file, string codepage) { + SetSource(file, CodePageHandling.GetCodePage(codepage)); + } + +#endif // !NOFILES + + public Scanner() { } + + private int readPos; + + void GetCode() + { + if (code == '\n') // This needs to be fixed for other conventions + // i.e. [\r\n\205\u2028\u2029] + { + cCol = -1; + lNum++; + } + readPos = buffer.Pos; + + // Now read new codepoint. + code = buffer.Read(); + if (code > ScanBuff.EndOfFile) + { +#if (!BYTEMODE) + if (code >= 0xD800 && code <= 0xDBFF) + { + int next = buffer.Read(); + if (next < 0xDC00 || next > 0xDFFF) + code = ScanBuff.UnicodeReplacementChar; + else + code = (0x10000 + (code & 0x3FF << 10) + (next & 0x3FF)); + } +#endif + cCol++; + } + } + + void MarkToken() + { +#if (!PERSIST) + buffer.Mark(); +#endif + tokPos = readPos; + tokLin = lNum; + tokCol = cCol; + } + + void MarkEnd() + { + tokTxt = null; + tokEPos = readPos; + tokELin = lNum; + tokECol = cCol; + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int Peek() + { + int rslt, codeSv = code, cColSv = cCol, lNumSv = lNum, bPosSv = buffer.Pos; + GetCode(); rslt = code; + lNum = lNumSv; cCol = cColSv; code = codeSv; buffer.Pos = bPosSv; + return rslt; + } + + // ============================================================== + // ===== Initialization of string-based input buffers ==== + // ============================================================== + + /// + /// Create and initialize a StringBuff buffer object for this scanner + /// + /// the input string + /// starting offset in the string + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(string source, int offset) + { + this.buffer = ScanBuff.GetBuffer(source); + this.buffer.Pos = offset; + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } + +#if !NOFILES + // ================ LineBuffer Initialization =================== + + /// + /// Create and initialize a LineBuff buffer object for this scanner + /// + /// the list of input strings + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(IList source) + { + this.buffer = ScanBuff.GetBuffer(source); + this.code = '\n'; // to initialize yyline, yycol and lineStart + this.lNum = 0; + GetCode(); + } + + // =============== StreamBuffer Initialization ================== + + /// + /// Create and initialize a StreamBuff buffer object for this scanner. + /// StreamBuff is buffer for 8-bit byte files. + /// + /// the input byte stream + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(Stream source) + { + this.buffer = ScanBuff.GetBuffer(source); + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } + +#if !BYTEMODE + // ================ TextBuffer Initialization =================== + + /// + /// Create and initialize a TextBuff buffer object for this scanner. + /// TextBuff is a buffer for encoded unicode files. + /// + /// the input text file + /// Code page to use if file has + /// no BOM. For 0, use machine default; for -1, 8-bit binary + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(Stream source, int fallbackCodePage) + { + this.buffer = ScanBuff.GetBuffer(source, fallbackCodePage); + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } +#endif // !BYTEMODE +#endif // !NOFILES + + // ============================================================== + +#if BABEL + // + // Get the next token for Visual Studio + // + // "state" is the inout mode variable that maintains scanner + // state between calls, using the EolState property. In principle, + // if the calls of EolState are costly set could be called once + // only per line, at the start; and get called only at the end + // of the line. This needs more infrastructure ... + // + public int GetNext(ref int state, out int start, out int end) + { + Tokens next; + int s, e; + s = state; // state at start + EolState = state; + next = (Tokens)Scan(); + state = EolState; + e = state; // state at end; + start = tokPos; + end = tokEPos - 1; // end is the index of last char. + return (int)next; + } +#endif // BABEL + + // ======== AbstractScanner<> Implementation ========= + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")] + public override int yylex() + { + // parserMax is set by reflecting on the Tokens + // enumeration. If maxParseToken is defined + // that is used, otherwise int.MaxValue is used. + int next; + do { next = Scan(); } while (next >= parserMax); + return next; + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int yypos { get { return tokPos; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int yyline { get { return tokLin; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int yycol { get { return tokCol; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yytext")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yytext")] + public string yytext + { + get + { + if (tokTxt == null) + tokTxt = buffer.GetString(tokPos, tokEPos); + return tokTxt; + } + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void yyless(int n) + { + buffer.Pos = tokPos; + // Must read at least one char, so set before start. + cCol = tokCol - 1; + GetCode(); + // Now ensure that line counting is correct. + lNum = tokLin; + // And count the rest of the text. + for (int i = 0; i < n; i++) GetCode(); + MarkEnd(); + } + + // + // It would be nice to count backward in the text + // but it does not seem possible to re-establish + // the correct column counts except by going forward. + // + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void _yytrunc(int n) { yyless(yyleng - n); } + + // + // This is painful, but we no longer count + // codepoints. For the overwhelming majority + // of cases the single line code is fast, for + // the others, well, at least it is all in the + // buffer so no files are touched. Note that we + // can't use (tokEPos - tokPos) because of the + // possibility of surrogate pairs in the token. + // + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yyleng")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yyleng")] + public int yyleng + { + get { +#if BYTEMODE + return tokEPos - tokPos; +#else + if (tokELin == tokLin) + return tokECol - tokCol; + else { + int ch; + int count = 0; + int save = buffer.Pos; + buffer.Pos = tokPos; + do { + ch = buffer.Read(); + if (!char.IsHighSurrogate((char)ch)) count++; + } while (buffer.Pos < tokEPos && ch != ScanBuff.EndOfFile); + buffer.Pos = save; + return count; + } +#endif // BYTEMODE + } + } + + // ============ methods available in actions ============== + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal int YY_START { + get { return currentScOrd; } + set { currentScOrd = value; + currentStart = startState[value]; + } + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void BEGIN(int next) { + currentScOrd = next; + currentStart = startState[next]; + } + + // ============== The main tokenizer code ================= + + int Scan() + { + try { + for (; ; ) + { + int next; // next state to enter +#if BACKUP + Result rslt = Result.noMatch; +#endif // BACKUP +#if LEFTANCHORS + for (;;) + { + // Discard characters that do not start any pattern. + // Must check the left anchor condition after *every* GetCode! + state = ((cCol == 0) ? anchorState[currentScOrd] : currentStart); + if ((next = NextState()) != goStart) + break; // LOOP EXIT HERE... + GetCode(); + } + +#else // !LEFTANCHORS + state = currentStart; + while ((next = NextState()) == goStart) + // At this point, the current character has no + // transition from the current state. We discard + // the "no-match" char. In traditional LEX such + // characters are echoed to the console. + GetCode(); +#endif // LEFTANCHORS + // At last, a valid transition ... + MarkToken(); + state = next; + GetCode(); + + while ((next = NextState()) > eofNum) // Exit for goStart AND for eofNum +#if BACKUP + if (state <= maxAccept && next > maxAccept) // need to prepare backup data + { + // ctx is an object. The fields may be + // mutated by the call to Recurse2. + // On return the data in ctx is the + // *latest* accept state that was found. + + rslt = Recurse2(ref ctx, next); + if (rslt == Result.noMatch) + RestoreStateAndPos(ref ctx); + break; + } + else +#endif // BACKUP + { + state = next; + GetCode(); + } + if (state <= maxAccept) + { + MarkEnd(); +#region ActionSwitch +#pragma warning disable 162 + switch (state) + { + case eofNum: + if (yywrap()) + return (int)Tokens.EOF; + break; + case 1: +yylval = new Union(); yylval.op = new op_type_node(Operators.Division); return (int)Tokens.tkSlash; + break; + case 2: + case 4: + case 24: + case 28: + case 29: +parsertools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}",CurrentLexLocation, yytext); + return -1; + break; + case 3: +BEGIN(COMMENT); + break; + case 5: +return (int)Tokens.tkRoundOpen; + break; + case 6: +yylval = new Union(); yylval.op = new op_type_node(Operators.Multiplication); return (int)Tokens.tkStar; + break; + case 7: +return (int)Tokens.tkRoundClose; + break; + case 8: +return (int)Tokens.tkAmpersend; + break; + case 9: +yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkComma; + break; + case 10: +return (int)Tokens.tkColon; + break; + case 11: +return (int)Tokens.tkPoint; + break; + case 12: +return (int)Tokens.tkSemiColon; + break; + case 13: +return (int)Tokens.tkSquareOpen; + break; + case 14: +return (int)Tokens.tkSquareClose; + break; + case 15: +return (int)Tokens.tkQuestion; + break; + case 16: +return (int)Tokens.tkUnderscore; + break; + case 17: +yylval = new Union(); yylval.op = new op_type_node(Operators.AddressOf); return (int)Tokens.tkAddressOf; + break; + case 18: +yylval = new Union(); yylval.op = new op_type_node(Operators.Equal); return (int)Tokens.tkEqual; + break; + case 19: +yylval = new Union(); yylval.op = new op_type_node(Operators.Plus); return (int)Tokens.tkPlus; + break; + case 20: +yylval = new Union(); yylval.op = new op_type_node(Operators.Minus); return (int)Tokens.tkMinus; + break; + case 21: +yylval = new Union(); yylval.op = new op_type_node(Operators.Greater); return (int)Tokens.tkGreater; + break; + case 22: +yylval = new Union(); yylval.op = new op_type_node(Operators.Less); return (int)Tokens.tkLower; + break; + case 23: +yylval = new Union(); yylval.op = new op_type_node(Operators.Deref); return (int)Tokens.tkDeref; + break; + case 25: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.ex = parsertools.create_int_const(yytext,currentLexLocation); + return (int)Tokens.tkInteger; + break; + case 26: +string cur_yytext = yytext; + int res = Keywords.KeywordOrIDToken(cur_yytext); + currentLexLocation = CurrentLexLocation; + if (res == (int)Tokens.tkIdentifier) + { + yylval = new Union(); + yylval.id = parsertools.create_ident(cur_yytext,currentLexLocation); + } + else + switch (res) + { + case (int)Tokens.tkOr: + yylval = new Union(); + yylval.op = new op_type_node(Operators.LogicalOR,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkXor: + yylval = new Union(); + yylval.op = new op_type_node(Operators.BitwiseXOR,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkAnd: + yylval = new Union(); + yylval.op = new op_type_node(Operators.LogicalAND,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkDiv: + yylval = new Union(); + yylval.op = new op_type_node(Operators.IntegerDivision,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkMod: + yylval = new Union(); + yylval.op = new op_type_node(Operators.ModulusRemainder,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkShl: + yylval = new Union(); + yylval.op = new op_type_node(Operators.BitwiseLeftShift,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkShr: + yylval = new Union(); + yylval.op = new op_type_node(Operators.BitwiseRightShift,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkNot: + yylval = new Union(); + yylval.op = new op_type_node(Operators.LogicalNOT,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkAs: + yylval = new Union(); + yylval.op = new op_type_node(Operators.As,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkIn: + yylval = new Union(); + yylval.op = new op_type_node(Operators.In,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkIs: + yylval = new Union(); + yylval.op = new op_type_node(Operators.Is,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkImplicit: + yylval = new Union(); + yylval.op = new op_type_node(Operators.Implicit,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkExplicit: + yylval = new Union(); + yylval.op = new op_type_node(Operators.Explicit,currentLexLocation); + yylval.op.text = cur_yytext; + break; + case (int)Tokens.tkSizeOf: + case (int)Tokens.tkTypeOf: + case (int)Tokens.tkWhere: + case (int)Tokens.tkArray: + case (int)Tokens.tkCase: + case (int)Tokens.tkClass: + case (int)Tokens.tkAuto: + case (int)Tokens.tkConst: + case (int)Tokens.tkConstructor: + case (int)Tokens.tkDestructor: + case (int)Tokens.tkDo: + case (int)Tokens.tkElse: + case (int)Tokens.tkExcept: + case (int)Tokens.tkFile: + case (int)Tokens.tkFinalization: + case (int)Tokens.tkFinally: + case (int)Tokens.tkFor: + case (int)Tokens.tkLoop: + case (int)Tokens.tkForeach: + case (int)Tokens.tkFunction: + case (int)Tokens.tkIf: + case (int)Tokens.tkImplementation: + case (int)Tokens.tkInherited: + case (int)Tokens.tkInitialization: + case (int)Tokens.tkInterface: + case (int)Tokens.tkProcedure: + case (int)Tokens.tkOperator: + case (int)Tokens.tkProperty: + case (int)Tokens.tkRaise: + case (int)Tokens.tkRecord: + case (int)Tokens.tkRepeat: + case (int)Tokens.tkSet: + case (int)Tokens.tkType: + case (int)Tokens.tkThen: + case (int)Tokens.tkUntil: + case (int)Tokens.tkUses: + case (int)Tokens.tkVar: + case (int)Tokens.tkWhile: + case (int)Tokens.tkWith: + case (int)Tokens.tkNil: + case (int)Tokens.tkGoto: + case (int)Tokens.tkOf: + case (int)Tokens.tkLabel: + case (int)Tokens.tkLock: + case (int)Tokens.tkProgram: + case (int)Tokens.tkEvent: + case (int)Tokens.tkDefault: + case (int)Tokens.tkTemplate: + case (int)Tokens.tkPacked: + case (int)Tokens.tkExports: + case (int)Tokens.tkResourceString: + case (int)Tokens.tkThreadvar: + case (int)Tokens.tkSealed: + case (int)Tokens.tkPartial: + case (int)Tokens.tkParams: + case (int)Tokens.tkTo: + case (int)Tokens.tkDownto: + case (int)Tokens.tkUnit: + case (int)Tokens.tkNamespace: + case (int)Tokens.tkLibrary: + case (int)Tokens.tkExternal: + case (int)Tokens.tkYield: + case (int)Tokens.tkSequence: + case (int)Tokens.tkMatch: + case (int)Tokens.tkWhen: + case (int)Tokens.tkStatic: + yylval = new Union(); + yylval.ti = new token_info(cur_yytext,currentLexLocation); + break; + case (int)Tokens.tkBegin: + case (int)Tokens.tkEnd: + case (int)Tokens.tkTry: + yylval = new Union(); + yylval.ti = new token_info(cur_yytext,currentLexLocation); + break; + case (int)Tokens.tkNew: + case (int)Tokens.tkOn: + case (int)Tokens.tkName: + case (int)Tokens.tkPrivate: + case (int)Tokens.tkProtected: + case (int)Tokens.tkPublic: + case (int)Tokens.tkInternal: + case (int)Tokens.tkRead: + case (int)Tokens.tkWrite: + yylval = new Union(); + yylval.id = new ident(cur_yytext,currentLexLocation); + break; + case (int)Tokens.tkAbstract: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_abstract,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkForward: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_forward,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkOverload: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_overload,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkReintroduce: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_reintroduce,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkOverride: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_override,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkExtensionMethod: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_extension,currentLexLocation); + yylval.id.name = cur_yytext; + break; + case (int)Tokens.tkVirtual: + yylval = new Union(); + yylval.id = new procedure_attribute(proc_attribute.attr_virtual,currentLexLocation); + yylval.id.name = cur_yytext; + break; + } + return res; + break; + case 27: +return (int)Tokens.INVISIBLE; + break; + case 30: +yylval = new Union(); + yylval.id = new ident(yytext,CurrentLexLocation); + return (int)Tokens.tkDirectiveName; + break; + case 31: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.stn = parsertools.create_sharp_char_const(yytext,currentLexLocation); + return (int)Tokens.tkAsciiChar; + break; + case 32: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.stn = parsertools.create_string_const(yytext,currentLexLocation); + return (int)Tokens.tkStringLiteral; + break; + case 33: + case 34: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.ex = parsertools.create_double_const(yytext,currentLexLocation); + return (int)Tokens.tkFloat; + break; + case 35: +yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow; + break; + case 36: +yylval = new Union(); yylval.op = new op_type_node(Operators.LessEqual); return (int)Tokens.tkLowerEqual; + break; + case 37: +yylval = new Union(); yylval.op = new op_type_node(Operators.NotEqual); return (int)Tokens.tkNotEqual; + break; + case 38: +return (int)Tokens.tkParseModeType; + break; + case 39: +return (int)Tokens.tkParseModeStatement; + break; + case 40: +return (int)Tokens.tkParseModeExpression; + break; + case 41: +yylval = new Union(); yylval.op = new op_type_node(Operators.GreaterEqual); return (int)Tokens.tkGreaterEqual; + break; + case 42: +yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentSubtraction); return (int)Tokens.tkMinusEqual; + break; + case 43: +yylval = new Union(); yylval.ti = new token_info(yytext); return (int)Tokens.tkArrow; + break; + case 44: +yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentAddition); return (int)Tokens.tkPlusEqual; + break; + case 45: +return (int)Tokens.tkQuestionPoint; + break; + case 46: +return (int)Tokens.tkQuestionSquareOpen; + break; + case 47: +return (int)Tokens.tkDoubleQuestion; + break; + case 48: +return (int)Tokens.tkDotDot; + break; + case 49: +yylval = new Union(); yylval.op = new op_type_node(Operators.Assignment); return (int)Tokens.tkAssign; + break; + case 50: +yylval = new Union(); yylval.op = new op_type_node(Operators.Power); return (int)Tokens.tkStarStar; + break; + case 51: +yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentMultiplication); return (int)Tokens.tkMultEqual; + break; + case 52: +BEGIN(COMMENT1); + break; + case 53: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.ex = parsertools.create_hex_const(yytext,currentLexLocation); + return (int)Tokens.tkHex; + break; + case 54: +yylval = new Union(); + currentLexLocation = CurrentLexLocation; + yylval.stn = parsertools.create_format_string_const(yytext,currentLexLocation); + return (int)Tokens.tkFormatStringLiteral; + break; + case 55: +if (parsertools.build_tree_for_formatter) + break; + + parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam); + parsertools.CheckDirectiveParams(directivename,directiveparam); // directivename in UPPERCASE! + if (directivename == "INCLUDE") + { + TryInclude(directiveparam); + } + else if (directivename == "IFDEF") + { + IfStack.Push(0); + if (!Defines.Contains(directiveparam)) + { + BEGIN(EXCLUDETEXT); + IfExclude = 1; + } + } + else if (directivename == "IFNDEF") + { + IfStack.Push(0); + if (Defines.Contains(directiveparam)) + { + BEGIN(EXCLUDETEXT); + IfExclude = 1; + } + } + else if (directivename == "ELSE") + { + if (IfStack.Count==0) + parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation); + if (IfStack.Peek()==1) + parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation); + IfStack.Pop(); + IfStack.Push(1); + BEGIN(EXCLUDETEXT); + IfExclude = 1; + } + else if (directivename == "ENDIF") + { + if (IfStack.Count == 0) + parsertools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation); + IfStack.Pop(); + } + else if (directivename == "DEFINE") + { + if (!Defines.Contains(directiveparam)) + Defines.Add(directiveparam); + } + else if (directivename == "UNDEF") + { + if (Defines.Contains(directiveparam)) + Defines.Remove(directiveparam); + } + break; + case 56: +{ + +} + break; + case 57: +yylval = new Union(); yylval.op = new op_type_node(Operators.AssignmentDivision); return (int)Tokens.tkDivEqual; + break; + case 58: +{ +} + break; + case 59: +BEGIN(INITIAL); + break; + case 60: + case 61: +{ +} + break; + case 62: +BEGIN(INITIAL); + break; + case 63: + case 64: + case 65: +{ +} + break; + case 66: +parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam); + parsertools.CheckDirectiveParams(directivename,directiveparam); // directivename in UPPERCASE! + if (directivename == "IFDEF") + { + IfStack.Push(0); + IfExclude++; + } + else if (directivename == "IFNDEF") + { + IfStack.Push(0); + IfExclude++; + } + else if (directivename == "ELSE") + { + if (IfStack.Peek() == 1) + parsertools.AddErrorFromResource("UNNECESSARY $else",CurrentLexLocation); + IfStack.Pop(); + IfStack.Push(1); + if (IfExclude == 1) + BEGIN(INITIAL); + } + else if (directivename == "ENDIF") + { + if (IfStack.Count==0) + parsertools.AddErrorFromResource("UNNECESSARY $endif",CurrentLexLocation); + IfStack.Pop(); + IfExclude--; + if (IfExclude == 0) + BEGIN(INITIAL); + } + break; + case 67: +{ + +} + break; + default: + break; + } +#pragma warning restore 162 +#endregion + } + } + } // end try + finally { +// User-specified epilog to scan() +if (currentLexLocation != null) + yylloc = currentLexLocation; + else + yylloc = CurrentLexLocation; + currentLexLocation = null; +// End, user-specified epilog + } // end finally + } + +#if BACKUP + Result Recurse2(ref Context ctx, int next) + { + // Assert: at entry "state" is an accept state AND + // NextState(state, code) != goStart AND + // NextState(state, code) is not an accept state. + // + SaveStateAndPos(ref ctx); + state = next; + GetCode(); + + while ((next = NextState()) > eofNum) + { + if (state <= maxAccept && next > maxAccept) // need to update backup data + SaveStateAndPos(ref ctx); + state = next; + if (state == eofNum) return Result.accept; + GetCode(); + } + return (state <= maxAccept ? Result.accept : Result.noMatch); + } + + void SaveStateAndPos(ref Context ctx) + { + ctx.bPos = buffer.Pos; + ctx.rPos = readPos; + ctx.cCol = cCol; + ctx.lNum = lNum; + ctx.state = state; + ctx.cChr = code; + } + + void RestoreStateAndPos(ref Context ctx) + { + buffer.Pos = ctx.bPos; + readPos = ctx.rPos; + cCol = ctx.cCol; + lNum = ctx.lNum; + state = ctx.state; + code = ctx.cChr; + } + +#endif // BACKUP + + // ============= End of the tokenizer code ================ + +#if STACK + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void yy_clear_stack() { scStack.Clear(); } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal int yy_top_state() { return scStack.Peek(); } + + internal void yy_push_state(int state) + { + scStack.Push(currentScOrd); + BEGIN(state); + } + + internal void yy_pop_state() + { + // Protect against input errors that pop too far ... + if (scStack.Count > 0) { + int newSc = scStack.Pop(); + BEGIN(newSc); + } // Otherwise leave stack unchanged. + } + #endif // STACK + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void ECHO() { Console.Out.Write(yytext); } + +#region UserCodeSection + +public LexLocation CurrentLexLocation + { + get { + return new LexLocation(tokLin, tokCol, tokELin, tokECol, parsertools.CurrentFileName); + } + } + + protected override bool yywrap() + { + if (IfStack.Count > 0) + parsertools.AddErrorFromResource("ENDIF_ABSENT",CurrentLexLocation); + BEGIN(INITIAL); + if (buffStack.Count == 0) + return true; + RestoreBuffCtx(buffStack.Pop()); + parsertools.CurrentFileName = fNameStack.Pop(); + return false; + } + + public override void yyerror(string format, params object[] args) + { + string errorMsg = parsertools.CreateErrorString(yytext,args); + parsertools.AddError(errorMsg,CurrentLexLocation); + } + + private void TryInclude(string fName) + { + if (fName == null || fName.Length == 0) + parsertools.AddErrorFromResource("INCLUDE_EMPTY_FILE",CurrentLexLocation); + else + try { + if (fName.StartsWith("'")) + { + fName = fName.Substring(1); + if (fName.EndsWith("'")) + fName = fName.Substring(0, fName.Length-1); + } + BufferContext savedCtx = MkBuffCtx(); + string full_path = fName; + if (!Path.IsPathRooted(full_path)) + full_path = Path.GetFullPath(Path.Combine(Path.GetDirectoryName(parsertools.CurrentFileName), fName)); + + if (fNameStack.Contains(full_path)) + { + parsertools.AddErrorFromResource("RECUR_INCLUDE", CurrentLexLocation, fName); + return; + } + + SetSource(File.ReadAllText(full_path), 0); + fNameStack.Push(parsertools.CurrentFileName); + parsertools.CurrentFileName = full_path; + buffStack.Push(savedCtx); + } + catch + { + parsertools.AddErrorFromResource("INCLUDE_COULDNT_OPEN_FILE{0}",CurrentLexLocation,fName); + } + } + +#endregion + } // end class $Scanner + +// ============================================================== +// +// This code automatically produced from an embedded resource. +// Do not edit this file, or it will become incompatible with +// the specification from which it was generated. +// +// ============================================================== + +// Code copied from GPLEX embedded resource + [Serializable] + public class BufferException : Exception + { + public BufferException() { } + public BufferException(string message) : base(message) { } + public BufferException(string message, Exception innerException) + : base(message, innerException) { } + protected BufferException(SerializationInfo info, StreamingContext context) + : base(info, context) { } + } + + public abstract class ScanBuff + { + private string fileNm; + + public const int EndOfFile = -1; + public const int UnicodeReplacementChar = 0xFFFD; + + public bool IsFile { get { return (fileNm != null); } } + public string FileName { get { return fileNm; } set { fileNm = value; } } + + public abstract int Pos { get; set; } + public abstract int Read(); + public virtual void Mark() { } + + public abstract string GetString(int begin, int limit); + + public static ScanBuff GetBuffer(string source) + { + return new StringBuffer(source); + } + + public static ScanBuff GetBuffer(IList source) + { + return new LineBuffer(source); + } + + public static ScanBuff GetBuffer(Stream source) + { + return new BuildBuffer(source); + } + +#if (!BYTEMODE) + public static ScanBuff GetBuffer(Stream source, int fallbackCodePage) + { + return new BuildBuffer(source, fallbackCodePage); + } +#endif + } + + #region Buffer classes + + // ============================================================== + // ===== Definitions for various ScanBuff derived classes ==== + // ============================================================== + // =============== String input ================ + // ============================================================== + + /// + /// This class reads characters from a single string as + /// required, for example, by Visual Studio language services + /// + sealed class StringBuffer : ScanBuff + { + string str; // input buffer + int bPos; // current position in buffer + int sLen; + + public StringBuffer(string source) + { + this.str = source; + this.sLen = source.Length; + this.FileName = null; + } + + public override int Read() + { + if (bPos < sLen) return str[bPos++]; + else if (bPos == sLen) { bPos++; return '\n'; } // one strike, see new line + else { bPos++; return EndOfFile; } // two strikes and you're out! + } + + public override string GetString(int begin, int limit) + { + // "limit" can be greater than sLen with the BABEL + // option set. Read returns a "virtual" EOL if + // an attempt is made to read past the end of the + // string buffer. Without the guard any attempt + // to fetch yytext for a token that includes the + // EOL will throw an index exception. + if (limit > sLen) limit = sLen; + if (limit <= begin) return ""; + else return str.Substring(begin, limit - begin); + } + + public override int Pos + { + get { return bPos; } + set { bPos = value; } + } + + public override string ToString() { return "StringBuffer"; } + } + + // ============================================================== + // The LineBuff class contributed by Nigel Horspool, + // nigelh@cs.uvic.cs + // ============================================================== + + sealed class LineBuffer : ScanBuff + { + IList line; // list of source lines from a file + int numLines; // number of strings in line list + string curLine; // current line in that list + int cLine; // index of current line in the list + int curLen; // length of current line + int curLineStart; // position of line start in whole file + int curLineEnd; // position of line end in whole file + int maxPos; // max position ever visited in whole file + int cPos; // ordinal number of code in source + + // Constructed from a list of strings, one per source line. + // The lines have had trailing '\n' characters removed. + public LineBuffer(IList lineList) + { + line = lineList; + numLines = line.Count; + cPos = curLineStart = 0; + curLine = (numLines > 0 ? line[0] : ""); + maxPos = curLineEnd = curLen = curLine.Length; + cLine = 1; + FileName = null; + } + + public override int Read() + { + if (cPos < curLineEnd) + return curLine[cPos++ - curLineStart]; + if (cPos++ == curLineEnd) + return '\n'; + if (cLine >= numLines) + return EndOfFile; + curLine = line[cLine]; + curLen = curLine.Length; + curLineStart = curLineEnd + 1; + curLineEnd = curLineStart + curLen; + if (curLineEnd > maxPos) + maxPos = curLineEnd; + cLine++; + return curLen > 0 ? curLine[0] : '\n'; + } + + // To speed up searches for the line containing a position + private int cachedPosition; + private int cachedIxdex; + private int cachedLineStart; + + // Given a position pos within the entire source, the results are + // ix -- the index of the containing line + // lstart -- the position of the first character on that line + private void findIndex(int pos, out int ix, out int lstart) + { + if (pos >= cachedPosition) + { + ix = cachedIxdex; lstart = cachedLineStart; + } + else + { + ix = lstart = 0; + } + for (; ; ) + { + int len = line[ix].Length + 1; + if (pos < lstart + len) break; + lstart += len; + ix++; + } + cachedPosition = pos; + cachedIxdex = ix; + cachedLineStart = lstart; + } + + public override string GetString(int begin, int limit) + { + if (begin >= maxPos || limit <= begin) return ""; + int endIx, begIx, endLineStart, begLineStart; + findIndex(begin, out begIx, out begLineStart); + int begCol = begin - begLineStart; + findIndex(limit, out endIx, out endLineStart); + int endCol = limit - endLineStart; + string s = line[begIx]; + if (begIx == endIx) + { + // the usual case, substring all on one line + return (endCol <= s.Length) ? + s.Substring(begCol, endCol - begCol) + : s.Substring(begCol) + "\n"; + } + // the string spans multiple lines, yuk! + StringBuilder sb = new StringBuilder(); + if (begCol < s.Length) + sb.Append(s.Substring(begCol)); + for (; ; ) + { + sb.Append("\n"); + s = line[++begIx]; + if (begIx >= endIx) break; + sb.Append(s); + } + if (endCol <= s.Length) + { + sb.Append(s.Substring(0, endCol)); + } + else + { + sb.Append(s); + sb.Append("\n"); + } + return sb.ToString(); + } + + public override int Pos + { + get { return cPos; } + set + { + cPos = value; + findIndex(cPos, out cLine, out curLineStart); + curLine = line[cLine]; + curLineEnd = curLineStart + curLine.Length; + } + } + + public override string ToString() { return "LineBuffer"; } + } + + + // ============================================================== + // ===== class BuildBuff : for unicode text files ======== + // ============================================================== + + class BuildBuffer : ScanBuff + { + // Double buffer for char stream. + class BufferElement + { + StringBuilder bldr = new StringBuilder(); + StringBuilder next = new StringBuilder(); + int minIx; + int maxIx; + int brkIx; + bool appendToNext; + + internal BufferElement() { } + + internal int MaxIndex { get { return maxIx; } } + // internal int MinIndex { get { return minIx; } } + + internal char this[int index] + { + get + { + if (index < minIx || index >= maxIx) + throw new BufferException("Index was outside data buffer"); + else if (index < brkIx) + return bldr[index - minIx]; + else + return next[index - brkIx]; + } + } + + internal void Append(char[] block, int count) + { + maxIx += count; + if (appendToNext) + this.next.Append(block, 0, count); + else + { + this.bldr.Append(block, 0, count); + brkIx = maxIx; + appendToNext = true; + } + } + + internal string GetString(int start, int limit) + { + if (limit <= start) + return ""; + if (start >= minIx && limit <= maxIx) + if (limit < brkIx) // String entirely in bldr builder + return bldr.ToString(start - minIx, limit - start); + else if (start >= brkIx) // String entirely in next builder + return next.ToString(start - brkIx, limit - start); + else // Must do a string-concatenation + return + bldr.ToString(start - minIx, brkIx - start) + + next.ToString(0, limit - brkIx); + else + throw new BufferException("String was outside data buffer"); + } + + internal void Mark(int limit) + { + if (limit > brkIx + 16) // Rotate blocks + { + StringBuilder temp = bldr; + bldr = next; + next = temp; + next.Length = 0; + minIx = brkIx; + brkIx = maxIx; + } + } + } + + BufferElement data = new BufferElement(); + + int bPos; // Postion index in the StringBuilder + BlockReader NextBlk; // Delegate that serves char-arrays; + + private string EncodingName + { + get + { + StreamReader rdr = NextBlk.Target as StreamReader; + return (rdr == null ? "raw-bytes" : rdr.CurrentEncoding.BodyName); + } + } + + public BuildBuffer(Stream stream) + { + FileStream fStrm = (stream as FileStream); + if (fStrm != null) FileName = fStrm.Name; + NextBlk = BlockReaderFactory.Raw(stream); + } + +#if (!BYTEMODE) + public BuildBuffer(Stream stream, int fallbackCodePage) + { + FileStream fStrm = (stream as FileStream); + if (fStrm != null) FileName = fStrm.Name; + NextBlk = BlockReaderFactory.Get(stream, fallbackCodePage); + } +#endif + + /// + /// Marks a conservative lower bound for the buffer, + /// allowing space to be reclaimed. If an application + /// needs to call GetString at arbitrary past locations + /// in the input stream, Mark() is not called. + /// + public override void Mark() { data.Mark(bPos - 2); } + + public override int Pos + { + get { return bPos; } + set { bPos = value; } + } + + + /// + /// Read returns the ordinal number of the next char, or + /// EOF (-1) for an end of stream. Note that the next + /// code point may require *two* calls of Read(). + /// + /// + public override int Read() + { + // + // Characters at positions + // [data.offset, data.offset + data.bldr.Length) + // are available in data.bldr. + // + if (bPos < data.MaxIndex) + { + // ch0 cannot be EOF + return (int)data[bPos++]; + } + else // Read from underlying stream + { + // Experimental code, blocks of page size + char[] chrs = new char[4096]; + int count = NextBlk(chrs, 0, 4096); + if (count == 0) + return EndOfFile; + else + { + data.Append(chrs, count); + return (int)data[bPos++]; + } + } + } + + public override string GetString(int begin, int limit) + { + return data.GetString(begin, limit); + } + + public override string ToString() + { + return "StringBuilder buffer, encoding: " + this.EncodingName; + } + } + + // =============== End ScanBuff-derived classes ================== + + public delegate int BlockReader(char[] block, int index, int number); + + // A delegate factory, serving up a delegate that + // reads a block of characters from the underlying + // encoded stream, via a StreamReader object. + // + public static class BlockReaderFactory + { + public static BlockReader Raw(Stream stream) + { + return delegate(char[] block, int index, int number) + { + byte[] b = new byte[number]; + int count = stream.Read(b, 0, number); + int i = 0; + int j = index; + for (; i < count; i++, j++) + block[j] = (char)b[i]; + return count; + }; + } + +#if (!BYTEMODE) + public static BlockReader Get(Stream stream, int fallbackCodePage) + { + Encoding encoding; + int preamble = Preamble(stream); + + if (preamble != 0) // There is a valid BOM here! + encoding = Encoding.GetEncoding(preamble); + else if (fallbackCodePage == -1) // Fallback is "raw" bytes + return Raw(stream); + else if (fallbackCodePage != -2) // Anything but "guess" + encoding = Encoding.GetEncoding(fallbackCodePage); + else // This is the "guess" option + { + int guess = new Guesser(stream).GuessCodePage(); + stream.Seek(0, SeekOrigin.Begin); + if (guess == -1) // ==> this is a 7-bit file + encoding = Encoding.ASCII; + else if (guess == 65001) + encoding = Encoding.UTF8; + else // ==> use the machine default + encoding = Encoding.Default; + } + StreamReader reader = new StreamReader(stream, encoding); + return reader.Read; + } + + static int Preamble(Stream stream) + { + int b0 = stream.ReadByte(); + int b1 = stream.ReadByte(); + + if (b0 == 0xfe && b1 == 0xff) + return 1201; // UTF16BE + if (b0 == 0xff && b1 == 0xfe) + return 1200; // UTF16LE + + int b2 = stream.ReadByte(); + if (b0 == 0xef && b1 == 0xbb && b2 == 0xbf) + return 65001; // UTF8 + // + // There is no unicode preamble, so we + // return denoter for the machine default. + // + stream.Seek(0, SeekOrigin.Begin); + return 0; + } +#endif // !BYTEMODE + } + #endregion Buffer classes + + // ============================================================== + // ============ class CodePageHandling ============= + // ============================================================== + + public static class CodePageHandling + { + public static int GetCodePage(string option) + { + string command = option.ToUpperInvariant(); + if (command.StartsWith("CodePage:", StringComparison.OrdinalIgnoreCase)) + command = command.Substring(9); + try + { + if (command.Equals("RAW")) + return -1; + else if (command.Equals("GUESS")) + return -2; + else if (command.Equals("DEFAULT")) + return 0; + else if (char.IsDigit(command[0])) + return int.Parse(command, CultureInfo.InvariantCulture); + else + { + Encoding enc = Encoding.GetEncoding(command); + return enc.CodePage; + } + } + catch (FormatException) + { + Console.Error.WriteLine( + "Invalid format \"{0}\", using machine default", option); + } + catch (ArgumentException) + { + Console.Error.WriteLine( + "Unknown code page \"{0}\", using machine default", option); + } + return 0; + } + } +#region guesser +#if (!BYTEMODE) + // ============================================================== + // ============ Encoding Guesser ============= + // ============================================================== + + /// + /// This class provides a simple finite state automaton that + /// scans the file looking for (1) valid UTF-8 byte patterns, + /// (2) bytes >= 0x80 which are not part of a UTF-8 sequence. + /// The method then guesses whether it is UTF-8 or maybe some + /// local machine default encoding. This works well for the + /// various Latin encodings. + /// + internal class Guesser + { + ScanBuff buffer; + + public int GuessCodePage() { return Scan(); } + + const int maxAccept = 10; + const int initial = 0; + const int eofNum = 0; + const int goStart = -1; + const int INITIAL = 0; + const int EndToken = 0; + + #region user code + /* + * Reads the bytes of a file to determine if it is + * UTF-8 or a single-byte code page file. + */ + public long utfX; + public long uppr; + #endregion user code + + int state; + int currentStart = startState[0]; + int code; + + #region ScannerTables + static int[] startState = new int[] { 11, 0 }; + + #region CharacterMap + static sbyte[] map = new sbyte[256] { +/* '\0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x10' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x20' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '@' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 'P' */ 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, +/* 'p' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x80' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\x90' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xA0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xB0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xC0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +/* '\xD0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +/* '\xE0' */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, +/* '\xF0' */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 }; + #endregion + + static sbyte[][] nextState = new sbyte[][] { + new sbyte[] {0, 0, 0, 0, 0, 0}, + new sbyte[] {-1, -1, 10, -1, -1, -1}, + new sbyte[] {-1, -1, -1, -1, -1, -1}, + new sbyte[] {-1, -1, 8, -1, -1, -1}, + new sbyte[] {-1, -1, 5, -1, -1, -1}, + new sbyte[] {-1, -1, 6, -1, -1, -1}, + new sbyte[] {-1, -1, 7, -1, -1, -1}, + null, + new sbyte[] {-1, -1, 9, -1, -1, -1}, + null, + null, + new sbyte[] {-1, 1, 2, 3, 4, 2} + }; + + + [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")] + // Reason for suppression: cannot have self-reference in array initializer. + static Guesser() + { + nextState[7] = nextState[2]; + nextState[9] = nextState[2]; + nextState[10] = nextState[2]; + } + + int NextState() + { + if (code == ScanBuff.EndOfFile) + return eofNum; + else + return nextState[state][map[code]]; + } + #endregion + + public Guesser(System.IO.Stream file) { SetSource(file); } + + public void SetSource(System.IO.Stream source) + { + this.buffer = new BuildBuffer(source); + code = buffer.Read(); + } + + int Scan() + { + for (; ; ) + { + int next; + state = currentStart; + while ((next = NextState()) == goStart) + code = buffer.Read(); + + state = next; + code = buffer.Read(); + + while ((next = NextState()) > eofNum) + { + state = next; + code = buffer.Read(); + } + if (state <= maxAccept) + { + #region ActionSwitch +#pragma warning disable 162 + switch (state) + { + case eofNum: + switch (currentStart) + { + case 11: + if (utfX == 0 && uppr == 0) return -1; /* raw ascii */ + else if (uppr * 10 > utfX) return 0; /* default code page */ + else return 65001; /* UTF-8 encoding */ + break; + } + return EndToken; + case 1: // Recognized '{Upper128}', Shortest string "\xC0" + case 2: // Recognized '{Upper128}', Shortest string "\x80" + case 3: // Recognized '{Upper128}', Shortest string "\xE0" + case 4: // Recognized '{Upper128}', Shortest string "\xF0" + uppr++; + break; + case 5: // Recognized '{Utf8pfx4}{Utf8cont}', Shortest string "\xF0\x80" + uppr += 2; + break; + case 6: // Recognized '{Utf8pfx4}{Utf8cont}{2}', Shortest string "\xF0\x80\x80" + uppr += 3; + break; + case 7: // Recognized '{Utf8pfx4}{Utf8cont}{3}', Shortest string "\xF0\x80\x80\x80" + utfX += 3; + break; + case 8: // Recognized '{Utf8pfx3}{Utf8cont}', Shortest string "\xE0\x80" + uppr += 2; + break; + case 9: // Recognized '{Utf8pfx3}{Utf8cont}{2}', Shortest string "\xE0\x80\x80" + utfX += 2; + break; + case 10: // Recognized '{Utf8pfx2}{Utf8cont}', Shortest string "\xC0\x80" + utfX++; + break; + default: + break; + } +#pragma warning restore 162 + #endregion + } + } + } + } // end class Guesser + +#endif // !BYTEMODE +#endregion + +// End of code copied from embedded resource + +} // end namespace diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs new file mode 100644 index 000000000..8ac7029df --- /dev/null +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -0,0 +1,7339 @@ +// (see accompanying GPPGcopyright.rtf) + +// GPPG version 1.3.6 +// Machine: DESKTOP-G8V08V4 +// DateTime: 08.06.2020 21:36:35 +// UserName: ????????? +// Input file + +// options: no-lines gplex + +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using QUT.Gppg; +using PascalABCCompiler.SyntaxTree; +using PascalABCSavParser; +using PascalABCCompiler.ParserTools; +using PascalABCCompiler.Errors; +using System.Linq; +using SyntaxVisitors; + +namespace GPPGParserScanner +{ +public enum Tokens { + error=1,EOF=2,tkDirectiveName=3,tkAmpersend=4,tkColon=5,tkDotDot=6, + tkPoint=7,tkRoundOpen=8,tkRoundClose=9,tkSemiColon=10,tkSquareOpen=11,tkSquareClose=12, + tkQuestion=13,tkUnderscore=14,tkQuestionPoint=15,tkDoubleQuestion=16,tkQuestionSquareOpen=17,tkSizeOf=18, + tkTypeOf=19,tkWhere=20,tkArray=21,tkCase=22,tkClass=23,tkAuto=24, + tkStatic=25,tkConst=26,tkConstructor=27,tkDestructor=28,tkElse=29,tkExcept=30, + tkFile=31,tkFor=32,tkForeach=33,tkFunction=34,tkMatch=35,tkWhen=36, + tkIf=37,tkImplementation=38,tkInherited=39,tkInterface=40,tkProcedure=41,tkOperator=42, + tkProperty=43,tkRaise=44,tkRecord=45,tkSet=46,tkType=47,tkThen=48, + tkUses=49,tkVar=50,tkWhile=51,tkWith=52,tkNil=53,tkGoto=54, + tkOf=55,tkLabel=56,tkLock=57,tkProgram=58,tkEvent=59,tkDefault=60, + tkTemplate=61,tkPacked=62,tkExports=63,tkResourceString=64,tkThreadvar=65,tkSealed=66, + tkPartial=67,tkTo=68,tkDownto=69,tkLoop=70,tkSequence=71,tkYield=72, + tkNew=73,tkOn=74,tkName=75,tkPrivate=76,tkProtected=77,tkPublic=78, + tkInternal=79,tkRead=80,tkWrite=81,tkParseModeExpression=82,tkParseModeStatement=83,tkParseModeType=84, + tkBegin=85,tkEnd=86,tkAsmBody=87,tkILCode=88,tkError=89,INVISIBLE=90, + tkRepeat=91,tkUntil=92,tkDo=93,tkComma=94,tkFinally=95,tkTry=96, + tkInitialization=97,tkFinalization=98,tkUnit=99,tkLibrary=100,tkExternal=101,tkParams=102, + tkNamespace=103,tkAssign=104,tkPlusEqual=105,tkMinusEqual=106,tkMultEqual=107,tkDivEqual=108, + tkMinus=109,tkPlus=110,tkSlash=111,tkStar=112,tkStarStar=113,tkEqual=114, + tkGreater=115,tkGreaterEqual=116,tkLower=117,tkLowerEqual=118,tkNotEqual=119,tkCSharpStyleOr=120, + tkArrow=121,tkOr=122,tkXor=123,tkAnd=124,tkDiv=125,tkMod=126, + tkShl=127,tkShr=128,tkNot=129,tkAs=130,tkIn=131,tkIs=132, + tkImplicit=133,tkExplicit=134,tkAddressOf=135,tkDeref=136,tkIdentifier=137,tkStringLiteral=138, + tkFormatStringLiteral=139,tkAsciiChar=140,tkAbstract=141,tkForward=142,tkOverload=143,tkReintroduce=144, + tkOverride=145,tkVirtual=146,tkExtensionMethod=147,tkInteger=148,tkFloat=149,tkHex=150, + tkUnknown=151}; + +// Abstract base class for GPLEX scanners +public abstract class ScanBase : AbstractScanner { + private LexLocation __yylloc = new LexLocation(); + public override LexLocation yylloc { get { return __yylloc; } set { __yylloc = value; } } + protected virtual bool yywrap() { return true; } +} + +public partial class GPPGParser: ShiftReduceParser +{ + // Verbatim content from ABCPascal.y +// ��� ���������� ����������� � ����� GPPGParser, �������������� ����� ������, ������������ �������� gppg + public syntax_tree_node root; // �������� ���� ��������������� ������ + + public List errors; + public string current_file_name; + public int max_errors = 10; + public PT parsertools; + public List CompilerDirectives; + public ParserLambdaHelper lambdaHelper = new ParserLambdaHelper(); + + public GPPGParser(AbstractScanner scanner) : base(scanner) { } + // End verbatim content from ABCPascal.y + +#pragma warning disable 649 + private static Dictionary aliasses; +#pragma warning restore 649 + private static Rule[] rules = new Rule[974]; + private static State[] states = new State[1603]; + private static string[] nonTerms = new string[] { + "parse_goal", "unit_key_word", "class_or_static", "assignment", "optional_array_initializer", + "attribute_declarations", "ot_visibility_specifier", "one_attribute", "attribute_variable", + "const_factor", "const_variable_2", "const_term", "const_variable", "literal_or_number", + "unsigned_number", "variable_or_literal_or_number", "program_block", "optional_var", + "class_attribute", "class_attributes", "class_attributes1", "member_list_section", + "optional_component_list_seq_end", "const_decl", "only_const_decl", "const_decl_sect", + "object_type", "record_type", "member_list", "method_decl_list", "field_or_const_definition_list", + "case_stmt", "case_list", "program_decl_sect_list", "int_decl_sect_list1", + "inclass_decl_sect_list1", "interface_decl_sect_list", "decl_sect_list", + "decl_sect_list1", "inclass_decl_sect_list", "field_or_const_definition", + "abc_decl_sect", "decl_sect", "int_decl_sect", "type_decl", "simple_type_decl", + "simple_field_or_const_definition", "res_str_decl_sect", "method_decl_withattr", + "method_or_property_decl", "property_definition", "fp_sect", "default_expr", + "tuple", "expr_as_stmt", "exception_block", "external_block", "exception_handler", + "exception_handler_list", "exception_identifier", "typed_const_list1", + "typed_const_list", "optional_expr_list", "elem_list", "optional_expr_list_with_bracket", + "expr_list", "const_elem_list1", "case_label_list", "const_elem_list", + "optional_const_func_expr_list", "elem_list1", "enumeration_id", "expr_l1_list", + "enumeration_id_list", "const_simple_expr", "term", "term1", "simple_term", + "typed_const", "typed_const_plus", "typed_var_init_expression", "expr", + "expr_with_func_decl_lambda", "const_expr", "elem", "range_expr", "const_elem", + "array_const", "factor", "relop_expr", "expr_dq", "expr_l1", "expr_l1_func_decl_lambda", + "expr_l1_for_lambda", "simple_expr", "range_term", "range_factor", "external_directive_ident", + "init_const_expr", "case_label", "variable", "var_reference", "optional_read_expr", + "simple_expr_or_nothing", "var_question_point", "expr_l1_for_question_expr", + "expr_l1_for_new_question_expr", "for_cycle_type", "format_expr", "format_const_expr", + "const_expr_or_nothing", "foreach_stmt", "for_stmt", "loop_stmt", "yield_stmt", + "yield_sequence_stmt", "fp_list", "fp_sect_list", "file_type", "sequence_type", + "var_address", "goto_stmt", "func_name_ident", "param_name", "const_field_name", + "func_name_with_template_args", "identifier_or_keyword", "unit_name", "exception_variable", + "const_name", "func_meth_name_ident", "label_name", "type_decl_identifier", + "template_identifier_with_equal", "program_param", "identifier", "identifier_keyword_operatorname", + "func_class_name_ident", "visibility_specifier", "property_specifier_directives", + "non_reserved", "if_stmt", "initialization_part", "template_arguments", + "label_list", "ident_or_keyword_pointseparator_list", "ident_list", "param_name_list", + "inherited_message", "implementation_part", "interface_part", "abc_interface_part", + "simple_type_list", "literal", "one_literal", "literal_list", "label_decl_sect", + "lock_stmt", "func_name", "proc_name", "optional_proc_name", "qualified_identifier", + "new_expr", "allowable_expr_as_stmt", "parts", "inclass_block", "block", + "proc_func_external_block", "exception_class_type_identifier", "simple_type_identifier", + "base_class_name", "base_classes_names_list", "optional_base_classes", + "one_compiler_directive", "optional_head_compiler_directives", "head_compiler_directives", + "program_heading_2", "optional_tk_point", "program_param_list", "optional_semicolon", + "operator_name_ident", "const_relop", "const_addop", "assign_operator", + "const_mulop", "relop", "addop", "mulop", "sign", "overload_operator", + "typecast_op", "property_specifiers", "write_property_specifiers", "read_property_specifiers", + "array_defaultproperty", "meth_modificators", "optional_method_modificators", + "optional_method_modificators1", "meth_modificator", "property_modificator", + "optional_property_initialization", "proc_call", "proc_func_constr_destr_decl", + "proc_func_decl", "inclass_proc_func_decl", "inclass_proc_func_decl_noclass", + "constr_destr_decl", "inclass_constr_destr_decl", "method_decl", "proc_func_constr_destr_decl_with_attr", + "proc_func_decl_noclass", "method_header", "proc_type_decl", "procedural_type_kind", + "proc_header", "procedural_type", "constr_destr_header", "proc_func_header", + "func_header", "method_procfunc_header", "int_func_header", "int_proc_header", + "property_interface", "program_file", "program_header", "parameter_decl", + "parameter_decl_list", "property_parameter_list", "const_set", "question_expr", + "question_constexpr", "new_question_expr", "record_const", "const_field_list_1", + "const_field_list", "const_field", "repeat_stmt", "raise_stmt", "pointer_type", + "attribute_declaration", "one_or_some_attribute", "stmt_list", "else_case", + "exception_block_else_branch", "compound_stmt", "string_type", "sizeof_expr", + "simple_property_definition", "stmt_or_expression", "unlabelled_stmt", + "stmt", "case_item", "set_type", "as_is_expr", "as_is_constexpr", "is_type_expr", + "as_expr", "power_expr", "power_constexpr", "unsized_array_type", "simple_type_or_", + "simple_type", "simple_type_question", "foreach_stmt_ident_dype_opt", "fptype", + "type_ref", "fptype_noproctype", "array_type", "template_param", "template_empty_param", + "structured_type", "unpacked_structured_type", "empty_template_type_reference", + "simple_or_template_type_reference", "type_ref_or_secific", "for_stmt_decl_or_assign", + "type_decl_type", "type_ref_and_secific_list", "type_decl_sect", "try_handler", + "class_or_interface_keyword", "optional_tk_do", "keyword", "reserved_keyword", + "typeof_expr", "simple_fp_sect", "template_param_list", "template_empty_param_list", + "template_type_params", "template_type_empty_params", "template_type", + "try_stmt", "uses_clause", "used_units_list", "unit_file", "used_unit_name", + "unit_header", "var_decl_sect", "var_decl", "var_decl_part", "field_definition", + "var_decl_with_assign_var_tuple", "var_stmt", "where_part", "where_part_list", + "optional_where_section", "while_stmt", "with_stmt", "variable_as_type", + "dotted_identifier", "func_decl_lambda", "expl_func_decl_lambda", "lambda_type_ref", + "lambda_type_ref_noproctype", "full_lambda_fp_list", "lambda_simple_fp_sect", + "lambda_function_body", "lambda_procedure_body", "common_lambda_body", + "optional_full_lambda_fp_list", "field_in_unnamed_object", "list_fields_in_unnamed_object", + "func_class_name_ident_list", "rem_lambda", "variable_list", "var_ident_list", + "tkAssignOrEqual", "const_pattern_expression", "pattern", "deconstruction_or_const_pattern", + "pattern_optional_var", "collection_pattern", "tuple_pattern", "collection_pattern_list_item", + "tuple_pattern_item", "collection_pattern_var_item", "match_with", "pattern_case", + "pattern_cases", "pattern_out_param", "pattern_out_param_optional_var", + "pattern_out_param_list", "pattern_out_param_list_optional_var", "collection_pattern_expr_list", + "tuple_pattern_item_list", "const_pattern_expr_list", "$accept", }; + + static GPPGParser() { + states[0] = new State(new int[]{58,1510,11,685,82,1585,84,1590,83,1597,3,-25,49,-25,85,-25,56,-25,26,-25,64,-25,47,-25,50,-25,59,-25,41,-25,34,-25,25,-25,23,-25,27,-25,28,-25,99,-197,100,-197,103,-197},new int[]{-1,1,-224,3,-225,4,-295,1522,-6,1523,-240,1046,-165,1584}); + states[1] = new State(new int[]{2,2}); + states[2] = new State(-1); + states[3] = new State(-2); + states[4] = new State(new int[]{3,1506,49,-12,85,-12,56,-12,26,-12,64,-12,47,-12,50,-12,59,-12,11,-12,41,-12,34,-12,25,-12,23,-12,27,-12,28,-12},new int[]{-175,5,-176,1504,-174,1509}); + states[5] = new State(-36,new int[]{-293,6}); + states[6] = new State(new int[]{49,14,56,-60,26,-60,64,-60,47,-60,50,-60,59,-60,11,-60,41,-60,34,-60,25,-60,23,-60,27,-60,28,-60,85,-60},new int[]{-17,7,-34,127,-38,1441,-39,1442}); + states[7] = new State(new int[]{7,9,10,10,5,11,94,12,6,13,2,-24},new int[]{-178,8}); + states[8] = new State(-18); + states[9] = new State(-19); + states[10] = new State(-20); + states[11] = new State(-21); + states[12] = new State(-22); + states[13] = new State(-23); + states[14] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-294,15,-296,126,-146,19,-127,125,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[15] = new State(new int[]{10,16,94,17}); + states[16] = new State(-37); + states[17] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-296,18,-146,19,-127,125,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[18] = new State(-39); + states[19] = new State(new int[]{7,20,131,123,10,-40,94,-40}); + states[20] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-127,21,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[21] = new State(-35); + states[22] = new State(-795); + states[23] = new State(-792); + states[24] = new State(-793); + states[25] = new State(-811); + states[26] = new State(-812); + states[27] = new State(-794); + states[28] = new State(-813); + states[29] = new State(-814); + states[30] = new State(-796); + states[31] = new State(-819); + states[32] = new State(-815); + states[33] = new State(-816); + states[34] = new State(-817); + states[35] = new State(-818); + states[36] = new State(-820); + states[37] = new State(-821); + states[38] = new State(-822); + states[39] = new State(-823); + states[40] = new State(-824); + states[41] = new State(-825); + states[42] = new State(-826); + states[43] = new State(-827); + states[44] = new State(-828); + states[45] = new State(-829); + states[46] = new State(-830); + states[47] = new State(-831); + states[48] = new State(-832); + states[49] = new State(-833); + states[50] = new State(-834); + states[51] = new State(-835); + states[52] = new State(-836); + states[53] = new State(-837); + states[54] = new State(-838); + states[55] = new State(-839); + states[56] = new State(-840); + states[57] = new State(-841); + states[58] = new State(-842); + states[59] = new State(-843); + states[60] = new State(-844); + states[61] = new State(-845); + states[62] = new State(-846); + states[63] = new State(-847); + states[64] = new State(-848); + states[65] = new State(-849); + states[66] = new State(-850); + states[67] = new State(-851); + states[68] = new State(-852); + states[69] = new State(-853); + states[70] = new State(-854); + states[71] = new State(-855); + states[72] = new State(-856); + states[73] = new State(-857); + states[74] = new State(-858); + states[75] = new State(-859); + states[76] = new State(-860); + states[77] = new State(-861); + states[78] = new State(-862); + states[79] = new State(-863); + states[80] = new State(-864); + states[81] = new State(-865); + states[82] = new State(-866); + states[83] = new State(-867); + states[84] = new State(-868); + states[85] = new State(-869); + states[86] = new State(-870); + states[87] = new State(-871); + states[88] = new State(-872); + states[89] = new State(-873); + states[90] = new State(-874); + states[91] = new State(-875); + states[92] = new State(-876); + states[93] = new State(-877); + states[94] = new State(-878); + states[95] = new State(-879); + states[96] = new State(-880); + states[97] = new State(-881); + states[98] = new State(-882); + states[99] = new State(-883); + states[100] = new State(-884); + states[101] = new State(-885); + states[102] = new State(-886); + states[103] = new State(-887); + states[104] = new State(-888); + states[105] = new State(-889); + states[106] = new State(-890); + states[107] = new State(-891); + states[108] = new State(-892); + states[109] = new State(-893); + states[110] = new State(-894); + states[111] = new State(-895); + states[112] = new State(-896); + states[113] = new State(-897); + states[114] = new State(-898); + states[115] = new State(-899); + states[116] = new State(-900); + states[117] = new State(-901); + states[118] = new State(-902); + states[119] = new State(-903); + states[120] = new State(-904); + states[121] = new State(-797); + states[122] = new State(-905); + states[123] = new State(new int[]{138,124}); + states[124] = new State(-41); + states[125] = new State(-34); + states[126] = new State(-38); + states[127] = new State(new int[]{85,129},new int[]{-245,128}); + states[128] = new State(-32); + states[129] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476},new int[]{-242,130,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[130] = new State(new int[]{86,131,10,132}); + states[131] = new State(-513); + states[132] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476},new int[]{-251,133,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[133] = new State(-515); + states[134] = new State(-474); + states[135] = new State(-477); + states[136] = new State(new int[]{104,508,105,509,106,510,107,511,108,512,86,-511,10,-511,92,-511,95,-511,30,-511,98,-511,94,-511,12,-511,9,-511,93,-511,29,-511,81,-511,80,-511,2,-511,79,-511,78,-511,77,-511,76,-511},new int[]{-184,137}); + states[137] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705},new int[]{-83,138,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[138] = new State(-504); + states[139] = new State(-578); + states[140] = new State(-580); + states[141] = new State(new int[]{16,142,86,-582,10,-582,92,-582,95,-582,30,-582,98,-582,94,-582,12,-582,9,-582,93,-582,29,-582,81,-582,80,-582,2,-582,79,-582,78,-582,77,-582,76,-582,6,-582,5,-582,48,-582,55,-582,135,-582,137,-582,75,-582,73,-582,42,-582,39,-582,8,-582,18,-582,19,-582,138,-582,140,-582,139,-582,148,-582,150,-582,149,-582,54,-582,85,-582,37,-582,22,-582,91,-582,51,-582,32,-582,52,-582,96,-582,44,-582,33,-582,50,-582,57,-582,72,-582,70,-582,35,-582,68,-582,69,-582,13,-585}); + states[142] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-90,143,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640}); + states[143] = new State(new int[]{114,303,119,304,117,305,115,306,118,307,116,308,131,309,16,-595,86,-595,10,-595,92,-595,95,-595,30,-595,98,-595,94,-595,12,-595,9,-595,93,-595,29,-595,81,-595,80,-595,2,-595,79,-595,78,-595,77,-595,76,-595,13,-595,6,-595,5,-595,48,-595,55,-595,135,-595,137,-595,75,-595,73,-595,42,-595,39,-595,8,-595,18,-595,19,-595,138,-595,140,-595,139,-595,148,-595,150,-595,149,-595,54,-595,85,-595,37,-595,22,-595,91,-595,51,-595,32,-595,52,-595,96,-595,44,-595,33,-595,50,-595,57,-595,72,-595,70,-595,35,-595,68,-595,69,-595,110,-595,109,-595,122,-595,123,-595,120,-595,132,-595,130,-595,112,-595,111,-595,125,-595,126,-595,127,-595,128,-595,124,-595},new int[]{-186,144}); + states[144] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-95,145,-232,1440,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[145] = new State(new int[]{6,146,114,-618,119,-618,117,-618,115,-618,118,-618,116,-618,131,-618,16,-618,86,-618,10,-618,92,-618,95,-618,30,-618,98,-618,94,-618,12,-618,9,-618,93,-618,29,-618,81,-618,80,-618,2,-618,79,-618,78,-618,77,-618,76,-618,13,-618,5,-618,48,-618,55,-618,135,-618,137,-618,75,-618,73,-618,42,-618,39,-618,8,-618,18,-618,19,-618,138,-618,140,-618,139,-618,148,-618,150,-618,149,-618,54,-618,85,-618,37,-618,22,-618,91,-618,51,-618,32,-618,52,-618,96,-618,44,-618,33,-618,50,-618,57,-618,72,-618,70,-618,35,-618,68,-618,69,-618,110,-618,109,-618,122,-618,123,-618,120,-618,132,-618,130,-618,112,-618,111,-618,125,-618,126,-618,127,-618,128,-618,124,-618}); + states[146] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-77,147,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[147] = new State(new int[]{110,316,109,317,122,318,123,319,120,320,6,-698,5,-698,114,-698,119,-698,117,-698,115,-698,118,-698,116,-698,131,-698,16,-698,86,-698,10,-698,92,-698,95,-698,30,-698,98,-698,94,-698,12,-698,9,-698,93,-698,29,-698,81,-698,80,-698,2,-698,79,-698,78,-698,77,-698,76,-698,13,-698,48,-698,55,-698,135,-698,137,-698,75,-698,73,-698,42,-698,39,-698,8,-698,18,-698,19,-698,138,-698,140,-698,139,-698,148,-698,150,-698,149,-698,54,-698,85,-698,37,-698,22,-698,91,-698,51,-698,32,-698,52,-698,96,-698,44,-698,33,-698,50,-698,57,-698,72,-698,70,-698,35,-698,68,-698,69,-698,132,-698,130,-698,112,-698,111,-698,125,-698,126,-698,127,-698,128,-698,124,-698},new int[]{-187,148}); + states[148] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-76,149,-232,1439,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[149] = new State(new int[]{132,322,130,324,112,326,111,327,125,328,126,329,127,330,128,331,124,332,110,-700,109,-700,122,-700,123,-700,120,-700,6,-700,5,-700,114,-700,119,-700,117,-700,115,-700,118,-700,116,-700,131,-700,16,-700,86,-700,10,-700,92,-700,95,-700,30,-700,98,-700,94,-700,12,-700,9,-700,93,-700,29,-700,81,-700,80,-700,2,-700,79,-700,78,-700,77,-700,76,-700,13,-700,48,-700,55,-700,135,-700,137,-700,75,-700,73,-700,42,-700,39,-700,8,-700,18,-700,19,-700,138,-700,140,-700,139,-700,148,-700,150,-700,149,-700,54,-700,85,-700,37,-700,22,-700,91,-700,51,-700,32,-700,52,-700,96,-700,44,-700,33,-700,50,-700,57,-700,72,-700,70,-700,35,-700,68,-700,69,-700},new int[]{-188,150}); + states[150] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-89,151,-258,152,-232,153,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-78,545}); + states[151] = new State(new int[]{132,-718,130,-718,112,-718,111,-718,125,-718,126,-718,127,-718,128,-718,124,-718,110,-718,109,-718,122,-718,123,-718,120,-718,6,-718,5,-718,114,-718,119,-718,117,-718,115,-718,118,-718,116,-718,131,-718,16,-718,86,-718,10,-718,92,-718,95,-718,30,-718,98,-718,94,-718,12,-718,9,-718,93,-718,29,-718,81,-718,80,-718,2,-718,79,-718,78,-718,77,-718,76,-718,13,-718,48,-718,55,-718,135,-718,137,-718,75,-718,73,-718,42,-718,39,-718,8,-718,18,-718,19,-718,138,-718,140,-718,139,-718,148,-718,150,-718,149,-718,54,-718,85,-718,37,-718,22,-718,91,-718,51,-718,32,-718,52,-718,96,-718,44,-718,33,-718,50,-718,57,-718,72,-718,70,-718,35,-718,68,-718,69,-718,113,-713}); + states[152] = new State(-719); + states[153] = new State(-720); + states[154] = new State(-731); + states[155] = new State(new int[]{7,156,132,-732,130,-732,112,-732,111,-732,125,-732,126,-732,127,-732,128,-732,124,-732,110,-732,109,-732,122,-732,123,-732,120,-732,6,-732,5,-732,114,-732,119,-732,117,-732,115,-732,118,-732,116,-732,131,-732,16,-732,86,-732,10,-732,92,-732,95,-732,30,-732,98,-732,94,-732,12,-732,9,-732,93,-732,29,-732,81,-732,80,-732,2,-732,79,-732,78,-732,77,-732,76,-732,13,-732,113,-732,48,-732,55,-732,135,-732,137,-732,75,-732,73,-732,42,-732,39,-732,8,-732,18,-732,19,-732,138,-732,140,-732,139,-732,148,-732,150,-732,149,-732,54,-732,85,-732,37,-732,22,-732,91,-732,51,-732,32,-732,52,-732,96,-732,44,-732,33,-732,50,-732,57,-732,72,-732,70,-732,35,-732,68,-732,69,-732,11,-756}); + states[156] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-127,157,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[157] = new State(-763); + states[158] = new State(-740); + states[159] = new State(new int[]{138,161,140,162,7,-781,11,-781,132,-781,130,-781,112,-781,111,-781,125,-781,126,-781,127,-781,128,-781,124,-781,110,-781,109,-781,122,-781,123,-781,120,-781,6,-781,5,-781,114,-781,119,-781,117,-781,115,-781,118,-781,116,-781,131,-781,16,-781,86,-781,10,-781,92,-781,95,-781,30,-781,98,-781,94,-781,12,-781,9,-781,93,-781,29,-781,81,-781,80,-781,2,-781,79,-781,78,-781,77,-781,76,-781,13,-781,113,-781,48,-781,55,-781,135,-781,137,-781,75,-781,73,-781,42,-781,39,-781,8,-781,18,-781,19,-781,139,-781,148,-781,150,-781,149,-781,54,-781,85,-781,37,-781,22,-781,91,-781,51,-781,32,-781,52,-781,96,-781,44,-781,33,-781,50,-781,57,-781,72,-781,70,-781,35,-781,68,-781,69,-781,121,-781,104,-781,4,-781,136,-781},new int[]{-155,160}); + states[160] = new State(-784); + states[161] = new State(-779); + states[162] = new State(-780); + states[163] = new State(-783); + states[164] = new State(-782); + states[165] = new State(-741); + states[166] = new State(-176); + states[167] = new State(-177); + states[168] = new State(-178); + states[169] = new State(-733); + states[170] = new State(new int[]{8,171}); + states[171] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,172,-170,174,-136,208,-140,24,-141,27}); + states[172] = new State(new int[]{9,173}); + states[173] = new State(-729); + states[174] = new State(new int[]{7,175,4,178,117,180,9,-603,130,-603,132,-603,112,-603,111,-603,125,-603,126,-603,127,-603,128,-603,124,-603,110,-603,109,-603,122,-603,123,-603,114,-603,119,-603,115,-603,118,-603,116,-603,131,-603,13,-603,6,-603,94,-603,12,-603,5,-603,86,-603,10,-603,92,-603,95,-603,30,-603,98,-603,93,-603,29,-603,81,-603,80,-603,2,-603,79,-603,78,-603,77,-603,76,-603,11,-603,8,-603,120,-603,16,-603,48,-603,55,-603,135,-603,137,-603,75,-603,73,-603,42,-603,39,-603,18,-603,19,-603,138,-603,140,-603,139,-603,148,-603,150,-603,149,-603,54,-603,85,-603,37,-603,22,-603,91,-603,51,-603,32,-603,52,-603,96,-603,44,-603,33,-603,50,-603,57,-603,72,-603,70,-603,35,-603,68,-603,69,-603,113,-603},new int[]{-289,177}); + states[175] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-127,176,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[176] = new State(-246); + states[177] = new State(-604); + states[178] = new State(new int[]{117,180},new int[]{-289,179}); + states[179] = new State(-605); + states[180] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-287,181,-269,278,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[181] = new State(new int[]{115,182,94,183}); + states[182] = new State(-220); + states[183] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-269,184,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[184] = new State(-224); + states[185] = new State(new int[]{13,186,115,-228,94,-228,114,-228,9,-228,10,-228,121,-228,104,-228,86,-228,92,-228,95,-228,30,-228,98,-228,12,-228,93,-228,29,-228,81,-228,80,-228,2,-228,79,-228,78,-228,77,-228,76,-228,131,-228}); + states[186] = new State(-229); + states[187] = new State(new int[]{6,1437,110,1426,109,1427,122,1428,123,1429,13,-233,115,-233,94,-233,114,-233,9,-233,10,-233,121,-233,104,-233,86,-233,92,-233,95,-233,30,-233,98,-233,12,-233,93,-233,29,-233,81,-233,80,-233,2,-233,79,-233,78,-233,77,-233,76,-233,131,-233},new int[]{-183,188}); + states[188] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164},new int[]{-96,189,-97,280,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[189] = new State(new int[]{112,230,111,231,125,232,126,233,127,234,128,235,124,236,6,-237,110,-237,109,-237,122,-237,123,-237,13,-237,115,-237,94,-237,114,-237,9,-237,10,-237,121,-237,104,-237,86,-237,92,-237,95,-237,30,-237,98,-237,12,-237,93,-237,29,-237,81,-237,80,-237,2,-237,79,-237,78,-237,77,-237,76,-237,131,-237},new int[]{-185,190}); + states[190] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164},new int[]{-97,191,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[191] = new State(new int[]{8,192,112,-239,111,-239,125,-239,126,-239,127,-239,128,-239,124,-239,6,-239,110,-239,109,-239,122,-239,123,-239,13,-239,115,-239,94,-239,114,-239,9,-239,10,-239,121,-239,104,-239,86,-239,92,-239,95,-239,30,-239,98,-239,12,-239,93,-239,29,-239,81,-239,80,-239,2,-239,79,-239,78,-239,77,-239,76,-239,131,-239}); + states[192] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,9,-171},new int[]{-69,193,-67,195,-87,383,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[193] = new State(new int[]{9,194}); + states[194] = new State(-244); + states[195] = new State(new int[]{94,196,9,-170,12,-170}); + states[196] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-87,197,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[197] = new State(-173); + states[198] = new State(new int[]{13,199,6,1410,94,-174,9,-174,12,-174,5,-174}); + states[199] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,200,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[200] = new State(new int[]{5,201,13,199}); + states[201] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,202,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[202] = new State(new int[]{13,199,6,-116,94,-116,9,-116,12,-116,5,-116,86,-116,10,-116,92,-116,95,-116,30,-116,98,-116,93,-116,29,-116,81,-116,80,-116,2,-116,79,-116,78,-116,77,-116,76,-116}); + states[203] = new State(new int[]{110,1426,109,1427,122,1428,123,1429,114,1430,119,1431,117,1432,115,1433,118,1434,116,1435,131,1436,13,-113,6,-113,94,-113,9,-113,12,-113,5,-113,86,-113,10,-113,92,-113,95,-113,30,-113,98,-113,93,-113,29,-113,81,-113,80,-113,2,-113,79,-113,78,-113,77,-113,76,-113},new int[]{-183,204,-182,1424}); + states[204] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-12,205,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396}); + states[205] = new State(new int[]{130,228,132,229,112,230,111,231,125,232,126,233,127,234,128,235,124,236,110,-125,109,-125,122,-125,123,-125,114,-125,119,-125,117,-125,115,-125,118,-125,116,-125,131,-125,13,-125,6,-125,94,-125,9,-125,12,-125,5,-125,86,-125,10,-125,92,-125,95,-125,30,-125,98,-125,93,-125,29,-125,81,-125,80,-125,2,-125,79,-125,78,-125,77,-125,76,-125},new int[]{-191,206,-185,209}); + states[206] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,207,-170,174,-136,208,-140,24,-141,27}); + states[207] = new State(-130); + states[208] = new State(-245); + states[209] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-10,210,-259,1423,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394}); + states[210] = new State(new int[]{113,211,130,-135,132,-135,112,-135,111,-135,125,-135,126,-135,127,-135,128,-135,124,-135,110,-135,109,-135,122,-135,123,-135,114,-135,119,-135,117,-135,115,-135,118,-135,116,-135,131,-135,13,-135,6,-135,94,-135,9,-135,12,-135,5,-135,86,-135,10,-135,92,-135,95,-135,30,-135,98,-135,93,-135,29,-135,81,-135,80,-135,2,-135,79,-135,78,-135,77,-135,76,-135}); + states[211] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-10,212,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394}); + states[212] = new State(-131); + states[213] = new State(new int[]{4,215,11,217,7,1416,136,1418,8,1419,113,-144,130,-144,132,-144,112,-144,111,-144,125,-144,126,-144,127,-144,128,-144,124,-144,110,-144,109,-144,122,-144,123,-144,114,-144,119,-144,117,-144,115,-144,118,-144,116,-144,131,-144,13,-144,6,-144,94,-144,9,-144,12,-144,5,-144,86,-144,10,-144,92,-144,95,-144,30,-144,98,-144,93,-144,29,-144,81,-144,80,-144,2,-144,79,-144,78,-144,77,-144,76,-144},new int[]{-11,214}); + states[214] = new State(-161); + states[215] = new State(new int[]{117,180},new int[]{-289,216}); + states[216] = new State(-162); + states[217] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,5,1412,12,-171},new int[]{-110,218,-69,220,-84,222,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-67,195,-87,383}); + states[218] = new State(new int[]{12,219}); + states[219] = new State(-163); + states[220] = new State(new int[]{12,221}); + states[221] = new State(-167); + states[222] = new State(new int[]{5,223,13,199,6,1410,94,-174,12,-174}); + states[223] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,5,-681,12,-681},new int[]{-111,224,-84,1409,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[224] = new State(new int[]{5,225,12,-686}); + states[225] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,226,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[226] = new State(new int[]{13,199,12,-688}); + states[227] = new State(new int[]{130,228,132,229,112,230,111,231,125,232,126,233,127,234,128,235,124,236,110,-124,109,-124,122,-124,123,-124,114,-124,119,-124,117,-124,115,-124,118,-124,116,-124,131,-124,13,-124,6,-124,94,-124,9,-124,12,-124,5,-124,86,-124,10,-124,92,-124,95,-124,30,-124,98,-124,93,-124,29,-124,81,-124,80,-124,2,-124,79,-124,78,-124,77,-124,76,-124},new int[]{-191,206,-185,209}); + states[228] = new State(-707); + states[229] = new State(-708); + states[230] = new State(-137); + states[231] = new State(-138); + states[232] = new State(-139); + states[233] = new State(-140); + states[234] = new State(-141); + states[235] = new State(-142); + states[236] = new State(-143); + states[237] = new State(new int[]{113,211,130,-132,132,-132,112,-132,111,-132,125,-132,126,-132,127,-132,128,-132,124,-132,110,-132,109,-132,122,-132,123,-132,114,-132,119,-132,117,-132,115,-132,118,-132,116,-132,131,-132,13,-132,6,-132,94,-132,9,-132,12,-132,5,-132,86,-132,10,-132,92,-132,95,-132,30,-132,98,-132,93,-132,29,-132,81,-132,80,-132,2,-132,79,-132,78,-132,77,-132,76,-132}); + states[238] = new State(-155); + states[239] = new State(new int[]{23,1398,137,23,80,25,81,26,75,28,73,29,17,-814,8,-814,7,-814,136,-814,4,-814,15,-814,104,-814,105,-814,106,-814,107,-814,108,-814,86,-814,10,-814,11,-814,5,-814,92,-814,95,-814,30,-814,98,-814,121,-814,132,-814,130,-814,112,-814,111,-814,125,-814,126,-814,127,-814,128,-814,124,-814,110,-814,109,-814,122,-814,123,-814,120,-814,6,-814,114,-814,119,-814,117,-814,115,-814,118,-814,116,-814,131,-814,16,-814,94,-814,12,-814,9,-814,93,-814,29,-814,2,-814,79,-814,78,-814,77,-814,76,-814,13,-814,113,-814,48,-814,55,-814,135,-814,42,-814,39,-814,18,-814,19,-814,138,-814,140,-814,139,-814,148,-814,150,-814,149,-814,54,-814,85,-814,37,-814,22,-814,91,-814,51,-814,32,-814,52,-814,96,-814,44,-814,33,-814,50,-814,57,-814,72,-814,70,-814,35,-814,68,-814,69,-814},new int[]{-274,240,-170,174,-136,208,-140,24,-141,27}); + states[240] = new State(new int[]{11,242,8,694,86,-615,10,-615,92,-615,95,-615,30,-615,98,-615,132,-615,130,-615,112,-615,111,-615,125,-615,126,-615,127,-615,128,-615,124,-615,110,-615,109,-615,122,-615,123,-615,120,-615,6,-615,5,-615,114,-615,119,-615,117,-615,115,-615,118,-615,116,-615,131,-615,16,-615,94,-615,12,-615,9,-615,93,-615,29,-615,81,-615,80,-615,2,-615,79,-615,78,-615,77,-615,76,-615,13,-615,48,-615,55,-615,135,-615,137,-615,75,-615,73,-615,42,-615,39,-615,18,-615,19,-615,138,-615,140,-615,139,-615,148,-615,150,-615,149,-615,54,-615,85,-615,37,-615,22,-615,91,-615,51,-615,32,-615,52,-615,96,-615,44,-615,33,-615,50,-615,57,-615,72,-615,70,-615,35,-615,68,-615,69,-615,113,-615},new int[]{-65,241}); + states[241] = new State(-608); + states[242] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,12,-772},new int[]{-63,243,-66,474,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[243] = new State(new int[]{12,244}); + states[244] = new State(new int[]{8,246,86,-607,10,-607,92,-607,95,-607,30,-607,98,-607,132,-607,130,-607,112,-607,111,-607,125,-607,126,-607,127,-607,128,-607,124,-607,110,-607,109,-607,122,-607,123,-607,120,-607,6,-607,5,-607,114,-607,119,-607,117,-607,115,-607,118,-607,116,-607,131,-607,16,-607,94,-607,12,-607,9,-607,93,-607,29,-607,81,-607,80,-607,2,-607,79,-607,78,-607,77,-607,76,-607,13,-607,48,-607,55,-607,135,-607,137,-607,75,-607,73,-607,42,-607,39,-607,18,-607,19,-607,138,-607,140,-607,139,-607,148,-607,150,-607,149,-607,54,-607,85,-607,37,-607,22,-607,91,-607,51,-607,32,-607,52,-607,96,-607,44,-607,33,-607,50,-607,57,-607,72,-607,70,-607,35,-607,68,-607,69,-607,113,-607},new int[]{-5,245}); + states[245] = new State(-609); + states[246] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369,60,170,9,-183},new int[]{-62,247,-61,249,-80,947,-79,252,-84,253,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,948,-233,949,-53,950}); + states[247] = new State(new int[]{9,248}); + states[248] = new State(-606); + states[249] = new State(new int[]{94,250,9,-184}); + states[250] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369,60,170},new int[]{-80,251,-79,252,-84,253,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,948,-233,949,-53,950}); + states[251] = new State(-186); + states[252] = new State(-404); + states[253] = new State(new int[]{13,199,94,-179,9,-179,86,-179,10,-179,92,-179,95,-179,30,-179,98,-179,12,-179,93,-179,29,-179,81,-179,80,-179,2,-179,79,-179,78,-179,77,-179,76,-179}); + states[254] = new State(-156); + states[255] = new State(-157); + states[256] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,257,-140,24,-141,27}); + states[257] = new State(-158); + states[258] = new State(-159); + states[259] = new State(new int[]{8,260}); + states[260] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,261,-170,174,-136,208,-140,24,-141,27}); + states[261] = new State(new int[]{9,262}); + states[262] = new State(-596); + states[263] = new State(-160); + states[264] = new State(new int[]{8,265}); + states[265] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,266,-273,268,-170,270,-136,208,-140,24,-141,27}); + states[266] = new State(new int[]{9,267}); + states[267] = new State(-597); + states[268] = new State(new int[]{9,269}); + states[269] = new State(-598); + states[270] = new State(new int[]{7,175,4,271,117,273,119,1396,9,-603},new int[]{-289,177,-290,1397}); + states[271] = new State(new int[]{117,273,119,1396},new int[]{-289,179,-290,272}); + states[272] = new State(-602); + states[273] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611,115,-227,94,-227},new int[]{-287,181,-288,274,-269,278,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389,-270,1395}); + states[274] = new State(new int[]{115,275,94,276}); + states[275] = new State(-222); + states[276] = new State(-227,new int[]{-270,277}); + states[277] = new State(-226); + states[278] = new State(-223); + states[279] = new State(new int[]{112,230,111,231,125,232,126,233,127,234,128,235,124,236,6,-236,110,-236,109,-236,122,-236,123,-236,13,-236,115,-236,94,-236,114,-236,9,-236,10,-236,121,-236,104,-236,86,-236,92,-236,95,-236,30,-236,98,-236,12,-236,93,-236,29,-236,81,-236,80,-236,2,-236,79,-236,78,-236,77,-236,76,-236,131,-236},new int[]{-185,190}); + states[280] = new State(new int[]{8,192,112,-238,111,-238,125,-238,126,-238,127,-238,128,-238,124,-238,6,-238,110,-238,109,-238,122,-238,123,-238,13,-238,115,-238,94,-238,114,-238,9,-238,10,-238,121,-238,104,-238,86,-238,92,-238,95,-238,30,-238,98,-238,12,-238,93,-238,29,-238,81,-238,80,-238,2,-238,79,-238,78,-238,77,-238,76,-238,131,-238}); + states[281] = new State(new int[]{7,175,121,282,117,180,8,-240,112,-240,111,-240,125,-240,126,-240,127,-240,128,-240,124,-240,6,-240,110,-240,109,-240,122,-240,123,-240,13,-240,115,-240,94,-240,114,-240,9,-240,10,-240,104,-240,86,-240,92,-240,95,-240,30,-240,98,-240,12,-240,93,-240,29,-240,81,-240,80,-240,2,-240,79,-240,78,-240,77,-240,76,-240,131,-240},new int[]{-289,693}); + states[282] = new State(new int[]{8,284,137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-269,283,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[283] = new State(-275); + states[284] = new State(new int[]{9,285,137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,290,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[285] = new State(new int[]{121,286,115,-279,94,-279,114,-279,9,-279,10,-279,104,-279,86,-279,92,-279,95,-279,30,-279,98,-279,12,-279,93,-279,29,-279,81,-279,80,-279,2,-279,79,-279,78,-279,77,-279,76,-279,131,-279}); + states[286] = new State(new int[]{8,288,137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-269,287,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[287] = new State(-277); + states[288] = new State(new int[]{9,289,137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,290,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[289] = new State(new int[]{121,286,115,-281,94,-281,114,-281,9,-281,10,-281,104,-281,86,-281,92,-281,95,-281,30,-281,98,-281,12,-281,93,-281,29,-281,81,-281,80,-281,2,-281,79,-281,78,-281,77,-281,76,-281,131,-281}); + states[290] = new State(new int[]{9,291,94,1058}); + states[291] = new State(new int[]{121,292,13,-235,115,-235,94,-235,114,-235,9,-235,10,-235,104,-235,86,-235,92,-235,95,-235,30,-235,98,-235,12,-235,93,-235,29,-235,81,-235,80,-235,2,-235,79,-235,78,-235,77,-235,76,-235,131,-235}); + states[292] = new State(new int[]{8,294,137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-269,293,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[293] = new State(-278); + states[294] = new State(new int[]{9,295,137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,290,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[295] = new State(new int[]{121,286,115,-282,94,-282,114,-282,9,-282,10,-282,104,-282,86,-282,92,-282,95,-282,30,-282,98,-282,12,-282,93,-282,29,-282,81,-282,80,-282,2,-282,79,-282,78,-282,77,-282,76,-282,131,-282}); + states[296] = new State(new int[]{94,297}); + states[297] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-72,298,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[298] = new State(-247); + states[299] = new State(new int[]{114,300,94,-249,9,-249}); + states[300] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,301,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[301] = new State(-250); + states[302] = new State(new int[]{114,303,119,304,117,305,115,306,118,307,116,308,131,309,16,-594,86,-594,10,-594,92,-594,95,-594,30,-594,98,-594,94,-594,12,-594,9,-594,93,-594,29,-594,81,-594,80,-594,2,-594,79,-594,78,-594,77,-594,76,-594,13,-594,6,-594,5,-594,48,-594,55,-594,135,-594,137,-594,75,-594,73,-594,42,-594,39,-594,8,-594,18,-594,19,-594,138,-594,140,-594,139,-594,148,-594,150,-594,149,-594,54,-594,85,-594,37,-594,22,-594,91,-594,51,-594,32,-594,52,-594,96,-594,44,-594,33,-594,50,-594,57,-594,72,-594,70,-594,35,-594,68,-594,69,-594,110,-594,109,-594,122,-594,123,-594,120,-594,132,-594,130,-594,112,-594,111,-594,125,-594,126,-594,127,-594,128,-594,124,-594},new int[]{-186,144}); + states[303] = new State(-690); + states[304] = new State(-691); + states[305] = new State(-692); + states[306] = new State(-693); + states[307] = new State(-694); + states[308] = new State(-695); + states[309] = new State(-696); + states[310] = new State(new int[]{6,146,5,311,114,-617,119,-617,117,-617,115,-617,118,-617,116,-617,131,-617,16,-617,86,-617,10,-617,92,-617,95,-617,30,-617,98,-617,94,-617,12,-617,9,-617,93,-617,29,-617,81,-617,80,-617,2,-617,79,-617,78,-617,77,-617,76,-617,13,-617}); + states[311] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,5,-679,86,-679,10,-679,92,-679,95,-679,30,-679,98,-679,94,-679,12,-679,9,-679,93,-679,29,-679,2,-679,79,-679,78,-679,77,-679,76,-679,6,-679},new int[]{-104,312,-95,664,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[312] = new State(new int[]{5,313,86,-682,10,-682,92,-682,95,-682,30,-682,98,-682,94,-682,12,-682,9,-682,93,-682,29,-682,81,-682,80,-682,2,-682,79,-682,78,-682,77,-682,76,-682,6,-682}); + states[313] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-95,314,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[314] = new State(new int[]{6,146,86,-684,10,-684,92,-684,95,-684,30,-684,98,-684,94,-684,12,-684,9,-684,93,-684,29,-684,81,-684,80,-684,2,-684,79,-684,78,-684,77,-684,76,-684}); + states[315] = new State(new int[]{110,316,109,317,122,318,123,319,120,320,6,-697,5,-697,114,-697,119,-697,117,-697,115,-697,118,-697,116,-697,131,-697,16,-697,86,-697,10,-697,92,-697,95,-697,30,-697,98,-697,94,-697,12,-697,9,-697,93,-697,29,-697,81,-697,80,-697,2,-697,79,-697,78,-697,77,-697,76,-697,13,-697,48,-697,55,-697,135,-697,137,-697,75,-697,73,-697,42,-697,39,-697,8,-697,18,-697,19,-697,138,-697,140,-697,139,-697,148,-697,150,-697,149,-697,54,-697,85,-697,37,-697,22,-697,91,-697,51,-697,32,-697,52,-697,96,-697,44,-697,33,-697,50,-697,57,-697,72,-697,70,-697,35,-697,68,-697,69,-697,132,-697,130,-697,112,-697,111,-697,125,-697,126,-697,127,-697,128,-697,124,-697},new int[]{-187,148}); + states[316] = new State(-702); + states[317] = new State(-703); + states[318] = new State(-704); + states[319] = new State(-705); + states[320] = new State(-706); + states[321] = new State(new int[]{132,322,130,324,112,326,111,327,125,328,126,329,127,330,128,331,124,332,114,-699,119,-699,117,-699,115,-699,118,-699,116,-699,131,-699,16,-699,86,-699,10,-699,92,-699,95,-699,30,-699,98,-699,94,-699,12,-699,9,-699,93,-699,29,-699,81,-699,80,-699,2,-699,79,-699,78,-699,77,-699,76,-699,13,-699,6,-699,5,-699,48,-699,55,-699,135,-699,137,-699,75,-699,73,-699,42,-699,39,-699,8,-699,18,-699,19,-699,138,-699,140,-699,139,-699,148,-699,150,-699,149,-699,54,-699,85,-699,37,-699,22,-699,91,-699,51,-699,32,-699,52,-699,96,-699,44,-699,33,-699,50,-699,57,-699,72,-699,70,-699,35,-699,68,-699,69,-699,110,-699,109,-699,122,-699,123,-699,120,-699},new int[]{-188,150}); + states[322] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,323,-170,174,-136,208,-140,24,-141,27}); + states[323] = new State(-712); + states[324] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-274,325,-170,174,-136,208,-140,24,-141,27}); + states[325] = new State(-711); + states[326] = new State(-722); + states[327] = new State(-723); + states[328] = new State(-724); + states[329] = new State(-725); + states[330] = new State(-726); + states[331] = new State(-727); + states[332] = new State(-728); + states[333] = new State(new int[]{132,-715,130,-715,112,-715,111,-715,125,-715,126,-715,127,-715,128,-715,124,-715,110,-715,109,-715,122,-715,123,-715,120,-715,6,-715,5,-715,114,-715,119,-715,117,-715,115,-715,118,-715,116,-715,131,-715,16,-715,86,-715,10,-715,92,-715,95,-715,30,-715,98,-715,94,-715,12,-715,9,-715,93,-715,29,-715,81,-715,80,-715,2,-715,79,-715,78,-715,77,-715,76,-715,13,-715,48,-715,55,-715,135,-715,137,-715,75,-715,73,-715,42,-715,39,-715,8,-715,18,-715,19,-715,138,-715,140,-715,139,-715,148,-715,150,-715,149,-715,54,-715,85,-715,37,-715,22,-715,91,-715,51,-715,32,-715,52,-715,96,-715,44,-715,33,-715,50,-715,57,-715,72,-715,70,-715,35,-715,68,-715,69,-715,113,-713}); + states[334] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659,12,-774},new int[]{-64,335,-71,337,-85,1394,-82,340,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[335] = new State(new int[]{12,336}); + states[336] = new State(-734); + states[337] = new State(new int[]{94,338,12,-773}); + states[338] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-85,339,-82,340,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[339] = new State(-776); + states[340] = new State(new int[]{6,341,94,-777,12,-777}); + states[341] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,342,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[342] = new State(-778); + states[343] = new State(new int[]{132,344,130,324,112,326,111,327,125,328,126,329,127,330,128,331,124,332,110,-699,109,-699,122,-699,123,-699,120,-699,6,-699,5,-699,114,-699,119,-699,117,-699,115,-699,118,-699,116,-699,131,-699,16,-699,86,-699,10,-699,92,-699,95,-699,30,-699,98,-699,94,-699,12,-699,9,-699,93,-699,29,-699,81,-699,80,-699,2,-699,79,-699,78,-699,77,-699,76,-699,13,-699,48,-699,55,-699,135,-699,137,-699,75,-699,73,-699,42,-699,39,-699,8,-699,18,-699,19,-699,138,-699,140,-699,139,-699,148,-699,150,-699,149,-699,54,-699,85,-699,37,-699,22,-699,91,-699,51,-699,32,-699,52,-699,96,-699,44,-699,33,-699,50,-699,57,-699,72,-699,70,-699,35,-699,68,-699,69,-699},new int[]{-188,150}); + states[344] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-274,323,-332,345,-333,346,-170,174,-136,208,-140,24,-141,27}); + states[345] = new State(-621); + states[346] = new State(-622); + states[347] = new State(new int[]{138,161,140,162,139,164,148,166,150,167,149,168,50,354,14,356,137,23,80,25,81,26,75,28,73,29,11,347,8,624,6,1392},new int[]{-344,348,-334,1393,-14,352,-154,158,-156,159,-155,163,-15,165,-336,353,-331,357,-274,358,-170,174,-136,208,-140,24,-141,27,-332,1390,-333,1391}); + states[348] = new State(new int[]{12,349,94,350}); + states[349] = new State(-634); + states[350] = new State(new int[]{138,161,140,162,139,164,148,166,150,167,149,168,50,354,14,356,137,23,80,25,81,26,75,28,73,29,11,347,8,624,6,1392},new int[]{-334,351,-14,352,-154,158,-156,159,-155,163,-15,165,-336,353,-331,357,-274,358,-170,174,-136,208,-140,24,-141,27,-332,1390,-333,1391}); + states[351] = new State(-636); + states[352] = new State(-637); + states[353] = new State(-638); + states[354] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,355,-140,24,-141,27}); + states[355] = new State(-644); + states[356] = new State(-639); + states[357] = new State(-640); + states[358] = new State(new int[]{8,359}); + states[359] = new State(new int[]{14,364,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,137,23,80,25,81,26,75,28,73,29,50,894,11,347,8,624},new int[]{-343,360,-341,901,-14,365,-154,158,-156,159,-155,163,-15,165,-189,366,-136,370,-140,24,-141,27,-331,898,-274,358,-170,174,-332,899,-333,900}); + states[360] = new State(new int[]{9,361,10,362,94,892}); + states[361] = new State(-624); + states[362] = new State(new int[]{14,364,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,137,23,80,25,81,26,75,28,73,29,50,894,11,347,8,624},new int[]{-341,363,-14,365,-154,158,-156,159,-155,163,-15,165,-189,366,-136,370,-140,24,-141,27,-331,898,-274,358,-170,174,-332,899,-333,900}); + states[363] = new State(-656); + states[364] = new State(-668); + states[365] = new State(-669); + states[366] = new State(new int[]{138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-14,367,-154,158,-156,159,-155,163,-15,165}); + states[367] = new State(-670); + states[368] = new State(-153); + states[369] = new State(-154); + states[370] = new State(new int[]{5,371,9,-672,10,-672,94,-672,7,-245,4,-245,117,-245,8,-245}); + states[371] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,372,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[372] = new State(-671); + states[373] = new State(new int[]{13,374,114,-212,94,-212,9,-212,10,-212,115,-212,121,-212,104,-212,86,-212,92,-212,95,-212,30,-212,98,-212,12,-212,93,-212,29,-212,81,-212,80,-212,2,-212,79,-212,78,-212,77,-212,76,-212,131,-212}); + states[374] = new State(-210); + states[375] = new State(new int[]{11,376,7,-792,121,-792,117,-792,8,-792,112,-792,111,-792,125,-792,126,-792,127,-792,128,-792,124,-792,6,-792,110,-792,109,-792,122,-792,123,-792,13,-792,114,-792,94,-792,9,-792,10,-792,115,-792,104,-792,86,-792,92,-792,95,-792,30,-792,98,-792,12,-792,93,-792,29,-792,81,-792,80,-792,2,-792,79,-792,78,-792,77,-792,76,-792,131,-792}); + states[376] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,377,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[377] = new State(new int[]{12,378,13,199}); + states[378] = new State(-270); + states[379] = new State(-145); + states[380] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,12,-171},new int[]{-69,381,-67,195,-87,383,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[381] = new State(new int[]{12,382}); + states[382] = new State(-152); + states[383] = new State(-172); + states[384] = new State(-146); + states[385] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-10,386,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394}); + states[386] = new State(-147); + states[387] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,388,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[388] = new State(new int[]{9,389,13,199}); + states[389] = new State(-148); + states[390] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-10,391,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394}); + states[391] = new State(-149); + states[392] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-10,393,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394}); + states[393] = new State(-150); + states[394] = new State(-151); + states[395] = new State(-133); + states[396] = new State(-134); + states[397] = new State(-115); + states[398] = new State(-241); + states[399] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164},new int[]{-97,400,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[400] = new State(new int[]{8,192,112,-242,111,-242,125,-242,126,-242,127,-242,128,-242,124,-242,6,-242,110,-242,109,-242,122,-242,123,-242,13,-242,115,-242,94,-242,114,-242,9,-242,10,-242,121,-242,104,-242,86,-242,92,-242,95,-242,30,-242,98,-242,12,-242,93,-242,29,-242,81,-242,80,-242,2,-242,79,-242,78,-242,77,-242,76,-242,131,-242}); + states[401] = new State(new int[]{7,175,8,-240,112,-240,111,-240,125,-240,126,-240,127,-240,128,-240,124,-240,6,-240,110,-240,109,-240,122,-240,123,-240,13,-240,115,-240,94,-240,114,-240,9,-240,10,-240,121,-240,104,-240,86,-240,92,-240,95,-240,30,-240,98,-240,12,-240,93,-240,29,-240,81,-240,80,-240,2,-240,79,-240,78,-240,77,-240,76,-240,131,-240}); + states[402] = new State(-243); + states[403] = new State(new int[]{9,404,137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,290,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[404] = new State(new int[]{121,286}); + states[405] = new State(-213); + states[406] = new State(new int[]{13,407,121,408,114,-218,94,-218,9,-218,10,-218,115,-218,104,-218,86,-218,92,-218,95,-218,30,-218,98,-218,12,-218,93,-218,29,-218,81,-218,80,-218,2,-218,79,-218,78,-218,77,-218,76,-218,131,-218}); + states[407] = new State(-211); + states[408] = new State(new int[]{8,410,137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-269,409,-262,185,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-271,1387,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,1388,-214,581,-213,582,-291,1389}); + states[409] = new State(-276); + states[410] = new State(new int[]{9,411,137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,290,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[411] = new State(new int[]{121,286,115,-280,94,-280,114,-280,9,-280,10,-280,104,-280,86,-280,92,-280,95,-280,30,-280,98,-280,12,-280,93,-280,29,-280,81,-280,80,-280,2,-280,79,-280,78,-280,77,-280,76,-280,131,-280}); + states[412] = new State(-214); + states[413] = new State(-215); + states[414] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,415,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[415] = new State(-251); + states[416] = new State(-468); + states[417] = new State(-216); + states[418] = new State(-252); + states[419] = new State(-254); + states[420] = new State(new int[]{11,421,55,1385}); + states[421] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,1055,12,-266,94,-266},new int[]{-153,422,-261,1384,-262,1383,-86,187,-96,279,-97,280,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[422] = new State(new int[]{12,423,94,1381}); + states[423] = new State(new int[]{55,424}); + states[424] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,425,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[425] = new State(-260); + states[426] = new State(-261); + states[427] = new State(-255); + states[428] = new State(new int[]{8,1255,20,-302,11,-302,86,-302,79,-302,78,-302,77,-302,76,-302,26,-302,137,-302,80,-302,81,-302,75,-302,73,-302,59,-302,25,-302,23,-302,41,-302,34,-302,27,-302,28,-302,43,-302,24,-302},new int[]{-173,429}); + states[429] = new State(new int[]{20,1246,11,-309,86,-309,79,-309,78,-309,77,-309,76,-309,26,-309,137,-309,80,-309,81,-309,75,-309,73,-309,59,-309,25,-309,23,-309,41,-309,34,-309,27,-309,28,-309,43,-309,24,-309},new int[]{-306,430,-305,1244,-304,1266}); + states[430] = new State(new int[]{11,685,86,-326,79,-326,78,-326,77,-326,76,-326,26,-197,137,-197,80,-197,81,-197,75,-197,73,-197,59,-197,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-22,431,-29,1224,-31,435,-41,1225,-6,1226,-240,1046,-30,1337,-50,1339,-49,441,-51,1338}); + states[431] = new State(new int[]{86,432,79,1220,78,1221,77,1222,76,1223},new int[]{-7,433}); + states[432] = new State(-284); + states[433] = new State(new int[]{11,685,86,-326,79,-326,78,-326,77,-326,76,-326,26,-197,137,-197,80,-197,81,-197,75,-197,73,-197,59,-197,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-29,434,-31,435,-41,1225,-6,1226,-240,1046,-30,1337,-50,1339,-49,441,-51,1338}); + states[434] = new State(-321); + states[435] = new State(new int[]{10,437,86,-332,79,-332,78,-332,77,-332,76,-332},new int[]{-180,436}); + states[436] = new State(-327); + states[437] = new State(new int[]{11,685,86,-333,79,-333,78,-333,77,-333,76,-333,26,-197,137,-197,80,-197,81,-197,75,-197,73,-197,59,-197,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-41,438,-30,439,-6,1226,-240,1046,-50,1339,-49,441,-51,1338}); + states[438] = new State(-335); + states[439] = new State(new int[]{11,685,86,-329,79,-329,78,-329,77,-329,76,-329,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-50,440,-49,441,-6,442,-240,1046,-51,1338}); + states[440] = new State(-338); + states[441] = new State(-339); + states[442] = new State(new int[]{25,1293,23,1294,41,1239,34,1274,27,1308,28,1315,11,685,43,1322,24,1331},new int[]{-212,443,-240,444,-209,445,-248,446,-3,447,-220,1295,-218,1168,-215,1238,-219,1273,-217,1296,-205,1319,-206,1320,-208,1321}); + states[443] = new State(-348); + states[444] = new State(-196); + states[445] = new State(-349); + states[446] = new State(-367); + states[447] = new State(new int[]{27,449,43,1117,24,1160,41,1239,34,1274},new int[]{-220,448,-206,1116,-218,1168,-215,1238,-219,1273}); + states[448] = new State(-352); + states[449] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,8,-362,104,-362,10,-362},new int[]{-161,450,-160,1099,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[450] = new State(new int[]{8,585,104,-452,10,-452},new int[]{-117,451}); + states[451] = new State(new int[]{104,453,10,1088},new int[]{-197,452}); + states[452] = new State(-359); + states[453] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,454,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[454] = new State(new int[]{10,455}); + states[455] = new State(-411); + states[456] = new State(new int[]{135,1087,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-101,457,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724}); + states[457] = new State(new int[]{17,458,8,471,7,715,136,717,4,718,104,-744,105,-744,106,-744,107,-744,108,-744,86,-744,10,-744,92,-744,95,-744,30,-744,98,-744,132,-744,130,-744,112,-744,111,-744,125,-744,126,-744,127,-744,128,-744,124,-744,110,-744,109,-744,122,-744,123,-744,120,-744,6,-744,5,-744,114,-744,119,-744,117,-744,115,-744,118,-744,116,-744,131,-744,16,-744,94,-744,12,-744,9,-744,93,-744,29,-744,81,-744,80,-744,2,-744,79,-744,78,-744,77,-744,76,-744,13,-744,113,-744,48,-744,55,-744,135,-744,137,-744,75,-744,73,-744,42,-744,39,-744,18,-744,19,-744,138,-744,140,-744,139,-744,148,-744,150,-744,149,-744,54,-744,85,-744,37,-744,22,-744,91,-744,51,-744,32,-744,52,-744,96,-744,44,-744,33,-744,50,-744,57,-744,72,-744,70,-744,35,-744,68,-744,69,-744,11,-755}); + states[458] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,5,659},new int[]{-109,459,-95,461,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[459] = new State(new int[]{12,460}); + states[460] = new State(-765); + states[461] = new State(new int[]{5,311,6,146}); + states[462] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264},new int[]{-89,463,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542}); + states[463] = new State(-735); + states[464] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264},new int[]{-89,465,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542}); + states[465] = new State(-736); + states[466] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264},new int[]{-89,467,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542}); + states[467] = new State(-737); + states[468] = new State(-738); + states[469] = new State(-747); + states[470] = new State(new int[]{17,458,8,471,7,715,136,717,4,718,15,720,132,-745,130,-745,112,-745,111,-745,125,-745,126,-745,127,-745,128,-745,124,-745,110,-745,109,-745,122,-745,123,-745,120,-745,6,-745,5,-745,114,-745,119,-745,117,-745,115,-745,118,-745,116,-745,131,-745,16,-745,86,-745,10,-745,92,-745,95,-745,30,-745,98,-745,94,-745,12,-745,9,-745,93,-745,29,-745,81,-745,80,-745,2,-745,79,-745,78,-745,77,-745,76,-745,13,-745,113,-745,48,-745,55,-745,135,-745,137,-745,75,-745,73,-745,42,-745,39,-745,18,-745,19,-745,138,-745,140,-745,139,-745,148,-745,150,-745,149,-745,54,-745,85,-745,37,-745,22,-745,91,-745,51,-745,32,-745,52,-745,96,-745,44,-745,33,-745,50,-745,57,-745,72,-745,70,-745,35,-745,68,-745,69,-745,11,-755}); + states[471] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,9,-772},new int[]{-63,472,-66,474,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[472] = new State(new int[]{9,473}); + states[473] = new State(-766); + states[474] = new State(new int[]{94,475,12,-771,9,-771}); + states[475] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705},new int[]{-83,476,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[476] = new State(-575); + states[477] = new State(new int[]{121,478,17,-757,8,-757,7,-757,136,-757,4,-757,15,-757,132,-757,130,-757,112,-757,111,-757,125,-757,126,-757,127,-757,128,-757,124,-757,110,-757,109,-757,122,-757,123,-757,120,-757,6,-757,5,-757,114,-757,119,-757,117,-757,115,-757,118,-757,116,-757,131,-757,16,-757,86,-757,10,-757,92,-757,95,-757,30,-757,98,-757,94,-757,12,-757,9,-757,93,-757,29,-757,81,-757,80,-757,2,-757,79,-757,78,-757,77,-757,76,-757,13,-757,113,-757,11,-757}); + states[478] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,479,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[479] = new State(-934); + states[480] = new State(-969); + states[481] = new State(new int[]{16,142,86,-591,10,-591,92,-591,95,-591,30,-591,98,-591,94,-591,12,-591,9,-591,93,-591,29,-591,81,-591,80,-591,2,-591,79,-591,78,-591,77,-591,76,-591,13,-585}); + states[482] = new State(new int[]{6,146,114,-617,119,-617,117,-617,115,-617,118,-617,116,-617,131,-617,16,-617,86,-617,10,-617,92,-617,95,-617,30,-617,98,-617,94,-617,12,-617,9,-617,93,-617,29,-617,81,-617,80,-617,2,-617,79,-617,78,-617,77,-617,76,-617,13,-617,5,-617,48,-617,55,-617,135,-617,137,-617,75,-617,73,-617,42,-617,39,-617,8,-617,18,-617,19,-617,138,-617,140,-617,139,-617,148,-617,150,-617,149,-617,54,-617,85,-617,37,-617,22,-617,91,-617,51,-617,32,-617,52,-617,96,-617,44,-617,33,-617,50,-617,57,-617,72,-617,70,-617,35,-617,68,-617,69,-617,110,-617,109,-617,122,-617,123,-617,120,-617,132,-617,130,-617,112,-617,111,-617,125,-617,126,-617,127,-617,128,-617,124,-617}); + states[483] = new State(-758); + states[484] = new State(new int[]{109,486,110,487,111,488,112,489,114,490,115,491,116,492,117,493,118,494,119,495,122,496,123,497,124,498,125,499,126,500,127,501,128,502,129,503,131,504,133,505,134,506,104,508,105,509,106,510,107,511,108,512,113,513},new int[]{-190,485,-184,507}); + states[485] = new State(-785); + states[486] = new State(-906); + states[487] = new State(-907); + states[488] = new State(-908); + states[489] = new State(-909); + states[490] = new State(-910); + states[491] = new State(-911); + states[492] = new State(-912); + states[493] = new State(-913); + states[494] = new State(-914); + states[495] = new State(-915); + states[496] = new State(-916); + states[497] = new State(-917); + states[498] = new State(-918); + states[499] = new State(-919); + states[500] = new State(-920); + states[501] = new State(-921); + states[502] = new State(-922); + states[503] = new State(-923); + states[504] = new State(-924); + states[505] = new State(-925); + states[506] = new State(-926); + states[507] = new State(-927); + states[508] = new State(-929); + states[509] = new State(-930); + states[510] = new State(-931); + states[511] = new State(-932); + states[512] = new State(-933); + states[513] = new State(-928); + states[514] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,515,-140,24,-141,27}); + states[515] = new State(-759); + states[516] = new State(new int[]{9,1064,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,517,-92,519,-136,1068,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[517] = new State(new int[]{9,518}); + states[518] = new State(-760); + states[519] = new State(new int[]{94,520,9,-580}); + states[520] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-73,521,-92,1050,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[521] = new State(new int[]{94,1048,5,564,10,-953,9,-953},new int[]{-313,522}); + states[522] = new State(new int[]{10,556,9,-941},new int[]{-320,523}); + states[523] = new State(new int[]{9,524}); + states[524] = new State(new int[]{5,1051,7,-730,132,-730,130,-730,112,-730,111,-730,125,-730,126,-730,127,-730,128,-730,124,-730,110,-730,109,-730,122,-730,123,-730,120,-730,6,-730,114,-730,119,-730,117,-730,115,-730,118,-730,116,-730,131,-730,16,-730,86,-730,10,-730,92,-730,95,-730,30,-730,98,-730,94,-730,12,-730,9,-730,93,-730,29,-730,81,-730,80,-730,2,-730,79,-730,78,-730,77,-730,76,-730,13,-730,113,-730,121,-955},new int[]{-324,525,-314,526}); + states[525] = new State(-939); + states[526] = new State(new int[]{121,527}); + states[527] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,528,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[528] = new State(-943); + states[529] = new State(-761); + states[530] = new State(-762); + states[531] = new State(new int[]{11,532}); + states[532] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705},new int[]{-66,533,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[533] = new State(new int[]{12,534,94,475}); + states[534] = new State(-764); + states[535] = new State(-574); + states[536] = new State(new int[]{7,537,132,-739,130,-739,112,-739,111,-739,125,-739,126,-739,127,-739,128,-739,124,-739,110,-739,109,-739,122,-739,123,-739,120,-739,6,-739,5,-739,114,-739,119,-739,117,-739,115,-739,118,-739,116,-739,131,-739,16,-739,86,-739,10,-739,92,-739,95,-739,30,-739,98,-739,94,-739,12,-739,9,-739,93,-739,29,-739,81,-739,80,-739,2,-739,79,-739,78,-739,77,-739,76,-739,13,-739,113,-739,48,-739,55,-739,135,-739,137,-739,75,-739,73,-739,42,-739,39,-739,8,-739,18,-739,19,-739,138,-739,140,-739,139,-739,148,-739,150,-739,149,-739,54,-739,85,-739,37,-739,22,-739,91,-739,51,-739,32,-739,52,-739,96,-739,44,-739,33,-739,50,-739,57,-739,72,-739,70,-739,35,-739,68,-739,69,-739}); + states[537] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,484},new int[]{-137,538,-136,539,-140,24,-141,27,-283,540,-139,31,-181,541}); + states[538] = new State(-768); + states[539] = new State(-798); + states[540] = new State(-799); + states[541] = new State(-800); + states[542] = new State(-746); + states[543] = new State(-716); + states[544] = new State(-717); + states[545] = new State(new int[]{113,546}); + states[546] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264},new int[]{-89,547,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542}); + states[547] = new State(-714); + states[548] = new State(-757); + states[549] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,517,-92,550,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[550] = new State(new int[]{94,551,9,-580}); + states[551] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-73,552,-92,1050,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[552] = new State(new int[]{94,1048,5,564,10,-953,9,-953},new int[]{-313,553}); + states[553] = new State(new int[]{10,556,9,-941},new int[]{-320,554}); + states[554] = new State(new int[]{9,555}); + states[555] = new State(-730); + states[556] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-315,557,-316,1029,-147,560,-136,837,-140,24,-141,27}); + states[557] = new State(new int[]{10,558,9,-942}); + states[558] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-316,559,-147,560,-136,837,-140,24,-141,27}); + states[559] = new State(-951); + states[560] = new State(new int[]{94,562,5,564,10,-953,9,-953},new int[]{-313,561}); + states[561] = new State(-952); + states[562] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,563,-140,24,-141,27}); + states[563] = new State(-331); + states[564] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,565,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[565] = new State(-954); + states[566] = new State(-256); + states[567] = new State(new int[]{55,568}); + states[568] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,569,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[569] = new State(-267); + states[570] = new State(-257); + states[571] = new State(new int[]{55,572,115,-269,94,-269,114,-269,9,-269,10,-269,121,-269,104,-269,86,-269,92,-269,95,-269,30,-269,98,-269,12,-269,93,-269,29,-269,81,-269,80,-269,2,-269,79,-269,78,-269,77,-269,76,-269,131,-269}); + states[572] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,573,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[573] = new State(-268); + states[574] = new State(-258); + states[575] = new State(new int[]{55,576}); + states[576] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,577,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[577] = new State(-259); + states[578] = new State(new int[]{21,420,45,428,46,567,31,571,71,575},new int[]{-272,579,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574}); + states[579] = new State(-253); + states[580] = new State(-217); + states[581] = new State(-271); + states[582] = new State(-272); + states[583] = new State(new int[]{8,585,115,-452,94,-452,114,-452,9,-452,10,-452,121,-452,104,-452,86,-452,92,-452,95,-452,30,-452,98,-452,12,-452,93,-452,29,-452,81,-452,80,-452,2,-452,79,-452,78,-452,77,-452,76,-452,131,-452},new int[]{-117,584}); + states[584] = new State(-273); + states[585] = new State(new int[]{9,586,11,685,137,-197,80,-197,81,-197,75,-197,73,-197,50,-197,26,-197,102,-197},new int[]{-118,587,-52,1047,-6,591,-240,1046}); + states[586] = new State(-453); + states[587] = new State(new int[]{9,588,10,589}); + states[588] = new State(-454); + states[589] = new State(new int[]{11,685,137,-197,80,-197,81,-197,75,-197,73,-197,50,-197,26,-197,102,-197},new int[]{-52,590,-6,591,-240,1046}); + states[590] = new State(-456); + states[591] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,50,669,26,675,102,681,11,685},new int[]{-286,592,-240,444,-148,593,-124,668,-136,667,-140,24,-141,27}); + states[592] = new State(-457); + states[593] = new State(new int[]{5,594,94,665}); + states[594] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,595,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[595] = new State(new int[]{104,596,9,-458,10,-458}); + states[596] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,597,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[597] = new State(-462); + states[598] = new State(-721); + states[599] = new State(new int[]{8,600,132,-709,130,-709,112,-709,111,-709,125,-709,126,-709,127,-709,128,-709,124,-709,110,-709,109,-709,122,-709,123,-709,120,-709,6,-709,5,-709,114,-709,119,-709,117,-709,115,-709,118,-709,116,-709,131,-709,16,-709,86,-709,10,-709,92,-709,95,-709,30,-709,98,-709,94,-709,12,-709,9,-709,93,-709,29,-709,81,-709,80,-709,2,-709,79,-709,78,-709,77,-709,76,-709,13,-709,48,-709,55,-709,135,-709,137,-709,75,-709,73,-709,42,-709,39,-709,18,-709,19,-709,138,-709,140,-709,139,-709,148,-709,150,-709,149,-709,54,-709,85,-709,37,-709,22,-709,91,-709,51,-709,32,-709,52,-709,96,-709,44,-709,33,-709,50,-709,57,-709,72,-709,70,-709,35,-709,68,-709,69,-709}); + states[600] = new State(new int[]{14,605,138,161,140,162,139,164,148,166,150,167,149,168,50,607,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-342,601,-340,639,-14,606,-154,158,-156,159,-155,163,-15,165,-329,615,-274,616,-170,174,-136,208,-140,24,-141,27,-332,622,-333,623}); + states[601] = new State(new int[]{9,602,10,603,94,620}); + states[602] = new State(-620); + states[603] = new State(new int[]{14,605,138,161,140,162,139,164,148,166,150,167,149,168,50,607,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-340,604,-14,606,-154,158,-156,159,-155,163,-15,165,-329,615,-274,616,-170,174,-136,208,-140,24,-141,27,-332,622,-333,623}); + states[604] = new State(-659); + states[605] = new State(-661); + states[606] = new State(-662); + states[607] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,608,-140,24,-141,27}); + states[608] = new State(new int[]{5,609,9,-664,10,-664,94,-664}); + states[609] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,610,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[610] = new State(-663); + states[611] = new State(new int[]{8,585,5,-452},new int[]{-117,612}); + states[612] = new State(new int[]{5,613}); + states[613] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,614,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[614] = new State(-274); + states[615] = new State(-665); + states[616] = new State(new int[]{8,617}); + states[617] = new State(new int[]{14,605,138,161,140,162,139,164,148,166,150,167,149,168,50,607,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-342,618,-340,639,-14,606,-154,158,-156,159,-155,163,-15,165,-329,615,-274,616,-170,174,-136,208,-140,24,-141,27,-332,622,-333,623}); + states[618] = new State(new int[]{9,619,10,603,94,620}); + states[619] = new State(-623); + states[620] = new State(new int[]{14,605,138,161,140,162,139,164,148,166,150,167,149,168,50,607,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-340,621,-14,606,-154,158,-156,159,-155,163,-15,165,-329,615,-274,616,-170,174,-136,208,-140,24,-141,27,-332,622,-333,623}); + states[621] = new State(-660); + states[622] = new State(-666); + states[623] = new State(-667); + states[624] = new State(new int[]{14,629,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,50,633,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-345,625,-335,638,-14,630,-154,158,-156,159,-155,163,-15,165,-189,631,-331,635,-274,358,-170,174,-136,208,-140,24,-141,27,-332,636,-333,637}); + states[625] = new State(new int[]{9,626,94,627}); + states[626] = new State(-645); + states[627] = new State(new int[]{14,629,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,50,633,137,23,80,25,81,26,75,28,73,29,11,347,8,624},new int[]{-335,628,-14,630,-154,158,-156,159,-155,163,-15,165,-189,631,-331,635,-274,358,-170,174,-136,208,-140,24,-141,27,-332,636,-333,637}); + states[628] = new State(-654); + states[629] = new State(-646); + states[630] = new State(-647); + states[631] = new State(new int[]{138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-14,632,-154,158,-156,159,-155,163,-15,165}); + states[632] = new State(-648); + states[633] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,634,-140,24,-141,27}); + states[634] = new State(-649); + states[635] = new State(-650); + states[636] = new State(-651); + states[637] = new State(-652); + states[638] = new State(-653); + states[639] = new State(-658); + states[640] = new State(-710); + states[641] = new State(new int[]{86,-583,10,-583,92,-583,95,-583,30,-583,98,-583,94,-583,12,-583,9,-583,93,-583,29,-583,81,-583,80,-583,2,-583,79,-583,78,-583,77,-583,76,-583,6,-583,5,-583,48,-583,55,-583,135,-583,137,-583,75,-583,73,-583,42,-583,39,-583,8,-583,18,-583,19,-583,138,-583,140,-583,139,-583,148,-583,150,-583,149,-583,54,-583,85,-583,37,-583,22,-583,91,-583,51,-583,32,-583,52,-583,96,-583,44,-583,33,-583,50,-583,57,-583,72,-583,70,-583,35,-583,68,-583,69,-583,13,-586}); + states[642] = new State(new int[]{13,643}); + states[643] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-106,644,-91,647,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,648}); + states[644] = new State(new int[]{5,645,13,643}); + states[645] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-106,646,-91,647,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,648}); + states[646] = new State(new int[]{13,643,86,-599,10,-599,92,-599,95,-599,30,-599,98,-599,94,-599,12,-599,9,-599,93,-599,29,-599,81,-599,80,-599,2,-599,79,-599,78,-599,77,-599,76,-599,6,-599,5,-599,48,-599,55,-599,135,-599,137,-599,75,-599,73,-599,42,-599,39,-599,8,-599,18,-599,19,-599,138,-599,140,-599,139,-599,148,-599,150,-599,149,-599,54,-599,85,-599,37,-599,22,-599,91,-599,51,-599,32,-599,52,-599,96,-599,44,-599,33,-599,50,-599,57,-599,72,-599,70,-599,35,-599,68,-599,69,-599}); + states[647] = new State(new int[]{16,142,5,-585,13,-585,86,-585,10,-585,92,-585,95,-585,30,-585,98,-585,94,-585,12,-585,9,-585,93,-585,29,-585,81,-585,80,-585,2,-585,79,-585,78,-585,77,-585,76,-585,6,-585,48,-585,55,-585,135,-585,137,-585,75,-585,73,-585,42,-585,39,-585,8,-585,18,-585,19,-585,138,-585,140,-585,139,-585,148,-585,150,-585,149,-585,54,-585,85,-585,37,-585,22,-585,91,-585,51,-585,32,-585,52,-585,96,-585,44,-585,33,-585,50,-585,57,-585,72,-585,70,-585,35,-585,68,-585,69,-585}); + states[648] = new State(-586); + states[649] = new State(-584); + states[650] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-107,651,-91,656,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-232,657}); + states[651] = new State(new int[]{48,652}); + states[652] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-107,653,-91,656,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-232,657}); + states[653] = new State(new int[]{29,654}); + states[654] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-107,655,-91,656,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-232,657}); + states[655] = new State(-600); + states[656] = new State(new int[]{16,142,48,-587,29,-587,114,-587,119,-587,117,-587,115,-587,118,-587,116,-587,131,-587,86,-587,10,-587,92,-587,95,-587,30,-587,98,-587,94,-587,12,-587,9,-587,93,-587,81,-587,80,-587,2,-587,79,-587,78,-587,77,-587,76,-587,13,-587,6,-587,5,-587,55,-587,135,-587,137,-587,75,-587,73,-587,42,-587,39,-587,8,-587,18,-587,19,-587,138,-587,140,-587,139,-587,148,-587,150,-587,149,-587,54,-587,85,-587,37,-587,22,-587,91,-587,51,-587,32,-587,52,-587,96,-587,44,-587,33,-587,50,-587,57,-587,72,-587,70,-587,35,-587,68,-587,69,-587,110,-587,109,-587,122,-587,123,-587,120,-587,132,-587,130,-587,112,-587,111,-587,125,-587,126,-587,127,-587,128,-587,124,-587}); + states[657] = new State(-588); + states[658] = new State(-581); + states[659] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,5,-679,86,-679,10,-679,92,-679,95,-679,30,-679,98,-679,94,-679,12,-679,9,-679,93,-679,29,-679,2,-679,79,-679,78,-679,77,-679,76,-679,6,-679},new int[]{-104,660,-95,664,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[660] = new State(new int[]{5,661,86,-683,10,-683,92,-683,95,-683,30,-683,98,-683,94,-683,12,-683,9,-683,93,-683,29,-683,81,-683,80,-683,2,-683,79,-683,78,-683,77,-683,76,-683,6,-683}); + states[661] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-95,662,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[662] = new State(new int[]{6,146,86,-685,10,-685,92,-685,95,-685,30,-685,98,-685,94,-685,12,-685,9,-685,93,-685,29,-685,81,-685,80,-685,2,-685,79,-685,78,-685,77,-685,76,-685}); + states[663] = new State(-709); + states[664] = new State(new int[]{6,146,5,-678,86,-678,10,-678,92,-678,95,-678,30,-678,98,-678,94,-678,12,-678,9,-678,93,-678,29,-678,81,-678,80,-678,2,-678,79,-678,78,-678,77,-678,76,-678}); + states[665] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-124,666,-136,667,-140,24,-141,27}); + states[666] = new State(-466); + states[667] = new State(-467); + states[668] = new State(-465); + states[669] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-148,670,-124,668,-136,667,-140,24,-141,27}); + states[670] = new State(new int[]{5,671,94,665}); + states[671] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,672,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[672] = new State(new int[]{104,673,9,-459,10,-459}); + states[673] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,674,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[674] = new State(-463); + states[675] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-148,676,-124,668,-136,667,-140,24,-141,27}); + states[676] = new State(new int[]{5,677,94,665}); + states[677] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,678,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[678] = new State(new int[]{104,679,9,-460,10,-460}); + states[679] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,680,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[680] = new State(-464); + states[681] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-148,682,-124,668,-136,667,-140,24,-141,27}); + states[682] = new State(new int[]{5,683,94,665}); + states[683] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,684,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[684] = new State(-461); + states[685] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-241,686,-8,1045,-9,690,-170,691,-136,1040,-140,24,-141,27,-291,1043}); + states[686] = new State(new int[]{12,687,94,688}); + states[687] = new State(-198); + states[688] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-8,689,-9,690,-170,691,-136,1040,-140,24,-141,27,-291,1043}); + states[689] = new State(-200); + states[690] = new State(-201); + states[691] = new State(new int[]{7,175,8,694,117,180,12,-615,94,-615},new int[]{-65,692,-289,693}); + states[692] = new State(-749); + states[693] = new State(-219); + states[694] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,9,-772},new int[]{-63,695,-66,474,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[695] = new State(new int[]{9,696}); + states[696] = new State(-616); + states[697] = new State(-579); + states[698] = new State(-940); + states[699] = new State(new int[]{8,1030,5,564,121,-953},new int[]{-313,700}); + states[700] = new State(new int[]{121,701}); + states[701] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,702,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[702] = new State(-944); + states[703] = new State(new int[]{86,-592,10,-592,92,-592,95,-592,30,-592,98,-592,94,-592,12,-592,9,-592,93,-592,29,-592,81,-592,80,-592,2,-592,79,-592,78,-592,77,-592,76,-592,13,-586}); + states[704] = new State(-593); + states[705] = new State(new int[]{121,706,8,1021}); + states[706] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,725,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-318,707,-202,708,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-4,735,-319,736,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[707] = new State(-947); + states[708] = new State(-971); + states[709] = new State(new int[]{17,710,8,471,7,715,136,717,4,718,15,720,104,-745,105,-745,106,-745,107,-745,108,-745,86,-745,10,-745,92,-745,95,-745,30,-745,98,-745,94,-745,12,-745,9,-745,93,-745,29,-745,81,-745,80,-745,2,-745,79,-745,78,-745,77,-745,76,-745,132,-745,130,-745,112,-745,111,-745,125,-745,126,-745,127,-745,128,-745,124,-745,110,-745,109,-745,122,-745,123,-745,120,-745,6,-745,5,-745,114,-745,119,-745,117,-745,115,-745,118,-745,116,-745,131,-745,16,-745,13,-745,113,-745,11,-755}); + states[710] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,5,659},new int[]{-109,711,-95,461,-77,315,-76,321,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,663,-257,640}); + states[711] = new State(new int[]{12,712}); + states[712] = new State(new int[]{104,508,105,509,106,510,107,511,108,512,17,-765,8,-765,7,-765,136,-765,4,-765,15,-765,86,-765,10,-765,11,-765,92,-765,95,-765,30,-765,98,-765,94,-765,12,-765,9,-765,93,-765,29,-765,81,-765,80,-765,2,-765,79,-765,78,-765,77,-765,76,-765,132,-765,130,-765,112,-765,111,-765,125,-765,126,-765,127,-765,128,-765,124,-765,110,-765,109,-765,122,-765,123,-765,120,-765,6,-765,5,-765,114,-765,119,-765,117,-765,115,-765,118,-765,116,-765,131,-765,16,-765,13,-765,113,-765},new int[]{-184,713}); + states[713] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,714,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[714] = new State(-506); + states[715] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,484},new int[]{-137,716,-136,539,-140,24,-141,27,-283,540,-139,31,-181,541}); + states[716] = new State(-767); + states[717] = new State(-769); + states[718] = new State(new int[]{117,180},new int[]{-289,719}); + states[719] = new State(-770); + states[720] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-101,721,-105,722,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724}); + states[721] = new State(new int[]{17,458,8,471,7,715,136,717,4,718,15,720,104,-742,105,-742,106,-742,107,-742,108,-742,86,-742,10,-742,92,-742,95,-742,30,-742,98,-742,132,-742,130,-742,112,-742,111,-742,125,-742,126,-742,127,-742,128,-742,124,-742,110,-742,109,-742,122,-742,123,-742,120,-742,6,-742,5,-742,114,-742,119,-742,117,-742,115,-742,118,-742,116,-742,131,-742,16,-742,94,-742,12,-742,9,-742,93,-742,29,-742,81,-742,80,-742,2,-742,79,-742,78,-742,77,-742,76,-742,13,-742,113,-742,48,-742,55,-742,135,-742,137,-742,75,-742,73,-742,42,-742,39,-742,18,-742,19,-742,138,-742,140,-742,139,-742,148,-742,150,-742,149,-742,54,-742,85,-742,37,-742,22,-742,91,-742,51,-742,32,-742,52,-742,96,-742,44,-742,33,-742,50,-742,57,-742,72,-742,70,-742,35,-742,68,-742,69,-742,11,-755}); + states[722] = new State(-743); + states[723] = new State(new int[]{7,156,11,-756}); + states[724] = new State(new int[]{7,537}); + states[725] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,517,-92,550,-101,726,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[726] = new State(new int[]{94,727,17,458,8,471,7,715,136,717,4,718,15,720,132,-745,130,-745,112,-745,111,-745,125,-745,126,-745,127,-745,128,-745,124,-745,110,-745,109,-745,122,-745,123,-745,120,-745,6,-745,5,-745,114,-745,119,-745,117,-745,115,-745,118,-745,116,-745,131,-745,16,-745,9,-745,13,-745,113,-745,11,-755}); + states[727] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-325,728,-101,734,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724}); + states[728] = new State(new int[]{9,729,94,732}); + states[729] = new State(new int[]{104,508,105,509,106,510,107,511,108,512},new int[]{-184,730}); + states[730] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,731,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[731] = new State(-505); + states[732] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,549,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168},new int[]{-101,733,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724}); + states[733] = new State(new int[]{17,458,8,471,7,715,136,717,4,718,9,-508,94,-508,11,-755}); + states[734] = new State(new int[]{17,458,8,471,7,715,136,717,4,718,9,-507,94,-507,11,-755}); + states[735] = new State(-972); + states[736] = new State(-973); + states[737] = new State(-957); + states[738] = new State(-958); + states[739] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,740,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[740] = new State(new int[]{48,741}); + states[741] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,742,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[742] = new State(new int[]{29,743,86,-516,10,-516,92,-516,95,-516,30,-516,98,-516,94,-516,12,-516,9,-516,93,-516,81,-516,80,-516,2,-516,79,-516,78,-516,77,-516,76,-516}); + states[743] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,744,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[744] = new State(-517); + states[745] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,86,-556,10,-556,92,-556,95,-556,30,-556,98,-556,94,-556,12,-556,9,-556,93,-556,29,-556,2,-556,79,-556,78,-556,77,-556,76,-556},new int[]{-136,515,-140,24,-141,27}); + states[746] = new State(new int[]{50,747,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,517,-92,550,-101,726,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[747] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,748,-140,24,-141,27}); + states[748] = new State(new int[]{94,749}); + states[749] = new State(new int[]{50,757},new int[]{-326,750}); + states[750] = new State(new int[]{9,751,94,754}); + states[751] = new State(new int[]{104,752}); + states[752] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,753,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[753] = new State(-502); + states[754] = new State(new int[]{50,755}); + states[755] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,756,-140,24,-141,27}); + states[756] = new State(-510); + states[757] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,758,-140,24,-141,27}); + states[758] = new State(-509); + states[759] = new State(-478); + states[760] = new State(-479); + states[761] = new State(new int[]{148,763,137,23,80,25,81,26,75,28,73,29},new int[]{-132,762,-136,764,-140,24,-141,27}); + states[762] = new State(-512); + states[763] = new State(-92); + states[764] = new State(-93); + states[765] = new State(-480); + states[766] = new State(-481); + states[767] = new State(-482); + states[768] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,769,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[769] = new State(new int[]{55,770}); + states[770] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,29,778,86,-536},new int[]{-33,771,-243,1018,-252,1020,-68,1011,-100,1017,-87,1016,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[771] = new State(new int[]{10,774,29,778,86,-536},new int[]{-243,772}); + states[772] = new State(new int[]{86,773}); + states[773] = new State(-527); + states[774] = new State(new int[]{29,778,137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,86,-536},new int[]{-243,775,-252,777,-68,1011,-100,1017,-87,1016,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[775] = new State(new int[]{86,776}); + states[776] = new State(-528); + states[777] = new State(-531); + states[778] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,86,-476},new int[]{-242,779,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[779] = new State(new int[]{10,132,86,-537}); + states[780] = new State(-514); + states[781] = new State(new int[]{17,-757,8,-757,7,-757,136,-757,4,-757,15,-757,104,-757,105,-757,106,-757,107,-757,108,-757,86,-757,10,-757,11,-757,92,-757,95,-757,30,-757,98,-757,5,-93}); + states[782] = new State(new int[]{7,-176,11,-176,5,-92}); + states[783] = new State(-483); + states[784] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,92,-476,10,-476},new int[]{-242,785,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[785] = new State(new int[]{92,786,10,132}); + states[786] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,787,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[787] = new State(-538); + states[788] = new State(-484); + states[789] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,790,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[790] = new State(new int[]{93,1003,135,-541,137,-541,80,-541,81,-541,75,-541,73,-541,42,-541,39,-541,8,-541,18,-541,19,-541,138,-541,140,-541,139,-541,148,-541,150,-541,149,-541,54,-541,85,-541,37,-541,22,-541,91,-541,51,-541,32,-541,52,-541,96,-541,44,-541,33,-541,50,-541,57,-541,72,-541,70,-541,35,-541,86,-541,10,-541,92,-541,95,-541,30,-541,98,-541,94,-541,12,-541,9,-541,29,-541,2,-541,79,-541,78,-541,77,-541,76,-541},new int[]{-282,791}); + states[791] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,792,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[792] = new State(-539); + states[793] = new State(-485); + states[794] = new State(new int[]{50,1010,137,-550,80,-550,81,-550,75,-550,73,-550},new int[]{-18,795}); + states[795] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,796,-140,24,-141,27}); + states[796] = new State(new int[]{104,1006,5,1007},new int[]{-276,797}); + states[797] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,798,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[798] = new State(new int[]{68,1004,69,1005},new int[]{-108,799}); + states[799] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,800,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[800] = new State(new int[]{93,1003,135,-541,137,-541,80,-541,81,-541,75,-541,73,-541,42,-541,39,-541,8,-541,18,-541,19,-541,138,-541,140,-541,139,-541,148,-541,150,-541,149,-541,54,-541,85,-541,37,-541,22,-541,91,-541,51,-541,32,-541,52,-541,96,-541,44,-541,33,-541,50,-541,57,-541,72,-541,70,-541,35,-541,86,-541,10,-541,92,-541,95,-541,30,-541,98,-541,94,-541,12,-541,9,-541,29,-541,2,-541,79,-541,78,-541,77,-541,76,-541},new int[]{-282,801}); + states[801] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,802,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[802] = new State(-548); + states[803] = new State(-486); + states[804] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705},new int[]{-66,805,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[805] = new State(new int[]{93,806,94,475}); + states[806] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,807,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[807] = new State(-555); + states[808] = new State(-487); + states[809] = new State(-488); + states[810] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,95,-476,30,-476},new int[]{-242,811,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[811] = new State(new int[]{10,132,95,813,30,981},new int[]{-280,812}); + states[812] = new State(-557); + states[813] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476},new int[]{-242,814,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[814] = new State(new int[]{86,815,10,132}); + states[815] = new State(-558); + states[816] = new State(-489); + states[817] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659,86,-572,10,-572,92,-572,95,-572,30,-572,98,-572,94,-572,12,-572,9,-572,93,-572,29,-572,2,-572,79,-572,78,-572,77,-572,76,-572},new int[]{-82,818,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[818] = new State(-573); + states[819] = new State(-490); + states[820] = new State(new int[]{50,966,137,23,80,25,81,26,75,28,73,29},new int[]{-136,821,-140,24,-141,27}); + states[821] = new State(new int[]{5,964,131,-547},new int[]{-264,822}); + states[822] = new State(new int[]{131,823}); + states[823] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,824,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[824] = new State(new int[]{93,825}); + states[825] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,826,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[826] = new State(-543); + states[827] = new State(-491); + states[828] = new State(new int[]{8,830,137,23,80,25,81,26,75,28,73,29},new int[]{-300,829,-147,838,-136,837,-140,24,-141,27}); + states[829] = new State(-501); + states[830] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,831,-140,24,-141,27}); + states[831] = new State(new int[]{94,832}); + states[832] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,833,-136,837,-140,24,-141,27}); + states[833] = new State(new int[]{9,834,94,562}); + states[834] = new State(new int[]{104,835}); + states[835] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,836,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[836] = new State(-503); + states[837] = new State(-330); + states[838] = new State(new int[]{5,839,94,562,104,962}); + states[839] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,840,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[840] = new State(new int[]{104,960,114,961,86,-396,10,-396,92,-396,95,-396,30,-396,98,-396,94,-396,12,-396,9,-396,93,-396,29,-396,81,-396,80,-396,2,-396,79,-396,78,-396,77,-396,76,-396},new int[]{-327,841}); + states[841] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,931,129,390,110,368,109,369,60,170,34,699,41,705},new int[]{-81,842,-80,843,-79,252,-84,253,-75,203,-12,227,-10,237,-13,213,-136,844,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,948,-233,949,-53,950,-312,959}); + states[842] = new State(-398); + states[843] = new State(-399); + states[844] = new State(new int[]{121,845,4,-155,11,-155,7,-155,136,-155,8,-155,113,-155,130,-155,132,-155,112,-155,111,-155,125,-155,126,-155,127,-155,128,-155,124,-155,110,-155,109,-155,122,-155,123,-155,114,-155,119,-155,117,-155,115,-155,118,-155,116,-155,131,-155,13,-155,86,-155,10,-155,92,-155,95,-155,30,-155,98,-155,94,-155,12,-155,9,-155,93,-155,29,-155,81,-155,80,-155,2,-155,79,-155,78,-155,77,-155,76,-155}); + states[845] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,846,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[846] = new State(-401); + states[847] = new State(-970); + states[848] = new State(-959); + states[849] = new State(-960); + states[850] = new State(-961); + states[851] = new State(-962); + states[852] = new State(-963); + states[853] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,854,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[854] = new State(new int[]{93,855}); + states[855] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,856,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[856] = new State(-498); + states[857] = new State(-492); + states[858] = new State(-576); + states[859] = new State(-577); + states[860] = new State(-493); + states[861] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,862,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[862] = new State(new int[]{93,863}); + states[863] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,864,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[864] = new State(-542); + states[865] = new State(-494); + states[866] = new State(new int[]{71,868,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,867,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[867] = new State(-499); + states[868] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,869,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[869] = new State(-500); + states[870] = new State(-495); + states[871] = new State(-496); + states[872] = new State(-497); + states[873] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,874,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[874] = new State(new int[]{52,875}); + states[875] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,138,161,140,162,139,164,148,166,150,167,149,168,53,910,18,259,19,264,11,347,8,624},new int[]{-339,876,-338,924,-331,883,-274,888,-170,174,-136,208,-140,24,-141,27,-330,902,-346,905,-328,913,-14,908,-154,158,-156,159,-155,163,-15,165,-247,911,-285,912,-332,914,-333,917}); + states[876] = new State(new int[]{10,879,29,778,86,-536},new int[]{-243,877}); + states[877] = new State(new int[]{86,878}); + states[878] = new State(-518); + states[879] = new State(new int[]{29,778,137,23,80,25,81,26,75,28,73,29,138,161,140,162,139,164,148,166,150,167,149,168,53,910,18,259,19,264,11,347,8,624,86,-536},new int[]{-243,880,-338,882,-331,883,-274,888,-170,174,-136,208,-140,24,-141,27,-330,902,-346,905,-328,913,-14,908,-154,158,-156,159,-155,163,-15,165,-247,911,-285,912,-332,914,-333,917}); + states[880] = new State(new int[]{86,881}); + states[881] = new State(-519); + states[882] = new State(-521); + states[883] = new State(new int[]{36,884}); + states[884] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,885,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[885] = new State(new int[]{5,886}); + states[886] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,887,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[887] = new State(-522); + states[888] = new State(new int[]{8,889,94,-630,5,-630}); + states[889] = new State(new int[]{14,364,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,137,23,80,25,81,26,75,28,73,29,50,894,11,347,8,624},new int[]{-343,890,-341,901,-14,365,-154,158,-156,159,-155,163,-15,165,-189,366,-136,370,-140,24,-141,27,-331,898,-274,358,-170,174,-332,899,-333,900}); + states[890] = new State(new int[]{9,891,10,362,94,892}); + states[891] = new State(new int[]{36,-624,5,-625}); + states[892] = new State(new int[]{14,364,138,161,140,162,139,164,148,166,150,167,149,168,110,368,109,369,137,23,80,25,81,26,75,28,73,29,50,894,11,347,8,624},new int[]{-341,893,-14,365,-154,158,-156,159,-155,163,-15,165,-189,366,-136,370,-140,24,-141,27,-331,898,-274,358,-170,174,-332,899,-333,900}); + states[893] = new State(-657); + states[894] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,895,-140,24,-141,27}); + states[895] = new State(new int[]{5,896,9,-674,10,-674,94,-674}); + states[896] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,897,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[897] = new State(-673); + states[898] = new State(-675); + states[899] = new State(-676); + states[900] = new State(-677); + states[901] = new State(-655); + states[902] = new State(new int[]{5,903}); + states[903] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,904,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[904] = new State(-523); + states[905] = new State(new int[]{94,906,5,-626}); + states[906] = new State(new int[]{138,161,140,162,139,164,148,166,150,167,149,168,137,23,80,25,81,26,75,28,73,29,53,910,18,259,19,264},new int[]{-328,907,-14,908,-154,158,-156,159,-155,163,-15,165,-274,909,-170,174,-136,208,-140,24,-141,27,-247,911,-285,912}); + states[907] = new State(-628); + states[908] = new State(-629); + states[909] = new State(-630); + states[910] = new State(-631); + states[911] = new State(-632); + states[912] = new State(-633); + states[913] = new State(-627); + states[914] = new State(new int[]{5,915}); + states[915] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,916,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[916] = new State(-524); + states[917] = new State(new int[]{36,918,5,922}); + states[918] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,919,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[919] = new State(new int[]{5,920}); + states[920] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,921,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[921] = new State(-525); + states[922] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,923,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[923] = new State(-526); + states[924] = new State(-520); + states[925] = new State(-964); + states[926] = new State(-965); + states[927] = new State(-966); + states[928] = new State(-967); + states[929] = new State(-968); + states[930] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,867,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[931] = new State(new int[]{9,939,137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369,60,170},new int[]{-84,932,-62,933,-235,937,-75,203,-12,227,-10,237,-13,213,-136,943,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-61,249,-80,947,-79,252,-88,948,-233,949,-53,950,-234,951,-236,958,-125,954}); + states[932] = new State(new int[]{9,389,13,199,94,-179}); + states[933] = new State(new int[]{9,934}); + states[934] = new State(new int[]{121,935,86,-182,10,-182,92,-182,95,-182,30,-182,98,-182,94,-182,12,-182,9,-182,93,-182,29,-182,81,-182,80,-182,2,-182,79,-182,78,-182,77,-182,76,-182}); + states[935] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,936,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[936] = new State(-403); + states[937] = new State(new int[]{9,938}); + states[938] = new State(-187); + states[939] = new State(new int[]{5,564,121,-953},new int[]{-313,940}); + states[940] = new State(new int[]{121,941}); + states[941] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,942,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[942] = new State(-402); + states[943] = new State(new int[]{4,-155,11,-155,7,-155,136,-155,8,-155,113,-155,130,-155,132,-155,112,-155,111,-155,125,-155,126,-155,127,-155,128,-155,124,-155,110,-155,109,-155,122,-155,123,-155,114,-155,119,-155,117,-155,115,-155,118,-155,116,-155,131,-155,9,-155,13,-155,94,-155,5,-193}); + states[944] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369,60,170,9,-183},new int[]{-84,932,-62,945,-235,937,-75,203,-12,227,-10,237,-13,213,-136,943,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-61,249,-80,947,-79,252,-88,948,-233,949,-53,950,-234,951,-236,958,-125,954}); + states[945] = new State(new int[]{9,946}); + states[946] = new State(-182); + states[947] = new State(-185); + states[948] = new State(-180); + states[949] = new State(-181); + states[950] = new State(-405); + states[951] = new State(new int[]{10,952,9,-188}); + states[952] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,9,-189},new int[]{-236,953,-125,954,-136,957,-140,24,-141,27}); + states[953] = new State(-191); + states[954] = new State(new int[]{5,955}); + states[955] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369},new int[]{-79,956,-84,253,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,948,-233,949}); + states[956] = new State(-192); + states[957] = new State(-193); + states[958] = new State(-190); + states[959] = new State(-400); + states[960] = new State(-394); + states[961] = new State(-395); + states[962] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,963,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[963] = new State(-397); + states[964] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,965,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[965] = new State(-546); + states[966] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,967,-140,24,-141,27}); + states[967] = new State(new int[]{5,968,131,974}); + states[968] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,969,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[969] = new State(new int[]{131,970}); + states[970] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,971,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[971] = new State(new int[]{93,972}); + states[972] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,973,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[973] = new State(-544); + states[974] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,975,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[975] = new State(new int[]{93,976}); + states[976] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476,94,-476,12,-476,9,-476,93,-476,29,-476,2,-476,79,-476,78,-476,77,-476,76,-476},new int[]{-250,977,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[977] = new State(-545); + states[978] = new State(new int[]{5,979}); + states[979] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476,92,-476,95,-476,30,-476,98,-476},new int[]{-251,980,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[980] = new State(-475); + states[981] = new State(new int[]{74,989,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,86,-476},new int[]{-56,982,-59,984,-58,1001,-242,1002,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[982] = new State(new int[]{86,983}); + states[983] = new State(-559); + states[984] = new State(new int[]{10,986,29,999,86,-565},new int[]{-244,985}); + states[985] = new State(-560); + states[986] = new State(new int[]{74,989,29,999,86,-565},new int[]{-58,987,-244,988}); + states[987] = new State(-564); + states[988] = new State(-561); + states[989] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-60,990,-169,993,-170,994,-136,995,-140,24,-141,27,-129,996}); + states[990] = new State(new int[]{93,991}); + states[991] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,992,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[992] = new State(-567); + states[993] = new State(-568); + states[994] = new State(new int[]{7,175,93,-570}); + states[995] = new State(new int[]{7,-245,93,-245,5,-571}); + states[996] = new State(new int[]{5,997}); + states[997] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-169,998,-170,994,-136,208,-140,24,-141,27}); + states[998] = new State(-569); + states[999] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,86,-476},new int[]{-242,1000,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[1000] = new State(new int[]{10,132,86,-566}); + states[1001] = new State(-563); + states[1002] = new State(new int[]{10,132,86,-562}); + states[1003] = new State(-540); + states[1004] = new State(-553); + states[1005] = new State(-554); + states[1006] = new State(-551); + states[1007] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-170,1008,-136,208,-140,24,-141,27}); + states[1008] = new State(new int[]{104,1009,7,175}); + states[1009] = new State(-552); + states[1010] = new State(-549); + states[1011] = new State(new int[]{5,1012,94,1014}); + states[1012] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476,29,-476,86,-476},new int[]{-250,1013,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1013] = new State(-532); + states[1014] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-100,1015,-87,1016,-84,198,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[1015] = new State(-534); + states[1016] = new State(-535); + states[1017] = new State(-533); + states[1018] = new State(new int[]{86,1019}); + states[1019] = new State(-529); + states[1020] = new State(-530); + states[1021] = new State(new int[]{9,1022,137,23,80,25,81,26,75,28,73,29},new int[]{-315,1025,-316,1029,-147,560,-136,837,-140,24,-141,27}); + states[1022] = new State(new int[]{121,1023}); + states[1023] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,725,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-318,1024,-202,708,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-4,735,-319,736,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1024] = new State(-948); + states[1025] = new State(new int[]{9,1026,10,558}); + states[1026] = new State(new int[]{121,1027}); + states[1027] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,29,42,484,39,514,8,725,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-318,1028,-202,708,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-4,735,-319,736,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1028] = new State(-949); + states[1029] = new State(-950); + states[1030] = new State(new int[]{9,1031,137,23,80,25,81,26,75,28,73,29},new int[]{-315,1035,-316,1029,-147,560,-136,837,-140,24,-141,27}); + states[1031] = new State(new int[]{5,564,121,-953},new int[]{-313,1032}); + states[1032] = new State(new int[]{121,1033}); + states[1033] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1034,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1034] = new State(-945); + states[1035] = new State(new int[]{9,1036,10,558}); + states[1036] = new State(new int[]{5,564,121,-953},new int[]{-313,1037}); + states[1037] = new State(new int[]{121,1038}); + states[1038] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1039,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1039] = new State(-946); + states[1040] = new State(new int[]{5,1041,7,-245,8,-245,117,-245,12,-245,94,-245}); + states[1041] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-9,1042,-170,691,-136,208,-140,24,-141,27,-291,1043}); + states[1042] = new State(-202); + states[1043] = new State(new int[]{8,694,12,-615,94,-615},new int[]{-65,1044}); + states[1044] = new State(-750); + states[1045] = new State(-199); + states[1046] = new State(-195); + states[1047] = new State(-455); + states[1048] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,1049,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[1049] = new State(-112); + states[1050] = new State(-111); + states[1051] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,1055,136,414,21,420,45,428,46,567,31,571,71,575,62,578},new int[]{-267,1052,-262,1053,-86,187,-96,279,-97,280,-170,1054,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-246,1060,-239,1061,-271,1062,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-291,1063}); + states[1052] = new State(-956); + states[1053] = new State(-469); + states[1054] = new State(new int[]{7,175,117,180,8,-240,112,-240,111,-240,125,-240,126,-240,127,-240,128,-240,124,-240,6,-240,110,-240,109,-240,122,-240,123,-240,121,-240},new int[]{-289,693}); + states[1055] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-74,1056,-72,296,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1056] = new State(new int[]{9,1057,94,1058}); + states[1057] = new State(-235); + states[1058] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-72,1059,-266,299,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1059] = new State(-248); + states[1060] = new State(-470); + states[1061] = new State(-471); + states[1062] = new State(-472); + states[1063] = new State(-473); + states[1064] = new State(new int[]{5,1051,121,-955},new int[]{-314,1065}); + states[1065] = new State(new int[]{121,1066}); + states[1066] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1067,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1067] = new State(-935); + states[1068] = new State(new int[]{5,1069,10,1081,17,-757,8,-757,7,-757,136,-757,4,-757,15,-757,132,-757,130,-757,112,-757,111,-757,125,-757,126,-757,127,-757,128,-757,124,-757,110,-757,109,-757,122,-757,123,-757,120,-757,6,-757,114,-757,119,-757,117,-757,115,-757,118,-757,116,-757,131,-757,16,-757,94,-757,9,-757,13,-757,113,-757,11,-757}); + states[1069] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1070,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1070] = new State(new int[]{9,1071,10,1075}); + states[1071] = new State(new int[]{5,1051,121,-955},new int[]{-314,1072}); + states[1072] = new State(new int[]{121,1073}); + states[1073] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1074,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1074] = new State(-936); + states[1075] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-315,1076,-316,1029,-147,560,-136,837,-140,24,-141,27}); + states[1076] = new State(new int[]{9,1077,10,558}); + states[1077] = new State(new int[]{5,1051,121,-955},new int[]{-314,1078}); + states[1078] = new State(new int[]{121,1079}); + states[1079] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1080,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1080] = new State(-938); + states[1081] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-315,1082,-316,1029,-147,560,-136,837,-140,24,-141,27}); + states[1082] = new State(new int[]{9,1083,10,558}); + states[1083] = new State(new int[]{5,1051,121,-955},new int[]{-314,1084}); + states[1084] = new State(new int[]{121,1085}); + states[1085] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,34,699,41,705,85,129,37,739,51,789,91,784,32,794,33,820,70,853,22,768,96,810,57,861,44,817,72,930},new int[]{-317,1086,-94,480,-91,481,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,703,-106,642,-311,704,-312,698,-319,847,-245,737,-142,738,-307,848,-237,849,-113,850,-112,851,-114,852,-32,925,-292,926,-158,927,-238,928,-115,929}); + states[1086] = new State(-937); + states[1087] = new State(-748); + states[1088] = new State(new int[]{141,1092,143,1093,144,1094,145,1095,147,1096,146,1097,101,-786,85,-786,56,-786,26,-786,64,-786,47,-786,50,-786,59,-786,11,-786,25,-786,23,-786,41,-786,34,-786,27,-786,28,-786,43,-786,24,-786,86,-786,79,-786,78,-786,77,-786,76,-786,20,-786,142,-786,38,-786},new int[]{-196,1089,-199,1098}); + states[1089] = new State(new int[]{10,1090}); + states[1090] = new State(new int[]{141,1092,143,1093,144,1094,145,1095,147,1096,146,1097,101,-787,85,-787,56,-787,26,-787,64,-787,47,-787,50,-787,59,-787,11,-787,25,-787,23,-787,41,-787,34,-787,27,-787,28,-787,43,-787,24,-787,86,-787,79,-787,78,-787,77,-787,76,-787,20,-787,142,-787,38,-787},new int[]{-199,1091}); + states[1091] = new State(-791); + states[1092] = new State(-801); + states[1093] = new State(-802); + states[1094] = new State(-803); + states[1095] = new State(-804); + states[1096] = new State(-805); + states[1097] = new State(-806); + states[1098] = new State(-790); + states[1099] = new State(-361); + states[1100] = new State(-429); + states[1101] = new State(-430); + states[1102] = new State(new int[]{8,-435,104,-435,10,-435,5,-435,7,-432}); + states[1103] = new State(new int[]{117,1105,8,-438,104,-438,10,-438,7,-438,5,-438},new int[]{-144,1104}); + states[1104] = new State(-439); + states[1105] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,1106,-136,837,-140,24,-141,27}); + states[1106] = new State(new int[]{115,1107,94,562}); + states[1107] = new State(-308); + states[1108] = new State(-440); + states[1109] = new State(new int[]{117,1105,8,-436,104,-436,10,-436,5,-436},new int[]{-144,1110}); + states[1110] = new State(-437); + states[1111] = new State(new int[]{7,1112}); + states[1112] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-131,1113,-138,1114,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109}); + states[1113] = new State(-431); + states[1114] = new State(-434); + states[1115] = new State(-433); + states[1116] = new State(-422); + states[1117] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35},new int[]{-162,1118,-136,1158,-140,24,-141,27,-139,1159}); + states[1118] = new State(new int[]{7,1143,11,1149,5,-379},new int[]{-223,1119,-228,1146}); + states[1119] = new State(new int[]{80,1132,81,1138,10,-386},new int[]{-192,1120}); + states[1120] = new State(new int[]{10,1121}); + states[1121] = new State(new int[]{60,1126,146,1128,145,1129,141,1130,144,1131,11,-376,25,-376,23,-376,41,-376,34,-376,27,-376,28,-376,43,-376,24,-376,86,-376,79,-376,78,-376,77,-376,76,-376},new int[]{-195,1122,-200,1123}); + states[1122] = new State(-370); + states[1123] = new State(new int[]{10,1124}); + states[1124] = new State(new int[]{60,1126,11,-376,25,-376,23,-376,41,-376,34,-376,27,-376,28,-376,43,-376,24,-376,86,-376,79,-376,78,-376,77,-376,76,-376},new int[]{-195,1125}); + states[1125] = new State(-371); + states[1126] = new State(new int[]{10,1127}); + states[1127] = new State(-377); + states[1128] = new State(-807); + states[1129] = new State(-808); + states[1130] = new State(-809); + states[1131] = new State(-810); + states[1132] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,10,-385},new int[]{-103,1133,-83,1137,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[1133] = new State(new int[]{81,1135,10,-389},new int[]{-193,1134}); + states[1134] = new State(-387); + states[1135] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1136,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1136] = new State(-390); + states[1137] = new State(-384); + states[1138] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1139,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1139] = new State(new int[]{80,1141,10,-391},new int[]{-194,1140}); + states[1140] = new State(-388); + states[1141] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,10,-385},new int[]{-103,1142,-83,1137,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[1142] = new State(-392); + states[1143] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35},new int[]{-136,1144,-139,1145,-140,24,-141,27}); + states[1144] = new State(-365); + states[1145] = new State(-366); + states[1146] = new State(new int[]{5,1147}); + states[1147] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1148,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1148] = new State(-378); + states[1149] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-227,1150,-226,1157,-147,1154,-136,837,-140,24,-141,27}); + states[1150] = new State(new int[]{12,1151,10,1152}); + states[1151] = new State(-380); + states[1152] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-226,1153,-147,1154,-136,837,-140,24,-141,27}); + states[1153] = new State(-382); + states[1154] = new State(new int[]{5,1155,94,562}); + states[1155] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1156,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1156] = new State(-383); + states[1157] = new State(-381); + states[1158] = new State(-363); + states[1159] = new State(-364); + states[1160] = new State(new int[]{43,1161}); + states[1161] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35},new int[]{-162,1162,-136,1158,-140,24,-141,27,-139,1159}); + states[1162] = new State(new int[]{7,1143,11,1149,5,-379},new int[]{-223,1163,-228,1146}); + states[1163] = new State(new int[]{104,1166,10,-375},new int[]{-201,1164}); + states[1164] = new State(new int[]{10,1165}); + states[1165] = new State(-373); + states[1166] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,1167,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[1167] = new State(-374); + states[1168] = new State(new int[]{101,1299,11,-355,25,-355,23,-355,41,-355,34,-355,27,-355,28,-355,43,-355,24,-355,86,-355,79,-355,78,-355,77,-355,76,-355,56,-63,26,-63,64,-63,47,-63,50,-63,59,-63,85,-63},new int[]{-166,1169,-40,1170,-36,1173,-57,1298}); + states[1169] = new State(-423); + states[1170] = new State(new int[]{85,129},new int[]{-245,1171}); + states[1171] = new State(new int[]{10,1172}); + states[1172] = new State(-450); + states[1173] = new State(new int[]{56,1176,26,1197,64,1201,47,1362,50,1377,59,1379,85,-62},new int[]{-42,1174,-157,1175,-26,1182,-48,1199,-279,1203,-298,1364}); + states[1174] = new State(-64); + states[1175] = new State(-80); + states[1176] = new State(new int[]{148,763,137,23,80,25,81,26,75,28,73,29},new int[]{-145,1177,-132,1181,-136,764,-140,24,-141,27}); + states[1177] = new State(new int[]{10,1178,94,1179}); + states[1178] = new State(-89); + states[1179] = new State(new int[]{148,763,137,23,80,25,81,26,75,28,73,29},new int[]{-132,1180,-136,764,-140,24,-141,27}); + states[1180] = new State(-91); + states[1181] = new State(-90); + states[1182] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,56,-81,26,-81,64,-81,47,-81,50,-81,59,-81,85,-81},new int[]{-24,1183,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1183] = new State(-95); + states[1184] = new State(new int[]{10,1185}); + states[1185] = new State(-105); + states[1186] = new State(new int[]{114,1187,5,1192}); + states[1187] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,1190,129,390,110,368,109,369},new int[]{-99,1188,-84,1189,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,1191}); + states[1188] = new State(-106); + states[1189] = new State(new int[]{13,199,10,-108,86,-108,79,-108,78,-108,77,-108,76,-108}); + states[1190] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369,60,170,9,-183},new int[]{-84,932,-62,945,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-61,249,-80,947,-79,252,-88,948,-233,949,-53,950}); + states[1191] = new State(-109); + states[1192] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,1193,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1193] = new State(new int[]{114,1194}); + states[1194] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,944,129,390,110,368,109,369},new int[]{-79,1195,-84,253,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397,-88,948,-233,949}); + states[1195] = new State(-107); + states[1196] = new State(-110); + states[1197] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-24,1198,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1198] = new State(-94); + states[1199] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,56,-82,26,-82,64,-82,47,-82,50,-82,59,-82,85,-82},new int[]{-24,1200,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1200] = new State(-97); + states[1201] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-24,1202,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1202] = new State(-96); + states[1203] = new State(new int[]{11,685,56,-83,26,-83,64,-83,47,-83,50,-83,59,-83,85,-83,137,-197,80,-197,81,-197,75,-197,73,-197},new int[]{-45,1204,-6,1205,-240,1046}); + states[1204] = new State(-99); + states[1205] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,11,685},new int[]{-46,1206,-240,444,-133,1207,-136,1354,-140,24,-141,27,-134,1359}); + states[1206] = new State(-194); + states[1207] = new State(new int[]{114,1208}); + states[1208] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611,66,1348,67,1349,141,1350,24,1351,25,1352,23,-290,40,-290,61,-290},new int[]{-277,1209,-266,1211,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582,-27,1212,-20,1213,-21,1346,-19,1353}); + states[1209] = new State(new int[]{10,1210}); + states[1210] = new State(-203); + states[1211] = new State(-208); + states[1212] = new State(-209); + states[1213] = new State(new int[]{23,1340,40,1341,61,1342},new int[]{-281,1214}); + states[1214] = new State(new int[]{8,1255,20,-302,11,-302,86,-302,79,-302,78,-302,77,-302,76,-302,26,-302,137,-302,80,-302,81,-302,75,-302,73,-302,59,-302,25,-302,23,-302,41,-302,34,-302,27,-302,28,-302,43,-302,24,-302,10,-302},new int[]{-173,1215}); + states[1215] = new State(new int[]{20,1246,11,-309,86,-309,79,-309,78,-309,77,-309,76,-309,26,-309,137,-309,80,-309,81,-309,75,-309,73,-309,59,-309,25,-309,23,-309,41,-309,34,-309,27,-309,28,-309,43,-309,24,-309,10,-309},new int[]{-306,1216,-305,1244,-304,1266}); + states[1216] = new State(new int[]{11,685,10,-300,86,-326,79,-326,78,-326,77,-326,76,-326,26,-197,137,-197,80,-197,81,-197,75,-197,73,-197,59,-197,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-23,1217,-22,1218,-29,1224,-31,435,-41,1225,-6,1226,-240,1046,-30,1337,-50,1339,-49,441,-51,1338}); + states[1217] = new State(-283); + states[1218] = new State(new int[]{86,1219,79,1220,78,1221,77,1222,76,1223},new int[]{-7,433}); + states[1219] = new State(-301); + states[1220] = new State(-322); + states[1221] = new State(-323); + states[1222] = new State(-324); + states[1223] = new State(-325); + states[1224] = new State(-320); + states[1225] = new State(-334); + states[1226] = new State(new int[]{26,1228,137,23,80,25,81,26,75,28,73,29,59,1232,25,1293,23,1294,11,685,41,1239,34,1274,27,1308,28,1315,43,1322,24,1331},new int[]{-47,1227,-240,444,-212,443,-209,445,-248,446,-301,1230,-300,1231,-147,838,-136,837,-140,24,-141,27,-3,1236,-220,1295,-218,1168,-215,1238,-219,1273,-217,1296,-205,1319,-206,1320,-208,1321}); + states[1227] = new State(-336); + states[1228] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-25,1229,-130,1186,-136,1196,-140,24,-141,27}); + states[1229] = new State(-341); + states[1230] = new State(-342); + states[1231] = new State(-346); + states[1232] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,1233,-136,837,-140,24,-141,27}); + states[1233] = new State(new int[]{5,1234,94,562}); + states[1234] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,1235,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1235] = new State(-347); + states[1236] = new State(new int[]{27,449,43,1117,24,1160,137,23,80,25,81,26,75,28,73,29,59,1232,41,1239,34,1274},new int[]{-301,1237,-220,448,-206,1116,-300,1231,-147,838,-136,837,-140,24,-141,27,-218,1168,-215,1238,-219,1273}); + states[1237] = new State(-343); + states[1238] = new State(-356); + states[1239] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-160,1240,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1240] = new State(new int[]{8,585,10,-452,104,-452},new int[]{-117,1241}); + states[1241] = new State(new int[]{10,1271,104,-788},new int[]{-197,1242,-198,1267}); + states[1242] = new State(new int[]{20,1246,101,-309,85,-309,56,-309,26,-309,64,-309,47,-309,50,-309,59,-309,11,-309,25,-309,23,-309,41,-309,34,-309,27,-309,28,-309,43,-309,24,-309,86,-309,79,-309,78,-309,77,-309,76,-309,142,-309,38,-309},new int[]{-306,1243,-305,1244,-304,1266}); + states[1243] = new State(-441); + states[1244] = new State(new int[]{20,1246,11,-310,86,-310,79,-310,78,-310,77,-310,76,-310,26,-310,137,-310,80,-310,81,-310,75,-310,73,-310,59,-310,25,-310,23,-310,41,-310,34,-310,27,-310,28,-310,43,-310,24,-310,10,-310,101,-310,85,-310,56,-310,64,-310,47,-310,50,-310,142,-310,38,-310},new int[]{-304,1245}); + states[1245] = new State(-312); + states[1246] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,1247,-136,837,-140,24,-141,27}); + states[1247] = new State(new int[]{5,1248,94,562}); + states[1248] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,1254,46,567,31,571,71,575,62,578,41,583,34,611,23,1263,27,1264},new int[]{-278,1249,-275,1265,-266,1253,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1249] = new State(new int[]{10,1250,94,1251}); + states[1250] = new State(-313); + states[1251] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,1254,46,567,31,571,71,575,62,578,41,583,34,611,23,1263,27,1264},new int[]{-275,1252,-266,1253,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1252] = new State(-315); + states[1253] = new State(-316); + states[1254] = new State(new int[]{8,1255,10,-318,94,-318,20,-302,11,-302,86,-302,79,-302,78,-302,77,-302,76,-302,26,-302,137,-302,80,-302,81,-302,75,-302,73,-302,59,-302,25,-302,23,-302,41,-302,34,-302,27,-302,28,-302,43,-302,24,-302},new int[]{-173,429}); + states[1255] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-172,1256,-171,1262,-170,1260,-136,208,-140,24,-141,27,-291,1261}); + states[1256] = new State(new int[]{9,1257,94,1258}); + states[1257] = new State(-303); + states[1258] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-171,1259,-170,1260,-136,208,-140,24,-141,27,-291,1261}); + states[1259] = new State(-305); + states[1260] = new State(new int[]{7,175,117,180,9,-306,94,-306},new int[]{-289,693}); + states[1261] = new State(-307); + states[1262] = new State(-304); + states[1263] = new State(-317); + states[1264] = new State(-319); + states[1265] = new State(-314); + states[1266] = new State(-311); + states[1267] = new State(new int[]{104,1268}); + states[1268] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1269,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1269] = new State(new int[]{10,1270}); + states[1270] = new State(-426); + states[1271] = new State(new int[]{141,1092,143,1093,144,1094,145,1095,147,1096,146,1097,20,-786,101,-786,85,-786,56,-786,26,-786,64,-786,47,-786,50,-786,59,-786,11,-786,25,-786,23,-786,41,-786,34,-786,27,-786,28,-786,43,-786,24,-786,86,-786,79,-786,78,-786,77,-786,76,-786,142,-786},new int[]{-196,1272,-199,1098}); + states[1272] = new State(new int[]{10,1090,104,-789}); + states[1273] = new State(-357); + states[1274] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-159,1275,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1275] = new State(new int[]{8,585,5,-452,10,-452,104,-452},new int[]{-117,1276}); + states[1276] = new State(new int[]{5,1279,10,1271,104,-788},new int[]{-197,1277,-198,1289}); + states[1277] = new State(new int[]{20,1246,101,-309,85,-309,56,-309,26,-309,64,-309,47,-309,50,-309,59,-309,11,-309,25,-309,23,-309,41,-309,34,-309,27,-309,28,-309,43,-309,24,-309,86,-309,79,-309,78,-309,77,-309,76,-309,142,-309,38,-309},new int[]{-306,1278,-305,1244,-304,1266}); + states[1278] = new State(-442); + states[1279] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1280,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1280] = new State(new int[]{10,1271,104,-788},new int[]{-197,1281,-198,1283}); + states[1281] = new State(new int[]{20,1246,101,-309,85,-309,56,-309,26,-309,64,-309,47,-309,50,-309,59,-309,11,-309,25,-309,23,-309,41,-309,34,-309,27,-309,28,-309,43,-309,24,-309,86,-309,79,-309,78,-309,77,-309,76,-309,142,-309,38,-309},new int[]{-306,1282,-305,1244,-304,1266}); + states[1282] = new State(-443); + states[1283] = new State(new int[]{104,1284}); + states[1284] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,34,699,41,705},new int[]{-93,1285,-92,1287,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-311,1288,-312,698}); + states[1285] = new State(new int[]{10,1286}); + states[1286] = new State(-424); + states[1287] = new State(-589); + states[1288] = new State(-590); + states[1289] = new State(new int[]{104,1290}); + states[1290] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,34,699,41,705},new int[]{-93,1291,-92,1287,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-311,1288,-312,698}); + states[1291] = new State(new int[]{10,1292}); + states[1292] = new State(-425); + states[1293] = new State(-344); + states[1294] = new State(-345); + states[1295] = new State(-353); + states[1296] = new State(new int[]{101,1299,11,-354,25,-354,23,-354,41,-354,34,-354,27,-354,28,-354,43,-354,24,-354,86,-354,79,-354,78,-354,77,-354,76,-354,56,-63,26,-63,64,-63,47,-63,50,-63,59,-63,85,-63},new int[]{-166,1297,-40,1170,-36,1173,-57,1298}); + states[1297] = new State(-409); + states[1298] = new State(-451); + states[1299] = new State(new int[]{10,1307,137,23,80,25,81,26,75,28,73,29,138,161,140,162,139,164},new int[]{-98,1300,-136,1304,-140,24,-141,27,-154,1305,-156,159,-155,163}); + states[1300] = new State(new int[]{75,1301,10,1306}); + states[1301] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,138,161,140,162,139,164},new int[]{-98,1302,-136,1304,-140,24,-141,27,-154,1305,-156,159,-155,163}); + states[1302] = new State(new int[]{10,1303}); + states[1303] = new State(-444); + states[1304] = new State(-447); + states[1305] = new State(-448); + states[1306] = new State(-445); + states[1307] = new State(-446); + states[1308] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,8,-362,104,-362,10,-362},new int[]{-161,1309,-160,1099,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1309] = new State(new int[]{8,585,104,-452,10,-452},new int[]{-117,1310}); + states[1310] = new State(new int[]{104,1312,10,1088},new int[]{-197,1311}); + states[1311] = new State(-358); + states[1312] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1313,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1313] = new State(new int[]{10,1314}); + states[1314] = new State(-410); + states[1315] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,8,-362,10,-362},new int[]{-161,1316,-160,1099,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1316] = new State(new int[]{8,585,10,-452},new int[]{-117,1317}); + states[1317] = new State(new int[]{10,1088},new int[]{-197,1318}); + states[1318] = new State(-360); + states[1319] = new State(-350); + states[1320] = new State(-421); + states[1321] = new State(-351); + states[1322] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35},new int[]{-162,1323,-136,1158,-140,24,-141,27,-139,1159}); + states[1323] = new State(new int[]{7,1143,11,1149,5,-379},new int[]{-223,1324,-228,1146}); + states[1324] = new State(new int[]{80,1132,81,1138,10,-386},new int[]{-192,1325}); + states[1325] = new State(new int[]{10,1326}); + states[1326] = new State(new int[]{60,1126,146,1128,145,1129,141,1130,144,1131,11,-376,25,-376,23,-376,41,-376,34,-376,27,-376,28,-376,43,-376,24,-376,86,-376,79,-376,78,-376,77,-376,76,-376},new int[]{-195,1327,-200,1328}); + states[1327] = new State(-368); + states[1328] = new State(new int[]{10,1329}); + states[1329] = new State(new int[]{60,1126,11,-376,25,-376,23,-376,41,-376,34,-376,27,-376,28,-376,43,-376,24,-376,86,-376,79,-376,78,-376,77,-376,76,-376},new int[]{-195,1330}); + states[1330] = new State(-369); + states[1331] = new State(new int[]{43,1332}); + states[1332] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35},new int[]{-162,1333,-136,1158,-140,24,-141,27,-139,1159}); + states[1333] = new State(new int[]{7,1143,11,1149,5,-379},new int[]{-223,1334,-228,1146}); + states[1334] = new State(new int[]{104,1166,10,-375},new int[]{-201,1335}); + states[1335] = new State(new int[]{10,1336}); + states[1336] = new State(-372); + states[1337] = new State(new int[]{11,685,86,-328,79,-328,78,-328,77,-328,76,-328,25,-197,23,-197,41,-197,34,-197,27,-197,28,-197,43,-197,24,-197},new int[]{-50,440,-49,441,-6,442,-240,1046,-51,1338}); + states[1338] = new State(-340); + states[1339] = new State(-337); + states[1340] = new State(-294); + states[1341] = new State(-295); + states[1342] = new State(new int[]{23,1343,45,1344,40,1345,8,-296,20,-296,11,-296,86,-296,79,-296,78,-296,77,-296,76,-296,26,-296,137,-296,80,-296,81,-296,75,-296,73,-296,59,-296,25,-296,41,-296,34,-296,27,-296,28,-296,43,-296,24,-296,10,-296}); + states[1343] = new State(-297); + states[1344] = new State(-298); + states[1345] = new State(-299); + states[1346] = new State(new int[]{66,1348,67,1349,141,1350,24,1351,25,1352,23,-291,40,-291,61,-291},new int[]{-19,1347}); + states[1347] = new State(-293); + states[1348] = new State(-285); + states[1349] = new State(-286); + states[1350] = new State(-287); + states[1351] = new State(-288); + states[1352] = new State(-289); + states[1353] = new State(-292); + states[1354] = new State(new int[]{117,1356,114,-205},new int[]{-144,1355}); + states[1355] = new State(-206); + states[1356] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,1357,-136,837,-140,24,-141,27}); + states[1357] = new State(new int[]{116,1358,115,1107,94,562}); + states[1358] = new State(-207); + states[1359] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611,66,1348,67,1349,141,1350,24,1351,25,1352,23,-290,40,-290,61,-290},new int[]{-277,1360,-266,1211,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582,-27,1212,-20,1213,-21,1346,-19,1353}); + states[1360] = new State(new int[]{10,1361}); + states[1361] = new State(-204); + states[1362] = new State(new int[]{11,685,137,-197,80,-197,81,-197,75,-197,73,-197},new int[]{-45,1363,-6,1205,-240,1046}); + states[1363] = new State(-98); + states[1364] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,8,1369,56,-84,26,-84,64,-84,47,-84,50,-84,59,-84,85,-84},new int[]{-302,1365,-299,1366,-300,1367,-147,838,-136,837,-140,24,-141,27}); + states[1365] = new State(-104); + states[1366] = new State(-100); + states[1367] = new State(new int[]{10,1368}); + states[1368] = new State(-393); + states[1369] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,1370,-140,24,-141,27}); + states[1370] = new State(new int[]{94,1371}); + states[1371] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-147,1372,-136,837,-140,24,-141,27}); + states[1372] = new State(new int[]{9,1373,94,562}); + states[1373] = new State(new int[]{104,1374}); + states[1374] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650},new int[]{-92,1375,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649}); + states[1375] = new State(new int[]{10,1376}); + states[1376] = new State(-101); + states[1377] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,8,1369},new int[]{-302,1378,-299,1366,-300,1367,-147,838,-136,837,-140,24,-141,27}); + states[1378] = new State(-102); + states[1379] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,8,1369},new int[]{-302,1380,-299,1366,-300,1367,-147,838,-136,837,-140,24,-141,27}); + states[1380] = new State(-103); + states[1381] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,1055,12,-266,94,-266},new int[]{-261,1382,-262,1383,-86,187,-96,279,-97,280,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[1382] = new State(-264); + states[1383] = new State(-265); + states[1384] = new State(-263); + states[1385] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-266,1386,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1386] = new State(-262); + states[1387] = new State(-230); + states[1388] = new State(-231); + states[1389] = new State(new int[]{121,408,115,-232,94,-232,114,-232,9,-232,10,-232,104,-232,86,-232,92,-232,95,-232,30,-232,98,-232,12,-232,93,-232,29,-232,81,-232,80,-232,2,-232,79,-232,78,-232,77,-232,76,-232,131,-232}); + states[1390] = new State(-641); + states[1391] = new State(-642); + states[1392] = new State(-643); + states[1393] = new State(-635); + states[1394] = new State(-775); + states[1395] = new State(-225); + states[1396] = new State(-221); + states[1397] = new State(-601); + states[1398] = new State(new int[]{8,1399}); + states[1399] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,42,484,39,514,8,549,18,259,19,264},new int[]{-322,1400,-321,1408,-136,1404,-140,24,-141,27,-90,1407,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640}); + states[1400] = new State(new int[]{9,1401,94,1402}); + states[1401] = new State(-610); + states[1402] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,42,484,39,514,8,549,18,259,19,264},new int[]{-321,1403,-136,1404,-140,24,-141,27,-90,1407,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640}); + states[1403] = new State(-614); + states[1404] = new State(new int[]{104,1405,17,-757,8,-757,7,-757,136,-757,4,-757,15,-757,132,-757,130,-757,112,-757,111,-757,125,-757,126,-757,127,-757,128,-757,124,-757,110,-757,109,-757,122,-757,123,-757,120,-757,6,-757,114,-757,119,-757,117,-757,115,-757,118,-757,116,-757,131,-757,9,-757,94,-757,113,-757,11,-757}); + states[1405] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264},new int[]{-90,1406,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640}); + states[1406] = new State(new int[]{114,303,119,304,117,305,115,306,118,307,116,308,131,309,9,-611,94,-611},new int[]{-186,144}); + states[1407] = new State(new int[]{114,303,119,304,117,305,115,306,118,307,116,308,131,309,9,-612,94,-612},new int[]{-186,144}); + states[1408] = new State(-613); + states[1409] = new State(new int[]{13,199,5,-680,12,-680}); + states[1410] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,1411,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[1411] = new State(new int[]{13,199,94,-175,9,-175,12,-175,5,-175}); + states[1412] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369,5,-681,12,-681},new int[]{-111,1413,-84,1409,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[1413] = new State(new int[]{5,1414,12,-687}); + states[1414] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-84,1415,-75,203,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396,-231,397}); + states[1415] = new State(new int[]{13,199,12,-689}); + states[1416] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-127,1417,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[1417] = new State(-164); + states[1418] = new State(-165); + states[1419] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,5,659,34,699,41,705,9,-169},new int[]{-70,1420,-66,1422,-83,535,-82,139,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-311,697,-312,698}); + states[1420] = new State(new int[]{9,1421}); + states[1421] = new State(-166); + states[1422] = new State(new int[]{94,475,9,-168}); + states[1423] = new State(-136); + states[1424] = new State(new int[]{137,23,80,25,81,26,75,28,73,239,138,161,140,162,139,164,148,166,150,167,149,168,39,256,18,259,19,264,11,380,53,384,135,385,8,387,129,390,110,368,109,369},new int[]{-75,1425,-12,227,-10,237,-13,213,-136,238,-140,24,-141,27,-154,254,-156,159,-155,163,-15,255,-247,258,-285,263,-229,379,-189,392,-163,394,-255,395,-259,396}); + states[1425] = new State(new int[]{110,1426,109,1427,122,1428,123,1429,13,-114,6,-114,94,-114,9,-114,12,-114,5,-114,86,-114,10,-114,92,-114,95,-114,30,-114,98,-114,93,-114,29,-114,81,-114,80,-114,2,-114,79,-114,78,-114,77,-114,76,-114},new int[]{-183,204}); + states[1426] = new State(-126); + states[1427] = new State(-127); + states[1428] = new State(-128); + states[1429] = new State(-129); + states[1430] = new State(-117); + states[1431] = new State(-118); + states[1432] = new State(-119); + states[1433] = new State(-120); + states[1434] = new State(-121); + states[1435] = new State(-122); + states[1436] = new State(-123); + states[1437] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164},new int[]{-86,1438,-96,279,-97,280,-170,401,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163}); + states[1438] = new State(new int[]{110,1426,109,1427,122,1428,123,1429,13,-234,115,-234,94,-234,114,-234,9,-234,10,-234,121,-234,104,-234,86,-234,92,-234,95,-234,30,-234,98,-234,12,-234,93,-234,29,-234,81,-234,80,-234,2,-234,79,-234,78,-234,77,-234,76,-234,131,-234},new int[]{-183,188}); + states[1439] = new State(-701); + states[1440] = new State(-619); + states[1441] = new State(-33); + states[1442] = new State(new int[]{56,1176,26,1197,64,1201,47,1362,50,1377,59,1379,11,685,85,-59,86,-59,97,-59,41,-197,34,-197,25,-197,23,-197,27,-197,28,-197},new int[]{-43,1443,-157,1444,-26,1445,-48,1446,-279,1447,-298,1448,-210,1449,-6,1450,-240,1046}); + states[1443] = new State(-61); + states[1444] = new State(-71); + states[1445] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,56,-72,26,-72,64,-72,47,-72,50,-72,59,-72,11,-72,41,-72,34,-72,25,-72,23,-72,27,-72,28,-72,85,-72,86,-72,97,-72},new int[]{-24,1183,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1446] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,56,-73,26,-73,64,-73,47,-73,50,-73,59,-73,11,-73,41,-73,34,-73,25,-73,23,-73,27,-73,28,-73,85,-73,86,-73,97,-73},new int[]{-24,1200,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1447] = new State(new int[]{11,685,56,-74,26,-74,64,-74,47,-74,50,-74,59,-74,41,-74,34,-74,25,-74,23,-74,27,-74,28,-74,85,-74,86,-74,97,-74,137,-197,80,-197,81,-197,75,-197,73,-197},new int[]{-45,1204,-6,1205,-240,1046}); + states[1448] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,8,1369,56,-75,26,-75,64,-75,47,-75,50,-75,59,-75,11,-75,41,-75,34,-75,25,-75,23,-75,27,-75,28,-75,85,-75,86,-75,97,-75},new int[]{-302,1365,-299,1366,-300,1367,-147,838,-136,837,-140,24,-141,27}); + states[1449] = new State(-76); + states[1450] = new State(new int[]{41,1463,34,1470,25,1293,23,1294,27,1498,28,1315,11,685},new int[]{-203,1451,-240,444,-204,1452,-211,1453,-218,1454,-215,1238,-219,1273,-3,1487,-207,1495,-217,1496}); + states[1451] = new State(-79); + states[1452] = new State(-77); + states[1453] = new State(-412); + states[1454] = new State(new int[]{142,1456,101,1299,56,-60,26,-60,64,-60,47,-60,50,-60,59,-60,11,-60,41,-60,34,-60,25,-60,23,-60,27,-60,28,-60,85,-60},new int[]{-168,1455,-167,1458,-38,1459,-39,1442,-57,1462}); + states[1455] = new State(-414); + states[1456] = new State(new int[]{10,1457}); + states[1457] = new State(-420); + states[1458] = new State(-427); + states[1459] = new State(new int[]{85,129},new int[]{-245,1460}); + states[1460] = new State(new int[]{10,1461}); + states[1461] = new State(-449); + states[1462] = new State(-428); + states[1463] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-160,1464,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1464] = new State(new int[]{8,585,10,-452,104,-452},new int[]{-117,1465}); + states[1465] = new State(new int[]{10,1271,104,-788},new int[]{-197,1242,-198,1466}); + states[1466] = new State(new int[]{104,1467}); + states[1467] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1468,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1468] = new State(new int[]{10,1469}); + states[1469] = new State(-419); + states[1470] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-159,1471,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1471] = new State(new int[]{8,585,5,-452,10,-452,104,-452},new int[]{-117,1472}); + states[1472] = new State(new int[]{5,1473,10,1271,104,-788},new int[]{-197,1277,-198,1481}); + states[1473] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1474,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1474] = new State(new int[]{10,1271,104,-788},new int[]{-197,1281,-198,1475}); + states[1475] = new State(new int[]{104,1476}); + states[1476] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,34,699,41,705},new int[]{-92,1477,-311,1479,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-312,698}); + states[1477] = new State(new int[]{10,1478}); + states[1478] = new State(-415); + states[1479] = new State(new int[]{10,1480}); + states[1480] = new State(-417); + states[1481] = new State(new int[]{104,1482}); + states[1482] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,516,18,259,19,264,37,650,34,699,41,705},new int[]{-92,1483,-311,1485,-91,141,-90,302,-95,482,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,477,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-312,698}); + states[1483] = new State(new int[]{10,1484}); + states[1484] = new State(-416); + states[1485] = new State(new int[]{10,1486}); + states[1486] = new State(-418); + states[1487] = new State(new int[]{27,1489,41,1463,34,1470},new int[]{-211,1488,-218,1454,-215,1238,-219,1273}); + states[1488] = new State(-413); + states[1489] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,8,-362,104,-362,10,-362},new int[]{-161,1490,-160,1099,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1490] = new State(new int[]{8,585,104,-452,10,-452},new int[]{-117,1491}); + states[1491] = new State(new int[]{104,1492,10,1088},new int[]{-197,452}); + states[1492] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1493,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1493] = new State(new int[]{10,1494}); + states[1494] = new State(-408); + states[1495] = new State(-78); + states[1496] = new State(-60,new int[]{-167,1497,-38,1459,-39,1442}); + states[1497] = new State(-406); + states[1498] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484,8,-362,104,-362,10,-362},new int[]{-161,1499,-160,1099,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1499] = new State(new int[]{8,585,104,-452,10,-452},new int[]{-117,1500}); + states[1500] = new State(new int[]{104,1501,10,1088},new int[]{-197,1311}); + states[1501] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,166,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,10,-476},new int[]{-250,1502,-4,135,-102,136,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872}); + states[1502] = new State(new int[]{10,1503}); + states[1503] = new State(-407); + states[1504] = new State(new int[]{3,1506,49,-13,85,-13,56,-13,26,-13,64,-13,47,-13,50,-13,59,-13,11,-13,41,-13,34,-13,25,-13,23,-13,27,-13,28,-13,40,-13,86,-13,97,-13},new int[]{-174,1505}); + states[1505] = new State(-15); + states[1506] = new State(new int[]{137,1507,138,1508}); + states[1507] = new State(-16); + states[1508] = new State(-17); + states[1509] = new State(-14); + states[1510] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-136,1511,-140,24,-141,27}); + states[1511] = new State(new int[]{10,1513,8,1514},new int[]{-177,1512}); + states[1512] = new State(-26); + states[1513] = new State(-27); + states[1514] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-179,1515,-135,1521,-136,1520,-140,24,-141,27}); + states[1515] = new State(new int[]{9,1516,94,1518}); + states[1516] = new State(new int[]{10,1517}); + states[1517] = new State(-28); + states[1518] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-135,1519,-136,1520,-140,24,-141,27}); + states[1519] = new State(-30); + states[1520] = new State(-31); + states[1521] = new State(-29); + states[1522] = new State(-3); + states[1523] = new State(new int[]{99,1578,100,1579,103,1580,11,685},new int[]{-297,1524,-240,444,-2,1573}); + states[1524] = new State(new int[]{40,1545,49,-36,56,-36,26,-36,64,-36,47,-36,50,-36,59,-36,11,-36,41,-36,34,-36,25,-36,23,-36,27,-36,28,-36,86,-36,97,-36,85,-36},new int[]{-151,1525,-152,1542,-293,1571}); + states[1525] = new State(new int[]{38,1539},new int[]{-150,1526}); + states[1526] = new State(new int[]{86,1529,97,1530,85,1536},new int[]{-143,1527}); + states[1527] = new State(new int[]{7,1528}); + states[1528] = new State(-42); + states[1529] = new State(-52); + states[1530] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,98,-476,10,-476},new int[]{-242,1531,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[1531] = new State(new int[]{86,1532,98,1533,10,132}); + states[1532] = new State(-53); + states[1533] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476},new int[]{-242,1534,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[1534] = new State(new int[]{86,1535,10,132}); + states[1535] = new State(-54); + states[1536] = new State(new int[]{135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,745,8,746,18,259,19,264,138,161,140,162,139,164,148,782,150,167,149,168,54,761,85,129,37,739,22,768,91,784,51,789,32,794,52,804,96,810,44,817,33,820,50,828,57,861,72,866,70,853,35,873,86,-476,10,-476},new int[]{-242,1537,-251,780,-250,134,-4,135,-102,136,-121,456,-101,709,-136,781,-140,24,-141,27,-181,483,-247,529,-285,530,-14,723,-154,158,-156,159,-155,163,-15,165,-16,531,-54,724,-105,542,-202,759,-122,760,-245,765,-142,766,-32,767,-237,783,-307,788,-113,793,-308,803,-149,808,-292,809,-238,816,-112,819,-303,827,-55,857,-164,858,-163,859,-158,860,-115,865,-116,870,-114,871,-337,872,-132,978}); + states[1537] = new State(new int[]{86,1538,10,132}); + states[1538] = new State(-55); + states[1539] = new State(-36,new int[]{-293,1540}); + states[1540] = new State(new int[]{49,14,56,-60,26,-60,64,-60,47,-60,50,-60,59,-60,11,-60,41,-60,34,-60,25,-60,23,-60,27,-60,28,-60,86,-60,97,-60,85,-60},new int[]{-38,1541,-39,1442}); + states[1541] = new State(-50); + states[1542] = new State(new int[]{86,1529,97,1530,85,1536},new int[]{-143,1543}); + states[1543] = new State(new int[]{7,1544}); + states[1544] = new State(-43); + states[1545] = new State(-36,new int[]{-293,1546}); + states[1546] = new State(new int[]{49,14,26,-57,64,-57,47,-57,50,-57,59,-57,11,-57,41,-57,34,-57,38,-57},new int[]{-37,1547,-35,1548}); + states[1547] = new State(-49); + states[1548] = new State(new int[]{26,1197,64,1201,47,1362,50,1377,59,1379,11,685,38,-56,41,-197,34,-197},new int[]{-44,1549,-26,1550,-48,1551,-279,1552,-298,1553,-222,1554,-6,1555,-240,1046,-221,1570}); + states[1549] = new State(-58); + states[1550] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,26,-65,64,-65,47,-65,50,-65,59,-65,11,-65,41,-65,34,-65,38,-65},new int[]{-24,1183,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1551] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,26,-66,64,-66,47,-66,50,-66,59,-66,11,-66,41,-66,34,-66,38,-66},new int[]{-24,1200,-25,1184,-130,1186,-136,1196,-140,24,-141,27}); + states[1552] = new State(new int[]{11,685,26,-67,64,-67,47,-67,50,-67,59,-67,41,-67,34,-67,38,-67,137,-197,80,-197,81,-197,75,-197,73,-197},new int[]{-45,1204,-6,1205,-240,1046}); + states[1553] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,8,1369,26,-68,64,-68,47,-68,50,-68,59,-68,11,-68,41,-68,34,-68,38,-68},new int[]{-302,1365,-299,1366,-300,1367,-147,838,-136,837,-140,24,-141,27}); + states[1554] = new State(-69); + states[1555] = new State(new int[]{41,1562,11,685,34,1565},new int[]{-215,1556,-240,444,-219,1559}); + states[1556] = new State(new int[]{142,1557,26,-85,64,-85,47,-85,50,-85,59,-85,11,-85,41,-85,34,-85,38,-85}); + states[1557] = new State(new int[]{10,1558}); + states[1558] = new State(-86); + states[1559] = new State(new int[]{142,1560,26,-87,64,-87,47,-87,50,-87,59,-87,11,-87,41,-87,34,-87,38,-87}); + states[1560] = new State(new int[]{10,1561}); + states[1561] = new State(-88); + states[1562] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-160,1563,-159,1100,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1563] = new State(new int[]{8,585,10,-452},new int[]{-117,1564}); + states[1564] = new State(new int[]{10,1088},new int[]{-197,1242}); + states[1565] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,42,484},new int[]{-159,1566,-131,1101,-126,1102,-123,1103,-136,1108,-140,24,-141,27,-181,1109,-323,1111,-138,1115}); + states[1566] = new State(new int[]{8,585,5,-452,10,-452},new int[]{-117,1567}); + states[1567] = new State(new int[]{5,1568,10,1088},new int[]{-197,1277}); + states[1568] = new State(new int[]{137,375,80,25,81,26,75,28,73,29,148,166,150,167,149,168,110,368,109,369,138,161,140,162,139,164,8,403,136,414,21,420,45,428,46,567,31,571,71,575,62,578,41,583,34,611},new int[]{-265,1569,-266,416,-262,373,-86,187,-96,279,-97,280,-170,281,-136,208,-140,24,-141,27,-15,398,-189,399,-154,402,-156,159,-155,163,-263,405,-291,406,-246,412,-239,413,-271,417,-272,418,-268,419,-260,426,-28,427,-253,566,-119,570,-120,574,-216,580,-214,581,-213,582}); + states[1569] = new State(new int[]{10,1088},new int[]{-197,1281}); + states[1570] = new State(-70); + states[1571] = new State(new int[]{49,14,56,-60,26,-60,64,-60,47,-60,50,-60,59,-60,11,-60,41,-60,34,-60,25,-60,23,-60,27,-60,28,-60,86,-60,97,-60,85,-60},new int[]{-38,1572,-39,1442}); + states[1572] = new State(-51); + states[1573] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-128,1574,-136,1577,-140,24,-141,27}); + states[1574] = new State(new int[]{10,1575}); + states[1575] = new State(new int[]{3,1506,40,-12,86,-12,97,-12,85,-12,49,-12,56,-12,26,-12,64,-12,47,-12,50,-12,59,-12,11,-12,41,-12,34,-12,25,-12,23,-12,27,-12,28,-12},new int[]{-175,1576,-176,1504,-174,1509}); + states[1576] = new State(-44); + states[1577] = new State(-48); + states[1578] = new State(-46); + states[1579] = new State(-47); + states[1580] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-146,1581,-127,125,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[1581] = new State(new int[]{10,1582,7,20}); + states[1582] = new State(new int[]{3,1506,40,-12,86,-12,97,-12,85,-12,49,-12,56,-12,26,-12,64,-12,47,-12,50,-12,59,-12,11,-12,41,-12,34,-12,25,-12,23,-12,27,-12,28,-12},new int[]{-175,1583,-176,1504,-174,1509}); + states[1583] = new State(-45); + states[1584] = new State(-4); + states[1585] = new State(new int[]{47,1587,53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,549,18,259,19,264,37,650,5,659},new int[]{-82,1586,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,468,-121,456,-101,470,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658}); + states[1586] = new State(-5); + states[1587] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-133,1588,-136,1589,-140,24,-141,27}); + states[1588] = new State(-6); + states[1589] = new State(new int[]{117,1105,2,-205},new int[]{-144,1355}); + states[1590] = new State(new int[]{137,23,80,25,81,26,75,28,73,29},new int[]{-309,1591,-310,1592,-136,1596,-140,24,-141,27}); + states[1591] = new State(-7); + states[1592] = new State(new int[]{7,1593,117,180,2,-753},new int[]{-289,1595}); + states[1593] = new State(new int[]{137,23,80,25,81,26,75,28,73,29,79,32,78,33,77,34,76,35,66,36,61,37,122,38,19,39,18,40,60,41,20,42,123,43,124,44,125,45,126,46,127,47,128,48,129,49,130,50,131,51,132,52,21,53,71,54,85,55,22,56,23,57,26,58,27,59,28,60,69,61,93,62,29,63,86,64,30,65,31,66,24,67,98,68,95,69,32,70,33,71,34,72,37,73,38,74,39,75,97,76,40,77,41,78,43,79,44,80,45,81,91,82,46,83,96,84,47,85,25,86,48,87,68,88,92,89,49,90,50,91,51,92,52,93,53,94,54,95,55,96,56,97,58,98,99,99,100,100,103,101,101,102,102,103,59,104,72,105,35,106,36,107,67,108,141,109,57,110,133,111,134,112,74,113,146,114,145,115,70,116,147,117,143,118,144,119,142,120,42,122},new int[]{-127,1594,-136,22,-140,24,-141,27,-283,30,-139,31,-284,121}); + states[1594] = new State(-752); + states[1595] = new State(-754); + states[1596] = new State(-751); + states[1597] = new State(new int[]{53,154,138,161,140,162,139,164,148,166,150,167,149,168,60,170,11,334,129,462,110,368,109,369,136,466,135,469,137,23,80,25,81,26,75,28,73,239,42,484,39,514,8,746,18,259,19,264,37,650,5,659,50,828},new int[]{-249,1598,-82,1599,-92,140,-91,141,-90,302,-95,310,-77,315,-76,343,-89,333,-14,155,-154,158,-156,159,-155,163,-15,165,-53,169,-189,464,-102,1600,-121,456,-101,709,-136,548,-140,24,-141,27,-181,483,-247,529,-285,530,-16,531,-54,536,-105,542,-163,543,-258,544,-78,545,-254,598,-256,599,-257,640,-230,641,-106,642,-232,649,-109,658,-4,1601,-303,1602}); + states[1598] = new State(-8); + states[1599] = new State(-9); + states[1600] = new State(new int[]{104,508,105,509,106,510,107,511,108,512,132,-738,130,-738,112,-738,111,-738,125,-738,126,-738,127,-738,128,-738,124,-738,110,-738,109,-738,122,-738,123,-738,120,-738,6,-738,5,-738,114,-738,119,-738,117,-738,115,-738,118,-738,116,-738,131,-738,16,-738,2,-738,13,-738,113,-738},new int[]{-184,137}); + states[1601] = new State(-10); + states[1602] = new State(-11); + + rules[1] = new Rule(-347, new int[]{-1,2}); + rules[2] = new Rule(-1, new int[]{-224}); + rules[3] = new Rule(-1, new int[]{-295}); + rules[4] = new Rule(-1, new int[]{-165}); + rules[5] = new Rule(-165, new int[]{82,-82}); + rules[6] = new Rule(-165, new int[]{82,47,-133}); + rules[7] = new Rule(-165, new int[]{84,-309}); + rules[8] = new Rule(-165, new int[]{83,-249}); + rules[9] = new Rule(-249, new int[]{-82}); + rules[10] = new Rule(-249, new int[]{-4}); + rules[11] = new Rule(-249, new int[]{-303}); + rules[12] = new Rule(-175, new int[]{}); + rules[13] = new Rule(-175, new int[]{-176}); + rules[14] = new Rule(-176, new int[]{-174}); + rules[15] = new Rule(-176, new int[]{-176,-174}); + rules[16] = new Rule(-174, new int[]{3,137}); + rules[17] = new Rule(-174, new int[]{3,138}); + rules[18] = new Rule(-224, new int[]{-225,-175,-293,-17,-178}); + rules[19] = new Rule(-178, new int[]{7}); + rules[20] = new Rule(-178, new int[]{10}); + rules[21] = new Rule(-178, new int[]{5}); + rules[22] = new Rule(-178, new int[]{94}); + rules[23] = new Rule(-178, new int[]{6}); + rules[24] = new Rule(-178, new int[]{}); + rules[25] = new Rule(-225, new int[]{}); + rules[26] = new Rule(-225, new int[]{58,-136,-177}); + rules[27] = new Rule(-177, new int[]{10}); + rules[28] = new Rule(-177, new int[]{8,-179,9,10}); + rules[29] = new Rule(-179, new int[]{-135}); + rules[30] = new Rule(-179, new int[]{-179,94,-135}); + rules[31] = new Rule(-135, new int[]{-136}); + rules[32] = new Rule(-17, new int[]{-34,-245}); + rules[33] = new Rule(-34, new int[]{-38}); + rules[34] = new Rule(-146, new int[]{-127}); + rules[35] = new Rule(-146, new int[]{-146,7,-127}); + rules[36] = new Rule(-293, new int[]{}); + rules[37] = new Rule(-293, new int[]{-293,49,-294,10}); + rules[38] = new Rule(-294, new int[]{-296}); + rules[39] = new Rule(-294, new int[]{-294,94,-296}); + rules[40] = new Rule(-296, new int[]{-146}); + rules[41] = new Rule(-296, new int[]{-146,131,138}); + rules[42] = new Rule(-295, new int[]{-6,-297,-151,-150,-143,7}); + rules[43] = new Rule(-295, new int[]{-6,-297,-152,-143,7}); + rules[44] = new Rule(-297, new int[]{-2,-128,10,-175}); + rules[45] = new Rule(-297, new int[]{103,-146,10,-175}); + rules[46] = new Rule(-2, new int[]{99}); + rules[47] = new Rule(-2, new int[]{100}); + rules[48] = new Rule(-128, new int[]{-136}); + rules[49] = new Rule(-151, new int[]{40,-293,-37}); + rules[50] = new Rule(-150, new int[]{38,-293,-38}); + rules[51] = new Rule(-152, new int[]{-293,-38}); + rules[52] = new Rule(-143, new int[]{86}); + rules[53] = new Rule(-143, new int[]{97,-242,86}); + rules[54] = new Rule(-143, new int[]{97,-242,98,-242,86}); + rules[55] = new Rule(-143, new int[]{85,-242,86}); + rules[56] = new Rule(-37, new int[]{-35}); + rules[57] = new Rule(-35, new int[]{}); + rules[58] = new Rule(-35, new int[]{-35,-44}); + rules[59] = new Rule(-38, new int[]{-39}); + rules[60] = new Rule(-39, new int[]{}); + rules[61] = new Rule(-39, new int[]{-39,-43}); + rules[62] = new Rule(-40, new int[]{-36}); + rules[63] = new Rule(-36, new int[]{}); + rules[64] = new Rule(-36, new int[]{-36,-42}); + rules[65] = new Rule(-44, new int[]{-26}); + rules[66] = new Rule(-44, new int[]{-48}); + rules[67] = new Rule(-44, new int[]{-279}); + rules[68] = new Rule(-44, new int[]{-298}); + rules[69] = new Rule(-44, new int[]{-222}); + rules[70] = new Rule(-44, new int[]{-221}); + rules[71] = new Rule(-43, new int[]{-157}); + rules[72] = new Rule(-43, new int[]{-26}); + rules[73] = new Rule(-43, new int[]{-48}); + rules[74] = new Rule(-43, new int[]{-279}); + rules[75] = new Rule(-43, new int[]{-298}); + rules[76] = new Rule(-43, new int[]{-210}); + rules[77] = new Rule(-203, new int[]{-204}); + rules[78] = new Rule(-203, new int[]{-207}); + rules[79] = new Rule(-210, new int[]{-6,-203}); + rules[80] = new Rule(-42, new int[]{-157}); + rules[81] = new Rule(-42, new int[]{-26}); + rules[82] = new Rule(-42, new int[]{-48}); + rules[83] = new Rule(-42, new int[]{-279}); + rules[84] = new Rule(-42, new int[]{-298}); + rules[85] = new Rule(-222, new int[]{-6,-215}); + rules[86] = new Rule(-222, new int[]{-6,-215,142,10}); + rules[87] = new Rule(-221, new int[]{-6,-219}); + rules[88] = new Rule(-221, new int[]{-6,-219,142,10}); + rules[89] = new Rule(-157, new int[]{56,-145,10}); + rules[90] = new Rule(-145, new int[]{-132}); + rules[91] = new Rule(-145, new int[]{-145,94,-132}); + rules[92] = new Rule(-132, new int[]{148}); + rules[93] = new Rule(-132, new int[]{-136}); + rules[94] = new Rule(-26, new int[]{26,-24}); + rules[95] = new Rule(-26, new int[]{-26,-24}); + rules[96] = new Rule(-48, new int[]{64,-24}); + rules[97] = new Rule(-48, new int[]{-48,-24}); + rules[98] = new Rule(-279, new int[]{47,-45}); + rules[99] = new Rule(-279, new int[]{-279,-45}); + rules[100] = new Rule(-302, new int[]{-299}); + rules[101] = new Rule(-302, new int[]{8,-136,94,-147,9,104,-92,10}); + rules[102] = new Rule(-298, new int[]{50,-302}); + rules[103] = new Rule(-298, new int[]{59,-302}); + rules[104] = new Rule(-298, new int[]{-298,-302}); + rules[105] = new Rule(-24, new int[]{-25,10}); + rules[106] = new Rule(-25, new int[]{-130,114,-99}); + rules[107] = new Rule(-25, new int[]{-130,5,-266,114,-79}); + rules[108] = new Rule(-99, new int[]{-84}); + rules[109] = new Rule(-99, new int[]{-88}); + rules[110] = new Rule(-130, new int[]{-136}); + rules[111] = new Rule(-73, new int[]{-92}); + rules[112] = new Rule(-73, new int[]{-73,94,-92}); + rules[113] = new Rule(-84, new int[]{-75}); + rules[114] = new Rule(-84, new int[]{-75,-182,-75}); + rules[115] = new Rule(-84, new int[]{-231}); + rules[116] = new Rule(-231, new int[]{-84,13,-84,5,-84}); + rules[117] = new Rule(-182, new int[]{114}); + rules[118] = new Rule(-182, new int[]{119}); + rules[119] = new Rule(-182, new int[]{117}); + rules[120] = new Rule(-182, new int[]{115}); + rules[121] = new Rule(-182, new int[]{118}); + rules[122] = new Rule(-182, new int[]{116}); + rules[123] = new Rule(-182, new int[]{131}); + rules[124] = new Rule(-75, new int[]{-12}); + rules[125] = new Rule(-75, new int[]{-75,-183,-12}); + rules[126] = new Rule(-183, new int[]{110}); + rules[127] = new Rule(-183, new int[]{109}); + rules[128] = new Rule(-183, new int[]{122}); + rules[129] = new Rule(-183, new int[]{123}); + rules[130] = new Rule(-255, new int[]{-12,-191,-274}); + rules[131] = new Rule(-259, new int[]{-10,113,-10}); + rules[132] = new Rule(-12, new int[]{-10}); + rules[133] = new Rule(-12, new int[]{-255}); + rules[134] = new Rule(-12, new int[]{-259}); + rules[135] = new Rule(-12, new int[]{-12,-185,-10}); + rules[136] = new Rule(-12, new int[]{-12,-185,-259}); + rules[137] = new Rule(-185, new int[]{112}); + rules[138] = new Rule(-185, new int[]{111}); + rules[139] = new Rule(-185, new int[]{125}); + rules[140] = new Rule(-185, new int[]{126}); + rules[141] = new Rule(-185, new int[]{127}); + rules[142] = new Rule(-185, new int[]{128}); + rules[143] = new Rule(-185, new int[]{124}); + rules[144] = new Rule(-10, new int[]{-13}); + rules[145] = new Rule(-10, new int[]{-229}); + rules[146] = new Rule(-10, new int[]{53}); + rules[147] = new Rule(-10, new int[]{135,-10}); + rules[148] = new Rule(-10, new int[]{8,-84,9}); + rules[149] = new Rule(-10, new int[]{129,-10}); + rules[150] = new Rule(-10, new int[]{-189,-10}); + rules[151] = new Rule(-10, new int[]{-163}); + rules[152] = new Rule(-229, new int[]{11,-69,12}); + rules[153] = new Rule(-189, new int[]{110}); + rules[154] = new Rule(-189, new int[]{109}); + rules[155] = new Rule(-13, new int[]{-136}); + rules[156] = new Rule(-13, new int[]{-154}); + rules[157] = new Rule(-13, new int[]{-15}); + rules[158] = new Rule(-13, new int[]{39,-136}); + rules[159] = new Rule(-13, new int[]{-247}); + rules[160] = new Rule(-13, new int[]{-285}); + rules[161] = new Rule(-13, new int[]{-13,-11}); + rules[162] = new Rule(-13, new int[]{-13,4,-289}); + rules[163] = new Rule(-13, new int[]{-13,11,-110,12}); + rules[164] = new Rule(-11, new int[]{7,-127}); + rules[165] = new Rule(-11, new int[]{136}); + rules[166] = new Rule(-11, new int[]{8,-70,9}); + rules[167] = new Rule(-11, new int[]{11,-69,12}); + rules[168] = new Rule(-70, new int[]{-66}); + rules[169] = new Rule(-70, new int[]{}); + rules[170] = new Rule(-69, new int[]{-67}); + rules[171] = new Rule(-69, new int[]{}); + rules[172] = new Rule(-67, new int[]{-87}); + rules[173] = new Rule(-67, new int[]{-67,94,-87}); + rules[174] = new Rule(-87, new int[]{-84}); + rules[175] = new Rule(-87, new int[]{-84,6,-84}); + rules[176] = new Rule(-15, new int[]{148}); + rules[177] = new Rule(-15, new int[]{150}); + rules[178] = new Rule(-15, new int[]{149}); + rules[179] = new Rule(-79, new int[]{-84}); + rules[180] = new Rule(-79, new int[]{-88}); + rules[181] = new Rule(-79, new int[]{-233}); + rules[182] = new Rule(-88, new int[]{8,-62,9}); + rules[183] = new Rule(-62, new int[]{}); + rules[184] = new Rule(-62, new int[]{-61}); + rules[185] = new Rule(-61, new int[]{-80}); + rules[186] = new Rule(-61, new int[]{-61,94,-80}); + rules[187] = new Rule(-233, new int[]{8,-235,9}); + rules[188] = new Rule(-235, new int[]{-234}); + rules[189] = new Rule(-235, new int[]{-234,10}); + rules[190] = new Rule(-234, new int[]{-236}); + rules[191] = new Rule(-234, new int[]{-234,10,-236}); + rules[192] = new Rule(-236, new int[]{-125,5,-79}); + rules[193] = new Rule(-125, new int[]{-136}); + rules[194] = new Rule(-45, new int[]{-6,-46}); + rules[195] = new Rule(-6, new int[]{-240}); + rules[196] = new Rule(-6, new int[]{-6,-240}); + rules[197] = new Rule(-6, new int[]{}); + rules[198] = new Rule(-240, new int[]{11,-241,12}); + rules[199] = new Rule(-241, new int[]{-8}); + rules[200] = new Rule(-241, new int[]{-241,94,-8}); + rules[201] = new Rule(-8, new int[]{-9}); + rules[202] = new Rule(-8, new int[]{-136,5,-9}); + rules[203] = new Rule(-46, new int[]{-133,114,-277,10}); + rules[204] = new Rule(-46, new int[]{-134,-277,10}); + rules[205] = new Rule(-133, new int[]{-136}); + rules[206] = new Rule(-133, new int[]{-136,-144}); + rules[207] = new Rule(-134, new int[]{-136,117,-147,116}); + rules[208] = new Rule(-277, new int[]{-266}); + rules[209] = new Rule(-277, new int[]{-27}); + rules[210] = new Rule(-263, new int[]{-262,13}); + rules[211] = new Rule(-263, new int[]{-291,13}); + rules[212] = new Rule(-266, new int[]{-262}); + rules[213] = new Rule(-266, new int[]{-263}); + rules[214] = new Rule(-266, new int[]{-246}); + rules[215] = new Rule(-266, new int[]{-239}); + rules[216] = new Rule(-266, new int[]{-271}); + rules[217] = new Rule(-266, new int[]{-216}); + rules[218] = new Rule(-266, new int[]{-291}); + rules[219] = new Rule(-291, new int[]{-170,-289}); + rules[220] = new Rule(-289, new int[]{117,-287,115}); + rules[221] = new Rule(-290, new int[]{119}); + rules[222] = new Rule(-290, new int[]{117,-288,115}); + rules[223] = new Rule(-287, new int[]{-269}); + rules[224] = new Rule(-287, new int[]{-287,94,-269}); + rules[225] = new Rule(-288, new int[]{-270}); + rules[226] = new Rule(-288, new int[]{-288,94,-270}); + rules[227] = new Rule(-270, new int[]{}); + rules[228] = new Rule(-269, new int[]{-262}); + rules[229] = new Rule(-269, new int[]{-262,13}); + rules[230] = new Rule(-269, new int[]{-271}); + rules[231] = new Rule(-269, new int[]{-216}); + rules[232] = new Rule(-269, new int[]{-291}); + rules[233] = new Rule(-262, new int[]{-86}); + rules[234] = new Rule(-262, new int[]{-86,6,-86}); + rules[235] = new Rule(-262, new int[]{8,-74,9}); + rules[236] = new Rule(-86, new int[]{-96}); + rules[237] = new Rule(-86, new int[]{-86,-183,-96}); + rules[238] = new Rule(-96, new int[]{-97}); + rules[239] = new Rule(-96, new int[]{-96,-185,-97}); + rules[240] = new Rule(-97, new int[]{-170}); + rules[241] = new Rule(-97, new int[]{-15}); + rules[242] = new Rule(-97, new int[]{-189,-97}); + rules[243] = new Rule(-97, new int[]{-154}); + rules[244] = new Rule(-97, new int[]{-97,8,-69,9}); + rules[245] = new Rule(-170, new int[]{-136}); + rules[246] = new Rule(-170, new int[]{-170,7,-127}); + rules[247] = new Rule(-74, new int[]{-72,94,-72}); + rules[248] = new Rule(-74, new int[]{-74,94,-72}); + rules[249] = new Rule(-72, new int[]{-266}); + rules[250] = new Rule(-72, new int[]{-266,114,-82}); + rules[251] = new Rule(-239, new int[]{136,-265}); + rules[252] = new Rule(-271, new int[]{-272}); + rules[253] = new Rule(-271, new int[]{62,-272}); + rules[254] = new Rule(-272, new int[]{-268}); + rules[255] = new Rule(-272, new int[]{-28}); + rules[256] = new Rule(-272, new int[]{-253}); + rules[257] = new Rule(-272, new int[]{-119}); + rules[258] = new Rule(-272, new int[]{-120}); + rules[259] = new Rule(-120, new int[]{71,55,-266}); + rules[260] = new Rule(-268, new int[]{21,11,-153,12,55,-266}); + rules[261] = new Rule(-268, new int[]{-260}); + rules[262] = new Rule(-260, new int[]{21,55,-266}); + rules[263] = new Rule(-153, new int[]{-261}); + rules[264] = new Rule(-153, new int[]{-153,94,-261}); + rules[265] = new Rule(-261, new int[]{-262}); + rules[266] = new Rule(-261, new int[]{}); + rules[267] = new Rule(-253, new int[]{46,55,-266}); + rules[268] = new Rule(-119, new int[]{31,55,-266}); + rules[269] = new Rule(-119, new int[]{31}); + rules[270] = new Rule(-246, new int[]{137,11,-84,12}); + rules[271] = new Rule(-216, new int[]{-214}); + rules[272] = new Rule(-214, new int[]{-213}); + rules[273] = new Rule(-213, new int[]{41,-117}); + rules[274] = new Rule(-213, new int[]{34,-117,5,-265}); + rules[275] = new Rule(-213, new int[]{-170,121,-269}); + rules[276] = new Rule(-213, new int[]{-291,121,-269}); + rules[277] = new Rule(-213, new int[]{8,9,121,-269}); + rules[278] = new Rule(-213, new int[]{8,-74,9,121,-269}); + rules[279] = new Rule(-213, new int[]{-170,121,8,9}); + rules[280] = new Rule(-213, new int[]{-291,121,8,9}); + rules[281] = new Rule(-213, new int[]{8,9,121,8,9}); + rules[282] = new Rule(-213, new int[]{8,-74,9,121,8,9}); + rules[283] = new Rule(-27, new int[]{-20,-281,-173,-306,-23}); + rules[284] = new Rule(-28, new int[]{45,-173,-306,-22,86}); + rules[285] = new Rule(-19, new int[]{66}); + rules[286] = new Rule(-19, new int[]{67}); + rules[287] = new Rule(-19, new int[]{141}); + rules[288] = new Rule(-19, new int[]{24}); + rules[289] = new Rule(-19, new int[]{25}); + rules[290] = new Rule(-20, new int[]{}); + rules[291] = new Rule(-20, new int[]{-21}); + rules[292] = new Rule(-21, new int[]{-19}); + rules[293] = new Rule(-21, new int[]{-21,-19}); + rules[294] = new Rule(-281, new int[]{23}); + rules[295] = new Rule(-281, new int[]{40}); + rules[296] = new Rule(-281, new int[]{61}); + rules[297] = new Rule(-281, new int[]{61,23}); + rules[298] = new Rule(-281, new int[]{61,45}); + rules[299] = new Rule(-281, new int[]{61,40}); + rules[300] = new Rule(-23, new int[]{}); + rules[301] = new Rule(-23, new int[]{-22,86}); + rules[302] = new Rule(-173, new int[]{}); + rules[303] = new Rule(-173, new int[]{8,-172,9}); + rules[304] = new Rule(-172, new int[]{-171}); + rules[305] = new Rule(-172, new int[]{-172,94,-171}); + rules[306] = new Rule(-171, new int[]{-170}); + rules[307] = new Rule(-171, new int[]{-291}); + rules[308] = new Rule(-144, new int[]{117,-147,115}); + rules[309] = new Rule(-306, new int[]{}); + rules[310] = new Rule(-306, new int[]{-305}); + rules[311] = new Rule(-305, new int[]{-304}); + rules[312] = new Rule(-305, new int[]{-305,-304}); + rules[313] = new Rule(-304, new int[]{20,-147,5,-278,10}); + rules[314] = new Rule(-278, new int[]{-275}); + rules[315] = new Rule(-278, new int[]{-278,94,-275}); + rules[316] = new Rule(-275, new int[]{-266}); + rules[317] = new Rule(-275, new int[]{23}); + rules[318] = new Rule(-275, new int[]{45}); + rules[319] = new Rule(-275, new int[]{27}); + rules[320] = new Rule(-22, new int[]{-29}); + rules[321] = new Rule(-22, new int[]{-22,-7,-29}); + rules[322] = new Rule(-7, new int[]{79}); + rules[323] = new Rule(-7, new int[]{78}); + rules[324] = new Rule(-7, new int[]{77}); + rules[325] = new Rule(-7, new int[]{76}); + rules[326] = new Rule(-29, new int[]{}); + rules[327] = new Rule(-29, new int[]{-31,-180}); + rules[328] = new Rule(-29, new int[]{-30}); + rules[329] = new Rule(-29, new int[]{-31,10,-30}); + rules[330] = new Rule(-147, new int[]{-136}); + rules[331] = new Rule(-147, new int[]{-147,94,-136}); + rules[332] = new Rule(-180, new int[]{}); + rules[333] = new Rule(-180, new int[]{10}); + rules[334] = new Rule(-31, new int[]{-41}); + rules[335] = new Rule(-31, new int[]{-31,10,-41}); + rules[336] = new Rule(-41, new int[]{-6,-47}); + rules[337] = new Rule(-30, new int[]{-50}); + rules[338] = new Rule(-30, new int[]{-30,-50}); + rules[339] = new Rule(-50, new int[]{-49}); + rules[340] = new Rule(-50, new int[]{-51}); + rules[341] = new Rule(-47, new int[]{26,-25}); + rules[342] = new Rule(-47, new int[]{-301}); + rules[343] = new Rule(-47, new int[]{-3,-301}); + rules[344] = new Rule(-3, new int[]{25}); + rules[345] = new Rule(-3, new int[]{23}); + rules[346] = new Rule(-301, new int[]{-300}); + rules[347] = new Rule(-301, new int[]{59,-147,5,-266}); + rules[348] = new Rule(-49, new int[]{-6,-212}); + rules[349] = new Rule(-49, new int[]{-6,-209}); + rules[350] = new Rule(-209, new int[]{-205}); + rules[351] = new Rule(-209, new int[]{-208}); + rules[352] = new Rule(-212, new int[]{-3,-220}); + rules[353] = new Rule(-212, new int[]{-220}); + rules[354] = new Rule(-212, new int[]{-217}); + rules[355] = new Rule(-220, new int[]{-218}); + rules[356] = new Rule(-218, new int[]{-215}); + rules[357] = new Rule(-218, new int[]{-219}); + rules[358] = new Rule(-217, new int[]{27,-161,-117,-197}); + rules[359] = new Rule(-217, new int[]{-3,27,-161,-117,-197}); + rules[360] = new Rule(-217, new int[]{28,-161,-117,-197}); + rules[361] = new Rule(-161, new int[]{-160}); + rules[362] = new Rule(-161, new int[]{}); + rules[363] = new Rule(-162, new int[]{-136}); + rules[364] = new Rule(-162, new int[]{-139}); + rules[365] = new Rule(-162, new int[]{-162,7,-136}); + rules[366] = new Rule(-162, new int[]{-162,7,-139}); + rules[367] = new Rule(-51, new int[]{-6,-248}); + rules[368] = new Rule(-248, new int[]{43,-162,-223,-192,10,-195}); + rules[369] = new Rule(-248, new int[]{43,-162,-223,-192,10,-200,10,-195}); + rules[370] = new Rule(-248, new int[]{-3,43,-162,-223,-192,10,-195}); + rules[371] = new Rule(-248, new int[]{-3,43,-162,-223,-192,10,-200,10,-195}); + rules[372] = new Rule(-248, new int[]{24,43,-162,-223,-201,10}); + rules[373] = new Rule(-248, new int[]{-3,24,43,-162,-223,-201,10}); + rules[374] = new Rule(-201, new int[]{104,-82}); + rules[375] = new Rule(-201, new int[]{}); + rules[376] = new Rule(-195, new int[]{}); + rules[377] = new Rule(-195, new int[]{60,10}); + rules[378] = new Rule(-223, new int[]{-228,5,-265}); + rules[379] = new Rule(-228, new int[]{}); + rules[380] = new Rule(-228, new int[]{11,-227,12}); + rules[381] = new Rule(-227, new int[]{-226}); + rules[382] = new Rule(-227, new int[]{-227,10,-226}); + rules[383] = new Rule(-226, new int[]{-147,5,-265}); + rules[384] = new Rule(-103, new int[]{-83}); + rules[385] = new Rule(-103, new int[]{}); + rules[386] = new Rule(-192, new int[]{}); + rules[387] = new Rule(-192, new int[]{80,-103,-193}); + rules[388] = new Rule(-192, new int[]{81,-250,-194}); + rules[389] = new Rule(-193, new int[]{}); + rules[390] = new Rule(-193, new int[]{81,-250}); + rules[391] = new Rule(-194, new int[]{}); + rules[392] = new Rule(-194, new int[]{80,-103}); + rules[393] = new Rule(-299, new int[]{-300,10}); + rules[394] = new Rule(-327, new int[]{104}); + rules[395] = new Rule(-327, new int[]{114}); + rules[396] = new Rule(-300, new int[]{-147,5,-266}); + rules[397] = new Rule(-300, new int[]{-147,104,-82}); + rules[398] = new Rule(-300, new int[]{-147,5,-266,-327,-81}); + rules[399] = new Rule(-81, new int[]{-80}); + rules[400] = new Rule(-81, new int[]{-312}); + rules[401] = new Rule(-81, new int[]{-136,121,-317}); + rules[402] = new Rule(-81, new int[]{8,9,-313,121,-317}); + rules[403] = new Rule(-81, new int[]{8,-62,9,121,-317}); + rules[404] = new Rule(-80, new int[]{-79}); + rules[405] = new Rule(-80, new int[]{-53}); + rules[406] = new Rule(-207, new int[]{-217,-167}); + rules[407] = new Rule(-207, new int[]{27,-161,-117,104,-250,10}); + rules[408] = new Rule(-207, new int[]{-3,27,-161,-117,104,-250,10}); + rules[409] = new Rule(-208, new int[]{-217,-166}); + rules[410] = new Rule(-208, new int[]{27,-161,-117,104,-250,10}); + rules[411] = new Rule(-208, new int[]{-3,27,-161,-117,104,-250,10}); + rules[412] = new Rule(-204, new int[]{-211}); + rules[413] = new Rule(-204, new int[]{-3,-211}); + rules[414] = new Rule(-211, new int[]{-218,-168}); + rules[415] = new Rule(-211, new int[]{34,-159,-117,5,-265,-198,104,-92,10}); + rules[416] = new Rule(-211, new int[]{34,-159,-117,-198,104,-92,10}); + rules[417] = new Rule(-211, new int[]{34,-159,-117,5,-265,-198,104,-311,10}); + rules[418] = new Rule(-211, new int[]{34,-159,-117,-198,104,-311,10}); + rules[419] = new Rule(-211, new int[]{41,-160,-117,-198,104,-250,10}); + rules[420] = new Rule(-211, new int[]{-218,142,10}); + rules[421] = new Rule(-205, new int[]{-206}); + rules[422] = new Rule(-205, new int[]{-3,-206}); + rules[423] = new Rule(-206, new int[]{-218,-166}); + rules[424] = new Rule(-206, new int[]{34,-159,-117,5,-265,-198,104,-93,10}); + rules[425] = new Rule(-206, new int[]{34,-159,-117,-198,104,-93,10}); + rules[426] = new Rule(-206, new int[]{41,-160,-117,-198,104,-250,10}); + rules[427] = new Rule(-168, new int[]{-167}); + rules[428] = new Rule(-168, new int[]{-57}); + rules[429] = new Rule(-160, new int[]{-159}); + rules[430] = new Rule(-159, new int[]{-131}); + rules[431] = new Rule(-159, new int[]{-323,7,-131}); + rules[432] = new Rule(-138, new int[]{-126}); + rules[433] = new Rule(-323, new int[]{-138}); + rules[434] = new Rule(-323, new int[]{-323,7,-138}); + rules[435] = new Rule(-131, new int[]{-126}); + rules[436] = new Rule(-131, new int[]{-181}); + rules[437] = new Rule(-131, new int[]{-181,-144}); + rules[438] = new Rule(-126, new int[]{-123}); + rules[439] = new Rule(-126, new int[]{-123,-144}); + rules[440] = new Rule(-123, new int[]{-136}); + rules[441] = new Rule(-215, new int[]{41,-160,-117,-197,-306}); + rules[442] = new Rule(-219, new int[]{34,-159,-117,-197,-306}); + rules[443] = new Rule(-219, new int[]{34,-159,-117,5,-265,-197,-306}); + rules[444] = new Rule(-57, new int[]{101,-98,75,-98,10}); + rules[445] = new Rule(-57, new int[]{101,-98,10}); + rules[446] = new Rule(-57, new int[]{101,10}); + rules[447] = new Rule(-98, new int[]{-136}); + rules[448] = new Rule(-98, new int[]{-154}); + rules[449] = new Rule(-167, new int[]{-38,-245,10}); + rules[450] = new Rule(-166, new int[]{-40,-245,10}); + rules[451] = new Rule(-166, new int[]{-57}); + rules[452] = new Rule(-117, new int[]{}); + rules[453] = new Rule(-117, new int[]{8,9}); + rules[454] = new Rule(-117, new int[]{8,-118,9}); + rules[455] = new Rule(-118, new int[]{-52}); + rules[456] = new Rule(-118, new int[]{-118,10,-52}); + rules[457] = new Rule(-52, new int[]{-6,-286}); + rules[458] = new Rule(-286, new int[]{-148,5,-265}); + rules[459] = new Rule(-286, new int[]{50,-148,5,-265}); + rules[460] = new Rule(-286, new int[]{26,-148,5,-265}); + rules[461] = new Rule(-286, new int[]{102,-148,5,-265}); + rules[462] = new Rule(-286, new int[]{-148,5,-265,104,-82}); + rules[463] = new Rule(-286, new int[]{50,-148,5,-265,104,-82}); + rules[464] = new Rule(-286, new int[]{26,-148,5,-265,104,-82}); + rules[465] = new Rule(-148, new int[]{-124}); + rules[466] = new Rule(-148, new int[]{-148,94,-124}); + rules[467] = new Rule(-124, new int[]{-136}); + rules[468] = new Rule(-265, new int[]{-266}); + rules[469] = new Rule(-267, new int[]{-262}); + rules[470] = new Rule(-267, new int[]{-246}); + rules[471] = new Rule(-267, new int[]{-239}); + rules[472] = new Rule(-267, new int[]{-271}); + rules[473] = new Rule(-267, new int[]{-291}); + rules[474] = new Rule(-251, new int[]{-250}); + rules[475] = new Rule(-251, new int[]{-132,5,-251}); + rules[476] = new Rule(-250, new int[]{}); + rules[477] = new Rule(-250, new int[]{-4}); + rules[478] = new Rule(-250, new int[]{-202}); + rules[479] = new Rule(-250, new int[]{-122}); + rules[480] = new Rule(-250, new int[]{-245}); + rules[481] = new Rule(-250, new int[]{-142}); + rules[482] = new Rule(-250, new int[]{-32}); + rules[483] = new Rule(-250, new int[]{-237}); + rules[484] = new Rule(-250, new int[]{-307}); + rules[485] = new Rule(-250, new int[]{-113}); + rules[486] = new Rule(-250, new int[]{-308}); + rules[487] = new Rule(-250, new int[]{-149}); + rules[488] = new Rule(-250, new int[]{-292}); + rules[489] = new Rule(-250, new int[]{-238}); + rules[490] = new Rule(-250, new int[]{-112}); + rules[491] = new Rule(-250, new int[]{-303}); + rules[492] = new Rule(-250, new int[]{-55}); + rules[493] = new Rule(-250, new int[]{-158}); + rules[494] = new Rule(-250, new int[]{-115}); + rules[495] = new Rule(-250, new int[]{-116}); + rules[496] = new Rule(-250, new int[]{-114}); + rules[497] = new Rule(-250, new int[]{-337}); + rules[498] = new Rule(-114, new int[]{70,-92,93,-250}); + rules[499] = new Rule(-115, new int[]{72,-92}); + rules[500] = new Rule(-116, new int[]{72,71,-92}); + rules[501] = new Rule(-303, new int[]{50,-300}); + rules[502] = new Rule(-303, new int[]{8,50,-136,94,-326,9,104,-82}); + rules[503] = new Rule(-303, new int[]{50,8,-136,94,-147,9,104,-82}); + rules[504] = new Rule(-4, new int[]{-102,-184,-83}); + rules[505] = new Rule(-4, new int[]{8,-101,94,-325,9,-184,-82}); + rules[506] = new Rule(-4, new int[]{-101,17,-109,12,-184,-82}); + rules[507] = new Rule(-325, new int[]{-101}); + rules[508] = new Rule(-325, new int[]{-325,94,-101}); + rules[509] = new Rule(-326, new int[]{50,-136}); + rules[510] = new Rule(-326, new int[]{-326,94,50,-136}); + rules[511] = new Rule(-202, new int[]{-102}); + rules[512] = new Rule(-122, new int[]{54,-132}); + rules[513] = new Rule(-245, new int[]{85,-242,86}); + rules[514] = new Rule(-242, new int[]{-251}); + rules[515] = new Rule(-242, new int[]{-242,10,-251}); + rules[516] = new Rule(-142, new int[]{37,-92,48,-250}); + rules[517] = new Rule(-142, new int[]{37,-92,48,-250,29,-250}); + rules[518] = new Rule(-337, new int[]{35,-92,52,-339,-243,86}); + rules[519] = new Rule(-337, new int[]{35,-92,52,-339,10,-243,86}); + rules[520] = new Rule(-339, new int[]{-338}); + rules[521] = new Rule(-339, new int[]{-339,10,-338}); + rules[522] = new Rule(-338, new int[]{-331,36,-92,5,-250}); + rules[523] = new Rule(-338, new int[]{-330,5,-250}); + rules[524] = new Rule(-338, new int[]{-332,5,-250}); + rules[525] = new Rule(-338, new int[]{-333,36,-92,5,-250}); + rules[526] = new Rule(-338, new int[]{-333,5,-250}); + rules[527] = new Rule(-32, new int[]{22,-92,55,-33,-243,86}); + rules[528] = new Rule(-32, new int[]{22,-92,55,-33,10,-243,86}); + rules[529] = new Rule(-32, new int[]{22,-92,55,-243,86}); + rules[530] = new Rule(-33, new int[]{-252}); + rules[531] = new Rule(-33, new int[]{-33,10,-252}); + rules[532] = new Rule(-252, new int[]{-68,5,-250}); + rules[533] = new Rule(-68, new int[]{-100}); + rules[534] = new Rule(-68, new int[]{-68,94,-100}); + rules[535] = new Rule(-100, new int[]{-87}); + rules[536] = new Rule(-243, new int[]{}); + rules[537] = new Rule(-243, new int[]{29,-242}); + rules[538] = new Rule(-237, new int[]{91,-242,92,-82}); + rules[539] = new Rule(-307, new int[]{51,-92,-282,-250}); + rules[540] = new Rule(-282, new int[]{93}); + rules[541] = new Rule(-282, new int[]{}); + rules[542] = new Rule(-158, new int[]{57,-92,93,-250}); + rules[543] = new Rule(-112, new int[]{33,-136,-264,131,-92,93,-250}); + rules[544] = new Rule(-112, new int[]{33,50,-136,5,-266,131,-92,93,-250}); + rules[545] = new Rule(-112, new int[]{33,50,-136,131,-92,93,-250}); + rules[546] = new Rule(-264, new int[]{5,-266}); + rules[547] = new Rule(-264, new int[]{}); + rules[548] = new Rule(-113, new int[]{32,-18,-136,-276,-92,-108,-92,-282,-250}); + rules[549] = new Rule(-18, new int[]{50}); + rules[550] = new Rule(-18, new int[]{}); + rules[551] = new Rule(-276, new int[]{104}); + rules[552] = new Rule(-276, new int[]{5,-170,104}); + rules[553] = new Rule(-108, new int[]{68}); + rules[554] = new Rule(-108, new int[]{69}); + rules[555] = new Rule(-308, new int[]{52,-66,93,-250}); + rules[556] = new Rule(-149, new int[]{39}); + rules[557] = new Rule(-292, new int[]{96,-242,-280}); + rules[558] = new Rule(-280, new int[]{95,-242,86}); + rules[559] = new Rule(-280, new int[]{30,-56,86}); + rules[560] = new Rule(-56, new int[]{-59,-244}); + rules[561] = new Rule(-56, new int[]{-59,10,-244}); + rules[562] = new Rule(-56, new int[]{-242}); + rules[563] = new Rule(-59, new int[]{-58}); + rules[564] = new Rule(-59, new int[]{-59,10,-58}); + rules[565] = new Rule(-244, new int[]{}); + rules[566] = new Rule(-244, new int[]{29,-242}); + rules[567] = new Rule(-58, new int[]{74,-60,93,-250}); + rules[568] = new Rule(-60, new int[]{-169}); + rules[569] = new Rule(-60, new int[]{-129,5,-169}); + rules[570] = new Rule(-169, new int[]{-170}); + rules[571] = new Rule(-129, new int[]{-136}); + rules[572] = new Rule(-238, new int[]{44}); + rules[573] = new Rule(-238, new int[]{44,-82}); + rules[574] = new Rule(-66, new int[]{-83}); + rules[575] = new Rule(-66, new int[]{-66,94,-83}); + rules[576] = new Rule(-55, new int[]{-164}); + rules[577] = new Rule(-164, new int[]{-163}); + rules[578] = new Rule(-83, new int[]{-82}); + rules[579] = new Rule(-83, new int[]{-311}); + rules[580] = new Rule(-82, new int[]{-92}); + rules[581] = new Rule(-82, new int[]{-109}); + rules[582] = new Rule(-92, new int[]{-91}); + rules[583] = new Rule(-92, new int[]{-230}); + rules[584] = new Rule(-92, new int[]{-232}); + rules[585] = new Rule(-106, new int[]{-91}); + rules[586] = new Rule(-106, new int[]{-230}); + rules[587] = new Rule(-107, new int[]{-91}); + rules[588] = new Rule(-107, new int[]{-232}); + rules[589] = new Rule(-93, new int[]{-92}); + rules[590] = new Rule(-93, new int[]{-311}); + rules[591] = new Rule(-94, new int[]{-91}); + rules[592] = new Rule(-94, new int[]{-230}); + rules[593] = new Rule(-94, new int[]{-311}); + rules[594] = new Rule(-91, new int[]{-90}); + rules[595] = new Rule(-91, new int[]{-91,16,-90}); + rules[596] = new Rule(-247, new int[]{18,8,-274,9}); + rules[597] = new Rule(-285, new int[]{19,8,-274,9}); + rules[598] = new Rule(-285, new int[]{19,8,-273,9}); + rules[599] = new Rule(-230, new int[]{-106,13,-106,5,-106}); + rules[600] = new Rule(-232, new int[]{37,-107,48,-107,29,-107}); + rules[601] = new Rule(-273, new int[]{-170,-290}); + rules[602] = new Rule(-273, new int[]{-170,4,-290}); + rules[603] = new Rule(-274, new int[]{-170}); + rules[604] = new Rule(-274, new int[]{-170,-289}); + rules[605] = new Rule(-274, new int[]{-170,4,-289}); + rules[606] = new Rule(-5, new int[]{8,-62,9}); + rules[607] = new Rule(-5, new int[]{}); + rules[608] = new Rule(-163, new int[]{73,-274,-65}); + rules[609] = new Rule(-163, new int[]{73,-274,11,-63,12,-5}); + rules[610] = new Rule(-163, new int[]{73,23,8,-322,9}); + rules[611] = new Rule(-321, new int[]{-136,104,-90}); + rules[612] = new Rule(-321, new int[]{-90}); + rules[613] = new Rule(-322, new int[]{-321}); + rules[614] = new Rule(-322, new int[]{-322,94,-321}); + rules[615] = new Rule(-65, new int[]{}); + rules[616] = new Rule(-65, new int[]{8,-63,9}); + rules[617] = new Rule(-90, new int[]{-95}); + rules[618] = new Rule(-90, new int[]{-90,-186,-95}); + rules[619] = new Rule(-90, new int[]{-90,-186,-232}); + rules[620] = new Rule(-90, new int[]{-256,8,-342,9}); + rules[621] = new Rule(-90, new int[]{-76,132,-332}); + rules[622] = new Rule(-90, new int[]{-76,132,-333}); + rules[623] = new Rule(-329, new int[]{-274,8,-342,9}); + rules[624] = new Rule(-331, new int[]{-274,8,-343,9}); + rules[625] = new Rule(-330, new int[]{-274,8,-343,9}); + rules[626] = new Rule(-330, new int[]{-346}); + rules[627] = new Rule(-346, new int[]{-328}); + rules[628] = new Rule(-346, new int[]{-346,94,-328}); + rules[629] = new Rule(-328, new int[]{-14}); + rules[630] = new Rule(-328, new int[]{-274}); + rules[631] = new Rule(-328, new int[]{53}); + rules[632] = new Rule(-328, new int[]{-247}); + rules[633] = new Rule(-328, new int[]{-285}); + rules[634] = new Rule(-332, new int[]{11,-344,12}); + rules[635] = new Rule(-344, new int[]{-334}); + rules[636] = new Rule(-344, new int[]{-344,94,-334}); + rules[637] = new Rule(-334, new int[]{-14}); + rules[638] = new Rule(-334, new int[]{-336}); + rules[639] = new Rule(-334, new int[]{14}); + rules[640] = new Rule(-334, new int[]{-331}); + rules[641] = new Rule(-334, new int[]{-332}); + rules[642] = new Rule(-334, new int[]{-333}); + rules[643] = new Rule(-334, new int[]{6}); + rules[644] = new Rule(-336, new int[]{50,-136}); + rules[645] = new Rule(-333, new int[]{8,-345,9}); + rules[646] = new Rule(-335, new int[]{14}); + rules[647] = new Rule(-335, new int[]{-14}); + rules[648] = new Rule(-335, new int[]{-189,-14}); + rules[649] = new Rule(-335, new int[]{50,-136}); + rules[650] = new Rule(-335, new int[]{-331}); + rules[651] = new Rule(-335, new int[]{-332}); + rules[652] = new Rule(-335, new int[]{-333}); + rules[653] = new Rule(-345, new int[]{-335}); + rules[654] = new Rule(-345, new int[]{-345,94,-335}); + rules[655] = new Rule(-343, new int[]{-341}); + rules[656] = new Rule(-343, new int[]{-343,10,-341}); + rules[657] = new Rule(-343, new int[]{-343,94,-341}); + rules[658] = new Rule(-342, new int[]{-340}); + rules[659] = new Rule(-342, new int[]{-342,10,-340}); + rules[660] = new Rule(-342, new int[]{-342,94,-340}); + rules[661] = new Rule(-340, new int[]{14}); + rules[662] = new Rule(-340, new int[]{-14}); + rules[663] = new Rule(-340, new int[]{50,-136,5,-266}); + rules[664] = new Rule(-340, new int[]{50,-136}); + rules[665] = new Rule(-340, new int[]{-329}); + rules[666] = new Rule(-340, new int[]{-332}); + rules[667] = new Rule(-340, new int[]{-333}); + rules[668] = new Rule(-341, new int[]{14}); + rules[669] = new Rule(-341, new int[]{-14}); + rules[670] = new Rule(-341, new int[]{-189,-14}); + rules[671] = new Rule(-341, new int[]{-136,5,-266}); + rules[672] = new Rule(-341, new int[]{-136}); + rules[673] = new Rule(-341, new int[]{50,-136,5,-266}); + rules[674] = new Rule(-341, new int[]{50,-136}); + rules[675] = new Rule(-341, new int[]{-331}); + rules[676] = new Rule(-341, new int[]{-332}); + rules[677] = new Rule(-341, new int[]{-333}); + rules[678] = new Rule(-104, new int[]{-95}); + rules[679] = new Rule(-104, new int[]{}); + rules[680] = new Rule(-111, new int[]{-84}); + rules[681] = new Rule(-111, new int[]{}); + rules[682] = new Rule(-109, new int[]{-95,5,-104}); + rules[683] = new Rule(-109, new int[]{5,-104}); + rules[684] = new Rule(-109, new int[]{-95,5,-104,5,-95}); + rules[685] = new Rule(-109, new int[]{5,-104,5,-95}); + rules[686] = new Rule(-110, new int[]{-84,5,-111}); + rules[687] = new Rule(-110, new int[]{5,-111}); + rules[688] = new Rule(-110, new int[]{-84,5,-111,5,-84}); + rules[689] = new Rule(-110, new int[]{5,-111,5,-84}); + rules[690] = new Rule(-186, new int[]{114}); + rules[691] = new Rule(-186, new int[]{119}); + rules[692] = new Rule(-186, new int[]{117}); + rules[693] = new Rule(-186, new int[]{115}); + rules[694] = new Rule(-186, new int[]{118}); + rules[695] = new Rule(-186, new int[]{116}); + rules[696] = new Rule(-186, new int[]{131}); + rules[697] = new Rule(-95, new int[]{-77}); + rules[698] = new Rule(-95, new int[]{-95,6,-77}); + rules[699] = new Rule(-77, new int[]{-76}); + rules[700] = new Rule(-77, new int[]{-77,-187,-76}); + rules[701] = new Rule(-77, new int[]{-77,-187,-232}); + rules[702] = new Rule(-187, new int[]{110}); + rules[703] = new Rule(-187, new int[]{109}); + rules[704] = new Rule(-187, new int[]{122}); + rules[705] = new Rule(-187, new int[]{123}); + rules[706] = new Rule(-187, new int[]{120}); + rules[707] = new Rule(-191, new int[]{130}); + rules[708] = new Rule(-191, new int[]{132}); + rules[709] = new Rule(-254, new int[]{-256}); + rules[710] = new Rule(-254, new int[]{-257}); + rules[711] = new Rule(-257, new int[]{-76,130,-274}); + rules[712] = new Rule(-256, new int[]{-76,132,-274}); + rules[713] = new Rule(-78, new int[]{-89}); + rules[714] = new Rule(-258, new int[]{-78,113,-89}); + rules[715] = new Rule(-76, new int[]{-89}); + rules[716] = new Rule(-76, new int[]{-163}); + rules[717] = new Rule(-76, new int[]{-258}); + rules[718] = new Rule(-76, new int[]{-76,-188,-89}); + rules[719] = new Rule(-76, new int[]{-76,-188,-258}); + rules[720] = new Rule(-76, new int[]{-76,-188,-232}); + rules[721] = new Rule(-76, new int[]{-254}); + rules[722] = new Rule(-188, new int[]{112}); + rules[723] = new Rule(-188, new int[]{111}); + rules[724] = new Rule(-188, new int[]{125}); + rules[725] = new Rule(-188, new int[]{126}); + rules[726] = new Rule(-188, new int[]{127}); + rules[727] = new Rule(-188, new int[]{128}); + rules[728] = new Rule(-188, new int[]{124}); + rules[729] = new Rule(-53, new int[]{60,8,-274,9}); + rules[730] = new Rule(-54, new int[]{8,-92,94,-73,-313,-320,9}); + rules[731] = new Rule(-89, new int[]{53}); + rules[732] = new Rule(-89, new int[]{-14}); + rules[733] = new Rule(-89, new int[]{-53}); + rules[734] = new Rule(-89, new int[]{11,-64,12}); + rules[735] = new Rule(-89, new int[]{129,-89}); + rules[736] = new Rule(-89, new int[]{-189,-89}); + rules[737] = new Rule(-89, new int[]{136,-89}); + rules[738] = new Rule(-89, new int[]{-102}); + rules[739] = new Rule(-89, new int[]{-54}); + rules[740] = new Rule(-14, new int[]{-154}); + rules[741] = new Rule(-14, new int[]{-15}); + rules[742] = new Rule(-105, new int[]{-101,15,-101}); + rules[743] = new Rule(-105, new int[]{-101,15,-105}); + rules[744] = new Rule(-102, new int[]{-121,-101}); + rules[745] = new Rule(-102, new int[]{-101}); + rules[746] = new Rule(-102, new int[]{-105}); + rules[747] = new Rule(-121, new int[]{135}); + rules[748] = new Rule(-121, new int[]{-121,135}); + rules[749] = new Rule(-9, new int[]{-170,-65}); + rules[750] = new Rule(-9, new int[]{-291,-65}); + rules[751] = new Rule(-310, new int[]{-136}); + rules[752] = new Rule(-310, new int[]{-310,7,-127}); + rules[753] = new Rule(-309, new int[]{-310}); + rules[754] = new Rule(-309, new int[]{-310,-289}); + rules[755] = new Rule(-16, new int[]{-101}); + rules[756] = new Rule(-16, new int[]{-14}); + rules[757] = new Rule(-101, new int[]{-136}); + rules[758] = new Rule(-101, new int[]{-181}); + rules[759] = new Rule(-101, new int[]{39,-136}); + rules[760] = new Rule(-101, new int[]{8,-82,9}); + rules[761] = new Rule(-101, new int[]{-247}); + rules[762] = new Rule(-101, new int[]{-285}); + rules[763] = new Rule(-101, new int[]{-14,7,-127}); + rules[764] = new Rule(-101, new int[]{-16,11,-66,12}); + rules[765] = new Rule(-101, new int[]{-101,17,-109,12}); + rules[766] = new Rule(-101, new int[]{-101,8,-63,9}); + rules[767] = new Rule(-101, new int[]{-101,7,-137}); + rules[768] = new Rule(-101, new int[]{-54,7,-137}); + rules[769] = new Rule(-101, new int[]{-101,136}); + rules[770] = new Rule(-101, new int[]{-101,4,-289}); + rules[771] = new Rule(-63, new int[]{-66}); + rules[772] = new Rule(-63, new int[]{}); + rules[773] = new Rule(-64, new int[]{-71}); + rules[774] = new Rule(-64, new int[]{}); + rules[775] = new Rule(-71, new int[]{-85}); + rules[776] = new Rule(-71, new int[]{-71,94,-85}); + rules[777] = new Rule(-85, new int[]{-82}); + rules[778] = new Rule(-85, new int[]{-82,6,-82}); + rules[779] = new Rule(-155, new int[]{138}); + rules[780] = new Rule(-155, new int[]{140}); + rules[781] = new Rule(-154, new int[]{-156}); + rules[782] = new Rule(-154, new int[]{139}); + rules[783] = new Rule(-156, new int[]{-155}); + rules[784] = new Rule(-156, new int[]{-156,-155}); + rules[785] = new Rule(-181, new int[]{42,-190}); + rules[786] = new Rule(-197, new int[]{10}); + rules[787] = new Rule(-197, new int[]{10,-196,10}); + rules[788] = new Rule(-198, new int[]{}); + rules[789] = new Rule(-198, new int[]{10,-196}); + rules[790] = new Rule(-196, new int[]{-199}); + rules[791] = new Rule(-196, new int[]{-196,10,-199}); + rules[792] = new Rule(-136, new int[]{137}); + rules[793] = new Rule(-136, new int[]{-140}); + rules[794] = new Rule(-136, new int[]{-141}); + rules[795] = new Rule(-127, new int[]{-136}); + rules[796] = new Rule(-127, new int[]{-283}); + rules[797] = new Rule(-127, new int[]{-284}); + rules[798] = new Rule(-137, new int[]{-136}); + rules[799] = new Rule(-137, new int[]{-283}); + rules[800] = new Rule(-137, new int[]{-181}); + rules[801] = new Rule(-199, new int[]{141}); + rules[802] = new Rule(-199, new int[]{143}); + rules[803] = new Rule(-199, new int[]{144}); + rules[804] = new Rule(-199, new int[]{145}); + rules[805] = new Rule(-199, new int[]{147}); + rules[806] = new Rule(-199, new int[]{146}); + rules[807] = new Rule(-200, new int[]{146}); + rules[808] = new Rule(-200, new int[]{145}); + rules[809] = new Rule(-200, new int[]{141}); + rules[810] = new Rule(-200, new int[]{144}); + rules[811] = new Rule(-140, new int[]{80}); + rules[812] = new Rule(-140, new int[]{81}); + rules[813] = new Rule(-141, new int[]{75}); + rules[814] = new Rule(-141, new int[]{73}); + rules[815] = new Rule(-139, new int[]{79}); + rules[816] = new Rule(-139, new int[]{78}); + rules[817] = new Rule(-139, new int[]{77}); + rules[818] = new Rule(-139, new int[]{76}); + rules[819] = new Rule(-283, new int[]{-139}); + rules[820] = new Rule(-283, new int[]{66}); + rules[821] = new Rule(-283, new int[]{61}); + rules[822] = new Rule(-283, new int[]{122}); + rules[823] = new Rule(-283, new int[]{19}); + rules[824] = new Rule(-283, new int[]{18}); + rules[825] = new Rule(-283, new int[]{60}); + rules[826] = new Rule(-283, new int[]{20}); + rules[827] = new Rule(-283, new int[]{123}); + rules[828] = new Rule(-283, new int[]{124}); + rules[829] = new Rule(-283, new int[]{125}); + rules[830] = new Rule(-283, new int[]{126}); + rules[831] = new Rule(-283, new int[]{127}); + rules[832] = new Rule(-283, new int[]{128}); + rules[833] = new Rule(-283, new int[]{129}); + rules[834] = new Rule(-283, new int[]{130}); + rules[835] = new Rule(-283, new int[]{131}); + rules[836] = new Rule(-283, new int[]{132}); + rules[837] = new Rule(-283, new int[]{21}); + rules[838] = new Rule(-283, new int[]{71}); + rules[839] = new Rule(-283, new int[]{85}); + rules[840] = new Rule(-283, new int[]{22}); + rules[841] = new Rule(-283, new int[]{23}); + rules[842] = new Rule(-283, new int[]{26}); + rules[843] = new Rule(-283, new int[]{27}); + rules[844] = new Rule(-283, new int[]{28}); + rules[845] = new Rule(-283, new int[]{69}); + rules[846] = new Rule(-283, new int[]{93}); + rules[847] = new Rule(-283, new int[]{29}); + rules[848] = new Rule(-283, new int[]{86}); + rules[849] = new Rule(-283, new int[]{30}); + rules[850] = new Rule(-283, new int[]{31}); + rules[851] = new Rule(-283, new int[]{24}); + rules[852] = new Rule(-283, new int[]{98}); + rules[853] = new Rule(-283, new int[]{95}); + rules[854] = new Rule(-283, new int[]{32}); + rules[855] = new Rule(-283, new int[]{33}); + rules[856] = new Rule(-283, new int[]{34}); + rules[857] = new Rule(-283, new int[]{37}); + rules[858] = new Rule(-283, new int[]{38}); + rules[859] = new Rule(-283, new int[]{39}); + rules[860] = new Rule(-283, new int[]{97}); + rules[861] = new Rule(-283, new int[]{40}); + rules[862] = new Rule(-283, new int[]{41}); + rules[863] = new Rule(-283, new int[]{43}); + rules[864] = new Rule(-283, new int[]{44}); + rules[865] = new Rule(-283, new int[]{45}); + rules[866] = new Rule(-283, new int[]{91}); + rules[867] = new Rule(-283, new int[]{46}); + rules[868] = new Rule(-283, new int[]{96}); + rules[869] = new Rule(-283, new int[]{47}); + rules[870] = new Rule(-283, new int[]{25}); + rules[871] = new Rule(-283, new int[]{48}); + rules[872] = new Rule(-283, new int[]{68}); + rules[873] = new Rule(-283, new int[]{92}); + rules[874] = new Rule(-283, new int[]{49}); + rules[875] = new Rule(-283, new int[]{50}); + rules[876] = new Rule(-283, new int[]{51}); + rules[877] = new Rule(-283, new int[]{52}); + rules[878] = new Rule(-283, new int[]{53}); + rules[879] = new Rule(-283, new int[]{54}); + rules[880] = new Rule(-283, new int[]{55}); + rules[881] = new Rule(-283, new int[]{56}); + rules[882] = new Rule(-283, new int[]{58}); + rules[883] = new Rule(-283, new int[]{99}); + rules[884] = new Rule(-283, new int[]{100}); + rules[885] = new Rule(-283, new int[]{103}); + rules[886] = new Rule(-283, new int[]{101}); + rules[887] = new Rule(-283, new int[]{102}); + rules[888] = new Rule(-283, new int[]{59}); + rules[889] = new Rule(-283, new int[]{72}); + rules[890] = new Rule(-283, new int[]{35}); + rules[891] = new Rule(-283, new int[]{36}); + rules[892] = new Rule(-283, new int[]{67}); + rules[893] = new Rule(-283, new int[]{141}); + rules[894] = new Rule(-283, new int[]{57}); + rules[895] = new Rule(-283, new int[]{133}); + rules[896] = new Rule(-283, new int[]{134}); + rules[897] = new Rule(-283, new int[]{74}); + rules[898] = new Rule(-283, new int[]{146}); + rules[899] = new Rule(-283, new int[]{145}); + rules[900] = new Rule(-283, new int[]{70}); + rules[901] = new Rule(-283, new int[]{147}); + rules[902] = new Rule(-283, new int[]{143}); + rules[903] = new Rule(-283, new int[]{144}); + rules[904] = new Rule(-283, new int[]{142}); + rules[905] = new Rule(-284, new int[]{42}); + rules[906] = new Rule(-190, new int[]{109}); + rules[907] = new Rule(-190, new int[]{110}); + rules[908] = new Rule(-190, new int[]{111}); + rules[909] = new Rule(-190, new int[]{112}); + rules[910] = new Rule(-190, new int[]{114}); + rules[911] = new Rule(-190, new int[]{115}); + rules[912] = new Rule(-190, new int[]{116}); + rules[913] = new Rule(-190, new int[]{117}); + rules[914] = new Rule(-190, new int[]{118}); + rules[915] = new Rule(-190, new int[]{119}); + rules[916] = new Rule(-190, new int[]{122}); + rules[917] = new Rule(-190, new int[]{123}); + rules[918] = new Rule(-190, new int[]{124}); + rules[919] = new Rule(-190, new int[]{125}); + rules[920] = new Rule(-190, new int[]{126}); + rules[921] = new Rule(-190, new int[]{127}); + rules[922] = new Rule(-190, new int[]{128}); + rules[923] = new Rule(-190, new int[]{129}); + rules[924] = new Rule(-190, new int[]{131}); + rules[925] = new Rule(-190, new int[]{133}); + rules[926] = new Rule(-190, new int[]{134}); + rules[927] = new Rule(-190, new int[]{-184}); + rules[928] = new Rule(-190, new int[]{113}); + rules[929] = new Rule(-184, new int[]{104}); + rules[930] = new Rule(-184, new int[]{105}); + rules[931] = new Rule(-184, new int[]{106}); + rules[932] = new Rule(-184, new int[]{107}); + rules[933] = new Rule(-184, new int[]{108}); + rules[934] = new Rule(-311, new int[]{-136,121,-317}); + rules[935] = new Rule(-311, new int[]{8,9,-314,121,-317}); + rules[936] = new Rule(-311, new int[]{8,-136,5,-265,9,-314,121,-317}); + rules[937] = new Rule(-311, new int[]{8,-136,10,-315,9,-314,121,-317}); + rules[938] = new Rule(-311, new int[]{8,-136,5,-265,10,-315,9,-314,121,-317}); + rules[939] = new Rule(-311, new int[]{8,-92,94,-73,-313,-320,9,-324}); + rules[940] = new Rule(-311, new int[]{-312}); + rules[941] = new Rule(-320, new int[]{}); + rules[942] = new Rule(-320, new int[]{10,-315}); + rules[943] = new Rule(-324, new int[]{-314,121,-317}); + rules[944] = new Rule(-312, new int[]{34,-313,121,-317}); + rules[945] = new Rule(-312, new int[]{34,8,9,-313,121,-317}); + rules[946] = new Rule(-312, new int[]{34,8,-315,9,-313,121,-317}); + rules[947] = new Rule(-312, new int[]{41,121,-318}); + rules[948] = new Rule(-312, new int[]{41,8,9,121,-318}); + rules[949] = new Rule(-312, new int[]{41,8,-315,9,121,-318}); + rules[950] = new Rule(-315, new int[]{-316}); + rules[951] = new Rule(-315, new int[]{-315,10,-316}); + rules[952] = new Rule(-316, new int[]{-147,-313}); + rules[953] = new Rule(-313, new int[]{}); + rules[954] = new Rule(-313, new int[]{5,-265}); + rules[955] = new Rule(-314, new int[]{}); + rules[956] = new Rule(-314, new int[]{5,-267}); + rules[957] = new Rule(-319, new int[]{-245}); + rules[958] = new Rule(-319, new int[]{-142}); + rules[959] = new Rule(-319, new int[]{-307}); + rules[960] = new Rule(-319, new int[]{-237}); + rules[961] = new Rule(-319, new int[]{-113}); + rules[962] = new Rule(-319, new int[]{-112}); + rules[963] = new Rule(-319, new int[]{-114}); + rules[964] = new Rule(-319, new int[]{-32}); + rules[965] = new Rule(-319, new int[]{-292}); + rules[966] = new Rule(-319, new int[]{-158}); + rules[967] = new Rule(-319, new int[]{-238}); + rules[968] = new Rule(-319, new int[]{-115}); + rules[969] = new Rule(-317, new int[]{-94}); + rules[970] = new Rule(-317, new int[]{-319}); + rules[971] = new Rule(-318, new int[]{-202}); + rules[972] = new Rule(-318, new int[]{-4}); + rules[973] = new Rule(-318, new int[]{-319}); + } + + protected override void Initialize() { + this.InitSpecialTokens((int)Tokens.error, (int)Tokens.EOF); + this.InitStates(states); + this.InitRules(rules); + this.InitNonTerminals(nonTerms); + } + + protected override void DoAction(int action) + { + CurrentSemanticValue = new Union(); + switch (action) + { + case 2: // parse_goal -> program_file +{ root = ValueStack[ValueStack.Depth-1].stn; } + break; + case 3: // parse_goal -> unit_file +{ root = ValueStack[ValueStack.Depth-1].stn; } + break; + case 4: // parse_goal -> parts +{ root = ValueStack[ValueStack.Depth-1].stn; } + break; + case 5: // parts -> tkParseModeExpression, expr +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } + break; + case 6: // parts -> tkParseModeExpression, tkType, type_decl_identifier +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].id; } + break; + case 7: // parts -> tkParseModeType, variable_as_type +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } + break; + case 8: // parts -> tkParseModeStatement, stmt_or_expression +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 9: // stmt_or_expression -> expr +{ CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan);} + break; + case 10: // stmt_or_expression -> assignment +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 11: // stmt_or_expression -> var_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 12: // optional_head_compiler_directives -> /* empty */ +{ CurrentSemanticValue.ob = null; } + break; + case 13: // optional_head_compiler_directives -> head_compiler_directives +{ CurrentSemanticValue.ob = null; } + break; + case 14: // head_compiler_directives -> one_compiler_directive +{ CurrentSemanticValue.ob = null; } + break; + case 15: // head_compiler_directives -> head_compiler_directives, one_compiler_directive +{ CurrentSemanticValue.ob = null; } + break; + case 16: // one_compiler_directive -> tkDirectiveName, tkIdentifier +{ + parsertools.AddErrorFromResource("UNSUPPORTED_OLD_DIRECTIVES",CurrentLocationSpan); + CurrentSemanticValue.ob = null; + } + break; + case 17: // one_compiler_directive -> tkDirectiveName, tkStringLiteral +{ + parsertools.AddErrorFromResource("UNSUPPORTED_OLD_DIRECTIVES",CurrentLocationSpan); + CurrentSemanticValue.ob = null; + } + break; + case 18: // program_file -> program_header, optional_head_compiler_directives, uses_clause, + // program_block, optional_tk_point +{ + CurrentSemanticValue.stn = NewProgramModule(ValueStack[ValueStack.Depth-5].stn as program_name, ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].stn as uses_list, ValueStack[ValueStack.Depth-2].stn, ValueStack[ValueStack.Depth-1].ob, CurrentLocationSpan); + } + break; + case 19: // optional_tk_point -> tkPoint +{ CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ti; } + break; + case 20: // optional_tk_point -> tkSemiColon +{ CurrentSemanticValue.ob = null; } + break; + case 21: // optional_tk_point -> tkColon +{ CurrentSemanticValue.ob = null; } + break; + case 22: // optional_tk_point -> tkComma +{ CurrentSemanticValue.ob = null; } + break; + case 23: // optional_tk_point -> tkDotDot +{ CurrentSemanticValue.ob = null; } + break; + case 25: // program_header -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 26: // program_header -> tkProgram, identifier, program_heading_2 +{ CurrentSemanticValue.stn = new program_name(ValueStack[ValueStack.Depth-2].id,CurrentLocationSpan); } + break; + case 27: // program_heading_2 -> tkSemiColon +{ CurrentSemanticValue.ob = null; } + break; + case 28: // program_heading_2 -> tkRoundOpen, program_param_list, tkRoundClose, tkSemiColon +{ CurrentSemanticValue.ob = null; } + break; + case 29: // program_param_list -> program_param +{ CurrentSemanticValue.ob = null; } + break; + case 30: // program_param_list -> program_param_list, tkComma, program_param +{ CurrentSemanticValue.ob = null; } + break; + case 31: // program_param -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 32: // program_block -> program_decl_sect_list, compound_stmt +{ + CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-2].stn as declarations, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 33: // program_decl_sect_list -> decl_sect_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 34: // ident_or_keyword_pointseparator_list -> identifier_or_keyword +{ + CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 35: // ident_or_keyword_pointseparator_list -> ident_or_keyword_pointseparator_list, + // tkPoint, identifier_or_keyword +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 36: // uses_clause -> /* empty */ +{ + CurrentSemanticValue.stn = null; + } + break; + case 37: // uses_clause -> uses_clause, tkUses, used_units_list, tkSemiColon +{ + if (parsertools.build_tree_for_formatter) + { + if (ValueStack[ValueStack.Depth-4].stn == null) + { + CurrentSemanticValue.stn = new uses_closure(ValueStack[ValueStack.Depth-2].stn as uses_list,CurrentLocationSpan); + } + else { + (ValueStack[ValueStack.Depth-4].stn as uses_closure).AddUsesList(ValueStack[ValueStack.Depth-2].stn as uses_list,CurrentLocationSpan); + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-4].stn; + } + } + else + { + if (ValueStack[ValueStack.Depth-4].stn == null) + { + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + else + { + (ValueStack[ValueStack.Depth-4].stn as uses_list).AddUsesList(ValueStack[ValueStack.Depth-2].stn as uses_list,CurrentLocationSpan); + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-4].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + } + } + break; + case 38: // used_units_list -> used_unit_name +{ + CurrentSemanticValue.stn = new uses_list(ValueStack[ValueStack.Depth-1].stn as unit_or_namespace,CurrentLocationSpan); + } + break; + case 39: // used_units_list -> used_units_list, tkComma, used_unit_name +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as uses_list).Add(ValueStack[ValueStack.Depth-1].stn as unit_or_namespace, CurrentLocationSpan); + } + break; + case 40: // used_unit_name -> ident_or_keyword_pointseparator_list +{ + CurrentSemanticValue.stn = new unit_or_namespace(ValueStack[ValueStack.Depth-1].stn as ident_list,CurrentLocationSpan); + } + break; + case 41: // used_unit_name -> ident_or_keyword_pointseparator_list, tkIn, tkStringLiteral +{ + if (ValueStack[ValueStack.Depth-1].stn is char_const _cc) + ValueStack[ValueStack.Depth-1].stn = new string_const(_cc.cconst.ToString()); + CurrentSemanticValue.stn = new uses_unit_in(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].stn as string_const, CurrentLocationSpan); + } + break; + case 42: // unit_file -> attribute_declarations, unit_header, interface_part, + // implementation_part, initialization_part, tkPoint +{ + CurrentSemanticValue.stn = new unit_module(ValueStack[ValueStack.Depth-5].stn as unit_name, ValueStack[ValueStack.Depth-4].stn as interface_node, ValueStack[ValueStack.Depth-3].stn as implementation_node, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).initialization_sect, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).finalization_sect, ValueStack[ValueStack.Depth-6].stn as attribute_list, CurrentLocationSpan); + } + break; + case 43: // unit_file -> attribute_declarations, unit_header, abc_interface_part, + // initialization_part, tkPoint +{ + CurrentSemanticValue.stn = new unit_module(ValueStack[ValueStack.Depth-4].stn as unit_name, ValueStack[ValueStack.Depth-3].stn as interface_node, null, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).initialization_sect, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).finalization_sect, ValueStack[ValueStack.Depth-5].stn as attribute_list, CurrentLocationSpan); + } + break; + case 44: // unit_header -> unit_key_word, unit_name, tkSemiColon, + // optional_head_compiler_directives +{ + CurrentSemanticValue.stn = NewUnitHeading(new ident(ValueStack[ValueStack.Depth-4].ti.text, LocationStack[LocationStack.Depth-4]), ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); + } + break; + case 45: // unit_header -> tkNamespace, ident_or_keyword_pointseparator_list, tkSemiColon, + // optional_head_compiler_directives +{ + CurrentSemanticValue.stn = NewNamespaceHeading(new ident(ValueStack[ValueStack.Depth-4].ti.text, LocationStack[LocationStack.Depth-4]), ValueStack[ValueStack.Depth-3].stn as ident_list, CurrentLocationSpan); + } + break; + case 46: // unit_key_word -> tkUnit +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 47: // unit_key_word -> tkLibrary +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 48: // unit_name -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 49: // interface_part -> tkInterface, uses_clause, interface_decl_sect_list +{ + CurrentSemanticValue.stn = new interface_node(ValueStack[ValueStack.Depth-1].stn as declarations, ValueStack[ValueStack.Depth-2].stn as uses_list, null, LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); + } + break; + case 50: // implementation_part -> tkImplementation, uses_clause, decl_sect_list +{ + CurrentSemanticValue.stn = new implementation_node(ValueStack[ValueStack.Depth-2].stn as uses_list, ValueStack[ValueStack.Depth-1].stn as declarations, null, LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); + } + break; + case 51: // abc_interface_part -> uses_clause, decl_sect_list +{ + CurrentSemanticValue.stn = new interface_node(ValueStack[ValueStack.Depth-1].stn as declarations, ValueStack[ValueStack.Depth-2].stn as uses_list, null, null); + } + break; + case 52: // initialization_part -> tkEnd +{ + CurrentSemanticValue.stn = new initfinal_part(); + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 53: // initialization_part -> tkInitialization, stmt_list, tkEnd +{ + CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, null, null, CurrentLocationSpan); + } + break; + case 54: // initialization_part -> tkInitialization, stmt_list, tkFinalization, stmt_list, + // tkEnd +{ + CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-5].ti, ValueStack[ValueStack.Depth-4].stn as statement_list, ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, CurrentLocationSpan); + } + break; + case 55: // initialization_part -> tkBegin, stmt_list, tkEnd +{ + CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, null, null, CurrentLocationSpan); + } + break; + case 56: // interface_decl_sect_list -> int_decl_sect_list1 +{ + if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + else + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 57: // int_decl_sect_list1 -> /* empty */ +{ + CurrentSemanticValue.stn = new declarations(); + if (GlobalDecls==null) + GlobalDecls = CurrentSemanticValue.stn as declarations; + } + break; + case 58: // int_decl_sect_list1 -> int_decl_sect_list1, int_decl_sect +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 59: // decl_sect_list -> decl_sect_list1 +{ + if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + else + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 60: // decl_sect_list1 -> /* empty */ +{ + CurrentSemanticValue.stn = new declarations(); + if (GlobalDecls==null) + GlobalDecls = CurrentSemanticValue.stn as declarations; + } + break; + case 61: // decl_sect_list1 -> decl_sect_list1, decl_sect +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 62: // inclass_decl_sect_list -> inclass_decl_sect_list1 +{ + if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + else + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 63: // inclass_decl_sect_list1 -> /* empty */ +{ + CurrentSemanticValue.stn = new declarations(); + } + break; + case 64: // inclass_decl_sect_list1 -> inclass_decl_sect_list1, abc_decl_sect +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 65: // int_decl_sect -> const_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 66: // int_decl_sect -> res_str_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 67: // int_decl_sect -> type_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 68: // int_decl_sect -> var_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 69: // int_decl_sect -> int_proc_header +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } + break; + case 70: // int_decl_sect -> int_func_header +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } + break; + case 71: // decl_sect -> label_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 72: // decl_sect -> const_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 73: // decl_sect -> res_str_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 74: // decl_sect -> type_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 75: // decl_sect -> var_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 76: // decl_sect -> proc_func_constr_destr_decl_with_attr +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 77: // proc_func_constr_destr_decl -> proc_func_decl +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 78: // proc_func_constr_destr_decl -> constr_destr_decl +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 79: // proc_func_constr_destr_decl_with_attr -> attribute_declarations, + // proc_func_constr_destr_decl +{ + (ValueStack[ValueStack.Depth-1].stn as procedure_definition).AssignAttrList(ValueStack[ValueStack.Depth-2].stn as attribute_list); + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 80: // abc_decl_sect -> label_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 81: // abc_decl_sect -> const_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 82: // abc_decl_sect -> res_str_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 83: // abc_decl_sect -> type_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 84: // abc_decl_sect -> var_decl_sect +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 85: // int_proc_header -> attribute_declarations, proc_header +{ + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + (CurrentSemanticValue.td as procedure_header).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + } + break; + case 86: // int_proc_header -> attribute_declarations, proc_header, tkForward, tkSemiColon +{ + CurrentSemanticValue.td = NewProcedureHeader(ValueStack[ValueStack.Depth-4].stn as attribute_list, ValueStack[ValueStack.Depth-3].td as procedure_header, ValueStack[ValueStack.Depth-2].id as procedure_attribute, CurrentLocationSpan); + } + break; + case 87: // int_func_header -> attribute_declarations, func_header +{ + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + (CurrentSemanticValue.td as procedure_header).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + } + break; + case 88: // int_func_header -> attribute_declarations, func_header, tkForward, tkSemiColon +{ + CurrentSemanticValue.td = NewProcedureHeader(ValueStack[ValueStack.Depth-4].stn as attribute_list, ValueStack[ValueStack.Depth-3].td as procedure_header, ValueStack[ValueStack.Depth-2].id as procedure_attribute, CurrentLocationSpan); + } + break; + case 89: // label_decl_sect -> tkLabel, label_list, tkSemiColon +{ + CurrentSemanticValue.stn = new label_definitions(ValueStack[ValueStack.Depth-2].stn as ident_list, CurrentLocationSpan); + } + break; + case 90: // label_list -> label_name +{ + CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 91: // label_list -> label_list, tkComma, label_name +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 92: // label_name -> tkInteger +{ + CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ex.ToString(), CurrentLocationSpan); + } + break; + case 93: // label_name -> identifier +{ + CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; + } + break; + case 94: // const_decl_sect -> tkConst, const_decl +{ + CurrentSemanticValue.stn = new consts_definitions_list(ValueStack[ValueStack.Depth-1].stn as const_definition, CurrentLocationSpan); + } + break; + case 95: // const_decl_sect -> const_decl_sect, const_decl +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as consts_definitions_list).Add(ValueStack[ValueStack.Depth-1].stn as const_definition, CurrentLocationSpan); + } + break; + case 96: // res_str_decl_sect -> tkResourceString, const_decl +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 97: // res_str_decl_sect -> res_str_decl_sect, const_decl +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + } + break; + case 98: // type_decl_sect -> tkType, type_decl +{ + CurrentSemanticValue.stn = new type_declarations(ValueStack[ValueStack.Depth-1].stn as type_declaration, CurrentLocationSpan); + } + break; + case 99: // type_decl_sect -> type_decl_sect, type_decl +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as type_declarations).Add(ValueStack[ValueStack.Depth-1].stn as type_declaration, CurrentLocationSpan); + } + break; + case 100: // var_decl_with_assign_var_tuple -> var_decl +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 101: // var_decl_with_assign_var_tuple -> tkRoundOpen, identifier, tkComma, ident_list, + // tkRoundClose, tkAssign, expr_l1, + // tkSemiColon +{ + (ValueStack[ValueStack.Depth-5].stn as ident_list).Insert(0,ValueStack[ValueStack.Depth-7].id); + ValueStack[ValueStack.Depth-5].stn.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4]); + CurrentSemanticValue.stn = new var_tuple_def_statement(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); + } + break; + case 102: // var_decl_sect -> tkVar, var_decl_with_assign_var_tuple +{ + CurrentSemanticValue.stn = new variable_definitions(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); + } + break; + case 103: // var_decl_sect -> tkEvent, var_decl_with_assign_var_tuple +{ + CurrentSemanticValue.stn = new variable_definitions(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); + (ValueStack[ValueStack.Depth-1].stn as var_def_statement).is_event = true; + } + break; + case 104: // var_decl_sect -> var_decl_sect, var_decl_with_assign_var_tuple +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as variable_definitions).Add(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); + } + break; + case 105: // const_decl -> only_const_decl, tkSemiColon +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 106: // only_const_decl -> const_name, tkEqual, init_const_expr +{ + CurrentSemanticValue.stn = new simple_const_definition(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 107: // only_const_decl -> const_name, tkColon, type_ref, tkEqual, typed_const +{ + CurrentSemanticValue.stn = new typed_const_definition(ValueStack[ValueStack.Depth-5].id, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-3].td, CurrentLocationSpan); + } + break; + case 108: // init_const_expr -> const_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 109: // init_const_expr -> array_const +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 110: // const_name -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 111: // expr_l1_list -> expr_l1 +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 112: // expr_l1_list -> expr_l1_list, tkComma, expr_l1 +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 113: // const_expr -> const_simple_expr +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 114: // const_expr -> const_simple_expr, const_relop, const_simple_expr +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 115: // const_expr -> question_constexpr +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 116: // question_constexpr -> const_expr, tkQuestion, const_expr, tkColon, const_expr +{ CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } + break; + case 117: // const_relop -> tkEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 118: // const_relop -> tkNotEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 119: // const_relop -> tkLower +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 120: // const_relop -> tkGreater +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 121: // const_relop -> tkLowerEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 122: // const_relop -> tkGreaterEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 123: // const_relop -> tkIn +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 124: // const_simple_expr -> const_term +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 125: // const_simple_expr -> const_simple_expr, const_addop, const_term +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } + break; + case 126: // const_addop -> tkPlus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 127: // const_addop -> tkMinus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 128: // const_addop -> tkOr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 129: // const_addop -> tkXor +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 130: // as_is_constexpr -> const_term, typecast_op, simple_or_template_type_reference +{ + CurrentSemanticValue.ex = NewAsIsConstexpr(ValueStack[ValueStack.Depth-3].ex, (op_typecast)ValueStack[ValueStack.Depth-2].ob, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 131: // power_constexpr -> const_factor, tkStarStar, const_factor +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } + break; + case 132: // const_term -> const_factor +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 133: // const_term -> as_is_constexpr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 134: // const_term -> power_constexpr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 135: // const_term -> const_term, const_mulop, const_factor +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } + break; + case 136: // const_term -> const_term, const_mulop, power_constexpr +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } + break; + case 137: // const_mulop -> tkStar +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 138: // const_mulop -> tkSlash +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 139: // const_mulop -> tkDiv +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 140: // const_mulop -> tkMod +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 141: // const_mulop -> tkShl +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 142: // const_mulop -> tkShr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 143: // const_mulop -> tkAnd +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 144: // const_factor -> const_variable +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 145: // const_factor -> const_set +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 146: // const_factor -> tkNil +{ + CurrentSemanticValue.ex = new nil_const(); + CurrentSemanticValue.ex.source_context = CurrentLocationSpan; + } + break; + case 147: // const_factor -> tkAddressOf, const_factor +{ + CurrentSemanticValue.ex = new get_address(ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); + } + break; + case 148: // const_factor -> tkRoundOpen, const_expr, tkRoundClose +{ + CurrentSemanticValue.ex = new bracket_expr(ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); + } + break; + case 149: // const_factor -> tkNot, const_factor +{ + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 150: // const_factor -> sign, const_factor +{ + // ������ ��������� ����� �������� + if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) + { + var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; + if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) + { + CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan); + break; + } + var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; + if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) + { + CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan); + break; + } + if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) + { + parsertools.AddErrorFromResource("BAD_INT2",CurrentLocationSpan); + break; + } + // ����� ������� ���������� ��������� � �������������� ������� + } + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 151: // const_factor -> new_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 152: // const_set -> tkSquareOpen, const_elem_list, tkSquareClose +{ + CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 153: // sign -> tkPlus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 154: // sign -> tkMinus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 155: // const_variable -> identifier +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } + break; + case 156: // const_variable -> literal +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 157: // const_variable -> unsigned_number +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 158: // const_variable -> tkInherited, identifier +{ + CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); + } + break; + case 159: // const_variable -> sizeof_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 160: // const_variable -> typeof_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 161: // const_variable -> const_variable, const_variable_2 +{ + CurrentSemanticValue.ex = NewConstVariable(ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 162: // const_variable -> const_variable, tkAmpersend, template_type_params +{ + CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); + } + break; + case 163: // const_variable -> const_variable, tkSquareOpen, format_const_expr, + // tkSquareClose +{ + var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; + if (!parsertools.build_tree_for_formatter) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + } + CurrentSemanticValue.ex = new slice_expr(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); + } + break; + case 164: // const_variable_2 -> tkPoint, identifier_or_keyword +{ + CurrentSemanticValue.ex = new dot_node(null, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); + } + break; + case 165: // const_variable_2 -> tkDeref +{ + CurrentSemanticValue.ex = new roof_dereference(); + CurrentSemanticValue.ex.source_context = CurrentLocationSpan; + } + break; + case 166: // const_variable_2 -> tkRoundOpen, optional_const_func_expr_list, tkRoundClose +{ + CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 167: // const_variable_2 -> tkSquareOpen, const_elem_list, tkSquareClose +{ + CurrentSemanticValue.ex = new indexer(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 168: // optional_const_func_expr_list -> expr_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 169: // optional_const_func_expr_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 170: // const_elem_list -> const_elem_list1 +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 172: // const_elem_list1 -> const_elem +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 173: // const_elem_list1 -> const_elem_list1, tkComma, const_elem +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 174: // const_elem -> const_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 175: // const_elem -> const_expr, tkDotDot, const_expr +{ + CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 176: // unsigned_number -> tkInteger +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 177: // unsigned_number -> tkHex +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 178: // unsigned_number -> tkFloat +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 179: // typed_const -> const_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 180: // typed_const -> array_const +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 181: // typed_const -> record_const +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 182: // array_const -> tkRoundOpen, typed_const_list, tkRoundClose +{ + CurrentSemanticValue.ex = new array_const(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 184: // typed_const_list -> typed_const_list1 +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 185: // typed_const_list1 -> typed_const_plus +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 186: // typed_const_list1 -> typed_const_list1, tkComma, typed_const_plus +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 187: // record_const -> tkRoundOpen, const_field_list, tkRoundClose +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; + CurrentSemanticValue.ex.source_context = CurrentLocationSpan; + } + break; + case 188: // const_field_list -> const_field_list_1 +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 189: // const_field_list -> const_field_list_1, tkSemiColon +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; } + break; + case 190: // const_field_list_1 -> const_field +{ + CurrentSemanticValue.ex = new record_const(ValueStack[ValueStack.Depth-1].stn as record_const_definition, CurrentLocationSpan); + } + break; + case 191: // const_field_list_1 -> const_field_list_1, tkSemiColon, const_field +{ + CurrentSemanticValue.ex = (ValueStack[ValueStack.Depth-3].ex as record_const).Add(ValueStack[ValueStack.Depth-1].stn as record_const_definition, CurrentLocationSpan); + } + break; + case 192: // const_field -> const_field_name, tkColon, typed_const +{ + CurrentSemanticValue.stn = new record_const_definition(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 193: // const_field_name -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 194: // type_decl -> attribute_declarations, simple_type_decl +{ + (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + CurrentSemanticValue.stn.source_context = LocationStack[LocationStack.Depth-1]; + } + break; + case 195: // attribute_declarations -> attribute_declaration +{ + CurrentSemanticValue.stn = new attribute_list(ValueStack[ValueStack.Depth-1].stn as simple_attribute_list, CurrentLocationSpan); + } + break; + case 196: // attribute_declarations -> attribute_declarations, attribute_declaration +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as attribute_list).Add(ValueStack[ValueStack.Depth-1].stn as simple_attribute_list, CurrentLocationSpan); + } + break; + case 197: // attribute_declarations -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 198: // attribute_declaration -> tkSquareOpen, one_or_some_attribute, tkSquareClose +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 199: // one_or_some_attribute -> one_attribute +{ + CurrentSemanticValue.stn = new simple_attribute_list(ValueStack[ValueStack.Depth-1].stn as attribute, CurrentLocationSpan); + } + break; + case 200: // one_or_some_attribute -> one_or_some_attribute, tkComma, one_attribute +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as simple_attribute_list).Add(ValueStack[ValueStack.Depth-1].stn as attribute, CurrentLocationSpan); + } + break; + case 201: // one_attribute -> attribute_variable +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 202: // one_attribute -> identifier, tkColon, attribute_variable +{ + (ValueStack[ValueStack.Depth-1].stn as attribute).qualifier = ValueStack[ValueStack.Depth-3].id; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 203: // simple_type_decl -> type_decl_identifier, tkEqual, type_decl_type, tkSemiColon +{ + CurrentSemanticValue.stn = new type_declaration(ValueStack[ValueStack.Depth-4].id, ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); + } + break; + case 204: // simple_type_decl -> template_identifier_with_equal, type_decl_type, tkSemiColon +{ + CurrentSemanticValue.stn = new type_declaration(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); + } + break; + case 205: // type_decl_identifier -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 206: // type_decl_identifier -> identifier, template_arguments +{ + CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-2].id.name, ValueStack[ValueStack.Depth-1].stn as ident_list, CurrentLocationSpan); + } + break; + case 207: // template_identifier_with_equal -> identifier, tkLower, ident_list, + // tkGreaterEqual +{ + CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-4].id.name, ValueStack[ValueStack.Depth-2].stn as ident_list, CurrentLocationSpan); + } + break; + case 208: // type_decl_type -> type_ref +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 209: // type_decl_type -> object_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 210: // simple_type_question -> simple_type, tkQuestion +{ + if (parsertools.build_tree_for_formatter) + { + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; + } + else + { + var l = new List(); + l.Add(new ident("System")); + l.Add(new ident("Nullable")); + CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); + } + } + break; + case 211: // simple_type_question -> template_type, tkQuestion +{ + if (parsertools.build_tree_for_formatter) + { + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; + } + else + { + var l = new List(); + l.Add(new ident("System")); + l.Add(new ident("Nullable")); + CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); + } + } + break; + case 212: // type_ref -> simple_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 213: // type_ref -> simple_type_question +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 214: // type_ref -> string_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 215: // type_ref -> pointer_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 216: // type_ref -> structured_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 217: // type_ref -> procedural_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 218: // type_ref -> template_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 219: // template_type -> simple_type_identifier, template_type_params +{ + CurrentSemanticValue.td = new template_type_reference(ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); + } + break; + case 220: // template_type_params -> tkLower, template_param_list, tkGreater +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 221: // template_type_empty_params -> tkNotEqual +{ + var ntr = new named_type_reference(new ident(""), CurrentLocationSpan); + + CurrentSemanticValue.stn = new template_param_list(ntr, CurrentLocationSpan); + ntr.source_context = new SourceContext(CurrentSemanticValue.stn.source_context.end_position.line_num, CurrentSemanticValue.stn.source_context.end_position.column_num, CurrentSemanticValue.stn.source_context.begin_position.line_num, CurrentSemanticValue.stn.source_context.begin_position.column_num); + } + break; + case 222: // template_type_empty_params -> tkLower, template_empty_param_list, tkGreater +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 223: // template_param_list -> template_param +{ + CurrentSemanticValue.stn = new template_param_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 224: // template_param_list -> template_param_list, tkComma, template_param +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as template_param_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 225: // template_empty_param_list -> template_empty_param +{ + CurrentSemanticValue.stn = new template_param_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 226: // template_empty_param_list -> template_empty_param_list, tkComma, + // template_empty_param +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as template_param_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 227: // template_empty_param -> /* empty */ +{ + CurrentSemanticValue.td = new named_type_reference(new ident(""), CurrentLocationSpan); + } + break; + case 228: // template_param -> simple_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 229: // template_param -> simple_type, tkQuestion +{ + if (parsertools.build_tree_for_formatter) + { + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; + } + else + { + var l = new List(); + l.Add(new ident("System")); + l.Add(new ident("Nullable")); + CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); + } + } + break; + case 230: // template_param -> structured_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 231: // template_param -> procedural_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 232: // template_param -> template_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 233: // simple_type -> range_expr +{ + CurrentSemanticValue.td = parsertools.ConvertDotNodeOrIdentToNamedTypeReference(ValueStack[ValueStack.Depth-1].ex); + } + break; + case 234: // simple_type -> range_expr, tkDotDot, range_expr +{ + CurrentSemanticValue.td = new diapason(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 235: // simple_type -> tkRoundOpen, enumeration_id_list, tkRoundClose +{ + CurrentSemanticValue.td = new enum_type_definition(ValueStack[ValueStack.Depth-2].stn as enumerator_list, CurrentLocationSpan); + } + break; + case 236: // range_expr -> range_term +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 237: // range_expr -> range_expr, const_addop, range_term +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 238: // range_term -> range_factor +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 239: // range_term -> range_term, const_mulop, range_factor +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 240: // range_factor -> simple_type_identifier +{ + CurrentSemanticValue.ex = parsertools.ConvertNamedTypeReferenceToDotNodeOrIdent(ValueStack[ValueStack.Depth-1].td as named_type_reference); + } + break; + case 241: // range_factor -> unsigned_number +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 242: // range_factor -> sign, range_factor +{ + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 243: // range_factor -> literal +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 244: // range_factor -> range_factor, tkRoundOpen, const_elem_list, tkRoundClose +{ + CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value, ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 245: // simple_type_identifier -> identifier +{ + CurrentSemanticValue.td = new named_type_reference(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 246: // simple_type_identifier -> simple_type_identifier, tkPoint, + // identifier_or_keyword +{ + CurrentSemanticValue.td = (ValueStack[ValueStack.Depth-3].td as named_type_reference).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 247: // enumeration_id_list -> enumeration_id, tkComma, enumeration_id +{ + CurrentSemanticValue.stn = new enumerator_list(ValueStack[ValueStack.Depth-3].stn as enumerator, CurrentLocationSpan); + (CurrentSemanticValue.stn as enumerator_list).Add(ValueStack[ValueStack.Depth-1].stn as enumerator, CurrentLocationSpan); + } + break; + case 248: // enumeration_id_list -> enumeration_id_list, tkComma, enumeration_id +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as enumerator_list).Add(ValueStack[ValueStack.Depth-1].stn as enumerator, CurrentLocationSpan); + } + break; + case 249: // enumeration_id -> type_ref +{ + CurrentSemanticValue.stn = new enumerator(ValueStack[ValueStack.Depth-1].td, null, CurrentLocationSpan); + } + break; + case 250: // enumeration_id -> type_ref, tkEqual, expr +{ + CurrentSemanticValue.stn = new enumerator(ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 251: // pointer_type -> tkDeref, fptype +{ + CurrentSemanticValue.td = new ref_type(ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 252: // structured_type -> unpacked_structured_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 253: // structured_type -> tkPacked, unpacked_structured_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 254: // unpacked_structured_type -> array_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 255: // unpacked_structured_type -> record_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 256: // unpacked_structured_type -> set_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 257: // unpacked_structured_type -> file_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 258: // unpacked_structured_type -> sequence_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 259: // sequence_type -> tkSequence, tkOf, type_ref +{ + CurrentSemanticValue.td = new sequence_type(ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 260: // array_type -> tkArray, tkSquareOpen, simple_type_list, tkSquareClose, tkOf, + // type_ref +{ + CurrentSemanticValue.td = new array_type(ValueStack[ValueStack.Depth-4].stn as indexers_types, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 261: // array_type -> unsized_array_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 262: // unsized_array_type -> tkArray, tkOf, type_ref +{ + CurrentSemanticValue.td = new array_type(null, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 263: // simple_type_list -> simple_type_or_ +{ + CurrentSemanticValue.stn = new indexers_types(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 264: // simple_type_list -> simple_type_list, tkComma, simple_type_or_ +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as indexers_types).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 265: // simple_type_or_ -> simple_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 266: // simple_type_or_ -> /* empty */ +{ CurrentSemanticValue.td = null; } + break; + case 267: // set_type -> tkSet, tkOf, type_ref +{ + CurrentSemanticValue.td = new set_type_definition(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 268: // file_type -> tkFile, tkOf, type_ref +{ + CurrentSemanticValue.td = new file_type(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 269: // file_type -> tkFile +{ + CurrentSemanticValue.td = new file_type(); + CurrentSemanticValue.td.source_context = CurrentLocationSpan; + } + break; + case 270: // string_type -> tkIdentifier, tkSquareOpen, const_expr, tkSquareClose +{ + CurrentSemanticValue.td = new string_num_definition(ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-4].id, CurrentLocationSpan); + } + break; + case 271: // procedural_type -> procedural_type_kind +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 272: // procedural_type_kind -> proc_type_decl +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 273: // proc_type_decl -> tkProcedure, fp_list +{ + CurrentSemanticValue.td = new procedure_header(ValueStack[ValueStack.Depth-1].stn as formal_parameters,null,null,false,false,null,null,CurrentLocationSpan); + } + break; + case 274: // proc_type_decl -> tkFunction, fp_list, tkColon, fptype +{ + CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, null, null, null, ValueStack[ValueStack.Depth-1].td as type_definition, CurrentLocationSpan); + } + break; + case 275: // proc_type_decl -> simple_type_identifier, tkArrow, template_param +{ + CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-3].td,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 276: // proc_type_decl -> template_type, tkArrow, template_param +{ + CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-3].td,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 277: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, template_param +{ + CurrentSemanticValue.td = new modern_proc_type(null,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 278: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, + // template_param +{ + CurrentSemanticValue.td = new modern_proc_type(null,ValueStack[ValueStack.Depth-4].stn as enumerator_list,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); + } + break; + case 279: // proc_type_decl -> simple_type_identifier, tkArrow, tkRoundOpen, tkRoundClose +{ + CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-4].td,null,null,CurrentLocationSpan); + } + break; + case 280: // proc_type_decl -> template_type, tkArrow, tkRoundOpen, tkRoundClose +{ + CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-4].td,null,null,CurrentLocationSpan); + } + break; + case 281: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, tkRoundOpen, tkRoundClose +{ + CurrentSemanticValue.td = new modern_proc_type(null,null,null,CurrentLocationSpan); + } + break; + case 282: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, + // tkRoundOpen, tkRoundClose +{ + CurrentSemanticValue.td = new modern_proc_type(null,ValueStack[ValueStack.Depth-5].stn as enumerator_list,null,CurrentLocationSpan); + } + break; + case 283: // object_type -> class_attributes, class_or_interface_keyword, + // optional_base_classes, optional_where_section, + // optional_component_list_seq_end +{ + var cd = NewObjectType((class_attribute)ValueStack[ValueStack.Depth-5].ob, ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-3].stn as named_type_reference_list, ValueStack[ValueStack.Depth-2].stn as where_definition_list, ValueStack[ValueStack.Depth-1].stn as class_body_list, CurrentLocationSpan); + CurrentSemanticValue.td = cd; + } + break; + case 284: // record_type -> tkRecord, optional_base_classes, optional_where_section, + // member_list_section, tkEnd +{ + var nnrt = new class_definition(ValueStack[ValueStack.Depth-4].stn as named_type_reference_list, ValueStack[ValueStack.Depth-2].stn as class_body_list, class_keyword.Record, null, ValueStack[ValueStack.Depth-3].stn as where_definition_list, class_attribute.None, false, CurrentLocationSpan); + if (/*nnrt.body!=null && nnrt.body.class_def_blocks!=null && + nnrt.body.class_def_blocks.Count>0 &&*/ + nnrt.body.class_def_blocks[0].access_mod==null) + { + nnrt.body.class_def_blocks[0].access_mod = new access_modifer_node(access_modifer.public_modifer); + } + CurrentSemanticValue.td = nnrt; + } + break; + case 285: // class_attribute -> tkSealed +{ CurrentSemanticValue.ob = class_attribute.Sealed; } + break; + case 286: // class_attribute -> tkPartial +{ CurrentSemanticValue.ob = class_attribute.Partial; } + break; + case 287: // class_attribute -> tkAbstract +{ CurrentSemanticValue.ob = class_attribute.Abstract; } + break; + case 288: // class_attribute -> tkAuto +{ CurrentSemanticValue.ob = class_attribute.Auto; } + break; + case 289: // class_attribute -> tkStatic +{ CurrentSemanticValue.ob = class_attribute.Static; } + break; + case 290: // class_attributes -> /* empty */ +{ + CurrentSemanticValue.ob = class_attribute.None; + } + break; + case 291: // class_attributes -> class_attributes1 +{ + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ob; + } + break; + case 292: // class_attributes1 -> class_attribute +{ + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ob; + } + break; + case 293: // class_attributes1 -> class_attributes1, class_attribute +{ + if (((class_attribute)ValueStack[ValueStack.Depth-2].ob & (class_attribute)ValueStack[ValueStack.Depth-1].ob) == (class_attribute)ValueStack[ValueStack.Depth-1].ob) + parsertools.AddErrorFromResource("ATTRIBUTE_REDECLARED",LocationStack[LocationStack.Depth-1]); + CurrentSemanticValue.ob = ((class_attribute)ValueStack[ValueStack.Depth-2].ob) | ((class_attribute)ValueStack[ValueStack.Depth-1].ob); + //$$ = $1; + } + break; + case 294: // class_or_interface_keyword -> tkClass +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 295: // class_or_interface_keyword -> tkInterface +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 296: // class_or_interface_keyword -> tkTemplate +{ + CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-1].ti); + } + break; + case 297: // class_or_interface_keyword -> tkTemplate, tkClass +{ + CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "c", CurrentLocationSpan); + } + break; + case 298: // class_or_interface_keyword -> tkTemplate, tkRecord +{ + CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "r", CurrentLocationSpan); + } + break; + case 299: // class_or_interface_keyword -> tkTemplate, tkInterface +{ + CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "i", CurrentLocationSpan); + } + break; + case 300: // optional_component_list_seq_end -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 301: // optional_component_list_seq_end -> member_list_section, tkEnd +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 303: // optional_base_classes -> tkRoundOpen, base_classes_names_list, tkRoundClose +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 304: // base_classes_names_list -> base_class_name +{ + CurrentSemanticValue.stn = new named_type_reference_list(ValueStack[ValueStack.Depth-1].stn as named_type_reference, CurrentLocationSpan); + } + break; + case 305: // base_classes_names_list -> base_classes_names_list, tkComma, base_class_name +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as named_type_reference_list).Add(ValueStack[ValueStack.Depth-1].stn as named_type_reference, CurrentLocationSpan); + } + break; + case 306: // base_class_name -> simple_type_identifier +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } + break; + case 307: // base_class_name -> template_type +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } + break; + case 308: // template_arguments -> tkLower, ident_list, tkGreater +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 309: // optional_where_section -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 310: // optional_where_section -> where_part_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 311: // where_part_list -> where_part +{ + CurrentSemanticValue.stn = new where_definition_list(ValueStack[ValueStack.Depth-1].stn as where_definition, CurrentLocationSpan); + } + break; + case 312: // where_part_list -> where_part_list, where_part +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as where_definition_list).Add(ValueStack[ValueStack.Depth-1].stn as where_definition, CurrentLocationSpan); + } + break; + case 313: // where_part -> tkWhere, ident_list, tkColon, type_ref_and_secific_list, + // tkSemiColon +{ + CurrentSemanticValue.stn = new where_definition(ValueStack[ValueStack.Depth-4].stn as ident_list, ValueStack[ValueStack.Depth-2].stn as where_type_specificator_list, CurrentLocationSpan); + } + break; + case 314: // type_ref_and_secific_list -> type_ref_or_secific +{ + CurrentSemanticValue.stn = new where_type_specificator_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 315: // type_ref_and_secific_list -> type_ref_and_secific_list, tkComma, + // type_ref_or_secific +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as where_type_specificator_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 316: // type_ref_or_secific -> type_ref +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 317: // type_ref_or_secific -> tkClass +{ + CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefClass, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); + } + break; + case 318: // type_ref_or_secific -> tkRecord +{ + CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefValueType, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); + } + break; + case 319: // type_ref_or_secific -> tkConstructor +{ + CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefConstructor, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); + } + break; + case 320: // member_list_section -> member_list +{ + CurrentSemanticValue.stn = new class_body_list(ValueStack[ValueStack.Depth-1].stn as class_members, CurrentLocationSpan); + } + break; + case 321: // member_list_section -> member_list_section, ot_visibility_specifier, + // member_list +{ + (ValueStack[ValueStack.Depth-1].stn as class_members).access_mod = ValueStack[ValueStack.Depth-2].stn as access_modifer_node; + (ValueStack[ValueStack.Depth-3].stn as class_body_list).Add(ValueStack[ValueStack.Depth-1].stn as class_members,CurrentLocationSpan); + + if ((ValueStack[ValueStack.Depth-3].stn as class_body_list).class_def_blocks[0].Count == 0) + (ValueStack[ValueStack.Depth-3].stn as class_body_list).class_def_blocks.RemoveAt(0); + + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-3].stn; + } + break; + case 322: // ot_visibility_specifier -> tkInternal +{ CurrentSemanticValue.stn = new access_modifer_node(access_modifer.internal_modifer, CurrentLocationSpan); } + break; + case 323: // ot_visibility_specifier -> tkPublic +{ CurrentSemanticValue.stn = new access_modifer_node(access_modifer.public_modifer, CurrentLocationSpan); } + break; + case 324: // ot_visibility_specifier -> tkProtected +{ CurrentSemanticValue.stn = new access_modifer_node(access_modifer.protected_modifer, CurrentLocationSpan); } + break; + case 325: // ot_visibility_specifier -> tkPrivate +{ CurrentSemanticValue.stn = new access_modifer_node(access_modifer.private_modifer, CurrentLocationSpan); } + break; + case 326: // member_list -> /* empty */ +{ CurrentSemanticValue.stn = new class_members(); } + break; + case 327: // member_list -> field_or_const_definition_list, optional_semicolon +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 328: // member_list -> method_decl_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 329: // member_list -> field_or_const_definition_list, tkSemiColon, method_decl_list +{ + (ValueStack[ValueStack.Depth-3].stn as class_members).members.AddRange((ValueStack[ValueStack.Depth-1].stn as class_members).members); + (ValueStack[ValueStack.Depth-3].stn as class_members).source_context = CurrentLocationSpan; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-3].stn; + } + break; + case 330: // ident_list -> identifier +{ + CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 331: // ident_list -> ident_list, tkComma, identifier +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 332: // optional_semicolon -> /* empty */ +{ CurrentSemanticValue.ob = null; } + break; + case 333: // optional_semicolon -> tkSemiColon +{ CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ti; } + break; + case 334: // field_or_const_definition_list -> field_or_const_definition +{ + CurrentSemanticValue.stn = new class_members(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 335: // field_or_const_definition_list -> field_or_const_definition_list, tkSemiColon, + // field_or_const_definition +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as class_members).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 336: // field_or_const_definition -> attribute_declarations, + // simple_field_or_const_definition +{ + (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 337: // method_decl_list -> method_or_property_decl +{ + CurrentSemanticValue.stn = new class_members(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 338: // method_decl_list -> method_decl_list, method_or_property_decl +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as class_members).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); + } + break; + case 339: // method_or_property_decl -> method_decl_withattr +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 340: // method_or_property_decl -> property_definition +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 341: // simple_field_or_const_definition -> tkConst, only_const_decl +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 342: // simple_field_or_const_definition -> field_definition +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 343: // simple_field_or_const_definition -> class_or_static, field_definition +{ + (ValueStack[ValueStack.Depth-1].stn as var_def_statement).var_attr = definition_attribute.Static; + (ValueStack[ValueStack.Depth-1].stn as var_def_statement).source_context = CurrentLocationSpan; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 344: // class_or_static -> tkStatic +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 345: // class_or_static -> tkClass +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 346: // field_definition -> var_decl_part +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 347: // field_definition -> tkEvent, ident_list, tkColon, type_ref +{ + CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, null, definition_attribute.None, true, CurrentLocationSpan); + } + break; + case 348: // method_decl_withattr -> attribute_declarations, method_header +{ + (ValueStack[ValueStack.Depth-1].td as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; + } + break; + case 349: // method_decl_withattr -> attribute_declarations, method_decl +{ + (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + if (ValueStack[ValueStack.Depth-1].stn is procedure_definition && (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) + (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 350: // method_decl -> inclass_proc_func_decl +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 351: // method_decl -> inclass_constr_destr_decl +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 352: // method_header -> class_or_static, method_procfunc_header +{ + (ValueStack[ValueStack.Depth-1].td as procedure_header).class_keyword = true; + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + } + break; + case 353: // method_header -> method_procfunc_header +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 354: // method_header -> constr_destr_header +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 355: // method_procfunc_header -> proc_func_header +{ + CurrentSemanticValue.td = NewProcfuncHeading(ValueStack[ValueStack.Depth-1].td as procedure_header); + } + break; + case 356: // proc_func_header -> proc_header +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 357: // proc_func_header -> func_header +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 358: // constr_destr_header -> tkConstructor, optional_proc_name, fp_list, + // optional_method_modificators +{ + CurrentSemanticValue.td = new constructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name,false,false,null,null,CurrentLocationSpan); + } + break; + case 359: // constr_destr_header -> class_or_static, tkConstructor, optional_proc_name, + // fp_list, optional_method_modificators +{ + CurrentSemanticValue.td = new constructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name,false,true,null,null,CurrentLocationSpan); + } + break; + case 360: // constr_destr_header -> tkDestructor, optional_proc_name, fp_list, + // optional_method_modificators +{ + CurrentSemanticValue.td = new destructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name, false,false,null,null,CurrentLocationSpan); + } + break; + case 361: // optional_proc_name -> proc_name +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 362: // optional_proc_name -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 363: // qualified_identifier -> identifier +{ CurrentSemanticValue.stn = new method_name(null,null,ValueStack[ValueStack.Depth-1].id,null,CurrentLocationSpan); } + break; + case 364: // qualified_identifier -> visibility_specifier +{ CurrentSemanticValue.stn = new method_name(null,null,ValueStack[ValueStack.Depth-1].id,null,CurrentLocationSpan); } + break; + case 365: // qualified_identifier -> qualified_identifier, tkPoint, identifier +{ + CurrentSemanticValue.stn = NewQualifiedIdentifier(ValueStack[ValueStack.Depth-3].stn as method_name, ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 366: // qualified_identifier -> qualified_identifier, tkPoint, visibility_specifier +{ + CurrentSemanticValue.stn = NewQualifiedIdentifier(ValueStack[ValueStack.Depth-3].stn as method_name, ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 367: // property_definition -> attribute_declarations, simple_property_definition +{ + CurrentSemanticValue.stn = NewPropertyDefinition(ValueStack[ValueStack.Depth-2].stn as attribute_list, ValueStack[ValueStack.Depth-1].stn as declaration, LocationStack[LocationStack.Depth-1]); + } + break; + case 368: // simple_property_definition -> tkProperty, qualified_identifier, + // property_interface, property_specifiers, + // tkSemiColon, array_defaultproperty +{ + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); + } + break; + case 369: // simple_property_definition -> tkProperty, qualified_identifier, + // property_interface, property_specifiers, + // tkSemiColon, property_modificator, tkSemiColon, + // array_defaultproperty +{ + proc_attribute pa = proc_attribute.attr_none; + if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "virtual") + pa = proc_attribute.attr_virtual; + else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "override") + pa = proc_attribute.attr_override; + else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "abstract") + pa = proc_attribute.attr_abstract; + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-7].stn as method_name, ValueStack[ValueStack.Depth-6].stn as property_interface, ValueStack[ValueStack.Depth-5].stn as property_accessors, pa, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); + } + break; + case 370: // simple_property_definition -> class_or_static, tkProperty, qualified_identifier, + // property_interface, property_specifiers, + // tkSemiColon, array_defaultproperty +{ + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); + (CurrentSemanticValue.stn as simple_property).attr = definition_attribute.Static; + } + break; + case 371: // simple_property_definition -> class_or_static, tkProperty, qualified_identifier, + // property_interface, property_specifiers, + // tkSemiColon, property_modificator, tkSemiColon, + // array_defaultproperty +{ + parsertools.AddErrorFromResource("STATIC_PROPERTIES_CANNOT_HAVE_ATTRBUTE_{0}",LocationStack[LocationStack.Depth-3],ValueStack[ValueStack.Depth-3].id.name); + } + break; + case 372: // simple_property_definition -> tkAuto, tkProperty, qualified_identifier, + // property_interface, + // optional_property_initialization, tkSemiColon +{ + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-3].stn as property_interface, null, proc_attribute.attr_none, null, CurrentLocationSpan); + (CurrentSemanticValue.stn as simple_property).is_auto = true; + (CurrentSemanticValue.stn as simple_property).initial_value = ValueStack[ValueStack.Depth-2].ex; + } + break; + case 373: // simple_property_definition -> class_or_static, tkAuto, tkProperty, + // qualified_identifier, property_interface, + // optional_property_initialization, tkSemiColon +{ + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-3].stn as property_interface, null, proc_attribute.attr_none, null, CurrentLocationSpan); + (CurrentSemanticValue.stn as simple_property).is_auto = true; + (CurrentSemanticValue.stn as simple_property).attr = definition_attribute.Static; + (CurrentSemanticValue.stn as simple_property).initial_value = ValueStack[ValueStack.Depth-2].ex; + } + break; + case 374: // optional_property_initialization -> tkAssign, expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 375: // optional_property_initialization -> /* empty */ +{ CurrentSemanticValue.ex = null; } + break; + case 376: // array_defaultproperty -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 377: // array_defaultproperty -> tkDefault, tkSemiColon +{ + CurrentSemanticValue.stn = new property_array_default(); + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 378: // property_interface -> property_parameter_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new property_interface(ValueStack[ValueStack.Depth-3].stn as property_parameter_list, ValueStack[ValueStack.Depth-1].td, null, CurrentLocationSpan); + } + break; + case 379: // property_parameter_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 380: // property_parameter_list -> tkSquareOpen, parameter_decl_list, tkSquareClose +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 381: // parameter_decl_list -> parameter_decl +{ + CurrentSemanticValue.stn = new property_parameter_list(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); + } + break; + case 382: // parameter_decl_list -> parameter_decl_list, tkSemiColon, parameter_decl +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as property_parameter_list).Add(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); + } + break; + case 383: // parameter_decl -> ident_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new property_parameter(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 384: // optional_read_expr -> expr_with_func_decl_lambda +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 385: // optional_read_expr -> /* empty */ +{ CurrentSemanticValue.ex = null; } + break; + case 387: // property_specifiers -> tkRead, optional_read_expr, write_property_specifiers +{ + if (ValueStack[ValueStack.Depth-2].ex == null || ValueStack[ValueStack.Depth-2].ex is ident) // ����������� �������� + { + CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-2].ex as ident, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); + } + else // ����������� �������� + { + var id = NewId("#GetGen", LocationStack[LocationStack.Depth-2]); + procedure_definition pr = null; + if (!parsertools.build_tree_for_formatter) + pr = CreateAndAddToClassReadFunc(ValueStack[ValueStack.Depth-2].ex, id, LocationStack[LocationStack.Depth-2]); + CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-3].id, id, pr, ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // $2 ��������� ��� �������������� + } + } + break; + case 388: // property_specifiers -> tkWrite, unlabelled_stmt, read_property_specifiers +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + { + + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, null, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); + } + else if (ValueStack[ValueStack.Depth-2].stn is procedure_call && (ValueStack[ValueStack.Depth-2].stn as procedure_call).is_ident) // ����������� �������� + { + + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, (ValueStack[ValueStack.Depth-2].stn as procedure_call).func_name as ident, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // ������ �������� - � ��������������� + } + else // ����������� �������� + { + var id = NewId("#SetGen", LocationStack[LocationStack.Depth-2]); + procedure_definition pr = null; + if (!parsertools.build_tree_for_formatter) + pr = CreateAndAddToClassWriteProc(ValueStack[ValueStack.Depth-2].stn as statement,id,LocationStack[LocationStack.Depth-2]); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, id, pr, ValueStack[ValueStack.Depth-2].stn as statement, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // $2 ��������� ��� �������������� + else CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, id, pr, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); + } + } + break; + case 390: // write_property_specifiers -> tkWrite, unlabelled_stmt +{ + if (ValueStack[ValueStack.Depth-1].stn is empty_statement) + { + + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, null, null, null, null, CurrentLocationSpan); + } + else if (ValueStack[ValueStack.Depth-1].stn is procedure_call && (ValueStack[ValueStack.Depth-1].stn as procedure_call).is_ident) + { + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, (ValueStack[ValueStack.Depth-1].stn as procedure_call).func_name as ident, null, null, null, CurrentLocationSpan); // ������ �������� - � ��������������� + } + else + { + var id = NewId("#SetGen", LocationStack[LocationStack.Depth-1]); + procedure_definition pr = null; + if (!parsertools.build_tree_for_formatter) + pr = CreateAndAddToClassWriteProc(ValueStack[ValueStack.Depth-1].stn as statement,id,LocationStack[LocationStack.Depth-1]); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, id, pr, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); + else CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, id, pr, null, null, CurrentLocationSpan); + } + } + break; + case 392: // read_property_specifiers -> tkRead, optional_read_expr +{ + if (ValueStack[ValueStack.Depth-1].ex == null || ValueStack[ValueStack.Depth-1].ex is ident) + { + CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-2].id, ValueStack[ValueStack.Depth-1].ex as ident, null, null, null, CurrentLocationSpan); + } + else + { + var id = NewId("#GetGen", LocationStack[LocationStack.Depth-1]); + procedure_definition pr = null; + if (!parsertools.build_tree_for_formatter) + pr = CreateAndAddToClassReadFunc(ValueStack[ValueStack.Depth-1].ex,id,LocationStack[LocationStack.Depth-1]); + CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-2].id, id, pr, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + } + break; + case 393: // var_decl -> var_decl_part, tkSemiColon +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 396: // var_decl_part -> ident_list, tkColon, type_ref +{ + CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, null, definition_attribute.None, false, CurrentLocationSpan); + } + break; + case 397: // var_decl_part -> ident_list, tkAssign, expr +{ + CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, null, ValueStack[ValueStack.Depth-1].ex, definition_attribute.None, false, CurrentLocationSpan); + } + break; + case 398: // var_decl_part -> ident_list, tkColon, type_ref, tkAssignOrEqual, + // typed_var_init_expression +{ + CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].ex, definition_attribute.None, false, CurrentLocationSpan); + } + break; + case 399: // typed_var_init_expression -> typed_const_plus +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 400: // typed_var_init_expression -> expl_func_decl_lambda +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 401: // typed_var_init_expression -> identifier, tkArrow, lambda_function_body +{ + var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); + var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 402: // typed_var_init_expression -> tkRoundOpen, tkRoundClose, lambda_type_ref, + // tkArrow, lambda_function_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 403: // typed_var_init_expression -> tkRoundOpen, typed_const_list, tkRoundClose, + // tkArrow, lambda_function_body +{ + var el = ValueStack[ValueStack.Depth-4].stn as expression_list; + var cnt = el.Count; + + var idList = new ident_list(); + idList.source_context = LocationStack[LocationStack.Depth-4]; + + for (int j = 0; j < cnt; j++) + { + if (!(el.expressions[j] is ident)) + parsertools.AddErrorFromResource("ONE_TKIDENTIFIER",el.expressions[j].source_context); + idList.idents.Add(el.expressions[j] as ident); + } + + var any = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-4]); + + var formalPars = new formal_parameters(new typed_parameters(idList, any, parametr_kind.none, null, LocationStack[LocationStack.Depth-4]), LocationStack[LocationStack.Depth-4]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, any, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 404: // typed_const_plus -> typed_const +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 405: // typed_const_plus -> default_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 406: // constr_destr_decl -> constr_destr_header, block +{ + CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); + } + break; + case 407: // constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, tkAssign, + // unlabelled_stmt, tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + parsertools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); + var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,false,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); + CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-6].Merge(LocationStack[LocationStack.Depth-2])); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 408: // constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, + // fp_list, tkAssign, unlabelled_stmt, tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + parsertools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); + var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,true,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); + CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-2])); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 409: // inclass_constr_destr_decl -> constr_destr_header, inclass_block +{ + CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); + } + break; + case 410: // inclass_constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, + // tkAssign, unlabelled_stmt, tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + parsertools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); + var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,false,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3])); + CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), CurrentLocationSpan); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 411: // inclass_constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, + // fp_list, tkAssign, unlabelled_stmt, tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + parsertools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); + var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,true,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); + CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), CurrentLocationSpan); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 412: // proc_func_decl -> proc_func_decl_noclass +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 413: // proc_func_decl -> class_or_static, proc_func_decl_noclass +{ + (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 414: // proc_func_decl_noclass -> proc_func_header, proc_func_external_block +{ + CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); + } + break; + case 415: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, + // optional_method_modificators1, tkAssign, expr_l1, + // tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); + } + break; + case 416: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + // optional_method_modificators1, tkAssign, expr_l1, + // tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].ex is dot_question_node) + parsertools.AddErrorFromResource("DOT_QUECTION_IN_SHORT_FUN",LocationStack[LocationStack.Depth-2]); + + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); + } + break; + case 417: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, + // optional_method_modificators1, tkAssign, + // func_decl_lambda, tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); + } + break; + case 418: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + // optional_method_modificators1, tkAssign, + // func_decl_lambda, tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); + } + break; + case 419: // proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, + // optional_method_modificators1, tkAssign, + // unlabelled_stmt, tkSemiColon +{ + if (ValueStack[ValueStack.Depth-2].stn is empty_statement) + parsertools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-2]); + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortProcDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); + } + break; + case 420: // proc_func_decl_noclass -> proc_func_header, tkForward, tkSemiColon +{ + CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-3].td as procedure_header, null, CurrentLocationSpan); + (CurrentSemanticValue.stn as procedure_definition).proc_header.proc_attributes.Add((procedure_attribute)ValueStack[ValueStack.Depth-2].id, ValueStack[ValueStack.Depth-2].id.source_context); + } + break; + case 421: // inclass_proc_func_decl -> inclass_proc_func_decl_noclass +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 422: // inclass_proc_func_decl -> class_or_static, inclass_proc_func_decl_noclass +{ + if ((ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) + (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 423: // inclass_proc_func_decl_noclass -> proc_func_header, inclass_block +{ + CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); + } + break; + case 424: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, + // fptype, optional_method_modificators1, + // tkAssign, expr_l1_func_decl_lambda, + // tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 425: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, + // optional_method_modificators1, tkAssign, + // expr_l1_func_decl_lambda, tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 426: // inclass_proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, + // optional_method_modificators1, tkAssign, + // unlabelled_stmt, tkSemiColon +{ + CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortProcDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); + } + break; + case 427: // proc_func_external_block -> block +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 428: // proc_func_external_block -> external_block +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 429: // proc_name -> func_name +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 430: // func_name -> func_meth_name_ident +{ + CurrentSemanticValue.stn = new method_name(null,null, ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); + } + break; + case 431: // func_name -> func_class_name_ident_list, tkPoint, func_meth_name_ident +{ + var ln = ValueStack[ValueStack.Depth-3].ob as List; + var cnt = ln.Count; + if (cnt == 1) + CurrentSemanticValue.stn = new method_name(null, ln[cnt-1], ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); + else + CurrentSemanticValue.stn = new method_name(ln, ln[cnt-1], ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); + } + break; + case 432: // func_class_name_ident -> func_name_with_template_args +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 433: // func_class_name_ident_list -> func_class_name_ident +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].id); + } + break; + case 434: // func_class_name_ident_list -> func_class_name_ident_list, tkPoint, + // func_class_name_ident +{ + (ValueStack[ValueStack.Depth-3].ob as List).Add(ValueStack[ValueStack.Depth-1].id); + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; + } + break; + case 435: // func_meth_name_ident -> func_name_with_template_args +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 436: // func_meth_name_ident -> operator_name_ident +{ CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } + break; + case 437: // func_meth_name_ident -> operator_name_ident, template_arguments +{ CurrentSemanticValue.id = new template_operator_name(null, ValueStack[ValueStack.Depth-1].stn as ident_list, ValueStack[ValueStack.Depth-2].ex as operator_name_ident, CurrentLocationSpan); } + break; + case 438: // func_name_with_template_args -> func_name_ident +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 439: // func_name_with_template_args -> func_name_ident, template_arguments +{ + CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-2].id.name, ValueStack[ValueStack.Depth-1].stn as ident_list, CurrentLocationSpan); + } + break; + case 440: // func_name_ident -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 441: // proc_header -> tkProcedure, proc_name, fp_list, optional_method_modificators, + // optional_where_section +{ + CurrentSemanticValue.td = new procedure_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, CurrentLocationSpan); + } + break; + case 442: // func_header -> tkFunction, func_name, fp_list, optional_method_modificators, + // optional_where_section +{ + CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, null, CurrentLocationSpan); + } + break; + case 443: // func_header -> tkFunction, func_name, fp_list, tkColon, fptype, + // optional_method_modificators, optional_where_section +{ + CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, ValueStack[ValueStack.Depth-3].td as type_definition, CurrentLocationSpan); + } + break; + case 444: // external_block -> tkExternal, external_directive_ident, tkName, + // external_directive_ident, tkSemiColon +{ + CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); + } + break; + case 445: // external_block -> tkExternal, external_directive_ident, tkSemiColon +{ + CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-2].ex, null, CurrentLocationSpan); + } + break; + case 446: // external_block -> tkExternal, tkSemiColon +{ + CurrentSemanticValue.stn = new external_directive(null, null, CurrentLocationSpan); + } + break; + case 447: // external_directive_ident -> identifier +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } + break; + case 448: // external_directive_ident -> literal +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 449: // block -> decl_sect_list, compound_stmt, tkSemiColon +{ + CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); + } + break; + case 450: // inclass_block -> inclass_decl_sect_list, compound_stmt, tkSemiColon +{ + CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); + } + break; + case 451: // inclass_block -> external_block +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 452: // fp_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 453: // fp_list -> tkRoundOpen, tkRoundClose +{ + CurrentSemanticValue.stn = null; + } + break; + case 454: // fp_list -> tkRoundOpen, fp_sect_list, tkRoundClose +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + if (CurrentSemanticValue.stn != null) + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 455: // fp_sect_list -> fp_sect +{ + CurrentSemanticValue.stn = new formal_parameters(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); + } + break; + case 456: // fp_sect_list -> fp_sect_list, tkSemiColon, fp_sect +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); + } + break; + case 457: // fp_sect -> attribute_declarations, simple_fp_sect +{ + (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 458: // simple_fp_sect -> param_name_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); + } + break; + case 459: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.var_parametr, null, CurrentLocationSpan); + } + break; + case 460: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.const_parametr, null, CurrentLocationSpan); + } + break; + case 461: // simple_fp_sect -> tkParams, param_name_list, tkColon, fptype +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td,parametr_kind.params_parametr,null, CurrentLocationSpan); + } + break; + case 462: // simple_fp_sect -> param_name_list, tkColon, fptype, tkAssign, expr +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.none, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 463: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype, tkAssign, expr +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.var_parametr, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 464: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype, tkAssign, expr +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.const_parametr, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 465: // param_name_list -> param_name +{ + CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 466: // param_name_list -> param_name_list, tkComma, param_name +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 467: // param_name -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 468: // fptype -> type_ref +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 469: // fptype_noproctype -> simple_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 470: // fptype_noproctype -> string_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 471: // fptype_noproctype -> pointer_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 472: // fptype_noproctype -> structured_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 473: // fptype_noproctype -> template_type +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 474: // stmt -> unlabelled_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 475: // stmt -> label_name, tkColon, stmt +{ + CurrentSemanticValue.stn = new labeled_statement(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 476: // unlabelled_stmt -> /* empty */ +{ + CurrentSemanticValue.stn = new empty_statement(); + CurrentSemanticValue.stn.source_context = null; + } + break; + case 477: // unlabelled_stmt -> assignment +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 478: // unlabelled_stmt -> proc_call +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 479: // unlabelled_stmt -> goto_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 480: // unlabelled_stmt -> compound_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 481: // unlabelled_stmt -> if_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 482: // unlabelled_stmt -> case_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 483: // unlabelled_stmt -> repeat_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 484: // unlabelled_stmt -> while_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 485: // unlabelled_stmt -> for_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 486: // unlabelled_stmt -> with_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 487: // unlabelled_stmt -> inherited_message +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 488: // unlabelled_stmt -> try_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 489: // unlabelled_stmt -> raise_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 490: // unlabelled_stmt -> foreach_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 491: // unlabelled_stmt -> var_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 492: // unlabelled_stmt -> expr_as_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 493: // unlabelled_stmt -> lock_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 494: // unlabelled_stmt -> yield_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 495: // unlabelled_stmt -> yield_sequence_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 496: // unlabelled_stmt -> loop_stmt +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 497: // unlabelled_stmt -> match_with +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 498: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new loop_stmt(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].stn as statement,CurrentLocationSpan); + } + break; + case 499: // yield_stmt -> tkYield, expr_l1 +{ + CurrentSemanticValue.stn = new yield_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 500: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1 +{ + CurrentSemanticValue.stn = new yield_sequence_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 501: // var_stmt -> tkVar, var_decl_part +{ + CurrentSemanticValue.stn = new var_statement(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); + } + break; + case 502: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, + // tkRoundClose, tkAssign, expr +{ + (ValueStack[ValueStack.Depth-4].ob as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); + (ValueStack[ValueStack.Depth-4].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.stn = new assign_var_tuple(ValueStack[ValueStack.Depth-4].ob as ident_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 503: // var_stmt -> tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, + // tkAssign, expr +{ + (ValueStack[ValueStack.Depth-4].stn as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); + ValueStack[ValueStack.Depth-4].stn.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.stn = new assign_var_tuple(ValueStack[ValueStack.Depth-4].stn as ident_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 504: // assignment -> var_reference, assign_operator, expr_with_func_decl_lambda +{ + CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 505: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, + // assign_operator, expr +{ + if (ValueStack[ValueStack.Depth-2].op.type != Operators.Assignment) + parsertools.AddErrorFromResource("ONLY_BASE_ASSIGNMENT_FOR_TUPLE",LocationStack[LocationStack.Depth-2]); + (ValueStack[ValueStack.Depth-4].ob as addressed_value_list).Insert(0,ValueStack[ValueStack.Depth-6].ex as addressed_value); + (ValueStack[ValueStack.Depth-4].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.stn = new assign_tuple(ValueStack[ValueStack.Depth-4].ob as addressed_value_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 506: // assignment -> variable, tkQuestionSquareOpen, format_expr, tkSquareClose, + // assign_operator, expr +{ + var fe = ValueStack[ValueStack.Depth-4].ex as format_expr; + if (!parsertools.build_tree_for_formatter) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-4]); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-4]); + } + var left = new slice_expr_question(ValueStack[ValueStack.Depth-6].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); + CurrentSemanticValue.stn = new assign(left, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 507: // variable_list -> variable +{ + CurrentSemanticValue.ob = new addressed_value_list(ValueStack[ValueStack.Depth-1].ex as addressed_value,LocationStack[LocationStack.Depth-1]); + } + break; + case 508: // variable_list -> variable_list, tkComma, variable +{ + (ValueStack[ValueStack.Depth-3].ob as addressed_value_list).Add(ValueStack[ValueStack.Depth-1].ex as addressed_value); + (ValueStack[ValueStack.Depth-3].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1]); + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; + } + break; + case 509: // var_ident_list -> tkVar, identifier +{ + CurrentSemanticValue.ob = new ident_list(ValueStack[ValueStack.Depth-1].id,CurrentLocationSpan); + } + break; + case 510: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier +{ + (ValueStack[ValueStack.Depth-4].ob as ident_list).Add(ValueStack[ValueStack.Depth-1].id); + (ValueStack[ValueStack.Depth-4].ob as ident_list).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1]); + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-4].ob; + } + break; + case 511: // proc_call -> var_reference +{ + CurrentSemanticValue.stn = new procedure_call(ValueStack[ValueStack.Depth-1].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex is ident, CurrentLocationSpan); + } + break; + case 512: // goto_stmt -> tkGoto, label_name +{ + CurrentSemanticValue.stn = new goto_statement(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); + } + break; + case 513: // compound_stmt -> tkBegin, stmt_list, tkEnd +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + (CurrentSemanticValue.stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; + (CurrentSemanticValue.stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 514: // stmt_list -> stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, LocationStack[LocationStack.Depth-1]); + } + break; + case 515: // stmt_list -> stmt_list, tkSemiColon, stmt +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as statement_list).Add(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 516: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt +{ + CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); + } + break; + case 517: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt +{ + CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as statement, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 518: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd +{ + CurrentSemanticValue.stn = new match_with(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as pattern_cases, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); + } + break; + case 519: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, + // tkEnd +{ + CurrentSemanticValue.stn = new match_with(ValueStack[ValueStack.Depth-6].ex, ValueStack[ValueStack.Depth-4].stn as pattern_cases, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); + } + break; + case 520: // pattern_cases -> pattern_case +{ + CurrentSemanticValue.stn = new pattern_cases(ValueStack[ValueStack.Depth-1].stn as pattern_case); + } + break; + case 521: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as pattern_cases).Add(ValueStack[ValueStack.Depth-1].stn as pattern_case); + } + break; + case 522: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-5].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); + } + break; + case 523: // pattern_case -> deconstruction_or_const_pattern, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); + } + break; + case 524: // pattern_case -> collection_pattern, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); + } + break; + case 525: // pattern_case -> tuple_pattern, tkWhen, expr_l1, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-5].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); + } + break; + case 526: // pattern_case -> tuple_pattern, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); + } + break; + case 527: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd +{ + CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); + } + break; + case 528: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd +{ + CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-6].ex, ValueStack[ValueStack.Depth-4].stn as case_variants, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); + } + break; + case 529: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd +{ + CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-4].ex, NewCaseItem(new empty_statement(), null), ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); + } + break; + case 530: // case_list -> case_item +{ + if (ValueStack[ValueStack.Depth-1].stn is empty_statement) + CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, null); + else CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 531: // case_list -> case_list, tkSemiColon, case_item +{ + CurrentSemanticValue.stn = AddCaseItem(ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 532: // case_item -> case_label_list, tkColon, unlabelled_stmt +{ + CurrentSemanticValue.stn = new case_variant(ValueStack[ValueStack.Depth-3].stn as expression_list, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 533: // case_label_list -> case_label +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 534: // case_label_list -> case_label_list, tkComma, case_label +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 535: // case_label -> const_elem +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 536: // else_case -> /* empty */ +{ CurrentSemanticValue.stn = null;} + break; + case 537: // else_case -> tkElse, stmt_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 538: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr +{ + CurrentSemanticValue.stn = new repeat_node(ValueStack[ValueStack.Depth-3].stn as statement_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + (ValueStack[ValueStack.Depth-3].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-4].ti; + (ValueStack[ValueStack.Depth-3].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-2].ti; + ValueStack[ValueStack.Depth-3].stn.source_context = LocationStack[LocationStack.Depth-4].Merge(LocationStack[LocationStack.Depth-2]); + } + break; + case 539: // while_stmt -> tkWhile, expr_l1, optional_tk_do, unlabelled_stmt +{ + CurrentSemanticValue.stn = NewWhileStmt(ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 540: // optional_tk_do -> tkDo +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 541: // optional_tk_do -> /* empty */ +{ CurrentSemanticValue.ti = null; } + break; + case 542: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new lock_stmt(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 543: // foreach_stmt -> tkForeach, identifier, foreach_stmt_ident_dype_opt, tkIn, + // expr_l1, tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-6].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + if (ValueStack[ValueStack.Depth-5].td == null) + parsertools.AddWarningFromResource("USING_UNLOCAL_FOREACH_VARIABLE", ValueStack[ValueStack.Depth-6].id.source_context); + } + break; + case 544: // foreach_stmt -> tkForeach, tkVar, identifier, tkColon, type_ref, tkIn, expr_l1, + // tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 545: // foreach_stmt -> tkForeach, tkVar, identifier, tkIn, expr_l1, tkDo, + // unlabelled_stmt +{ + CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-5].id, new no_type_foreach(), ValueStack[ValueStack.Depth-3].ex, (statement)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 546: // foreach_stmt_ident_dype_opt -> tkColon, type_ref +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 548: // for_stmt -> tkFor, optional_var, identifier, for_stmt_decl_or_assign, expr_l1, + // for_cycle_type, expr_l1, optional_tk_do, unlabelled_stmt +{ + CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-8].ob, ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].td, ValueStack[ValueStack.Depth-5].ex, (for_cycle_type)ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 549: // optional_var -> tkVar +{ CurrentSemanticValue.ob = true; } + break; + case 550: // optional_var -> /* empty */ +{ CurrentSemanticValue.ob = false; } + break; + case 552: // for_stmt_decl_or_assign -> tkColon, simple_type_identifier, tkAssign +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; } + break; + case 553: // for_cycle_type -> tkTo +{ CurrentSemanticValue.ob = for_cycle_type.to; } + break; + case 554: // for_cycle_type -> tkDownto +{ CurrentSemanticValue.ob = for_cycle_type.downto; } + break; + case 555: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new with_statement(ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].stn as expression_list, CurrentLocationSpan); + } + break; + case 556: // inherited_message -> tkInherited +{ + CurrentSemanticValue.stn = new inherited_message(); + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 557: // try_stmt -> tkTry, stmt_list, try_handler +{ + CurrentSemanticValue.stn = new try_stmt(ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].stn as try_handler, CurrentLocationSpan); + (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; + ValueStack[ValueStack.Depth-2].stn.source_context = LocationStack[LocationStack.Depth-3].Merge(LocationStack[LocationStack.Depth-2]); + } + break; + case 558: // try_handler -> tkFinally, stmt_list, tkEnd +{ + CurrentSemanticValue.stn = new try_handler_finally(ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); + (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; + (ValueStack[ValueStack.Depth-2].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; + } + break; + case 559: // try_handler -> tkExcept, exception_block, tkEnd +{ + CurrentSemanticValue.stn = new try_handler_except((exception_block)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); + if ((ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list != null) + { + (ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list.source_context = CurrentLocationSpan; + (ValueStack[ValueStack.Depth-2].stn as exception_block).source_context = CurrentLocationSpan; + } + } + break; + case 560: // exception_block -> exception_handler_list, exception_block_else_branch +{ + CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-2].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 561: // exception_block -> exception_handler_list, tkSemiColon, + // exception_block_else_branch +{ + CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-3].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 562: // exception_block -> stmt_list +{ + CurrentSemanticValue.stn = new exception_block(ValueStack[ValueStack.Depth-1].stn as statement_list, null, null, LocationStack[LocationStack.Depth-1]); + } + break; + case 563: // exception_handler_list -> exception_handler +{ + CurrentSemanticValue.stn = new exception_handler_list(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); + } + break; + case 564: // exception_handler_list -> exception_handler_list, tkSemiColon, + // exception_handler +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as exception_handler_list).Add(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); + } + break; + case 565: // exception_block_else_branch -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 566: // exception_block_else_branch -> tkElse, stmt_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 567: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt +{ + CurrentSemanticValue.stn = new exception_handler((ValueStack[ValueStack.Depth-3].stn as exception_ident).variable, (ValueStack[ValueStack.Depth-3].stn as exception_ident).type_name, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 568: // exception_identifier -> exception_class_type_identifier +{ + CurrentSemanticValue.stn = new exception_ident(null, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 569: // exception_identifier -> exception_variable, tkColon, + // exception_class_type_identifier +{ + CurrentSemanticValue.stn = new exception_ident(ValueStack[ValueStack.Depth-3].id, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 570: // exception_class_type_identifier -> simple_type_identifier +{ CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } + break; + case 571: // exception_variable -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 572: // raise_stmt -> tkRaise +{ + CurrentSemanticValue.stn = new raise_stmt(); + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 573: // raise_stmt -> tkRaise, expr +{ + CurrentSemanticValue.stn = new raise_stmt(ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 574: // expr_list -> expr_with_func_decl_lambda +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 575: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 576: // expr_as_stmt -> allowable_expr_as_stmt +{ + CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 577: // allowable_expr_as_stmt -> new_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 578: // expr_with_func_decl_lambda -> expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 579: // expr_with_func_decl_lambda -> func_decl_lambda +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 580: // expr -> expr_l1 +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 581: // expr -> format_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 582: // expr_l1 -> expr_dq +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 583: // expr_l1 -> question_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 584: // expr_l1 -> new_question_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 585: // expr_l1_for_question_expr -> expr_dq +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 586: // expr_l1_for_question_expr -> question_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 587: // expr_l1_for_new_question_expr -> expr_dq +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 588: // expr_l1_for_new_question_expr -> new_question_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 589: // expr_l1_func_decl_lambda -> expr_l1 +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 590: // expr_l1_func_decl_lambda -> func_decl_lambda +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 591: // expr_l1_for_lambda -> expr_dq +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 592: // expr_l1_for_lambda -> question_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 593: // expr_l1_for_lambda -> func_decl_lambda +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 594: // expr_dq -> relop_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 595: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr +{ CurrentSemanticValue.ex = new double_question_node(ValueStack[ValueStack.Depth-3].ex as expression, ValueStack[ValueStack.Depth-1].ex as expression, CurrentLocationSpan);} + break; + case 596: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, + // tkRoundClose +{ + CurrentSemanticValue.ex = new sizeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, null, CurrentLocationSpan); + } + break; + case 597: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, + // tkRoundClose +{ + CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); + } + break; + case 598: // typeof_expr -> tkTypeOf, tkRoundOpen, empty_template_type_reference, + // tkRoundClose +{ + CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); + } + break; + case 599: // question_expr -> expr_l1_for_question_expr, tkQuestion, + // expr_l1_for_question_expr, tkColon, + // expr_l1_for_question_expr +{ + if (ValueStack[ValueStack.Depth-3].ex is nil_const && ValueStack[ValueStack.Depth-1].ex is nil_const) + parsertools.AddErrorFromResource("TWO_NILS_IN_QUESTION_EXPR",LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 600: // new_question_expr -> tkIf, expr_l1_for_new_question_expr, tkThen, + // expr_l1_for_new_question_expr, tkElse, + // expr_l1_for_new_question_expr +{ + if (parsertools.build_tree_for_formatter) + { + CurrentSemanticValue.ex = new if_expr_new(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + else + { + if (ValueStack[ValueStack.Depth-3].ex is nil_const && ValueStack[ValueStack.Depth-1].ex is nil_const) + parsertools.AddErrorFromResource("TWO_NILS_IN_QUESTION_EXPR",LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + } + break; + case 601: // empty_template_type_reference -> simple_type_identifier, + // template_type_empty_params +{ + CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 602: // empty_template_type_reference -> simple_type_identifier, tkAmpersend, + // template_type_empty_params +{ + CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 603: // simple_or_template_type_reference -> simple_type_identifier +{ + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + } + break; + case 604: // simple_or_template_type_reference -> simple_type_identifier, + // template_type_params +{ + CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 605: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, + // template_type_params +{ + CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); + } + break; + case 606: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose +{ + CurrentSemanticValue.stn = new array_const((expression_list)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); + } + break; + case 608: // new_expr -> tkNew, simple_or_template_type_reference, + // optional_expr_list_with_bracket +{ + CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-2].td, ValueStack[ValueStack.Depth-1].stn as expression_list, false, null, CurrentLocationSpan); + } + break; + case 609: // new_expr -> tkNew, simple_or_template_type_reference, tkSquareOpen, + // optional_expr_list, tkSquareClose, optional_array_initializer +{ + var el = ValueStack[ValueStack.Depth-3].stn as expression_list; + if (el == null) + { + var cnt = 0; + var ac = ValueStack[ValueStack.Depth-1].stn as array_const; + if (ac != null && ac.elements != null) + cnt = ac.elements.Count; + else parsertools.AddErrorFromResource("WITHOUT_INIT_AND_SIZE",LocationStack[LocationStack.Depth-2]); + el = new expression_list(new int32_const(cnt),LocationStack[LocationStack.Depth-6]); + } + CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-5].td, el, true, ValueStack[ValueStack.Depth-1].stn as array_const, CurrentLocationSpan); + } + break; + case 610: // new_expr -> tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, + // tkRoundClose +{ + // sugared node + var l = ValueStack[ValueStack.Depth-2].ob as name_assign_expr_list; + var exprs = l.name_expr.Select(x=>x.expr).ToList(); + var typename = "AnonymousType#"+Guid(); + var type = new named_type_reference(typename,LocationStack[LocationStack.Depth-5]); + + // node new_expr - for code generation of new node + var ne = new new_expr(type, new expression_list(exprs), CurrentLocationSpan); + // node unnamed_type_object - for formatting and code generation (new node and Anonymous class) + CurrentSemanticValue.ex = new unnamed_type_object(l, true, ne, CurrentLocationSpan); + } + break; + case 611: // field_in_unnamed_object -> identifier, tkAssign, relop_expr +{ + if (ValueStack[ValueStack.Depth-1].ex is nil_const) + parsertools.AddErrorFromResource("NIL_IN_UNNAMED_OBJECT",CurrentLocationSpan); + CurrentSemanticValue.ob = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 612: // field_in_unnamed_object -> relop_expr +{ + ident name = null; + var id = ValueStack[ValueStack.Depth-1].ex as ident; + dot_node dot; + if (id != null) + name = id; + else + { + dot = ValueStack[ValueStack.Depth-1].ex as dot_node; + if (dot != null) + { + name = dot.right as ident; + } + } + if (name == null) + parsertools.errors.Add(new bad_anon_type(parsertools.CurrentFileName, LocationStack[LocationStack.Depth-1], null)); + CurrentSemanticValue.ob = new name_assign_expr(name,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 613: // list_fields_in_unnamed_object -> field_in_unnamed_object +{ + var l = new name_assign_expr_list(); + CurrentSemanticValue.ob = l.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); + } + break; + case 614: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, + // field_in_unnamed_object +{ + var nel = ValueStack[ValueStack.Depth-3].ob as name_assign_expr_list; + var ss = nel.name_expr.Select(ne=>ne.name.name).FirstOrDefault(x=>string.Compare(x,(ValueStack[ValueStack.Depth-1].ob as name_assign_expr).name.name,true)==0); + if (ss != null) + parsertools.errors.Add(new anon_type_duplicate_name(parsertools.CurrentFileName, LocationStack[LocationStack.Depth-1], null)); + nel.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); + CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; + } + break; + case 615: // optional_expr_list_with_bracket -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 616: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, + // tkRoundClose +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } + break; + case 617: // relop_expr -> simple_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 618: // relop_expr -> relop_expr, relop, simple_expr +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 619: // relop_expr -> relop_expr, relop, new_question_expr +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 620: // relop_expr -> is_type_expr, tkRoundOpen, pattern_out_param_list, tkRoundClose +{ + var isTypeCheck = ValueStack[ValueStack.Depth-4].ex as typecast_node; + var deconstructorPattern = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, isTypeCheck.type_def, null, CurrentLocationSpan); + CurrentSemanticValue.ex = new is_pattern_expr(isTypeCheck.expr, deconstructorPattern, CurrentLocationSpan); + } + break; + case 621: // relop_expr -> term, tkIs, collection_pattern +{ + CurrentSemanticValue.ex = new is_pattern_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 622: // relop_expr -> term, tkIs, tuple_pattern +{ + CurrentSemanticValue.ex = new is_pattern_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 623: // pattern -> simple_or_template_type_reference, tkRoundOpen, + // pattern_out_param_list, tkRoundClose +{ + CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); + } + break; + case 624: // pattern_optional_var -> simple_or_template_type_reference, tkRoundOpen, + // pattern_out_param_list_optional_var, tkRoundClose +{ + CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); + } + break; + case 625: // deconstruction_or_const_pattern -> simple_or_template_type_reference, + // tkRoundOpen, + // pattern_out_param_list_optional_var, + // tkRoundClose +{ + CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); + } + break; + case 626: // deconstruction_or_const_pattern -> const_pattern_expr_list +{ + CurrentSemanticValue.stn = new const_pattern(ValueStack[ValueStack.Depth-1].ob as List, CurrentLocationSpan); + } + break; + case 627: // const_pattern_expr_list -> const_pattern_expression +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn); + } + break; + case 628: // const_pattern_expr_list -> const_pattern_expr_list, tkComma, + // const_pattern_expression +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn); + CurrentSemanticValue.ob = list; + } + break; + case 629: // const_pattern_expression -> literal_or_number +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } + break; + case 630: // const_pattern_expression -> simple_or_template_type_reference +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } + break; + case 631: // const_pattern_expression -> tkNil +{ + CurrentSemanticValue.stn = new nil_const(); + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + break; + case 632: // const_pattern_expression -> sizeof_expr +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } + break; + case 633: // const_pattern_expression -> typeof_expr +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } + break; + case 634: // collection_pattern -> tkSquareOpen, collection_pattern_expr_list, tkSquareClose +{ + CurrentSemanticValue.stn = new collection_pattern(ValueStack[ValueStack.Depth-2].ob as List, CurrentLocationSpan); + } + break; + case 635: // collection_pattern_expr_list -> collection_pattern_list_item +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + } + break; + case 636: // collection_pattern_expr_list -> collection_pattern_expr_list, tkComma, + // collection_pattern_list_item +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 637: // collection_pattern_list_item -> literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 638: // collection_pattern_list_item -> collection_pattern_var_item +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 639: // collection_pattern_list_item -> tkUnderscore +{ + CurrentSemanticValue.stn = new collection_pattern_wild_card(CurrentLocationSpan); + } + break; + case 640: // collection_pattern_list_item -> pattern_optional_var +{ + CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 641: // collection_pattern_list_item -> collection_pattern +{ + CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 642: // collection_pattern_list_item -> tuple_pattern +{ + CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 643: // collection_pattern_list_item -> tkDotDot +{ + CurrentSemanticValue.stn = new collection_pattern_gap_parameter(CurrentLocationSpan); + } + break; + case 644: // collection_pattern_var_item -> tkVar, identifier +{ + CurrentSemanticValue.stn = new collection_pattern_var_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); + } + break; + case 645: // tuple_pattern -> tkRoundOpen, tuple_pattern_item_list, tkRoundClose +{ + if ((ValueStack[ValueStack.Depth-2].ob as List).Count>6) + parsertools.AddErrorFromResource("TUPLE_ELEMENTS_COUNT_MUST_BE_LESSEQUAL_7",CurrentLocationSpan); + CurrentSemanticValue.stn = new tuple_pattern(ValueStack[ValueStack.Depth-2].ob as List, CurrentLocationSpan); + } + break; + case 646: // tuple_pattern_item -> tkUnderscore +{ + CurrentSemanticValue.stn = new tuple_pattern_wild_card(CurrentLocationSpan); + } + break; + case 647: // tuple_pattern_item -> literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 648: // tuple_pattern_item -> sign, literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan), CurrentLocationSpan); + } + break; + case 649: // tuple_pattern_item -> tkVar, identifier +{ + CurrentSemanticValue.stn = new tuple_pattern_var_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); + } + break; + case 650: // tuple_pattern_item -> pattern_optional_var +{ + CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 651: // tuple_pattern_item -> collection_pattern +{ + CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 652: // tuple_pattern_item -> tuple_pattern +{ + CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 653: // tuple_pattern_item_list -> tuple_pattern_item +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + } + break; + case 654: // tuple_pattern_item_list -> tuple_pattern_item_list, tkComma, tuple_pattern_item +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 655: // pattern_out_param_list_optional_var -> pattern_out_param_optional_var +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + } + break; + case 656: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, + // tkSemiColon, + // pattern_out_param_optional_var +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 657: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, + // tkComma, + // pattern_out_param_optional_var +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 658: // pattern_out_param_list -> pattern_out_param +{ + CurrentSemanticValue.ob = new List(); + (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + } + break; + case 659: // pattern_out_param_list -> pattern_out_param_list, tkSemiColon, + // pattern_out_param +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 660: // pattern_out_param_list -> pattern_out_param_list, tkComma, pattern_out_param +{ + var list = ValueStack[ValueStack.Depth-3].ob as List; + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); + CurrentSemanticValue.ob = list; + } + break; + case 661: // pattern_out_param -> tkUnderscore +{ + CurrentSemanticValue.stn = new wild_card_deconstructor_parameter(CurrentLocationSpan); + } + break; + case 662: // pattern_out_param -> literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 663: // pattern_out_param -> tkVar, identifier, tkColon, type_ref +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, true, CurrentLocationSpan); + } + break; + case 664: // pattern_out_param -> tkVar, identifier +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, true, CurrentLocationSpan); + } + break; + case 665: // pattern_out_param -> pattern +{ + CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 666: // pattern_out_param -> collection_pattern +{ + CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 667: // pattern_out_param -> tuple_pattern +{ + CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 668: // pattern_out_param_optional_var -> tkUnderscore +{ + CurrentSemanticValue.stn = new wild_card_deconstructor_parameter(CurrentLocationSpan); + } + break; + case 669: // pattern_out_param_optional_var -> literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 670: // pattern_out_param_optional_var -> sign, literal_or_number +{ + CurrentSemanticValue.stn = new const_pattern_parameter(new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan), CurrentLocationSpan); + } + break; + case 671: // pattern_out_param_optional_var -> identifier, tkColon, type_ref +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, false, CurrentLocationSpan); + } + break; + case 672: // pattern_out_param_optional_var -> identifier +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, false, CurrentLocationSpan); + } + break; + case 673: // pattern_out_param_optional_var -> tkVar, identifier, tkColon, type_ref +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, true, CurrentLocationSpan); + } + break; + case 674: // pattern_out_param_optional_var -> tkVar, identifier +{ + CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, true, CurrentLocationSpan); + } + break; + case 675: // pattern_out_param_optional_var -> pattern_optional_var +{ + CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 676: // pattern_out_param_optional_var -> collection_pattern +{ + CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 677: // pattern_out_param_optional_var -> tuple_pattern +{ + CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); + } + break; + case 678: // simple_expr_or_nothing -> simple_expr +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 679: // simple_expr_or_nothing -> /* empty */ +{ + CurrentSemanticValue.ex = null; + } + break; + case 680: // const_expr_or_nothing -> const_expr +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 681: // const_expr_or_nothing -> /* empty */ +{ + CurrentSemanticValue.ex = null; + } + break; + case 682: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing +{ + CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 683: // format_expr -> tkColon, simple_expr_or_nothing +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 684: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, + // simple_expr +{ + CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 685: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 686: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing +{ + CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 687: // format_const_expr -> tkColon, const_expr_or_nothing +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 688: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing, tkColon, + // const_expr +{ + CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 689: // format_const_expr -> tkColon, const_expr_or_nothing, tkColon, const_expr +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 690: // relop -> tkEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 691: // relop -> tkNotEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 692: // relop -> tkLower +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 693: // relop -> tkGreater +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 694: // relop -> tkLowerEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 695: // relop -> tkGreaterEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 696: // relop -> tkIn +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 697: // simple_expr -> term1 +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 698: // simple_expr -> simple_expr, tkDotDot, term1 +{ + if (parsertools.build_tree_for_formatter) + CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + else + CurrentSemanticValue.ex = new diapason_expr_new(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); + } + break; + case 699: // term1 -> term +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 700: // term1 -> term1, addop, term +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 701: // term1 -> term1, addop, new_question_expr +{ + CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 702: // addop -> tkPlus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 703: // addop -> tkMinus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 704: // addop -> tkOr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 705: // addop -> tkXor +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 706: // addop -> tkCSharpStyleOr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 707: // typecast_op -> tkAs +{ + CurrentSemanticValue.ob = op_typecast.as_op; + } + break; + case 708: // typecast_op -> tkIs +{ + CurrentSemanticValue.ob = op_typecast.is_op; + } + break; + case 709: // as_is_expr -> is_type_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 710: // as_is_expr -> as_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 711: // as_expr -> term, tkAs, simple_or_template_type_reference +{ + CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.as_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 712: // is_type_expr -> term, tkIs, simple_or_template_type_reference +{ + CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.is_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); + } + break; + case 713: // simple_term -> factor +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 714: // power_expr -> simple_term, tkStarStar, factor +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } + break; + case 715: // term -> factor +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 716: // term -> new_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 717: // term -> power_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 718: // term -> term, mulop, factor +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } + break; + case 719: // term -> term, mulop, power_expr +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } + break; + case 720: // term -> term, mulop, new_question_expr +{ CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } + break; + case 721: // term -> as_is_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 722: // mulop -> tkStar +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 723: // mulop -> tkSlash +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 724: // mulop -> tkDiv +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 725: // mulop -> tkMod +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 726: // mulop -> tkShl +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 727: // mulop -> tkShr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 728: // mulop -> tkAnd +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 729: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, + // tkRoundClose +{ + CurrentSemanticValue.ex = new default_operator(ValueStack[ValueStack.Depth-2].td as named_type_reference, CurrentLocationSpan); + } + break; + case 730: // tuple -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, lambda_type_ref, + // optional_full_lambda_fp_list, tkRoundClose +{ + /*if ($5 != null) + parsertools.AddErrorFromResource("BAD_TUPLE",@5); + if ($6 != null) + parsertools.AddErrorFromResource("BAD_TUPLE",@6);*/ + + if ((ValueStack[ValueStack.Depth-4].stn as expression_list).Count>6) + parsertools.AddErrorFromResource("TUPLE_ELEMENTS_COUNT_MUST_BE_LESSEQUAL_7",CurrentLocationSpan); + (ValueStack[ValueStack.Depth-4].stn as expression_list).Insert(0,ValueStack[ValueStack.Depth-6].ex); + CurrentSemanticValue.ex = new tuple_node(ValueStack[ValueStack.Depth-4].stn as expression_list,CurrentLocationSpan); + } + break; + case 731: // factor -> tkNil +{ + CurrentSemanticValue.ex = new nil_const(); + CurrentSemanticValue.ex.source_context = CurrentLocationSpan; + } + break; + case 732: // factor -> literal_or_number +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 733: // factor -> default_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 734: // factor -> tkSquareOpen, elem_list, tkSquareClose +{ + CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 735: // factor -> tkNot, factor +{ + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 736: // factor -> sign, factor +{ + if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) + { + var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; + if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) + { + CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan); + break; + } + var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; + if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) + { + CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan); + break; + } + if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) + { + parsertools.AddErrorFromResource("BAD_INT2",CurrentLocationSpan); + break; + } + // ����� ������� ���������� ��������� � �������������� ������� + } + + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); + } + break; + case 737: // factor -> tkDeref, factor +{ + CurrentSemanticValue.ex = new index(ValueStack[ValueStack.Depth-1].ex, true, CurrentLocationSpan); + } + break; + case 738: // factor -> var_reference +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 739: // factor -> tuple +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 740: // literal_or_number -> literal +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 741: // literal_or_number -> unsigned_number +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 742: // var_question_point -> variable, tkQuestionPoint, variable +{ + CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); + } + break; + case 743: // var_question_point -> variable, tkQuestionPoint, var_question_point +{ + CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); + } + break; + case 744: // var_reference -> var_address, variable +{ + CurrentSemanticValue.ex = NewVarReference(ValueStack[ValueStack.Depth-2].stn as get_address, ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); + } + break; + case 745: // var_reference -> variable +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 746: // var_reference -> var_question_point +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 747: // var_address -> tkAddressOf +{ + CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); + } + break; + case 748: // var_address -> var_address, tkAddressOf +{ + CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); + } + break; + case 749: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket +{ + CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); + } + break; + case 750: // attribute_variable -> template_type, optional_expr_list_with_bracket +{ + CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); + } + break; + case 751: // dotted_identifier -> identifier +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } + break; + case 752: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword +{ + CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); + } + break; + case 753: // variable_as_type -> dotted_identifier +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} + break; + case 754: // variable_as_type -> dotted_identifier, template_type_params +{ CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-2].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } + break; + case 755: // variable_or_literal_or_number -> variable +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 756: // variable_or_literal_or_number -> literal_or_number +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 757: // variable -> identifier +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } + break; + case 758: // variable -> operator_name_ident +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 759: // variable -> tkInherited, identifier +{ + CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); + } + break; + case 760: // variable -> tkRoundOpen, expr, tkRoundClose +{ + if (!parsertools.build_tree_for_formatter) + { + ValueStack[ValueStack.Depth-2].ex.source_context = CurrentLocationSpan; + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; + } + else CurrentSemanticValue.ex = new bracket_expr(ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); + } + break; + case 761: // variable -> sizeof_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 762: // variable -> typeof_expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 763: // variable -> literal_or_number, tkPoint, identifier_or_keyword +{ + CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); + } + break; + case 764: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, + // tkSquareClose +{ + var el = ValueStack[ValueStack.Depth-2].stn as expression_list; // SSM 10/03/16 + if (el.Count==1 && el.expressions[0] is format_expr) + { + var fe = el.expressions[0] as format_expr; + if (!parsertools.build_tree_for_formatter) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + } + CurrentSemanticValue.ex = new slice_expr(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); + } + else CurrentSemanticValue.ex = new indexer(ValueStack[ValueStack.Depth-4].ex as addressed_value, el, CurrentLocationSpan); + } + break; + case 765: // variable -> variable, tkQuestionSquareOpen, format_expr, tkSquareClose +{ + var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; // SSM 9/01/17 + if (!parsertools.build_tree_for_formatter) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); + } + CurrentSemanticValue.ex = new slice_expr_question(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); + } + break; + case 766: // variable -> variable, tkRoundOpen, optional_expr_list, tkRoundClose +{ + CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value,ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + } + break; + case 767: // variable -> variable, tkPoint, identifier_keyword_operatorname +{ + CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); + } + break; + case 768: // variable -> tuple, tkPoint, identifier_keyword_operatorname +{ + CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); + } + break; + case 769: // variable -> variable, tkDeref +{ + CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-2].ex as addressed_value,CurrentLocationSpan); + } + break; + case 770: // variable -> variable, tkAmpersend, template_type_params +{ + CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); + } + break; + case 771: // optional_expr_list -> expr_list +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 772: // optional_expr_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 773: // elem_list -> elem_list1 +{ CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } + break; + case 774: // elem_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 775: // elem_list1 -> elem +{ + CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 776: // elem_list1 -> elem_list1, tkComma, elem +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 777: // elem -> expr +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } + break; + case 778: // elem -> expr, tkDotDot, expr +{ CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } + break; + case 779: // one_literal -> tkStringLiteral +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } + break; + case 780: // one_literal -> tkAsciiChar +{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } + break; + case 781: // literal -> literal_list +{ + CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); + } + break; + case 782: // literal -> tkFormatStringLiteral +{ + if (parsertools.build_tree_for_formatter) + { + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as string_const; + } + else + { + CurrentSemanticValue.ex = NewFormatString(ValueStack[ValueStack.Depth-1].stn as string_const); + } + } + break; + case 783: // literal_list -> one_literal +{ + CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); + } + break; + case 784: // literal_list -> literal_list, one_literal +{ + var line = ValueStack[ValueStack.Depth-2].stn as literal_const_line; + if (line.literals.Last() is string_const && ValueStack[ValueStack.Depth-1].ex is string_const) + parsertools.AddErrorFromResource("TWO_STRING_LITERALS_IN_SUCCESSION",LocationStack[LocationStack.Depth-1]); + CurrentSemanticValue.stn = line.Add(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); + } + break; + case 785: // operator_name_ident -> tkOperator, overload_operator +{ + CurrentSemanticValue.ex = new operator_name_ident((ValueStack[ValueStack.Depth-1].op as op_type_node).text, (ValueStack[ValueStack.Depth-1].op as op_type_node).type, CurrentLocationSpan); + } + break; + case 786: // optional_method_modificators -> tkSemiColon +{ + CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); + } + break; + case 787: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon +{ + //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; + } + break; + case 788: // optional_method_modificators1 -> /* empty */ +{ + CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); + } + break; + case 789: // optional_method_modificators1 -> tkSemiColon, meth_modificators +{ + //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 790: // meth_modificators -> meth_modificator +{ + CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); + } + break; + case 791: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator +{ + CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as procedure_attributes_list).Add(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); + } + break; + case 792: // identifier -> tkIdentifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 793: // identifier -> property_specifier_directives +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 794: // identifier -> non_reserved +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 795: // identifier_or_keyword -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 796: // identifier_or_keyword -> keyword +{ CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } + break; + case 797: // identifier_or_keyword -> reserved_keyword +{ CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } + break; + case 798: // identifier_keyword_operatorname -> identifier +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 799: // identifier_keyword_operatorname -> keyword +{ CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } + break; + case 800: // identifier_keyword_operatorname -> operator_name_ident +{ CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } + break; + case 801: // meth_modificator -> tkAbstract +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 802: // meth_modificator -> tkOverload +{ + CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; + parsertools.AddWarningFromResource("OVERLOAD_IS_NOT_USED", ValueStack[ValueStack.Depth-1].id.source_context); + } + break; + case 803: // meth_modificator -> tkReintroduce +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 804: // meth_modificator -> tkOverride +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 805: // meth_modificator -> tkExtensionMethod +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 806: // meth_modificator -> tkVirtual +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 807: // property_modificator -> tkVirtual +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 808: // property_modificator -> tkOverride +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 809: // property_modificator -> tkAbstract +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 810: // property_modificator -> tkReintroduce +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 811: // property_specifier_directives -> tkRead +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 812: // property_specifier_directives -> tkWrite +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 813: // non_reserved -> tkName +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 814: // non_reserved -> tkNew +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 815: // visibility_specifier -> tkInternal +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 816: // visibility_specifier -> tkPublic +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 817: // visibility_specifier -> tkProtected +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 818: // visibility_specifier -> tkPrivate +{ CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } + break; + case 819: // keyword -> visibility_specifier +{ + CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); + } + break; + case 820: // keyword -> tkSealed +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 821: // keyword -> tkTemplate +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 822: // keyword -> tkOr +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 823: // keyword -> tkTypeOf +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 824: // keyword -> tkSizeOf +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 825: // keyword -> tkDefault +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 826: // keyword -> tkWhere +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 827: // keyword -> tkXor +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 828: // keyword -> tkAnd +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 829: // keyword -> tkDiv +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 830: // keyword -> tkMod +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 831: // keyword -> tkShl +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 832: // keyword -> tkShr +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 833: // keyword -> tkNot +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 834: // keyword -> tkAs +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 835: // keyword -> tkIn +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 836: // keyword -> tkIs +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 837: // keyword -> tkArray +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 838: // keyword -> tkSequence +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 839: // keyword -> tkBegin +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 840: // keyword -> tkCase +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 841: // keyword -> tkClass +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 842: // keyword -> tkConst +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 843: // keyword -> tkConstructor +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 844: // keyword -> tkDestructor +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 845: // keyword -> tkDownto +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 846: // keyword -> tkDo +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 847: // keyword -> tkElse +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 848: // keyword -> tkEnd +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 849: // keyword -> tkExcept +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 850: // keyword -> tkFile +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 851: // keyword -> tkAuto +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 852: // keyword -> tkFinalization +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 853: // keyword -> tkFinally +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 854: // keyword -> tkFor +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 855: // keyword -> tkForeach +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 856: // keyword -> tkFunction +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 857: // keyword -> tkIf +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 858: // keyword -> tkImplementation +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 859: // keyword -> tkInherited +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 860: // keyword -> tkInitialization +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 861: // keyword -> tkInterface +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 862: // keyword -> tkProcedure +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 863: // keyword -> tkProperty +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 864: // keyword -> tkRaise +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 865: // keyword -> tkRecord +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 866: // keyword -> tkRepeat +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 867: // keyword -> tkSet +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 868: // keyword -> tkTry +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 869: // keyword -> tkType +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 870: // keyword -> tkStatic +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 871: // keyword -> tkThen +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 872: // keyword -> tkTo +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 873: // keyword -> tkUntil +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 874: // keyword -> tkUses +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 875: // keyword -> tkVar +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 876: // keyword -> tkWhile +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 877: // keyword -> tkWith +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 878: // keyword -> tkNil +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 879: // keyword -> tkGoto +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 880: // keyword -> tkOf +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 881: // keyword -> tkLabel +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 882: // keyword -> tkProgram +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 883: // keyword -> tkUnit +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 884: // keyword -> tkLibrary +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 885: // keyword -> tkNamespace +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 886: // keyword -> tkExternal +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 887: // keyword -> tkParams +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 888: // keyword -> tkEvent +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 889: // keyword -> tkYield +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 890: // keyword -> tkMatch +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 891: // keyword -> tkWhen +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 892: // keyword -> tkPartial +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 893: // keyword -> tkAbstract +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 894: // keyword -> tkLock +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 895: // keyword -> tkImplicit +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 896: // keyword -> tkExplicit +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } + break; + case 897: // keyword -> tkOn +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 898: // keyword -> tkVirtual +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 899: // keyword -> tkOverride +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 900: // keyword -> tkLoop +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 901: // keyword -> tkExtensionMethod +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 902: // keyword -> tkOverload +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 903: // keyword -> tkReintroduce +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 904: // keyword -> tkForward +{ CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } + break; + case 905: // reserved_keyword -> tkOperator +{ CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } + break; + case 906: // overload_operator -> tkMinus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 907: // overload_operator -> tkPlus +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 908: // overload_operator -> tkSlash +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 909: // overload_operator -> tkStar +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 910: // overload_operator -> tkEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 911: // overload_operator -> tkGreater +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 912: // overload_operator -> tkGreaterEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 913: // overload_operator -> tkLower +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 914: // overload_operator -> tkLowerEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 915: // overload_operator -> tkNotEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 916: // overload_operator -> tkOr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 917: // overload_operator -> tkXor +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 918: // overload_operator -> tkAnd +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 919: // overload_operator -> tkDiv +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 920: // overload_operator -> tkMod +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 921: // overload_operator -> tkShl +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 922: // overload_operator -> tkShr +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 923: // overload_operator -> tkNot +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 924: // overload_operator -> tkIn +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 925: // overload_operator -> tkImplicit +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 926: // overload_operator -> tkExplicit +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 927: // overload_operator -> assign_operator +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 928: // overload_operator -> tkStarStar +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 929: // assign_operator -> tkAssign +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 930: // assign_operator -> tkPlusEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 931: // assign_operator -> tkMinusEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 932: // assign_operator -> tkMultEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 933: // assign_operator -> tkDivEqual +{ CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } + break; + case 934: // func_decl_lambda -> identifier, tkArrow, lambda_function_body +{ + var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); + var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 935: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, + // tkArrow, lambda_function_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 936: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + // lambda_type_ref_noproctype, tkArrow, lambda_function_body +{ + var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); + var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5]); + var formalPars = new formal_parameters(new typed_parameters(idList, ValueStack[ValueStack.Depth-5].td, parametr_kind.none, null, loc), loc); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 937: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + // tkRoundClose, lambda_type_ref_noproctype, tkArrow, + // lambda_function_body +{ + var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); + var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null), parametr_kind.none, null, LocationStack[LocationStack.Depth-7]), LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5])); + for (int i = 0; i < (ValueStack[ValueStack.Depth-5].stn as formal_parameters).Count; i++) + formalPars.Add((ValueStack[ValueStack.Depth-5].stn as formal_parameters).params_list[i]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 938: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + // full_lambda_fp_list, tkRoundClose, + // lambda_type_ref_noproctype, tkArrow, lambda_function_body +{ + var idList = new ident_list(ValueStack[ValueStack.Depth-9].id, LocationStack[LocationStack.Depth-9]); + var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-9],LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7]); + var formalPars = new formal_parameters(new typed_parameters(idList, ValueStack[ValueStack.Depth-7].td, parametr_kind.none, null, loc), LexLocation.MergeAll(LocationStack[LocationStack.Depth-9],LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5])); + for (int i = 0; i < (ValueStack[ValueStack.Depth-5].stn as formal_parameters).Count; i++) + formalPars.Add((ValueStack[ValueStack.Depth-5].stn as formal_parameters).params_list[i]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); + } + break; + case 939: // func_decl_lambda -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, + // lambda_type_ref, optional_full_lambda_fp_list, + // tkRoundClose, rem_lambda +{ + var pair = ValueStack[ValueStack.Depth-1].ob as pair_type_stlist; + + if (ValueStack[ValueStack.Depth-4].td is lambda_inferred_type) + { + var formal_pars = new formal_parameters(); + var idd = ValueStack[ValueStack.Depth-7].ex as ident; + if (idd==null) + parsertools.AddErrorFromResource("ONE_TKIDENTIFIER",LocationStack[LocationStack.Depth-7]); + var lambda_inf_type = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); + var new_typed_pars = new typed_parameters(new ident_list(idd, idd.source_context), lambda_inf_type, parametr_kind.none, null, idd.source_context); + formal_pars.Add(new_typed_pars); + foreach (var id in (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions) + { + var idd1 = id as ident; + if (idd1==null) + parsertools.AddErrorFromResource("ONE_TKIDENTIFIER",id.source_context); + + lambda_inf_type = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); + new_typed_pars = new typed_parameters(new ident_list(idd1, idd1.source_context), lambda_inf_type, parametr_kind.none, null, idd1.source_context); + formal_pars.Add(new_typed_pars); + } + + if (ValueStack[ValueStack.Depth-3].stn != null) + for (int i = 0; i < (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Count; i++) + formal_pars.Add((ValueStack[ValueStack.Depth-3].stn as formal_parameters).params_list[i]); + + formal_pars.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4]); + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formal_pars, pair.tn, pair.exprs, CurrentLocationSpan); + } + else + { + var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5]); + var idd = ValueStack[ValueStack.Depth-7].ex as ident; + if (idd==null) + parsertools.AddErrorFromResource("ONE_TKIDENTIFIER",LocationStack[LocationStack.Depth-7]); + + var idList = new ident_list(idd, loc); + + var iddlist = (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions; + + for (int j = 0; j < iddlist.Count; j++) + { + var idd2 = iddlist[j] as ident; + if (idd2==null) + parsertools.AddErrorFromResource("ONE_TKIDENTIFIER",idd2.source_context); + idList.Add(idd2); + } + var parsType = ValueStack[ValueStack.Depth-4].td; + var formalPars = new formal_parameters(new typed_parameters(idList, parsType, parametr_kind.none, null, loc), LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3])); + + if (ValueStack[ValueStack.Depth-3].stn != null) + for (int i = 0; i < (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Count; i++) + formalPars.Add((ValueStack[ValueStack.Depth-3].stn as formal_parameters).params_list[i]); + + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, pair.tn, pair.exprs, CurrentLocationSpan); + } + } + break; + case 940: // func_decl_lambda -> expl_func_decl_lambda +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 941: // optional_full_lambda_fp_list -> /* empty */ +{ CurrentSemanticValue.stn = null; } + break; + case 942: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 943: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body +{ + CurrentSemanticValue.ob = new pair_type_stlist(ValueStack[ValueStack.Depth-3].td,ValueStack[ValueStack.Depth-1].stn as statement_list); + } + break; + case 944: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, + // lambda_function_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); + } + break; + case 945: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, + // tkArrow, lambda_function_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); + } + break; + case 946: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + // tkRoundClose, lambda_type_ref, tkArrow, + // lambda_function_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); + } + break; + case 947: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); + } + break; + case 948: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + // lambda_procedure_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); + } + break; + case 949: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + // tkRoundClose, tkArrow, lambda_procedure_body +{ + CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-4].stn as formal_parameters, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); + } + break; + case 950: // full_lambda_fp_list -> lambda_simple_fp_sect +{ + var typed_pars = ValueStack[ValueStack.Depth-1].stn as typed_parameters; + if (typed_pars.vars_type is lambda_inferred_type) + { + CurrentSemanticValue.stn = new formal_parameters(); + foreach (var id in typed_pars.idents.idents) + { + var lambda_inf_type = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); + var new_typed_pars = new typed_parameters(new ident_list(id, id.source_context), lambda_inf_type, parametr_kind.none, null, id.source_context); + (CurrentSemanticValue.stn as formal_parameters).Add(new_typed_pars); + } + CurrentSemanticValue.stn.source_context = CurrentLocationSpan; + } + else + { + CurrentSemanticValue.stn = new formal_parameters(typed_pars, CurrentLocationSpan); + } + } + break; + case 951: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect +{ + CurrentSemanticValue.stn =(ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); + } + break; + case 952: // lambda_simple_fp_sect -> ident_list, lambda_type_ref +{ + CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-2].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); + } + break; + case 953: // lambda_type_ref -> /* empty */ +{ + CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); + } + break; + case 954: // lambda_type_ref -> tkColon, fptype +{ + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + } + break; + case 955: // lambda_type_ref_noproctype -> /* empty */ +{ + CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); + } + break; + case 956: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype +{ + CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; + } + break; + case 957: // common_lambda_body -> compound_stmt +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 958: // common_lambda_body -> if_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 959: // common_lambda_body -> while_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 960: // common_lambda_body -> repeat_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 961: // common_lambda_body -> for_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 962: // common_lambda_body -> foreach_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 963: // common_lambda_body -> loop_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 964: // common_lambda_body -> case_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 965: // common_lambda_body -> try_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 966: // common_lambda_body -> lock_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 967: // common_lambda_body -> raise_stmt +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 968: // common_lambda_body -> yield_stmt +{ + parsertools.AddErrorFromResource("YIELD_STATEMENT_CANNOT_BE_USED_IN_LAMBDA_BODY", CurrentLocationSpan); + } + break; + case 969: // lambda_function_body -> expr_l1_for_lambda +{ + var id = SyntaxVisitors.ExprHasNameVisitor.HasName(ValueStack[ValueStack.Depth-1].ex, "Result"); + if (id != null) + { + parsertools.AddErrorFromResource("RESULT_IDENT_NOT_EXPECTED_IN_THIS_CONTEXT", id.source_context); + } + var sl = new statement_list(new assign("result",ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan),CurrentLocationSpan); // ���� �������� ��� � assign ��� ������������������� ��� ������ - ����� ��������� ����� Result + sl.expr_lambda_body = true; + CurrentSemanticValue.stn = sl; + } + break; + case 970: // lambda_function_body -> common_lambda_body +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + case 971: // lambda_procedure_body -> proc_call +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 972: // lambda_procedure_body -> assignment +{ + CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); + } + break; + case 973: // lambda_procedure_body -> common_lambda_body +{ + CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; + } + break; + } + } + + protected override string TerminalToString(int terminal) + { + if (aliasses != null && aliasses.ContainsKey(terminal)) + return aliasses[terminal]; + else if (((Tokens)terminal).ToString() != terminal.ToString(CultureInfo.InvariantCulture)) + return ((Tokens)terminal).ToString(); + else + return CharToString((char)terminal); + } + +} +} diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index b0dfe4bb1..84383c807 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.6.3.2509 +3.6.3.2511 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 77154121e..914aec59f 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.6.3.2509' +!define VERSION '3.6.3.2511' diff --git a/TestSuite/tuptype9.pas b/TestSuite/errors/err0364.pas similarity index 100% rename from TestSuite/tuptype9.pas rename to TestSuite/errors/err0364.pas diff --git a/TestSuite/lambdas_in_generics_2.pas b/TestSuite/lambdas_in_generics_2.pas index 571348b00..e2daf0a14 100644 --- a/TestSuite/lambdas_in_generics_2.pas +++ b/TestSuite/lambdas_in_generics_2.pas @@ -1,10 +1,12 @@ +// Это холостой тест. В оригинале было where G: integer но это мы запретили + type cl = class where T: constructor; - public procedure pr(a: IEnumerable); where G: integer; + public procedure pr(a: IEnumerable); where G: record; begin var tt := a.OrderBy(x -> begin var d: T := new T(); result := x end).ToList; - assert(tt[0] = 1); - assert(tt[1] = 2); - assert(tt[2] = 3); + //assert(tt[0] = 1); + //assert(tt[1] = 2); + //assert(tt[2] = 3); end; end; diff --git a/TestSuite/lambdas_in_generics_3.pas b/TestSuite/lambdas_in_generics_3.pas index 90038dbda..003b0359f 100644 --- a/TestSuite/lambdas_in_generics_3.pas +++ b/TestSuite/lambdas_in_generics_3.pas @@ -1,24 +1,25 @@ -type cl1 = class where T: integer, constructor; +// Это холостой тест. В оригинале было where G: integer но это мы запретили +type cl1 = class where T: record, constructor; private k: T:= new T(); public - function r(gg: G): T; where G: integer; + function r(gg: G): T; where G: record; begin begin var l := Seq(1,2,3); var fff := 5; - var tttt := l.Select(x -> begin fff := fff + 1; result := gg + k + fff + x end).ToList(); - assert(tttt[0] = 72); - assert(tttt[1] = 74); - assert(tttt[2] = 76); + //var tttt := l.Select(x -> begin fff := fff + 1; result := gg + k + fff + x end).ToList(); + //assert(tttt[0] = 72); + //assert(tttt[1] = 74); + //assert(tttt[2] = 76); end; begin var l := Seq(1,2,3); var fff := 5; - var tttt := l.Select(x -> gg + k + fff).ToList(); - assert(tttt[0] = 70); - assert(tttt[1] = 70); - assert(tttt[2] = 70); + //var tttt := l.Select(x -> gg + k + fff).ToList(); + //assert(tttt[0] = 70); + //assert(tttt[1] = 70); + //assert(tttt[2] = 70); end; end; public constructor(a:T); @@ -26,7 +27,7 @@ type cl1 = class where T: integer, constructor; end; end; -procedure pr(a: T); where T: integer, constructor; +procedure pr(a: T); where T: record, constructor; begin var g: cl1 := new cl1(a); g.r(65); diff --git a/TestSuite/lambdas_in_generics_4.pas b/TestSuite/lambdas_in_generics_4.pas index b35757635..e11c1a92c 100644 --- a/TestSuite/lambdas_in_generics_4.pas +++ b/TestSuite/lambdas_in_generics_4.pas @@ -1,8 +1,9 @@ -procedure p(e: IEnumerable); where T:integer, constructor; +// Это холостой тест. В оригинале было where G: integer но это мы запретили +procedure p(e: IEnumerable); where T:record, constructor; begin var kkk := 5; var rr := new List; - for var i := 1 to 4 do + {for var i := 1 to 4 do rr.Add(e.Select(x->begin var tt: T := new T(); var jj := e is IEnumerable; @@ -12,7 +13,7 @@ begin assert(rr[0] = 11); assert(rr[1] = 12); assert(rr[2] = 13); - assert(rr[3] = 14); + assert(rr[3] = 14);} end; begin diff --git a/TestSuite/where7.pas b/TestSuite/where7.pas index 3fa20cba2..f28be1181 100644 --- a/TestSuite/where7.pas +++ b/TestSuite/where7.pas @@ -6,7 +6,7 @@ a: T1; end; - t2=class(t1) where T: t0; end; + t2=class(t1) where T: record; end; begin var a := new t2; diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 511cabdce..634bff36e 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -12541,6 +12541,8 @@ namespace PascalABCCompiler.TreeConverter } else { + if (spec_type.is_value) + AddError(get_location(specificators[i]), "RECORD_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR"); //Тип-предок if (spec_type == SystemLibrary.SystemLibrary.object_type) { diff --git a/TreeConverter/TreeRealization/generics.cs b/TreeConverter/TreeRealization/generics.cs index 887057df0..f41a373ef 100644 --- a/TreeConverter/TreeRealization/generics.cs +++ b/TreeConverter/TreeRealization/generics.cs @@ -151,14 +151,17 @@ namespace PascalABCCompiler.TreeRealization { return new SimpleSemanticError(null, "PARAMETER_{0}_MUST_BE_REFERENCE_TYPE", tn.PrintableName); } - if (gpe.is_value && (!tn.is_value || tn.BaseFullName != null && tn.BaseFullName.StartsWith("System.Nullable")) && !tn.is_generic_parameter) + if (gpe.is_value && (!tn.is_value || tn.BaseFullName != null && tn.BaseFullName.StartsWith("System.Nullable")) /*&& !tn.is_generic_parameter*/) { return new SimpleSemanticError(null, "PARAMETER_{0}_MUST_BE_VALUE_TYPE", tn.PrintableName); } - if (gpe.base_class != null && gpe.base_class != SystemLibrary.SystemLibrary.object_type) + if (gpe.base_class != null && gpe.base_class != SystemLibrary.SystemLibrary.object_type && !tn.is_value) { type_node base_type = generic_convertions.determine_type(gpe.base_class, tparams, method_param_types); - if (base_type != tn && !type_table.is_derived(base_type, tn) && !tn.is_generic_parameter) + // Если tn не соврадает со своим базовым типом и + // tn не наследуется от base_type и + // tn - не generic параметр - закомментировал + if (base_type != tn && !type_table.is_derived(base_type, tn) /*&& !tn.is_generic_parameter*/) { return new SimpleSemanticError(null, "PARAMETER_{0}_MUST_BE_DERIVED_FROM_{1}", tn.PrintableName, base_type.name); } diff --git a/bin/Lng/Eng/SemanticErrors_ssyy.dat b/bin/Lng/Eng/SemanticErrors_ssyy.dat index dab1ef7e0..19c8811cb 100644 --- a/bin/Lng/Eng/SemanticErrors_ssyy.dat +++ b/bin/Lng/Eng/SemanticErrors_ssyy.dat @@ -53,6 +53,7 @@ PARENT_SPECIFICATOR_MUST_BE_FIRST=The parent constraint must be the first constr CLASS_OR_RECORD_SPECIFICATOR_MUST_BE_FIRST=The class/record constraint must be the first constrained specified CONSTRUCTOR_SPECIFICATOR_MUST_BE_LAST=The constructor constraint must be the last constrained specified OBJECT_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Constraint cannot be special class 'object' +RECORD_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Constraint cannot be record TYPE_{0}_DERIVED_FROM_ITSELF=Circular base class dependency AMBIGUITY_BETWEEN_NAMES_{0}_AND_{1}= {0} {1} POINTERS_OF_GENERIC_PARAMETERS_NOT_ALLOWED=Cannot declare a pointer to generic parameter diff --git a/bin/Lng/Rus/SemanticErrors_ssyy.dat b/bin/Lng/Rus/SemanticErrors_ssyy.dat index efa48c04a..56ace9523 100644 --- a/bin/Lng/Rus/SemanticErrors_ssyy.dat +++ b/bin/Lng/Rus/SemanticErrors_ssyy.dat @@ -53,6 +53,7 @@ PARENT_SPECIFICATOR_MUST_BE_FIRST=Спецификатор предка долж CLASS_OR_RECORD_SPECIFICATOR_MUST_BE_FIRST=Спецификатор class/record должен быть первым в списке CONSTRUCTOR_SPECIFICATOR_MUST_BE_LAST=Спецификатор constructor должен быть последним в списке OBJECT_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Тип object не может быть использован для указания предка шаблонного параметра +RECORD_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Тип записи не может быть использован для указания предка шаблонного параметра TYPE_{0}_DERIVED_FROM_ITSELF=Тип {0} наследуется циклически от самого себя AMBIGUITY_BETWEEN_NAMES_{0}_AND_{1}=Двусмысленность между именами {0} и {1} POINTERS_OF_GENERIC_PARAMETERS_NOT_ALLOWED=Указатели на параметр generic-типа недопустимы