diff --git a/CHANGELOG.md b/CHANGELOG.md index 5eba96f3b..2baf74921 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,16 @@ All notable changes to this project will be documented in this file. - Export AS1/2 P-code as GraphViz - Display better Graph using GraphViz (Must be configured in Advanced settings / Path) - Copy AS1/2 Graph source (GraphViz) to clipboard - rightclick menu on graph +- AS1 slash syntax support (decompilation, direct editation) ### Changed - AS1/2 Better unresolved constant handling - §§constant(xx) func instead of §§constantxx +- AS1/2 Using eval, set functions on obfuscated names instead of §§ syntax ### Fixed - Better continue in for handling -- Using temporary registers after for..in (causing §§pop instructions, etc.) +- AS1/2 Using temporary registers after for..in (causing incorrect chained assignments handling, etc.) +- AS1/2 getProperty, setProperty handling ## [11.1.0] - 2018-05-24 ### Added diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index 2337f7427..6be92c758 100644 Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ diff --git a/libsrc/ffdec_lib/lexers/actionscript_script.flex b/libsrc/ffdec_lib/lexers/actionscript_script.flex index d505ca80f..c540d10d1 100644 --- a/libsrc/ffdec_lib/lexers/actionscript_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript_script.flex @@ -105,15 +105,9 @@ EndOfLineComment = "//" {InputCharacter}* {LineTerminator}? /* identifiers */ Identifier = [:jletter:][:jletterdigit:]* -IdentifierNs = {Identifier} ":" {Identifier} +IdentifierOrParent = {Identifier} | ".." -TypeNameSpec = ".<" {Identifier} ">" - -/* XML */ -XMLIdentifier = {Identifier} | {IdentifierNs} -XMLAttribute = " "* {XMLIdentifier} " "* "=" " "* \" {InputCharacter}* \" " "* -XMLBeginOneTag = "<" {XMLIdentifier} {XMLAttribute}* ">" -XMLEndTag = "" +Path = "/" | "/"? {IdentifierOrParent} ("/" {IdentifierOrParent})* "/"? /* integer literals */ DecIntegerLiteral = 0 | [1-9][0-9]* @@ -337,40 +331,11 @@ Preprocessor = \u00A7\u00A7 {Identifier} {LineTerminator} { yyline++;} /* whitespace */ {WhiteSpace} { /*ignore*/ } - {TypeNameSpec} { String t = yytext(); return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); } - {XMLBeginOneTag} {string.setLength(0); - yybegin(XML); - String s = yytext(); - s = s.substring(1, s.length() - 1); - if (s.contains(" ")){ - s = s.substring(0, s.indexOf(' ')); - } - xmlTagName = s; - string.append(yytext()); - } /* identifiers */ {Identifier} { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } + {Path} { return new ParsedSymbol(SymbolGroup.PATH, SymbolType.PATH, yytext()); } } - { - {XMLAttribute} { string.append(yytext());} - {LineTerminator} { string.append(yytext()); yyline++;} - {WhiteSpace} { string.append(yytext()); } - ">" { yybegin(XML); string.append(yytext());} -} - { - {XMLBeginOneTag} { string.append(yytext());} - {XMLEndTag} { string.append(yytext()); - String endtagname = yytext(); - endtagname = endtagname.substring(2, endtagname.length() - 1); - if (endtagname.equals(xmlTagName)){ - yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); - } - } - {LineTerminator} { string.append(yytext()); yyline++;} - [^] { string.append(yytext()); } -} { "\u00A7" { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java index f29fd5e71..c762726b0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/IdentifiersDeobfuscation.java @@ -238,6 +238,46 @@ public class IdentifiersDeobfuscation { return null; } + private static boolean isValidSlashPath(String s, String... exceptions) { + String[] slashParts = s.split("\\/"); + if (s.isEmpty()) { + return false; + } + for (int p = 0; p < slashParts.length; p++) { + String part = slashParts[p]; + if (p == 0 && part.isEmpty()) { + continue; + } + if (part.isEmpty() && p < slashParts.length - 1) { // two slashesh xx//yy + return false; + } + if ("..".equals(part)) { + continue; //okay + } + if (!isValidName(false, part, exceptions)) { + return false; + } + } + return true; + } + + public static boolean isValidNameWithSlash(String s, String... exceptions) { + if (s.contains(":")) { + String pathVar[] = s.split(":"); + if (!isValidSlashPath(pathVar[0], exceptions)) { + return false; + } + for (int i = 1; i < pathVar.length; i++) { + if (!isValidName(false, pathVar[i], exceptions)) { + return false; + } + } + return true; + } else { + return isValidName(false, s, exceptions); + } + } + public static boolean isValidNameWithDot(boolean as3, String s, String... exceptions) { for (String e : exceptions) { if (e.equals(s)) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java index 2949dabad..a64db6f10 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/CallFunctionActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.IdentifiersDeobfuscation; @@ -60,7 +61,14 @@ public class CallFunctionActionItem extends ActionItem { srcData.localName = functionName.toStringNoQuotes(localData); if (functionName instanceof DirectValueActionItem) { - writer.append(IdentifiersDeobfuscation.printIdentifier(false, (functionName).toStringNoQuotes(localData))); + if (!IdentifiersDeobfuscation.isValidName(false, (functionName).toStringNoQuotes(localData))) { + writer.append("eval("); + functionName.toString(writer, localData); + writer.append(")"); + } else { + functionName.toStringNoQuotes(writer, localData); + } + //writer.append(IdentifiersDeobfuscation.printIdentifier(false, (functionName).toStringNoQuotes(localData))); } else { functionName.appendTry(writer, localData); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java index f8bb3dcf1..83ac0badc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetPropertyActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; @@ -57,8 +58,20 @@ public class GetPropertyActionItem extends ActionItem { if (isEmptyString(target)) { return writer.append(Action.propertyNames[propertyIndex]); } - target.toString(writer, localData); - return writer.append(".").append(Action.propertyNames[propertyIndex]); + + if ((target instanceof DirectValueActionItem) && ((DirectValueActionItem) target).isString()) { + target.toStringNoQuotes(writer, localData); + return writer.append(":" + Action.propertyNames[propertyIndex]); + } + + writer.append("getProperty"); + writer.spaceBeforeCallParenthesies(2); + writer.append("("); + target.appendTo(writer, localData); + writer.append(", "); + writer.append(Action.propertyNames[propertyIndex]); + writer.append(")"); + return writer; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java index e400b7201..d0836653d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.IdentifiersDeobfuscation; @@ -66,20 +67,17 @@ public class GetVariableActionItem extends ActionItem { @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - - if (((name instanceof DirectValueActionItem)) && (((DirectValueActionItem) name).isString()) && (!IdentifiersDeobfuscation.isValidNameWithDot(false, ((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super"))) { + if ((name instanceof DirectValueActionItem) && (((DirectValueActionItem) name).isString()) && (IdentifiersDeobfuscation.isValidNameWithDot(false, ((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super") + || IdentifiersDeobfuscation.isValidNameWithSlash(((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super"))) { HighlightData srcData = getSrcData(); srcData.localName = name.toStringNoQuotes(localData); - - return IdentifiersDeobfuscation.appendObfuscatedIdentifier(((DirectValueActionItem) name).toStringNoQuotes(localData), writer); - } else if ((!(name instanceof DirectValueActionItem)) || (!((DirectValueActionItem) name).isString())) { + return stripQuotes(name, localData, writer); + } else { writer.append("eval("); name.appendTry(writer, localData); return writer.append(")"); } - HighlightData srcData = getSrcData(); - srcData.localName = name.toStringNoQuotes(localData); - return stripQuotes(name, localData, writer); + //IdentifiersDeobfuscation.appendObfuscatedIdentifier(((DirectValueActionItem) name).toStringNoQuotes(localData), writer); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetPropertyActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetPropertyActionItem.java index c366d4730..eab30b39f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetPropertyActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetPropertyActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.SourceGeneratorLocalData; @@ -81,9 +82,23 @@ public class SetPropertyActionItem extends ActionItem implements SetTypeActionIt writer.append(Action.propertyNames[propertyIndex]).append(" = "); return value.toString(writer, localData); } - target.toString(writer, localData); - writer.append("." + Action.propertyNames[propertyIndex]).append(" = "); - return value.toString(writer, localData); + + if ((target instanceof DirectValueActionItem) && ((DirectValueActionItem) target).isString()) { + target.toStringNoQuotes(writer, localData); + writer.append(":" + Action.propertyNames[propertyIndex]).append(" = "); + return value.toString(writer, localData); + } + + writer.append("setProperty"); + writer.spaceBeforeCallParenthesies(3); + writer.append("("); + target.appendTo(writer, localData); + writer.append(", "); + writer.append(Action.propertyNames[propertyIndex]); + writer.append(", "); + value.appendTo(writer, localData); + writer.append(")"); + return writer; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetVariableActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetVariableActionItem.java index 8094210db..2f6893d59 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetVariableActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/SetVariableActionItem.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.model; import com.jpexs.decompiler.flash.IdentifiersDeobfuscation; @@ -76,14 +77,15 @@ public class SetVariableActionItem extends ActionItem implements SetTypeActionIt @Override public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException { - if (((name instanceof DirectValueActionItem)) && (((DirectValueActionItem) name).isString()) && (!IdentifiersDeobfuscation.isValidName(false, ((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super"))) { + if (((name instanceof DirectValueActionItem)) && (((DirectValueActionItem) name).isString()) + && (IdentifiersDeobfuscation.isValidName(false, ((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super") + || IdentifiersDeobfuscation.isValidNameWithSlash(((DirectValueActionItem) name).toStringNoQuotes(localData), "this", "super"))) { HighlightData srcData = getSrcData(); srcData.localName = name.toStringNoQuotes(localData); - - IdentifiersDeobfuscation.appendObfuscatedIdentifier(((DirectValueActionItem) name).toStringNoQuotes(localData), writer); + stripQuotes(name, localData, writer); writer.append(" = "); return value.toString(writer, localData); - } else if ((!(name instanceof DirectValueActionItem)) || (!((DirectValueActionItem) name).isString())) { + } else { writer.append("set"); writer.spaceBeforeCallParenthesies(2); writer.append("("); @@ -92,12 +94,7 @@ public class SetVariableActionItem extends ActionItem implements SetTypeActionIt value.toString(writer, localData); return writer.append(")"); } - HighlightData srcData = getSrcData(); - srcData.localName = name.toStringNoQuotes(localData); - - stripQuotes(name, localData, writer); - writer.append(" = "); - return value.toString(writer, localData); + //IdentifiersDeobfuscation.appendObfuscatedIdentifier(((DirectValueActionItem) name).toStringNoQuotes(localData), writer); } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index 52862a607..549578acb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -33,6 +33,7 @@ import com.jpexs.decompiler.flash.action.model.EvalActionItem; import com.jpexs.decompiler.flash.action.model.FSCommandActionItem; import com.jpexs.decompiler.flash.action.model.FunctionActionItem; import com.jpexs.decompiler.flash.action.model.GetMemberActionItem; +import com.jpexs.decompiler.flash.action.model.GetPropertyActionItem; import com.jpexs.decompiler.flash.action.model.GetTimeActionItem; import com.jpexs.decompiler.flash.action.model.GetURL2ActionItem; import com.jpexs.decompiler.flash.action.model.GetVariableActionItem; @@ -63,6 +64,7 @@ import com.jpexs.decompiler.flash.action.model.RandomNumberActionItem; import com.jpexs.decompiler.flash.action.model.RemoveSpriteActionItem; import com.jpexs.decompiler.flash.action.model.ReturnActionItem; import com.jpexs.decompiler.flash.action.model.SetMemberActionItem; +import com.jpexs.decompiler.flash.action.model.SetPropertyActionItem; import com.jpexs.decompiler.flash.action.model.SetVariableActionItem; import com.jpexs.decompiler.flash.action.model.StartDragActionItem; import com.jpexs.decompiler.flash.action.model.StopActionItem; @@ -1784,10 +1786,18 @@ public class ActionScript2Parser { case IDENTIFIER: case THIS: case SUPER: + case PATH: if (s.value.equals("not")) { ret = new NotItem(null, null, expressionPrimary(false, inFunction, inMethod, false, variables, functions)); } else { - ret = new VariableActionItem(s.value.toString(), null, false); + if (s.type == SymbolType.PATH) { + expectedType(SymbolType.COLON); + ParsedSymbol s2 = lex(); + expected(s2, lexer.yyline(), SymbolType.IDENTIFIER); + ret = new VariableActionItem(s.value.toString() + ":" + s2.value.toString(), null, false); + } else { + ret = new VariableActionItem(s.value.toString(), null, false); + } variables.add((VariableActionItem) ret); allowMemberOrCall = true; } @@ -1877,10 +1887,34 @@ public class ActionScript2Parser { for (VariableActionItem v : vars) { String varName = v.getVariableName(); GraphTargetItem stored = v.getStoreValue(); + int propIndex = -1; + boolean hasSubVars = false; + if (varName.contains(":")) { + hasSubVars = true; + String lowerNameStr = varName.toLowerCase(); + for (int p = 0; p < Action.propertyNames.length; p++) { + String prop = Action.propertyNames[p]; + if (lowerNameStr.endsWith(":" + prop.toLowerCase())) { + propIndex = p; + varName = varName.substring(0, varName.lastIndexOf(":")); + break; + } + } + } if (v.isDefinition()) { + if (hasSubVars) { + throw new ActionParseException("Invalid : character in variable definition", lexer.yyline()); + } v.setBoxedValue(new DefineLocalActionItem(null, null, pushConst(varName), stored)); } else if (stored != null) { - v.setBoxedValue(new SetVariableActionItem(null, null, pushConst(varName), stored)); + if (propIndex > -1) { + v.setBoxedValue(new SetPropertyActionItem(null, null, pushConst(varName), propIndex, stored)); + } else { + v.setBoxedValue(new SetVariableActionItem(null, null, pushConst(varName), stored)); + } + + } else if (propIndex > -1) { + v.setBoxedValue(new GetPropertyActionItem(null, null, pushConst(varName), propIndex)); } else { v.setBoxedValue(new GetVariableActionItem(null, null, pushConst(varName))); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index 78c73c497..912843a80 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -1,1262 +1,1237 @@ +/* The following code was generated by JFlex 1.6.0 */ + /* - * Copyright (C) 2010-2018 JPEXS, All rights reserved. - * + * Copyright (C) 2010-2016 JPEXS, All rights reserved. + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.parser.script; - import com.jpexs.decompiler.flash.action.parser.ActionParseException; import java.util.ArrayList; import java.util.List; import java.util.Stack; + /** - * This class is a scanner generated by - * JFlex 1.6.0 from the specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_script.flex + * This class is a scanner generated by + * JFlex 1.6.0 + * from the specification file D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_script.flex */ public final class ActionScriptLexer { - /** - * This character denotes the end of file - */ - public static final int YYEOF = -1; + /** This character denotes the end of file */ + public static final int YYEOF = -1; - /** - * initial size of the lookahead buffer - */ - private static final int ZZ_BUFFERSIZE = 16384; + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; - /** - * lexical states - */ - public static final int YYINITIAL = 0; + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int STRING = 2; + public static final int CHARLITERAL = 4; + public static final int XMLSTARTTAG = 6; + public static final int XML = 8; + public static final int OIDENTIFIER = 10; - public static final int STRING = 2; + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4 + }; - public static final int CHARLITERAL = 4; + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\7\1\3\1\2\1\120\1\121\1\1\16\7\4\0\1\3\1\106"+ + "\1\21\1\0\1\6\1\116\1\112\1\22\1\73\1\74\1\5\1\114"+ + "\1\102\1\20\1\10\1\4\1\11\3\15\4\16\2\12\1\111\1\101"+ + "\1\105\1\103\1\104\1\110\1\117\1\55\1\14\1\65\1\66\1\17"+ + "\1\57\1\6\1\61\1\72\2\6\1\63\1\64\1\71\1\6\1\70"+ + "\1\62\1\6\1\56\1\60\1\54\1\67\1\6\1\13\2\6\1\77"+ + "\1\23\1\100\1\115\1\6\1\0\1\30\1\25\1\32\1\41\1\27"+ + "\1\42\1\53\1\45\1\37\1\6\1\31\1\43\1\50\1\35\1\34"+ + "\1\46\1\6\1\26\1\33\1\36\1\40\1\51\1\44\1\52\1\47"+ + "\1\6\1\75\1\113\1\76\1\107\6\7\1\122\32\7\2\0\4\6"+ + "\1\0\1\24\2\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6"+ + "\5\0\27\6\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6"+ + "\7\0\1\6\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0"+ + "\4\6\10\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0"+ + "\123\6\1\0\213\6\1\0\5\7\2\0\236\6\11\0\46\6\2\0"+ + "\1\6\7\0\47\6\7\0\1\6\1\0\55\7\1\0\1\7\1\0"+ + "\2\7\1\0\2\7\1\0\1\7\10\0\33\6\5\0\3\6\15\0"+ + "\5\7\6\0\1\6\4\0\13\7\5\0\53\6\37\7\4\0\2\6"+ + "\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6\2\7\1\0"+ + "\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7\1\6\1\7"+ + "\36\6\33\7\2\0\131\6\13\7\1\6\16\0\12\7\41\6\11\7"+ + "\2\6\4\0\1\6\5\0\26\6\4\7\1\6\11\7\1\6\3\7"+ + "\1\6\5\7\22\0\31\6\3\7\104\0\1\6\1\0\13\6\67\0"+ + "\33\7\1\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6"+ + "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\3\7\1\0"+ + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0"+ + "\4\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\1\6"+ + "\10\0\1\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\4\6"+ + "\7\0\1\6\5\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6"+ + "\1\0\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7"+ + "\1\0\5\7\4\0\2\7\2\0\3\7\3\0\1\7\7\0\4\6"+ + "\1\0\1\6\7\0\14\7\3\6\1\7\13\0\3\7\1\0\11\6"+ + "\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6"+ + "\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7\2\0\1\6"+ + "\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0"+ + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0"+ + "\5\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\10\0"+ + "\2\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\1\0\1\6"+ + "\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0"+ + "\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0"+ + "\14\6\4\0\5\7\3\0\3\7\1\0\4\7\2\0\1\6\6\0"+ + "\1\7\16\0\12\7\11\0\1\6\7\0\3\7\1\0\10\6\1\0"+ + "\3\6\1\0\27\6\1\0\12\6\1\0\5\6\3\0\1\6\7\7"+ + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6"+ + "\2\7\2\0\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0"+ + "\27\6\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0"+ + "\3\7\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7"+ + "\2\0\12\7\1\0\2\6\17\0\2\7\1\0\10\6\1\0\3\6"+ + "\1\0\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6"+ + "\10\0\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0"+ + "\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0"+ + "\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0"+ + "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7\1\0"+ + "\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6\2\0"+ + "\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6\1\0"+ + "\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0\2\7"+ + "\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7\2\0"+ + "\4\6\40\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7\1\0"+ + "\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0\24\7"+ + "\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0\53\6"+ + "\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6\3\7"+ + "\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0\46\6"+ + "\1\0\1\6\5\0\1\6\2\0\53\6\1\0\u014d\6\1\0\4\6"+ + "\2\0\7\6\1\0\1\6\1\0\4\6\2\0\51\6\1\0\4\6"+ + "\2\0\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6"+ + "\2\0\17\6\1\0\71\6\1\0\4\6\2\0\103\6\2\0\3\7"+ + "\40\0\20\6\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0\32\6"+ + "\5\0\113\6\3\0\3\6\17\0\15\6\1\0\4\6\3\7\13\0"+ + "\22\6\3\7\13\0\22\6\2\7\14\0\15\6\1\0\3\6\1\0"+ + "\2\7\14\0\64\6\40\7\3\0\1\6\3\0\2\6\1\7\2\0"+ + "\12\7\41\0\3\7\2\0\12\7\6\0\130\6\10\0\51\6\1\7"+ + "\1\6\5\0\106\6\12\0\35\6\3\0\14\7\4\0\14\7\12\0"+ + "\12\7\36\6\2\0\5\6\13\0\54\6\4\0\21\7\7\6\2\7"+ + "\6\0\12\7\46\0\27\6\5\7\4\0\65\6\12\7\1\0\35\7"+ + "\2\0\13\7\6\0\12\7\15\0\1\6\130\0\5\7\57\6\21\7"+ + "\7\6\4\0\12\7\21\0\11\7\14\0\3\7\36\6\15\7\2\6"+ + "\12\7\54\6\16\7\14\0\44\6\24\7\10\0\12\7\3\0\3\6"+ + "\12\7\44\6\122\0\3\7\1\0\25\7\4\6\1\7\4\6\3\7"+ + "\2\6\11\0\300\6\47\7\25\0\4\7\u0116\6\2\0\6\6\2\0"+ + "\46\6\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0"+ + "\1\6\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0"+ + "\3\6\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0"+ + "\3\6\1\0\7\6\16\0\5\7\30\0\1\120\1\120\5\7\20\0"+ + "\2\6\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0"+ + "\1\6\20\0\15\6\3\0\33\6\25\0\15\7\4\0\1\7\3\0"+ + "\14\7\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0"+ + "\5\6\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0"+ + "\13\6\2\0\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0"+ + "\57\6\1\0\57\6\1\0\205\6\6\0\4\6\3\7\2\6\14\0"+ + "\46\6\1\0\1\6\5\0\1\6\2\0\70\6\7\0\1\6\17\0"+ + "\1\7\27\6\11\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6"+ + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\40\7"+ + "\57\0\1\6\u01d5\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0"+ + "\5\6\4\0\126\6\2\0\2\7\2\0\3\6\1\0\132\6\1\0"+ + "\4\6\5\0\51\6\3\0\136\6\21\0\33\6\65\0\20\6\u0200\0"+ + "\u19b6\6\112\0\u51cd\6\63\0\u048d\6\103\0\56\6\2\0\u010d\6\3\0"+ + "\20\6\12\7\2\6\24\0\57\6\1\7\4\0\12\7\1\0\31\6"+ + "\7\0\1\7\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6"+ + "\1\0\4\6\14\0\13\6\115\0\12\6\1\7\3\6\1\7\4\6"+ + "\1\7\27\6\5\7\20\0\1\6\7\0\64\6\14\0\2\7\62\6"+ + "\21\7\13\0\12\7\6\0\22\7\6\6\3\0\1\6\4\0\12\7"+ + "\34\6\10\7\2\0\27\6\15\7\14\0\35\6\3\0\4\7\57\6"+ + "\16\7\16\0\1\6\12\7\46\0\51\6\16\7\11\0\3\6\1\7"+ + "\10\6\2\7\2\0\12\7\6\0\27\6\3\0\1\6\1\7\4\0"+ + "\60\6\1\7\1\6\3\7\2\6\2\7\5\6\2\7\1\6\1\7"+ + "\1\6\30\0\3\6\2\0\13\6\5\7\2\0\3\6\2\7\12\0"+ + "\6\6\2\0\6\6\2\0\6\6\11\0\7\6\1\0\7\6\221\0"+ + "\43\6\10\7\1\0\2\7\2\0\12\7\6\0\u2ba4\6\14\0\27\6"+ + "\4\0\61\6\u2104\0\u016e\6\2\0\152\6\46\0\7\6\14\0\5\6"+ + "\5\0\1\6\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6"+ + "\1\0\2\6\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6"+ + "\2\0\66\6\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6"+ + "\30\0\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7"+ + "\4\0\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6"+ + "\13\0\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6"+ + "\3\0\2\6\3\0\2\6\22\0\3\7\4\0\14\6\1\0\32\6"+ + "\1\0\23\6\1\0\2\6\1\0\17\6\2\0\16\6\42\0\173\6"+ + "\105\0\65\6\210\0\1\7\202\0\35\6\3\0\61\6\57\0\37\6"+ + "\21\0\33\6\65\0\36\6\2\0\44\6\4\0\10\6\1\0\5\6"+ + "\52\0\236\6\2\0\12\7\u0356\0\6\6\2\0\1\6\1\0\54\6"+ + "\1\0\2\6\3\0\1\6\2\0\27\6\252\0\26\6\12\0\32\6"+ + "\106\0\70\6\6\0\2\6\100\0\1\6\3\7\1\0\2\7\5\0"+ + "\4\7\4\6\1\0\3\6\1\0\33\6\4\0\3\7\4\0\1\7"+ + "\40\0\35\6\203\0\66\6\12\0\26\6\12\0\23\6\215\0\111\6"+ + "\u03b7\0\3\7\65\6\17\7\37\0\12\7\20\0\3\7\55\6\13\7"+ + "\2\0\1\7\22\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7"+ + "\1\0\12\7\100\0\3\7\60\6\16\7\4\6\13\0\12\7\u04a6\0"+ + "\53\6\15\7\10\0\12\7\u0936\0\u036f\6\221\0\143\6\u0b9d\0\u042f\6"+ + "\u33d1\0\u0239\6\u04c7\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6"+ + "\u4060\0\2\6\u2163\0\5\7\3\0\26\7\2\0\7\7\36\0\4\7"+ + "\224\0\3\7\u01bb\0\125\6\1\0\107\6\1\0\2\6\2\0\1\6"+ + "\2\0\2\6\2\0\4\6\1\0\14\6\1\0\1\6\1\0\7\6"+ + "\1\0\101\6\1\0\4\6\2\0\10\6\1\0\7\6\1\0\34\6"+ + "\1\0\4\6\1\0\5\6\1\0\1\6\3\0\7\6\1\0\u0154\6"+ + "\2\0\31\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6"+ + "\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6"+ + "\1\0\10\6\2\0\62\7\u1600\0\4\6\1\0\33\6\1\0\2\6"+ + "\1\0\1\6\2\0\1\6\1\0\12\6\1\0\4\6\1\0\1\6"+ + "\1\0\1\6\6\0\1\6\4\0\1\6\1\0\1\6\1\0\1\6"+ + "\1\0\3\6\1\0\2\6\1\0\1\6\2\0\1\6\1\0\1\6"+ + "\1\0\1\6\1\0\1\6\1\0\1\6\1\0\2\6\1\0\1\6"+ + "\2\0\4\6\1\0\7\6\1\0\4\6\1\0\4\6\1\0\1\6"+ + "\1\0\12\6\1\0\21\6\5\0\3\6\1\0\5\6\1\0\21\6"+ + "\u1144\0\ua6d7\6\51\0\u1035\6\13\0\336\6\u3fe2\0\u021e\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0"+ + "\1\7\36\0\140\7\200\0\360\7\uffff\0\uffff\0\ufe12\0"; - public static final int XMLSTARTTAG = 6; + /** + * Translates characters to character classes + */ + private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - public static final int XML = 8; + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - public static final int OIDENTIFIER = 10; + private static final String ZZ_ACTION_PACKED_0 = + "\5\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7"+ + "\2\10\1\11\1\12\1\13\1\14\26\6\1\15\1\16"+ + "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ + "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36"+ + "\1\37\1\40\1\41\1\42\2\43\1\44\1\1\1\42"+ + "\1\1\1\42\1\1\1\45\1\3\1\0\1\46\1\0"+ + "\1\47\1\50\2\46\1\51\1\52\1\51\1\0\2\52"+ + "\1\0\1\53\1\54\1\0\7\6\1\55\11\6\1\56"+ + "\11\6\1\57\1\60\1\61\3\6\1\62\30\6\1\63"+ + "\1\64\1\65\1\66\1\67\1\70\1\67\1\71\1\72"+ + "\1\73\1\74\1\75\1\76\1\77\1\100\1\101\2\102"+ + "\1\103\1\104\1\105\1\106\1\107\1\110\1\111\1\102"+ + "\1\112\1\102\1\113\1\114\2\113\2\3\2\0\1\46"+ + "\1\115\2\116\1\52\1\51\1\0\1\117\10\6\1\120"+ + "\5\6\1\121\1\122\5\6\1\123\1\124\5\6\1\125"+ + "\7\6\1\126\12\6\1\127\20\6\1\130\1\6\1\131"+ + "\2\6\1\132\2\6\1\133\1\134\1\135\1\136\1\137"+ + "\4\0\1\116\1\52\4\6\1\140\1\141\1\142\1\6"+ + "\1\143\1\6\1\144\5\6\1\145\6\6\1\146\1\6"+ + "\1\147\4\6\1\150\22\6\1\151\7\6\1\152\4\6"+ + "\1\153\7\6\1\154\1\155\1\0\1\156\1\116\1\52"+ + "\1\157\4\6\1\160\1\161\1\6\1\162\5\6\1\163"+ + "\4\6\1\164\3\6\1\165\14\6\1\166\6\6\1\167"+ + "\2\6\1\170\3\6\1\171\1\6\1\172\10\6\1\116"+ + "\1\52\1\173\1\6\1\174\3\6\1\175\2\6\1\176"+ + "\1\177\6\6\1\200\3\6\1\201\4\6\1\202\5\6"+ + "\1\203\10\6\1\204\2\6\1\205\3\6\1\206\1\207"+ + "\1\6\1\116\1\52\1\6\1\210\4\6\1\211\13\6"+ + "\1\212\1\6\1\213\1\6\1\214\7\6\1\215\1\216"+ + "\6\6\1\116\1\52\1\6\1\217\2\6\1\220\15\6"+ + "\1\221\5\6\1\222\1\6\1\223\1\224\3\6\1\225"+ + "\1\116\1\52\1\6\1\226\1\6\1\227\1\230\4\6"+ + "\1\231\2\6\1\232\2\6\1\233\1\234\1\6\1\235"+ + "\1\236\5\6\1\116\1\52\2\6\1\237\1\240\1\6"+ + "\1\241\1\6\1\242\6\6\1\243\2\6\1\52\4\6"+ + "\1\244\4\6\1\245\1\246\1\247\1\52\6\6\1\250"+ + "\2\6\1\52\1\6\1\251\1\6\1\252\2\6\1\253"+ + "\1\254\1\52\2\6\1\255\3\6\1\52\1\256\4\6"+ + "\1\52\2\6\1\257\1\260\1\261\1\6\1\262"; - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5 - }; + private static int [] zzUnpackAction() { + int [] result = new int[638]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\7\1\3\1\2\1\121\1\122\1\1\16\7\4\0\1\14\1\110" - + "\1\16\1\0\1\6\1\117\1\113\1\30\1\100\1\101\1\5\1\115" - + "\1\107\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\106" - + "\1\12\1\15\1\13\1\112\1\120\1\62\1\22\1\72\1\73\1\25" - + "\1\64\1\6\1\66\1\77\2\6\1\70\1\71\1\76\1\6\1\75" - + "\1\67\1\6\1\63\1\65\1\61\1\74\1\6\1\21\2\6\1\104" - + "\1\27\1\105\1\116\1\6\1\0\1\35\1\32\1\37\1\46\1\34" - + "\1\47\1\60\1\52\1\44\1\6\1\36\1\50\1\55\1\42\1\41" - + "\1\53\1\6\1\33\1\40\1\43\1\45\1\56\1\51\1\57\1\54" - + "\1\6\1\102\1\114\1\103\1\111\6\7\1\123\32\7\2\0\4\6" - + "\1\0\1\31\2\0\1\6\2\0\1\7\7\0\1\6\4\0\1\6" - + "\5\0\27\6\1\0\37\6\1\0\u01ca\6\4\0\14\6\16\0\5\6" - + "\7\0\1\6\1\0\1\6\21\0\160\7\5\6\1\0\2\6\2\0" - + "\4\6\10\0\1\6\1\0\3\6\1\0\1\6\1\0\24\6\1\0" - + "\123\6\1\0\213\6\1\0\5\7\2\0\236\6\11\0\46\6\2\0" - + "\1\6\7\0\47\6\7\0\1\6\1\0\55\7\1\0\1\7\1\0" - + "\2\7\1\0\2\7\1\0\1\7\10\0\33\6\5\0\3\6\15\0" - + "\5\7\6\0\1\6\4\0\13\7\5\0\53\6\37\7\4\0\2\6" - + "\1\7\143\6\1\0\1\6\10\7\1\0\6\7\2\6\2\7\1\0" - + "\4\7\2\6\12\7\3\6\2\0\1\6\17\0\1\7\1\6\1\7" - + "\36\6\33\7\2\0\131\6\13\7\1\6\16\0\12\7\41\6\11\7" - + "\2\6\4\0\1\6\5\0\26\6\4\7\1\6\11\7\1\6\3\7" - + "\1\6\5\7\22\0\31\6\3\7\104\0\1\6\1\0\13\6\67\0" - + "\33\7\1\0\4\7\66\6\3\7\1\6\22\7\1\6\7\7\12\6" - + "\2\7\2\0\12\7\1\0\7\6\1\0\7\6\1\0\3\7\1\0" - + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\1\6\3\0" - + "\4\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\1\6" - + "\10\0\1\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\4\6" - + "\7\0\1\6\5\0\3\7\1\0\6\6\4\0\2\6\2\0\26\6" - + "\1\0\7\6\1\0\2\6\1\0\2\6\1\0\2\6\2\0\1\7" - + "\1\0\5\7\4\0\2\7\2\0\3\7\3\0\1\7\7\0\4\6" - + "\1\0\1\6\7\0\14\7\3\6\1\7\13\0\3\7\1\0\11\6" - + "\1\0\3\6\1\0\26\6\1\0\7\6\1\0\2\6\1\0\5\6" - + "\2\0\1\7\1\6\10\7\1\0\3\7\1\0\3\7\2\0\1\6" - + "\17\0\2\6\2\7\2\0\12\7\1\0\1\6\17\0\3\7\1\0" - + "\10\6\2\0\2\6\2\0\26\6\1\0\7\6\1\0\2\6\1\0" - + "\5\6\2\0\1\7\1\6\7\7\2\0\2\7\2\0\3\7\10\0" - + "\2\7\4\0\2\6\1\0\3\6\2\7\2\0\12\7\1\0\1\6" - + "\20\0\1\7\1\6\1\0\6\6\3\0\3\6\1\0\4\6\3\0" - + "\2\6\1\0\1\6\1\0\2\6\3\0\2\6\3\0\3\6\3\0" - + "\14\6\4\0\5\7\3\0\3\7\1\0\4\7\2\0\1\6\6\0" - + "\1\7\16\0\12\7\11\0\1\6\7\0\3\7\1\0\10\6\1\0" - + "\3\6\1\0\27\6\1\0\12\6\1\0\5\6\3\0\1\6\7\7" - + "\1\0\3\7\1\0\4\7\7\0\2\7\1\0\2\6\6\0\2\6" - + "\2\7\2\0\12\7\22\0\2\7\1\0\10\6\1\0\3\6\1\0" - + "\27\6\1\0\12\6\1\0\5\6\2\0\1\7\1\6\7\7\1\0" - + "\3\7\1\0\4\7\7\0\2\7\7\0\1\6\1\0\2\6\2\7" - + "\2\0\12\7\1\0\2\6\17\0\2\7\1\0\10\6\1\0\3\6" - + "\1\0\51\6\2\0\1\6\7\7\1\0\3\7\1\0\4\7\1\6" - + "\10\0\1\7\10\0\2\6\2\7\2\0\12\7\12\0\6\6\2\0" - + "\2\7\1\0\22\6\3\0\30\6\1\0\11\6\1\0\1\6\2\0" - + "\7\6\3\0\1\7\4\0\6\7\1\0\1\7\1\0\10\7\22\0" - + "\2\7\15\0\60\6\1\7\2\6\7\7\4\0\10\6\10\7\1\0" - + "\12\7\47\0\2\6\1\0\1\6\2\0\2\6\1\0\1\6\2\0" - + "\1\6\6\0\4\6\1\0\7\6\1\0\3\6\1\0\1\6\1\0" - + "\1\6\2\0\2\6\1\0\4\6\1\7\2\6\6\7\1\0\2\7" - + "\1\6\2\0\5\6\1\0\1\6\1\0\6\7\2\0\12\7\2\0" - + "\4\6\40\0\1\6\27\0\2\7\6\0\12\7\13\0\1\7\1\0" - + "\1\7\1\0\1\7\4\0\2\7\10\6\1\0\44\6\4\0\24\7" - + "\1\0\2\7\5\6\13\7\1\0\44\7\11\0\1\7\71\0\53\6" - + "\24\7\1\6\12\7\6\0\6\6\4\7\4\6\3\7\1\6\3\7" - + "\2\6\7\7\3\6\4\7\15\6\14\7\1\6\17\7\2\0\46\6" - + "\1\0\1\6\5\0\1\6\2\0\53\6\1\0\u014d\6\1\0\4\6" - + "\2\0\7\6\1\0\1\6\1\0\4\6\2\0\51\6\1\0\4\6" - + "\2\0\41\6\1\0\4\6\2\0\7\6\1\0\1\6\1\0\4\6" - + "\2\0\17\6\1\0\71\6\1\0\4\6\2\0\103\6\2\0\3\7" - + "\40\0\20\6\20\0\125\6\14\0\u026c\6\2\0\21\6\1\0\32\6" - + "\5\0\113\6\3\0\3\6\17\0\15\6\1\0\4\6\3\7\13\0" - + "\22\6\3\7\13\0\22\6\2\7\14\0\15\6\1\0\3\6\1\0" - + "\2\7\14\0\64\6\40\7\3\0\1\6\3\0\2\6\1\7\2\0" - + "\12\7\41\0\3\7\2\0\12\7\6\0\130\6\10\0\51\6\1\7" - + "\1\6\5\0\106\6\12\0\35\6\3\0\14\7\4\0\14\7\12\0" - + "\12\7\36\6\2\0\5\6\13\0\54\6\4\0\21\7\7\6\2\7" - + "\6\0\12\7\46\0\27\6\5\7\4\0\65\6\12\7\1\0\35\7" - + "\2\0\13\7\6\0\12\7\15\0\1\6\130\0\5\7\57\6\21\7" - + "\7\6\4\0\12\7\21\0\11\7\14\0\3\7\36\6\15\7\2\6" - + "\12\7\54\6\16\7\14\0\44\6\24\7\10\0\12\7\3\0\3\6" - + "\12\7\44\6\122\0\3\7\1\0\25\7\4\6\1\7\4\6\3\7" - + "\2\6\11\0\300\6\47\7\25\0\4\7\u0116\6\2\0\6\6\2\0" - + "\46\6\2\0\6\6\2\0\10\6\1\0\1\6\1\0\1\6\1\0" - + "\1\6\1\0\37\6\2\0\65\6\1\0\7\6\1\0\1\6\3\0" - + "\3\6\1\0\7\6\3\0\4\6\2\0\6\6\4\0\15\6\5\0" - + "\3\6\1\0\7\6\16\0\5\7\30\0\1\121\1\121\5\7\20\0" - + "\2\6\23\0\1\6\13\0\5\7\5\0\6\7\1\0\1\6\15\0" - + "\1\6\20\0\15\6\3\0\33\6\25\0\15\7\4\0\1\7\3\0" - + "\14\7\21\0\1\6\4\0\1\6\2\0\12\6\1\0\1\6\3\0" - + "\5\6\6\0\1\6\1\0\1\6\1\0\1\6\1\0\4\6\1\0" - + "\13\6\2\0\4\6\5\0\5\6\4\0\1\6\21\0\51\6\u0a77\0" - + "\57\6\1\0\57\6\1\0\205\6\6\0\4\6\3\7\2\6\14\0" - + "\46\6\1\0\1\6\5\0\1\6\2\0\70\6\7\0\1\6\17\0" - + "\1\7\27\6\11\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6" - + "\1\0\7\6\1\0\7\6\1\0\7\6\1\0\7\6\1\0\40\7" - + "\57\0\1\6\u01d5\0\3\6\31\0\11\6\6\7\1\0\5\6\2\0" - + "\5\6\4\0\126\6\2\0\2\7\2\0\3\6\1\0\132\6\1\0" - + "\4\6\5\0\51\6\3\0\136\6\21\0\33\6\65\0\20\6\u0200\0" - + "\u19b6\6\112\0\u51cd\6\63\0\u048d\6\103\0\56\6\2\0\u010d\6\3\0" - + "\20\6\12\7\2\6\24\0\57\6\1\7\4\0\12\7\1\0\31\6" - + "\7\0\1\7\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6" - + "\1\0\4\6\14\0\13\6\115\0\12\6\1\7\3\6\1\7\4\6" - + "\1\7\27\6\5\7\20\0\1\6\7\0\64\6\14\0\2\7\62\6" - + "\21\7\13\0\12\7\6\0\22\7\6\6\3\0\1\6\4\0\12\7" - + "\34\6\10\7\2\0\27\6\15\7\14\0\35\6\3\0\4\7\57\6" - + "\16\7\16\0\1\6\12\7\46\0\51\6\16\7\11\0\3\6\1\7" - + "\10\6\2\7\2\0\12\7\6\0\27\6\3\0\1\6\1\7\4\0" - + "\60\6\1\7\1\6\3\7\2\6\2\7\5\6\2\7\1\6\1\7" - + "\1\6\30\0\3\6\2\0\13\6\5\7\2\0\3\6\2\7\12\0" - + "\6\6\2\0\6\6\2\0\6\6\11\0\7\6\1\0\7\6\221\0" - + "\43\6\10\7\1\0\2\7\2\0\12\7\6\0\u2ba4\6\14\0\27\6" - + "\4\0\61\6\u2104\0\u016e\6\2\0\152\6\46\0\7\6\14\0\5\6" - + "\5\0\1\6\1\7\12\6\1\0\15\6\1\0\5\6\1\0\1\6" - + "\1\0\2\6\1\0\2\6\1\0\154\6\41\0\u016b\6\22\0\100\6" - + "\2\0\66\6\50\0\15\6\3\0\20\7\20\0\7\7\14\0\2\6" - + "\30\0\3\6\31\0\1\6\6\0\5\6\1\0\207\6\2\0\1\7" - + "\4\0\1\6\13\0\12\7\7\0\32\6\4\0\1\6\1\0\32\6" - + "\13\0\131\6\3\0\6\6\2\0\6\6\2\0\6\6\2\0\3\6" - + "\3\0\2\6\3\0\2\6\22\0\3\7\4\0\14\6\1\0\32\6" - + "\1\0\23\6\1\0\2\6\1\0\17\6\2\0\16\6\42\0\173\6" - + "\105\0\65\6\210\0\1\7\202\0\35\6\3\0\61\6\57\0\37\6" - + "\21\0\33\6\65\0\36\6\2\0\44\6\4\0\10\6\1\0\5\6" - + "\52\0\236\6\2\0\12\7\u0356\0\6\6\2\0\1\6\1\0\54\6" - + "\1\0\2\6\3\0\1\6\2\0\27\6\252\0\26\6\12\0\32\6" - + "\106\0\70\6\6\0\2\6\100\0\1\6\3\7\1\0\2\7\5\0" - + "\4\7\4\6\1\0\3\6\1\0\33\6\4\0\3\7\4\0\1\7" - + "\40\0\35\6\203\0\66\6\12\0\26\6\12\0\23\6\215\0\111\6" - + "\u03b7\0\3\7\65\6\17\7\37\0\12\7\20\0\3\7\55\6\13\7" - + "\2\0\1\7\22\0\31\6\7\0\12\7\6\0\3\7\44\6\16\7" - + "\1\0\12\7\100\0\3\7\60\6\16\7\4\6\13\0\12\7\u04a6\0" - + "\53\6\15\7\10\0\12\7\u0936\0\u036f\6\221\0\143\6\u0b9d\0\u042f\6" - + "\u33d1\0\u0239\6\u04c7\0\105\6\13\0\1\6\56\7\20\0\4\7\15\6" - + "\u4060\0\2\6\u2163\0\5\7\3\0\26\7\2\0\7\7\36\0\4\7" - + "\224\0\3\7\u01bb\0\125\6\1\0\107\6\1\0\2\6\2\0\1\6" - + "\2\0\2\6\2\0\4\6\1\0\14\6\1\0\1\6\1\0\7\6" - + "\1\0\101\6\1\0\4\6\2\0\10\6\1\0\7\6\1\0\34\6" - + "\1\0\4\6\1\0\5\6\1\0\1\6\3\0\7\6\1\0\u0154\6" - + "\2\0\31\6\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6" - + "\1\0\31\6\1\0\37\6\1\0\31\6\1\0\37\6\1\0\31\6" - + "\1\0\10\6\2\0\62\7\u1600\0\4\6\1\0\33\6\1\0\2\6" - + "\1\0\1\6\2\0\1\6\1\0\12\6\1\0\4\6\1\0\1\6" - + "\1\0\1\6\6\0\1\6\4\0\1\6\1\0\1\6\1\0\1\6" - + "\1\0\3\6\1\0\2\6\1\0\1\6\2\0\1\6\1\0\1\6" - + "\1\0\1\6\1\0\1\6\1\0\1\6\1\0\2\6\1\0\1\6" - + "\2\0\4\6\1\0\7\6\1\0\4\6\1\0\4\6\1\0\1\6" - + "\1\0\12\6\1\0\21\6\5\0\3\6\1\0\5\6\1\0\21\6" - + "\u1144\0\ua6d7\6\51\0\u1035\6\13\0\336\6\u3fe2\0\u021e\6\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0" - + "\1\7\36\0\140\7\200\0\360\7\uffff\0\uffff\0\ufe12\0"; - - /** - * Translates characters to character classes - */ - private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - - /** - * Translates DFA states to action switch labels. - */ - private static final int[] ZZ_ACTION = zzUnpackAction(); - - private static final String ZZ_ACTION_PACKED_0 - = "\6\0\1\1\2\2\1\3\1\4\1\5\1\6\1\7" - + "\1\10\1\11\1\12\1\13\1\14\2\15\1\16\1\17" - + "\1\20\26\6\1\21\1\22\1\23\1\24\1\25\1\26" - + "\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1\36" - + "\1\37\1\40\1\41\1\42\2\43\1\44\1\1\1\42" - + "\1\1\2\45\1\42\1\1\1\46\2\42\2\47\2\42" - + "\1\1\1\50\1\3\1\0\1\51\1\52\1\53\2\0" - + "\1\54\1\0\1\55\1\56\1\57\1\60\1\61\1\62" - + "\1\63\1\54\1\0\2\63\1\0\1\64\1\65\1\0" - + "\7\6\1\66\11\6\1\67\11\6\1\70\1\71\1\72" - + "\3\6\1\73\30\6\1\56\1\74\1\75\1\76\1\77" - + "\1\100\1\101\1\102\1\103\1\104\1\105\1\104\1\106" - + "\1\107\1\110\1\111\1\112\1\113\1\104\1\114\1\104" - + "\6\0\1\115\1\116\2\115\2\3\2\0\1\117\3\0" - + "\1\120\1\0\1\121\1\122\1\123\1\124\2\125\1\63" - + "\1\54\1\0\1\126\10\6\1\127\5\6\1\130\1\131" - + "\5\6\1\132\1\133\5\6\1\134\7\6\1\135\12\6" - + "\1\136\20\6\1\137\1\6\1\140\2\6\1\141\2\6" - + "\1\142\12\0\1\143\5\0\1\144\1\125\1\63\4\6" - + "\1\145\1\146\1\147\1\6\1\150\1\6\1\151\5\6" - + "\1\152\6\6\1\153\1\6\1\154\4\6\1\155\22\6" - + "\1\156\7\6\1\157\4\6\1\160\7\6\1\161\1\0" - + "\1\162\1\42\1\0\1\163\12\0\1\125\1\63\1\164" - + "\4\6\1\165\1\166\1\6\1\167\5\6\1\170\4\6" - + "\1\171\3\6\1\172\14\6\1\173\6\6\1\174\2\6" - + "\1\175\3\6\1\176\1\6\1\177\10\6\10\0\1\125" - + "\1\63\1\200\1\6\1\201\3\6\1\202\2\6\1\203" - + "\1\204\6\6\1\205\3\6\1\206\4\6\1\207\5\6" - + "\1\210\10\6\1\211\2\6\1\212\3\6\1\213\1\214" - + "\1\6\2\0\1\120\1\125\1\63\1\6\1\215\4\6" - + "\1\216\13\6\1\217\1\6\1\220\1\6\1\221\7\6" - + "\1\222\1\223\6\6\1\42\1\125\1\63\1\6\1\224" - + "\2\6\1\225\15\6\1\226\5\6\1\227\1\6\1\230" - + "\1\231\3\6\1\232\1\125\1\63\1\6\1\233\1\6" - + "\1\234\1\235\4\6\1\236\2\6\1\237\2\6\1\240" - + "\1\241\1\6\1\242\1\243\5\6\1\125\1\63\2\6" - + "\1\244\1\245\1\6\1\246\1\6\1\247\6\6\1\250" - + "\2\6\1\63\4\6\1\251\4\6\1\252\1\253\1\254" - + "\1\63\6\6\1\255\2\6\1\63\1\6\1\256\1\6" - + "\1\257\2\6\1\260\1\261\1\63\2\6\1\262\3\6" - + "\1\63\1\263\4\6\1\63\2\6\1\264\1\265\1\266" - + "\1\6\1\267"; - - private static int[] zzUnpackAction() { - int[] result = new int[695]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u019f"+ + "\0\u0245\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a"+ + "\0\u019f\0\u019f\0\u04dd\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c"+ + "\0\u06cf\0\u0722\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u0914"+ + "\0\u0967\0\u09ba\0\u0a0d\0\u0a60\0\u0ab3\0\u0b06\0\u0b59\0\u0bac"+ + "\0\u0bff\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f"+ + "\0\u019f\0\u0c52\0\u0ca5\0\u0cf8\0\u0d4b\0\u019f\0\u019f\0\u0d9e"+ + "\0\u0df1\0\u0e44\0\u0e97\0\u0eea\0\u0f3d\0\u019f\0\u0f90\0\u0fe3"+ + "\0\u019f\0\u019f\0\u1036\0\u1089\0\u10dc\0\u112f\0\u1182\0\u019f"+ + "\0\u11d5\0\u1228\0\u127b\0\u12ce\0\u019f\0\u019f\0\u1321\0\u1374"+ + "\0\u13c7\0\u141a\0\u146d\0\u14c0\0\u1513\0\u1566\0\u15b9\0\u019f"+ + "\0\u019f\0\u160c\0\u165f\0\u16b2\0\u1705\0\u1758\0\u17ab\0\u17fe"+ + "\0\u1851\0\u033e\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43"+ + "\0\u1a96\0\u1ae9\0\u1b3c\0\u1b8f\0\u1be2\0\u1c35\0\u1c88\0\u1cdb"+ + "\0\u1d2e\0\u1d81\0\u1dd4\0\u1e27\0\u1e7a\0\u033e\0\u1ecd\0\u1f20"+ + "\0\u1f73\0\u1fc6\0\u2019\0\u033e\0\u206c\0\u20bf\0\u2112\0\u2165"+ + "\0\u21b8\0\u220b\0\u225e\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd"+ + "\0\u2450\0\u24a3\0\u24f6\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695"+ + "\0\u26e8\0\u273b\0\u278e\0\u27e1\0\u2834\0\u019f\0\u2887\0\u019f"+ + "\0\u019f\0\u28da\0\u292d\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f"+ + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u2980\0\u019f\0\u019f"+ + "\0\u019f\0\u019f\0\u019f\0\u019f\0\u019f\0\u29d3\0\u019f\0\u2a26"+ + "\0\u019f\0\u019f\0\u29d3\0\u2a26\0\u2a79\0\u019f\0\u2acc\0\u2b1f"+ + "\0\u2b72\0\u019f\0\u14c0\0\u2bc5\0\u2c18\0\u2c6b\0\u2c6b\0\u2cbe"+ + "\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0\0\u2f03\0\u2f56"+ + "\0\u033e\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u033e\0\u033e"+ + "\0\u3148\0\u319b\0\u31ee\0\u3241\0\u3294\0\u033e\0\u32e7\0\u333a"+ + "\0\u338d\0\u33e0\0\u3433\0\u3486\0\u033e\0\u34d9\0\u352c\0\u357f"+ + "\0\u35d2\0\u3625\0\u3678\0\u36cb\0\u371e\0\u3771\0\u37c4\0\u3817"+ + "\0\u386a\0\u38bd\0\u3910\0\u3963\0\u39b6\0\u3a09\0\u3a5c\0\u033e"+ + "\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e\0\u3ca1\0\u3cf4"+ + "\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93\0\u3ee6\0\u3f39\0\u3f8c"+ + "\0\u033e\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u033e\0\u412b\0\u417e"+ + "\0\u019f\0\u019f\0\u41d1\0\u019f\0\u019f\0\u4224\0\u4277\0\u42ca"+ + "\0\u431d\0\u4370\0\u43c3\0\u4416\0\u4469\0\u44bc\0\u450f\0\u033e"+ + "\0\u033e\0\u033e\0\u4562\0\u033e\0\u45b5\0\u033e\0\u4608\0\u465b"+ + "\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3"+ + "\0\u4946\0\u4999\0\u033e\0\u49ec\0\u033e\0\u4a3f\0\u4a92\0\u4ae5"+ + "\0\u4b38\0\u033e\0\u4b8b\0\u4bde\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a"+ + "\0\u4d7d\0\u4dd0\0\u4e23\0\u4e76\0\u4ec9\0\u4f1c\0\u4f6f\0\u4fc2"+ + "\0\u5015\0\u5068\0\u50bb\0\u510e\0\u033e\0\u5161\0\u51b4\0\u5207"+ + "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u033e\0\u53a6\0\u53f9\0\u544c"+ + "\0\u549f\0\u033e\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u5691"+ + "\0\u56e4\0\u019f\0\u019f\0\u2a26\0\u019f\0\u5737\0\u578a\0\u033e"+ + "\0\u57dd\0\u5830\0\u5883\0\u58d6\0\u033e\0\u033e\0\u5929\0\u033e"+ + "\0\u597c\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u033e\0\u5b1b\0\u5b6e"+ + "\0\u5bc1\0\u5c14\0\u033e\0\u5c67\0\u5cba\0\u5d0d\0\u033e\0\u5d60"+ + "\0\u5db3\0\u5e06\0\u5e59\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8"+ + "\0\u604b\0\u609e\0\u60f1\0\u033e\0\u6144\0\u6197\0\u61ea\0\u623d"+ + "\0\u6290\0\u62e3\0\u033e\0\u6336\0\u6389\0\u63dc\0\u642f\0\u6482"+ + "\0\u64d5\0\u033e\0\u6528\0\u033e\0\u657b\0\u65ce\0\u6621\0\u6674"+ + "\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866\0\u033e\0\u68b9"+ + "\0\u033e\0\u690c\0\u695f\0\u69b2\0\u033e\0\u6a05\0\u6a58\0\u033e"+ + "\0\u033e\0\u6aab\0\u6afe\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u033e"+ + "\0\u6c9d\0\u6cf0\0\u6d43\0\u033e\0\u6d96\0\u6de9\0\u6e3c\0\u6e8f"+ + "\0\u033e\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e\0\u033e\0\u7081"+ + "\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6\0\u033e"+ + "\0\u7319\0\u736c\0\u033e\0\u73bf\0\u7412\0\u7465\0\u033e\0\u033e"+ + "\0\u74b8\0\u750b\0\u755e\0\u75b1\0\u033e\0\u7604\0\u7657\0\u76aa"+ + "\0\u76fd\0\u033e\0\u7750\0\u77a3\0\u77f6\0\u7849\0\u789c\0\u78ef"+ + "\0\u7942\0\u7995\0\u79e8\0\u7a3b\0\u7a8e\0\u033e\0\u7ae1\0\u033e"+ + "\0\u7b34\0\u033e\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3\0\u7d26"+ + "\0\u7d79\0\u033e\0\u033e\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18"+ + "\0\u7f6b\0\u7fbe\0\u8011\0\u8064\0\u033e\0\u80b7\0\u810a\0\u033e"+ + "\0\u815d\0\u81b0\0\u8203\0\u8256\0\u82a9\0\u82fc\0\u834f\0\u83a2"+ + "\0\u83f5\0\u8448\0\u849b\0\u84ee\0\u8541\0\u033e\0\u8594\0\u85e7"+ + "\0\u863a\0\u868d\0\u86e0\0\u033e\0\u8733\0\u033e\0\u033e\0\u8786"+ + "\0\u87d9\0\u882c\0\u033e\0\u887f\0\u88d2\0\u8925\0\u033e\0\u8978"+ + "\0\u033e\0\u033e\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u033e\0\u8b17"+ + "\0\u8b6a\0\u033e\0\u8bbd\0\u8c10\0\u033e\0\u8c63\0\u8cb6\0\u033e"+ + "\0\u033e\0\u8d09\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u019f\0\u8ea8"+ + "\0\u8efb\0\u8f4e\0\u033e\0\u033e\0\u8fa1\0\u033e\0\u8ff4\0\u033e"+ + "\0\u9047\0\u909a\0\u90ed\0\u9140\0\u9193\0\u91e6\0\u033e\0\u9239"+ + "\0\u928c\0\u92df\0\u9332\0\u9385\0\u93d8\0\u942b\0\u947e\0\u94d1"+ + "\0\u9524\0\u9577\0\u95ca\0\u033e\0\u033e\0\u033e\0\u961d\0\u9670"+ + "\0\u96c3\0\u9716\0\u9769\0\u97bc\0\u980f\0\u033e\0\u9862\0\u98b5"+ + "\0\u9908\0\u995b\0\u033e\0\u99ae\0\u033e\0\u9a01\0\u9a54\0\u9aa7"+ + "\0\u9afa\0\u9b4d\0\u9ba0\0\u9bf3\0\u033e\0\u9c46\0\u9c99\0\u9cec"+ + "\0\u9d3f\0\u033e\0\u9d92\0\u9de5\0\u9e38\0\u9e8b\0\u146d\0\u9ede"+ + "\0\u9f31\0\u033e\0\u033e\0\u033e\0\u9f84\0\u033e"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[638]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); } + return j; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\124\0\250\0\374\0\u0150\0\u01a4\0\u01f8\0\u024c" - + "\0\u01f8\0\u02a0\0\u02f4\0\u0348\0\u039c\0\u03f0\0\u0444\0\u0498" - + "\0\u04ec\0\u0540\0\u01f8\0\u0594\0\u05e8\0\u063c\0\u01f8\0\u0690" - + "\0\u06e4\0\u0738\0\u078c\0\u07e0\0\u0834\0\u0888\0\u08dc\0\u0930" - + "\0\u0984\0\u09d8\0\u0a2c\0\u0a80\0\u0ad4\0\u0b28\0\u0b7c\0\u0bd0" - + "\0\u0c24\0\u0c78\0\u0ccc\0\u0d20\0\u0d74\0\u0dc8\0\u01f8\0\u01f8" - + "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u0e1c\0\u01f8" - + "\0\u01f8\0\u0e70\0\u0ec4\0\u0f18\0\u0f6c\0\u0fc0\0\u01f8\0\u1014" - + "\0\u1068\0\u01f8\0\u01f8\0\u10bc\0\u1110\0\u1164\0\u11b8\0\u01f8" - + "\0\u120c\0\u1260\0\u01f8\0\u12b4\0\u01f8\0\u1308\0\u01f8\0\u135c" - + "\0\u13b0\0\u1404\0\u01f8\0\u1458\0\u14ac\0\u01f8\0\u01f8\0\u01f8" - + "\0\u1500\0\u1554\0\u15a8\0\u15fc\0\u1650\0\u01f8\0\u01f8\0\u16a4" - + "\0\u01f8\0\u16f8\0\u174c\0\u17a0\0\u17f4\0\u1848\0\u189c\0\u18f0" - + "\0\u01f8\0\u01f8\0\u1944\0\u1998\0\u19ec\0\u1a40\0\u1a94\0\u1ae8" - + "\0\u1b3c\0\u1b90\0\u039c\0\u1be4\0\u1c38\0\u1c8c\0\u1ce0\0\u1d34" - + "\0\u1d88\0\u1ddc\0\u1e30\0\u1e84\0\u1ed8\0\u1f2c\0\u1f80\0\u1fd4" - + "\0\u2028\0\u207c\0\u20d0\0\u2124\0\u2178\0\u21cc\0\u039c\0\u2220" - + "\0\u2274\0\u22c8\0\u231c\0\u2370\0\u039c\0\u23c4\0\u2418\0\u246c" - + "\0\u24c0\0\u2514\0\u2568\0\u25bc\0\u2610\0\u2664\0\u26b8\0\u270c" - + "\0\u2760\0\u27b4\0\u2808\0\u285c\0\u28b0\0\u2904\0\u2958\0\u29ac" - + "\0\u2a00\0\u2a54\0\u2aa8\0\u2afc\0\u2b50\0\u2ba4\0\u01f8\0\u01f8" - + "\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8" - + "\0\u2bf8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u2c4c" - + "\0\u01f8\0\u2ca0\0\u1260\0\u2cf4\0\u2d48\0\u2d9c\0\u2df0\0\u2e44" - + "\0\u01f8\0\u01f8\0\u2c4c\0\u2ca0\0\u2e98\0\u01f8\0\u2eec\0\u2f40" - + "\0\u01f8\0\u2f94\0\u2fe8\0\u303c\0\u01f8\0\u3090\0\u01f8\0\u30e4" - + "\0\u01f8\0\u01f8\0\u17f4\0\u3138\0\u318c\0\u31e0\0\u31e0\0\u3234" - + "\0\u3288\0\u32dc\0\u3330\0\u3384\0\u33d8\0\u342c\0\u3480\0\u34d4" - + "\0\u039c\0\u3528\0\u357c\0\u35d0\0\u3624\0\u3678\0\u039c\0\u039c" - + "\0\u36cc\0\u3720\0\u3774\0\u37c8\0\u381c\0\u039c\0\u3870\0\u38c4" - + "\0\u3918\0\u396c\0\u39c0\0\u3a14\0\u039c\0\u3a68\0\u3abc\0\u3b10" - + "\0\u3b64\0\u3bb8\0\u3c0c\0\u3c60\0\u3cb4\0\u3d08\0\u3d5c\0\u3db0" - + "\0\u3e04\0\u3e58\0\u3eac\0\u3f00\0\u3f54\0\u3fa8\0\u3ffc\0\u039c" - + "\0\u4050\0\u40a4\0\u40f8\0\u414c\0\u41a0\0\u41f4\0\u4248\0\u429c" - + "\0\u42f0\0\u4344\0\u4398\0\u43ec\0\u4440\0\u4494\0\u44e8\0\u453c" - + "\0\u039c\0\u4590\0\u45e4\0\u4638\0\u468c\0\u039c\0\u46e0\0\u4734" - + "\0\u01f8\0\u4788\0\u47dc\0\u4830\0\u4884\0\u48d8\0\u492c\0\u4980" - + "\0\u49d4\0\u4a28\0\u4a7c\0\u01f8\0\u4ad0\0\u4b24\0\u4b78\0\u4bcc" - + "\0\u4c20\0\u01f8\0\u4c74\0\u4cc8\0\u4d1c\0\u4d70\0\u4dc4\0\u4e18" - + "\0\u039c\0\u039c\0\u039c\0\u4e6c\0\u039c\0\u4ec0\0\u039c\0\u4f14" - + "\0\u4f68\0\u4fbc\0\u5010\0\u5064\0\u50b8\0\u510c\0\u5160\0\u51b4" - + "\0\u5208\0\u525c\0\u52b0\0\u039c\0\u5304\0\u039c\0\u5358\0\u53ac" - + "\0\u5400\0\u5454\0\u039c\0\u54a8\0\u54fc\0\u5550\0\u55a4\0\u55f8" - + "\0\u564c\0\u56a0\0\u56f4\0\u5748\0\u579c\0\u57f0\0\u5844\0\u5898" - + "\0\u58ec\0\u5940\0\u5994\0\u59e8\0\u5a3c\0\u039c\0\u5a90\0\u5ae4" - + "\0\u5b38\0\u5b8c\0\u5be0\0\u5c34\0\u5c88\0\u039c\0\u5cdc\0\u5d30" - + "\0\u5d84\0\u5dd8\0\u039c\0\u5e2c\0\u5e80\0\u5ed4\0\u5f28\0\u5f7c" - + "\0\u5fd0\0\u6024\0\u01f8\0\u2ca0\0\u01f8\0\u6078\0\u60cc\0\u01f8" - + "\0\u6120\0\u6174\0\u61c8\0\u621c\0\u6270\0\u62c4\0\u6318\0\u636c" - + "\0\u63c0\0\u6414\0\u6468\0\u64bc\0\u039c\0\u6510\0\u6564\0\u65b8" - + "\0\u660c\0\u039c\0\u039c\0\u6660\0\u039c\0\u66b4\0\u6708\0\u675c" - + "\0\u67b0\0\u6804\0\u039c\0\u6858\0\u68ac\0\u6900\0\u6954\0\u039c" - + "\0\u69a8\0\u69fc\0\u6a50\0\u039c\0\u6aa4\0\u6af8\0\u6b4c\0\u6ba0" - + "\0\u6bf4\0\u6c48\0\u6c9c\0\u6cf0\0\u6d44\0\u6d98\0\u6dec\0\u6e40" - + "\0\u039c\0\u6e94\0\u6ee8\0\u6f3c\0\u6f90\0\u6fe4\0\u7038\0\u039c" - + "\0\u708c\0\u70e0\0\u7134\0\u7188\0\u71dc\0\u7230\0\u039c\0\u7284" - + "\0\u039c\0\u72d8\0\u732c\0\u7380\0\u73d4\0\u7428\0\u747c\0\u74d0" - + "\0\u7524\0\u7578\0\u75cc\0\u7620\0\u7674\0\u76c8\0\u771c\0\u7770" - + "\0\u77c4\0\u7818\0\u786c\0\u039c\0\u78c0\0\u039c\0\u7914\0\u7968" - + "\0\u79bc\0\u039c\0\u7a10\0\u7a64\0\u039c\0\u039c\0\u7ab8\0\u7b0c" - + "\0\u7b60\0\u7bb4\0\u7c08\0\u7c5c\0\u039c\0\u7cb0\0\u7d04\0\u7d58" - + "\0\u039c\0\u7dac\0\u7e00\0\u7e54\0\u7ea8\0\u039c\0\u7efc\0\u7f50" - + "\0\u7fa4\0\u7ff8\0\u804c\0\u039c\0\u80a0\0\u80f4\0\u8148\0\u819c" - + "\0\u81f0\0\u8244\0\u8298\0\u82ec\0\u039c\0\u8340\0\u8394\0\u039c" - + "\0\u83e8\0\u843c\0\u8490\0\u039c\0\u039c\0\u84e4\0\u8538\0\u858c" - + "\0\u6318\0\u85e0\0\u8634\0\u8688\0\u039c\0\u86dc\0\u8730\0\u8784" - + "\0\u87d8\0\u039c\0\u882c\0\u8880\0\u88d4\0\u8928\0\u897c\0\u89d0" - + "\0\u8a24\0\u8a78\0\u8acc\0\u8b20\0\u8b74\0\u039c\0\u8bc8\0\u039c" - + "\0\u8c1c\0\u039c\0\u8c70\0\u8cc4\0\u8d18\0\u8d6c\0\u8dc0\0\u8e14" - + "\0\u8e68\0\u039c\0\u039c\0\u8ebc\0\u8f10\0\u8f64\0\u8fb8\0\u900c" - + "\0\u9060\0\u7620\0\u90b4\0\u9108\0\u915c\0\u039c\0\u91b0\0\u9204" - + "\0\u039c\0\u9258\0\u92ac\0\u9300\0\u9354\0\u93a8\0\u93fc\0\u9450" - + "\0\u94a4\0\u94f8\0\u954c\0\u95a0\0\u95f4\0\u9648\0\u039c\0\u969c" - + "\0\u96f0\0\u9744\0\u9798\0\u97ec\0\u039c\0\u9840\0\u039c\0\u039c" - + "\0\u9894\0\u98e8\0\u993c\0\u039c\0\u9990\0\u99e4\0\u9a38\0\u039c" - + "\0\u9a8c\0\u039c\0\u039c\0\u9ae0\0\u9b34\0\u9b88\0\u9bdc\0\u039c" - + "\0\u9c30\0\u9c84\0\u039c\0\u9cd8\0\u9d2c\0\u039c\0\u9d80\0\u9dd4" - + "\0\u039c\0\u039c\0\u9e28\0\u9e7c\0\u9ed0\0\u9f24\0\u9f78\0\u01f8" - + "\0\u9fcc\0\ua020\0\ua074\0\u039c\0\u039c\0\ua0c8\0\u039c\0\ua11c" - + "\0\u039c\0\ua170\0\ua1c4\0\ua218\0\ua26c\0\ua2c0\0\ua314\0\u039c" - + "\0\ua368\0\ua3bc\0\ua410\0\ua464\0\ua4b8\0\ua50c\0\ua560\0\ua5b4" - + "\0\ua608\0\ua65c\0\ua6b0\0\ua704\0\u039c\0\u039c\0\u039c\0\ua758" - + "\0\ua7ac\0\ua800\0\ua854\0\ua8a8\0\ua8fc\0\ua950\0\u039c\0\ua9a4" - + "\0\ua9f8\0\uaa4c\0\uaaa0\0\u039c\0\uaaf4\0\u039c\0\uab48\0\uab9c" - + "\0\uabf0\0\uac44\0\uac98\0\uacec\0\uad40\0\u039c\0\uad94\0\uade8" - + "\0\uae3c\0\uae90\0\u039c\0\uaee4\0\uaf38\0\uaf8c\0\uafe0\0\u17a0" - + "\0\ub034\0\ub088\0\u039c\0\u039c\0\u039c\0\ub0dc\0\u039c"; + private static final String ZZ_TRANS_PACKED_0 = + "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\6"+ + "\1\15\1\16\1\17\2\14\2\17\1\14\1\20\1\21"+ + "\1\22\1\6\1\23\1\24\1\25\1\26\1\27\1\14"+ + "\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37"+ + "\1\40\1\41\1\42\1\14\1\43\1\14\1\44\1\45"+ + "\1\14\1\46\2\14\1\47\12\14\1\50\1\51\1\52"+ + "\1\53\1\54\1\55\1\56\1\57\1\60\1\61\1\62"+ + "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\72"+ + "\1\73\1\74\1\75\1\76\1\6\1\11\1\6\1\77"+ + "\1\100\1\101\16\77\1\102\1\77\1\103\77\77\1\104"+ + "\1\100\1\101\17\104\1\102\1\105\77\104\123\6\1\106"+ + "\1\100\1\101\20\106\1\107\1\110\76\106\125\0\1\10"+ + "\123\0\1\11\115\0\1\11\5\0\1\111\1\112\1\113"+ + "\1\0\1\114\2\0\2\113\2\0\1\113\5\0\46\113"+ + "\10\0\1\115\122\0\1\116\23\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\46\14\27\0\1\14\10\0\1\120"+ + "\2\121\2\0\2\121\114\0\1\121\1\122\1\123\1\124"+ + "\1\0\1\125\1\126\1\127\7\0\1\127\22\0\1\124"+ + "\60\0\1\121\2\17\2\0\2\17\1\127\7\0\1\127"+ + "\113\0\1\130\62\0\1\131\43\0\1\132\102\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\1\14\1\133\44\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\2\14\1\134\1\135\42\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\136"+ + "\12\14\1\137\5\14\1\140\1\141\20\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\6\14"+ + "\1\142\1\14\1\143\35\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\3\14\1\144\3\14"+ + "\1\145\6\14\1\146\1\14\1\147\25\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\150\6\14\1\151\1\14\1\152\3\14\1\153\26\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\1\14\1\154\44\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\2\14\1\155\1\156"+ + "\7\14\1\157\32\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\1\14\1\160\1\161\1\162"+ + "\3\14\1\163\10\14\1\164\1\14\1\165\23\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\6\14\1\166\1\14\1\167\4\14\1\170\5\14\1\171"+ + "\22\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\10\14\1\172\35\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\2\14\1\173"+ + "\4\14\1\174\3\14\1\175\6\14\1\176\23\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\177\2\14\1\200\1\201\2\14\1\202\1\203"+ + "\32\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\2\14\1\204\4\14\1\205\36\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\12\14\1\206\5\14\1\207\25\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\1\14\1\210"+ + "\1\14\1\211\7\14\1\212\2\14\1\213\27\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\214\45\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\3\14\1\215\3\14\1\216\36\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\2\14\1\217\4\14\1\220\36\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\221\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\3\14\1\222\7\14\1\223\32\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\10\14\1\224\35\14\27\0\1\14\103\0\1\225"+ + "\122\0\1\226\1\227\121\0\1\230\1\231\1\232\120\0"+ + "\1\233\130\0\1\234\114\0\1\235\6\0\1\236\113\0"+ + "\1\237\7\0\1\240\112\0\1\241\10\0\1\242\111\0"+ + "\1\243\122\0\1\244\17\0\1\77\2\0\16\77\1\0"+ + "\1\77\1\0\77\77\2\0\1\101\120\0\1\245\2\0"+ + "\6\245\1\246\3\245\2\246\2\245\1\247\1\250\1\251"+ + "\1\245\1\252\1\253\6\245\1\254\1\255\1\245\1\256"+ + "\1\245\1\257\7\245\1\260\45\245\3\0\1\104\2\0"+ + "\17\104\2\0\77\104\1\245\2\0\16\245\1\247\1\250"+ + "\1\251\1\245\1\252\1\253\6\245\1\254\1\255\1\245"+ + "\1\256\1\245\1\257\7\245\1\260\45\245\3\0\1\106"+ + "\2\0\20\106\2\0\76\106\1\261\2\0\20\261\1\251"+ + "\1\262\1\252\1\253\6\261\1\254\1\255\1\261\1\263"+ + "\1\261\1\257\7\261\1\264\45\261\3\0\1\111\1\265"+ + "\1\266\120\111\5\267\1\270\115\267\4\0\1\117\1\0"+ + "\2\113\1\0\7\113\5\0\46\113\27\0\1\113\10\0"+ + "\1\271\120\0\1\113\1\0\1\114\2\0\2\113\2\0"+ + "\1\113\5\0\46\113\34\0\1\117\3\0\1\272\123\0"+ + "\2\121\2\0\2\121\1\127\7\0\1\127\103\0\1\121"+ + "\1\122\1\123\2\0\1\125\1\126\1\127\7\0\1\127"+ + "\103\0\1\121\2\123\2\0\2\123\1\127\7\0\1\127"+ + "\104\0\1\273\1\274\1\0\4\274\5\0\1\274\1\0"+ + "\2\274\1\0\1\274\6\0\2\274\12\0\1\274\1\0"+ + "\1\274\5\0\2\274\44\0\1\121\1\126\1\123\2\0"+ + "\2\126\1\127\7\0\1\127\103\0\1\121\1\275\1\123"+ + "\2\0\2\275\1\127\7\0\1\127\104\0\2\276\2\0"+ + "\2\276\1\0\1\277\73\0\1\277\14\0\1\300\4\0"+ + "\2\300\2\0\1\300\5\0\46\300\34\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\301\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\302\11\14\1\303\22\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\10\14\1\304"+ + "\35\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\5\14\1\305\40\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\6\14\1\306"+ + "\37\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\3\14\1\307\42\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\11\14\1\310"+ + "\34\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\14\14\1\311\31\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\6\14\1\312"+ + "\2\14\1\313\4\14\1\314\27\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\10\14\1\315"+ + "\35\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\3\14\1\316\42\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\1\14\1\317"+ + "\44\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\11\14\1\320\34\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\321"+ + "\3\14\1\322\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\1\323\20\14\1\324\24\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\12\14\1\325\33\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\14\14\1\326\31\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\17\14\1\327\5\14\1\330\20\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\331\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\16\14\1\332\27\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\333\7\14\1\334\6\14\1\335\23\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\16\14"+ + "\1\336\27\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\337\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\26\14"+ + "\1\340\17\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\341\10\14\1\342\33\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\21\14\1\343\24\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\6\14\1\344\2\14"+ + "\1\345\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\32\14\1\346\13\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\21\14"+ + "\1\347\24\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\14\14\1\350\1\14\1\351\27\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\15\14\1\352\1\353\27\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\21\14\1\354"+ + "\24\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\10\14\1\355\35\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\16\14\1\356"+ + "\27\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\5\14\1\357\40\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\1\14\1\360"+ + "\44\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\10\14\1\361\35\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\10\14\1\362"+ + "\35\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\10\14\1\363\35\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\364"+ + "\42\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\11\14\1\365\34\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\12\14\1\366"+ + "\33\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\2\14\1\367\4\14\1\370\2\14\1\371"+ + "\33\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\5\14\1\372\40\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\1\373\45\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\3\14\1\374\42\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\5\14\1\375\1\376"+ + "\1\377\6\14\1\u0100\27\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\1\14\1\u0101\44\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\12\14\1\u0102\33\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\11\14\1\u0103\34\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\11\14\1\u0104\34\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\1\14\1\u0105\44\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\44\14\1\u0106\1\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\23\14\1\u0107\22\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\15\14\1\u0108\30\14\27\0\1\14\103\0\1\u0109"+ + "\122\0\1\u010a\1\u010b\121\0\1\u010c\122\0\1\u010d\30\0"+ + "\1\u010e\3\0\2\u010e\115\0\2\u010f\1\0\4\u010f\5\0"+ + "\1\u010f\1\0\2\u010f\1\0\1\u010f\6\0\2\u010f\12\0"+ + "\1\u010f\1\0\1\u010f\5\0\2\u010f\45\0\2\u0110\1\0"+ + "\4\u0110\5\0\1\u0110\1\0\2\u0110\1\0\1\u0110\6\0"+ + "\2\u0110\12\0\1\u0110\1\0\1\u0110\5\0\2\u0110\36\0"+ + "\1\266\120\0\5\267\1\u0111\115\267\4\0\1\266\1\270"+ + "\121\0\1\117\127\0\2\u0112\1\0\4\u0112\5\0\1\u0112"+ + "\1\0\2\u0112\1\0\1\u0112\6\0\2\u0112\12\0\1\u0112"+ + "\1\0\1\u0112\5\0\2\u0112\44\0\1\121\1\u0113\1\123"+ + "\2\0\2\u0113\1\127\7\0\1\127\104\0\2\276\2\0"+ + "\2\276\112\0\2\300\1\0\7\300\5\0\46\300\27\0"+ + "\1\300\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u0114\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\13\14\1\u0115\32\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0116\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\14\14\1\u0117\31\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\20\14\1\u0118\25\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0119\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\16\14\1\u011a\27\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u011b\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u011c\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\5\14\1\u011d\40\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\16\14\1\u011e\27\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\6\14\1\u011f\2\14\1\u0120"+ + "\34\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\6\14\1\u0121\37\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\1\14\1\u0122"+ + "\7\14\1\u0123\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\21\14\1\u0124\24\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\6\14\1\u0125\37\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0126\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u0127\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\16\14\1\u0128\27\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u0129\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u012a\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\16\14\1\u012b\27\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\5\14\1\u012c\40\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u012d\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\16\14\1\u012e\27\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\26\14\1\u012f\17\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\26\14\1\u0130\17\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0131\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\6\14\1\u0132\37\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u0133\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\11\14\1\u0134\34\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u0135\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\1\14\1\u0136\44\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0137\6\14\1\u0138\27\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\2\14\1\u0139"+ + "\43\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\7\14\1\u013a\36\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\u013b"+ + "\42\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\2\14\1\u013c\43\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\16\14\1\u013d"+ + "\27\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\3\14\1\u013e\42\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\6\14\1\u013f"+ + "\37\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\7\14\1\u0140\36\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\u0141"+ + "\42\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\5\14\1\u0142\40\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\26\14\1\u0143"+ + "\17\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\14\14\1\u0144\31\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\20\14\1\u0145"+ + "\25\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\16\14\1\u0146\27\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\24\14\1\u0147"+ + "\21\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\11\14\1\u0148\34\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\10\14\1\u0149"+ + "\13\14\1\u014a\21\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\4\14\1\u014b\41\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\16\14\1\u014c\27\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\22\14\1\u014d\23\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\20\14\1\u014e\25\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\13\14\1\u014f\32\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\14\1\u0150\44\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0151\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\14\14\1\u0152\31\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\27\14\1\u0153\3\14\1\u0154"+ + "\6\14\1\u0155\3\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\7\14\1\u0156\36\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\12\14\1\u0157\33\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\1\u0158\45\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0159\33\14\27\0\1\14\103\0\1\u015a\30\0\1\u015b"+ + "\3\0\2\u015b\115\0\2\u015c\1\0\4\u015c\5\0\1\u015c"+ + "\1\0\2\u015c\1\0\1\u015c\6\0\2\u015c\12\0\1\u015c"+ + "\1\0\1\u015c\5\0\2\u015c\45\0\2\u015d\1\0\4\u015d"+ + "\5\0\1\u015d\1\0\2\u015d\1\0\1\u015d\6\0\2\u015d"+ + "\12\0\1\u015d\1\0\1\u015d\5\0\2\u015d\34\0\4\267"+ + "\1\266\1\u0111\115\267\11\0\2\u015e\1\0\4\u015e\5\0"+ + "\1\u015e\1\0\2\u015e\1\0\1\u015e\6\0\2\u015e\12\0"+ + "\1\u015e\1\0\1\u015e\5\0\2\u015e\44\0\1\121\1\u015f"+ + "\1\123\2\0\2\u015f\1\127\7\0\1\127\77\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\4\14\1\u0160\41\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\1\14\1\u0161\44\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\24\14\1\u0162\21\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\7\14\1\u0163\36\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\10\14\1\u0164\35\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\20\14\1\u0165\25\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\11\14\1\u0166\34\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\12\14\1\u0167\33\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\6\14\1\u0168\37\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\11\14\1\u0169\34\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\12\14\1\u016a\33\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\30\14\1\u016b\10\14\1\u016c\4\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\u016d\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u016e\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\5\14"+ + "\1\u016f\40\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u0170\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\32\14"+ + "\1\u0171\13\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\6\14\1\u0172\37\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u0173\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\33\14\1\u0174\12\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u0175\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\16\14\1\u0176\27\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\17\14"+ + "\1\u0177\26\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\7\14\1\u0178\36\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u0179\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u017a\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u017b\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u017c\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u017d\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\15\14\1\u017e\30\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u017f\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\13\14\1\u0180\32\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\u0181\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u0182\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u0183\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\2\14\1\u0184\43\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u0185\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\16\14\1\u0186\27\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\u0187\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\11\14\1\u0188\34\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\37\14"+ + "\1\u0189\2\14\1\u018a\3\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\2\14\1\u018b\43\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\32\14\1\u018c\13\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\2\14\1\u018d\43\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\11\14\1\u018e\34\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\3\14\1\u018f\42\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\3\14\1\u0190\42\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\12\14\1\u0191\33\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\1\14\1\u0192\44\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\1\u0193\45\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\14\14\1\u0194\31\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\10\14\1\u0195\35\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\14\1\u0196\44\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\12\14\1\u0197\33\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u0198\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\30\14\1\u0199\15\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\10\14\1\u019a\35\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u019b\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\10\14\1\u019c\35\14\27\0\1\14\11\0\2\u019d\1\0"+ + "\4\u019d\5\0\1\u019d\1\0\2\u019d\1\0\1\u019d\6\0"+ + "\2\u019d\12\0\1\u019d\1\0\1\u019d\5\0\2\u019d\44\0"+ + "\1\121\1\u019e\1\123\2\0\2\u019e\1\127\7\0\1\127"+ + "\77\0\1\117\1\0\2\14\1\0\7\14\5\0\10\14"+ + "\1\u019f\35\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\2\14\1\u01a0\43\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u01a1\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\14\14\1\u01a2\31\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\10\14"+ + "\1\u01a3\35\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\41\14\1\u01a4\4\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\5\14"+ + "\1\u01a5\40\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\16\14\1\u01a6\27\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\1\14"+ + "\1\u01a7\44\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u01a8\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\20\14"+ + "\1\u01a9\25\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\10\14\1\u01aa\35\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\1\14"+ + "\1\u01ab\44\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\21\14\1\u01ac\24\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u01ad\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\11\14\1\u01ae\34\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u01af\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\15\14\1\u01b0\30\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\10\14"+ + "\1\u01b1\35\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\15\14\1\u01b2\30\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u01b3\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\11\14\1\u01b4\34\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u01b5\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u01b6\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\14\14"+ + "\1\u01b7\31\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\16\14\1\u01b8\27\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u01b9\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\5\14\1\u01ba\40\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u01bb\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\23\14\1\u01bc\22\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\16\14"+ + "\1\u01bd\27\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u01be\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\20\14"+ + "\1\u01bf\25\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\7\14\1\u01c0\36\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u01c1\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u01c2\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\5\14"+ + "\1\u01c3\40\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\30\14\1\u01c4\13\14\1\u01c5\1\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\11\14\1\u01c6\34\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\26\14\1\u01c7\17\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\5\14\1\u01c8\40\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\6\14\1\u01c9\37\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\26\14\1\u01ca\17\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\16\14\1\u01cb\27\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\23\14\1\u01cc\22\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\1\14\1\u01cd\44\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\10\14\1\u01ce\35\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\26\14\1\u01cf\17\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\1\14\1\u01d0\44\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\12\14\1\u01d1\33\14"+ + "\27\0\1\14\11\0\2\u01d2\1\0\4\u01d2\5\0\1\u01d2"+ + "\1\0\2\u01d2\1\0\1\u01d2\6\0\2\u01d2\12\0\1\u01d2"+ + "\1\0\1\u01d2\5\0\2\u01d2\44\0\1\121\1\u01d3\1\123"+ + "\2\0\2\u01d3\1\127\7\0\1\127\77\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\37\14\1\u01d4\6\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\6\14\1\u01d5\37\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\13\14\1\u01d6\32\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\14\1\u01d7\44\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\16\14\1\u01d8\27\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u01d9\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u01da\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u01db\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\3\14\1\u01dc\42\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\14\1\u01dd\44\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\43\14\1\u01de\2\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\34\14\1\u01df\11\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\5\14\1\u01e0\40\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u01e1\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u01e2\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u01e3\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\10\14\1\u01e4\35\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\37\14\1\u01e5\6\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\11\14\1\u01e6\34\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u01e7\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\5\14\1\u01e8\40\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\3\14\1\u01e9\42\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\22\14\1\u01ea\23\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u01eb\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\24\14\1\u01ec\21\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\1\14\1\u01ed\44\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\3\14\1\u01ee\42\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u01ef\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\6\14\1\u01f0\37\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\13\14\1\u01f1\32\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u01f2\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u01f3\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\11\14\1\u01f4\34\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u01f5\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u01f6\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\6\14\1\u01f7\37\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\14\14\1\u01f8\31\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u01f9\34\14\27\0\1\14\11\0\2\u01fa\1\0"+ + "\4\u01fa\5\0\1\u01fa\1\0\2\u01fa\1\0\1\u01fa\6\0"+ + "\2\u01fa\12\0\1\u01fa\1\0\1\u01fa\5\0\2\u01fa\44\0"+ + "\1\121\1\u01fb\1\123\2\0\2\u01fb\1\127\7\0\1\127"+ + "\77\0\1\117\1\0\2\14\1\0\7\14\5\0\7\14"+ + "\1\u01fc\36\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\2\14\1\u01fd\43\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u01fe\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\31\14\1\u01ff\14\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\26\14"+ + "\1\u0200\17\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\23\14\1\u0201\22\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\5\14"+ + "\1\u0202\40\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\26\14\1\u0203\17\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u0204\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u0205\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u0206\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\5\14\1\u0207\40\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\36\14"+ + "\1\u0208\7\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\10\14\1\u0209\35\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u020a\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\7\14\1\u020b\36\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\u020c\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\10\14\1\u020d\35\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\10\14"+ + "\1\u020e\35\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\12\14\1\u020f\33\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0210\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\23\14\1\u0211\22\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\2\14"+ + "\1\u0212\43\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\3\14\1\u0213\3\14\5\0\46\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\23\14"+ + "\1\u0214\22\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u0215\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\20\14"+ + "\1\u0216\25\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\14\1\u0217\44\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0218\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\31\14\1\u0219\11\14\1\u021a\2\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\22\14\1\u021b\23\14\27\0\1\14\11\0\2\u021c"+ + "\1\0\4\u021c\5\0\1\u021c\1\0\2\u021c\1\0\1\u021c"+ + "\6\0\2\u021c\12\0\1\u021c\1\0\1\u021c\5\0\2\u021c"+ + "\44\0\1\121\1\u021d\1\123\2\0\2\u021d\1\127\7\0"+ + "\1\127\77\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\24\14\1\u021e\21\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\26\14\1\u021f\17\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0220\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0221\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u0222\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0223\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u0224\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\26\14\1\u0225\17\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0226\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\2\14\1\u0227\43\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0228\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\11\14\1\u0229\34\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\14\14\1\u022a\31\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\24\14\1\u022b\21\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u022c\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\14\14\1\u022d\31\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u022e\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\3\14\1\u022f\42\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u0230\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\14\14\1\u0231\31\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\12\14\1\u0232\33\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\12\14\1\u0233\33\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\7\14\1\u0234\36\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\11\14\1\u0235\34\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\16\14\1\u0236\27\14\27\0\1\14\11\0\2\u0237\1\0"+ + "\4\u0237\5\0\1\u0237\1\0\2\u0237\1\0\1\u0237\6\0"+ + "\2\u0237\12\0\1\u0237\1\0\1\u0237\5\0\2\u0237\44\0"+ + "\1\121\1\u0238\1\123\2\0\2\u0238\1\127\7\0\1\127"+ + "\77\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0239\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\13\14\1\u023a\32\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\11\14"+ + "\1\u023b\34\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\20\14\1\u023c\25\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\20\14"+ + "\1\u023d\25\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\15\14\1\u023e\30\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\3\14"+ + "\1\u023f\42\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\6\14\1\u0240\37\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0241\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\37\14\1\u0242\6\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\44\14"+ + "\1\u0243\1\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\1\u0244\45\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\11\14\1\u0245"+ + "\34\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\10\14\1\u0246\35\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\10\14\1\u0247"+ + "\35\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\7\14\1\u0248\36\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\3\14\1\u0249"+ + "\42\14\27\0\1\14\10\0\1\121\1\u024a\1\123\2\0"+ + "\2\u024a\1\127\7\0\1\127\77\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\2\14\1\u024b\43\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\10\14"+ + "\1\u024c\35\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\35\14\1\u024d\10\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\14\14"+ + "\1\u024e\31\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\2\14\1\u024f\43\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\7\14"+ + "\1\u0250\36\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\13\14\1\u0251\32\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\16\14"+ + "\1\u0252\27\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\23\14\1\u0253\22\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\26\14"+ + "\1\u0254\17\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\21\14\1\u0255\24\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\22\14"+ + "\1\u0256\23\14\27\0\1\14\10\0\1\121\1\u0257\1\123"+ + "\2\0\2\u0257\1\127\7\0\1\127\77\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\40\14\1\u0258\5\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\14\14\1\u0259\31\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\13\14\1\u025a\32\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u025b\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\44\14\1\u025c\1\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\24\14\1\u025d\21\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\23\14\1\u025e\22\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\2\14\1\u025f\43\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\3\14\1\u0260\42\14\27\0"+ + "\1\14\10\0\1\121\1\u0261\1\123\2\0\2\u0261\1\127"+ + "\7\0\1\127\77\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\16\14\1\u0262\27\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\6\14\1\u0263\37\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\3\14\1\u0264\42\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\14\14\1\u0265\31\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\13\14\1\u0266\32\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\12\14\1\u0267\33\14"+ + "\27\0\1\14\4\0\1\117\1\0\2\14\1\0\7\14"+ + "\5\0\6\14\1\u0268\37\14\27\0\1\14\4\0\1\117"+ + "\1\0\2\14\1\0\7\14\5\0\21\14\1\u0269\24\14"+ + "\27\0\1\14\10\0\1\121\1\u026a\1\123\2\0\2\u026a"+ + "\1\127\7\0\1\127\77\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\12\14\1\u026b\33\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\16\14\1\u026c"+ + "\27\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\23\14\1\u026d\22\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\2\14\1\u026e"+ + "\43\14\27\0\1\14\4\0\1\117\1\0\2\14\1\0"+ + "\7\14\5\0\44\14\1\u026f\1\14\27\0\1\14\4\0"+ + "\1\117\1\0\2\14\1\0\7\14\5\0\44\14\1\u0270"+ + "\1\14\27\0\1\14\10\0\1\121\1\u0271\1\123\2\0"+ + "\2\u0271\1\127\7\0\1\127\77\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\21\14\1\u0272\24\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\12\14"+ + "\1\u0273\33\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\40\14\1\u0274\5\14\27\0\1\14"+ + "\4\0\1\117\1\0\2\14\1\0\7\14\5\0\13\14"+ + "\1\u0275\32\14\27\0\1\14\4\0\1\117\1\0\2\14"+ + "\1\0\7\14\5\0\13\14\1\u0276\32\14\27\0\1\14"+ + "\10\0\1\121\1\u0277\1\123\2\0\2\u0277\1\127\7\0"+ + "\1\127\77\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\11\14\1\u0278\34\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\16\14\1\u0279\27\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\23\14\1\u027a\22\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\23\14\1\u027b\22\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\22\14\1\u027c\23\14\27\0\1\14\4\0\1\117\1\0"+ + "\2\14\1\0\7\14\5\0\12\14\1\u027d\33\14\27\0"+ + "\1\14\4\0\1\117\1\0\2\14\1\0\7\14\5\0"+ + "\21\14\1\u027e\24\14\27\0\1\14"; - private static int[] zzUnpackRowMap() { - int[] result = new int[695]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[40919]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ - int j = offset; - /* index in unpacked array */ + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; + private static final int ZZ_NO_MATCH = 1; + private static final int ZZ_PUSHBACK_2BIG = 2; - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + /* error messages for the codes above */ + private static final String ZZ_ERROR_MSG[] = { + "Unkown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\5\0\1\11\1\1\1\11\10\1\2\11\27\1\10\11"+ + "\4\1\2\11\6\1\1\11\2\1\2\11\5\1\1\11"+ + "\1\1\1\0\1\1\1\0\2\11\5\1\1\0\2\1"+ + "\1\0\2\11\1\0\73\1\1\11\1\1\2\11\2\1"+ + "\12\11\1\1\7\11\1\1\1\11\1\1\2\11\3\1"+ + "\1\11\2\0\1\1\1\11\4\1\1\0\111\1\2\11"+ + "\1\1\2\11\4\0\110\1\2\11\1\0\1\11\331\1"+ + "\1\11\107\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[638]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - /** - * The transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\7" - + "\1\16\1\17\1\20\1\21\1\12\1\22\1\23\1\24" - + "\1\25\2\15\2\25\1\15\1\26\1\7\1\27\1\30" - + "\1\31\1\32\1\33\1\34\1\15\1\35\1\36\1\37" - + "\1\40\1\41\1\42\1\43\1\44\1\45\1\46\1\47" - + "\1\15\1\50\1\15\1\51\1\52\1\15\1\53\2\15" - + "\1\54\12\15\1\55\1\56\1\57\1\60\1\61\1\62" - + "\1\63\1\64\1\65\1\66\1\67\1\70\1\71\1\72" - + "\1\73\1\74\1\75\1\76\1\77\1\7\1\12\1\7" - + "\1\100\1\101\1\102\13\100\1\103\10\100\1\104\74\100" - + "\1\105\1\101\1\102\24\105\1\106\1\103\73\105\1\7" - + "\1\107\1\110\1\111\2\7\1\112\4\7\1\113\1\114" - + "\4\7\2\112\2\7\1\112\4\7\46\112\22\7\1\111" - + "\1\7\1\115\1\116\1\117\7\115\1\120\111\115\1\121" - + "\1\101\1\102\24\121\1\122\1\121\1\123\72\121\126\0" - + "\1\11\124\0\1\12\10\0\1\12\105\0\1\12\5\0" - + "\1\124\1\125\7\0\1\126\123\0\1\127\114\0\2\15" - + "\7\0\7\15\4\0\46\15\23\0\1\15\10\0\1\130" - + "\124\0\1\131\1\132\4\0\2\133\2\0\2\133\105\0" - + "\1\134\3\0\1\135\1\136\1\0\1\137\3\0\2\134" - + "\2\0\1\134\4\0\46\134\37\0\1\140\1\0\1\141" - + "\123\0\1\142\117\0\1\133\5\0\1\143\1\144\1\145" - + "\1\0\1\146\1\147\1\150\6\0\1\150\22\0\1\145" - + "\55\0\1\133\5\0\2\25\2\0\2\25\1\150\6\0" - + "\1\150\104\0\1\151\10\0\1\152\126\0\1\153\100\0" - + "\2\15\7\0\7\15\4\0\1\15\1\154\44\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\155" - + "\1\156\42\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\3\15\1\157\12\15\1\160\5\15\1\161\1\162" - + "\20\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\6\15\1\163\1\15\1\164\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\165\3\15\1\166" - + "\6\15\1\167\1\15\1\170\25\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\171\6\15\1\172" - + "\1\15\1\173\3\15\1\174\26\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\1\15\1\175\44\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\176" - + "\1\177\7\15\1\200\32\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\1\15\1\201\1\202\1\203\3\15" - + "\1\204\10\15\1\205\1\15\1\206\23\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\6\15\1\207\1\15" - + "\1\210\4\15\1\211\5\15\1\212\22\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\10\15\1\213\35\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\214\4\15\1\215\3\15\1\216\6\15\1\217\23\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\3\15" - + "\1\220\2\15\1\221\1\222\2\15\1\223\1\224\32\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\225\4\15\1\226\36\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\227\5\15\1\230\25\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" - + "\1\231\1\15\1\232\7\15\1\233\2\15\1\234\27\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\235" - + "\45\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\236\3\15\1\237\36\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\240\4\15\1\241" - + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\242\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\3\15\1\243\7\15\1\244\32\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\10\15\1\245" - + "\35\15\23\0\1\15\15\0\1\246\123\0\1\247\75\0" - + "\1\250\25\0\1\251\76\0\1\252\24\0\1\253\77\0" - + "\1\254\23\0\1\255\123\0\1\256\106\0\1\100\2\0" - + "\13\100\1\0\10\100\1\0\74\100\2\0\1\102\121\0" - + "\1\257\2\0\13\257\1\260\1\261\3\257\2\261\2\257" - + "\1\262\1\263\1\257\1\264\1\265\6\257\1\266\1\267" - + "\1\257\1\270\1\257\1\271\7\257\1\272\41\257\3\0" - + "\1\105\2\0\24\105\2\0\73\105\1\257\2\0\13\257" - + "\1\260\10\257\1\262\1\263\1\257\1\264\1\265\6\257" - + "\1\266\1\267\1\257\1\270\1\257\1\271\7\257\1\272" - + "\41\257\5\0\1\110\124\0\1\111\10\0\1\111\105\0" - + "\1\111\7\0\2\273\1\274\3\0\1\275\1\276\1\0" - + "\7\273\4\0\46\273\23\0\1\273\3\0\1\111\2\0" - + "\1\273\5\0\1\114\4\0\2\273\2\0\1\273\4\0" - + "\46\273\22\0\1\111\3\0\1\117\125\0\1\277\1\0" - + "\1\300\12\0\2\300\2\0\1\300\4\0\46\300\24\0" - + "\1\121\2\0\24\121\1\0\1\121\1\0\72\121\1\301" - + "\2\0\24\301\1\262\1\301\1\302\1\264\1\265\6\301" - + "\1\266\1\267\1\301\1\303\1\301\1\271\7\301\1\304" - + "\41\301\3\0\1\124\1\305\1\306\121\124\5\307\1\310" - + "\116\307\11\0\1\311\120\0\1\312\12\0\2\312\2\0" - + "\1\312\4\0\46\312\43\0\2\133\2\0\2\133\1\150" - + "\6\0\1\150\75\0\1\313\1\134\1\314\2\0\1\315" - + "\1\316\2\0\2\134\2\313\2\134\1\313\4\0\46\313" - + "\23\0\1\134\15\0\1\317\121\0\1\320\1\0\1\321" - + "\123\0\1\322\117\0\1\133\5\0\1\143\1\144\2\0" - + "\1\146\1\147\1\150\6\0\1\150\100\0\1\133\5\0" - + "\2\144\2\0\2\144\1\150\6\0\1\150\106\0\1\323" - + "\1\324\1\0\4\324\4\0\1\324\1\0\2\324\1\0" - + "\1\324\6\0\2\324\12\0\1\324\1\0\1\324\5\0" - + "\2\324\41\0\1\133\5\0\1\147\1\144\2\0\2\147" - + "\1\150\6\0\1\150\100\0\1\133\5\0\1\325\1\144" - + "\2\0\2\325\1\150\6\0\1\150\106\0\2\326\2\0" - + "\2\326\1\0\1\327\66\0\1\327\14\0\1\330\12\0" - + "\2\330\2\0\1\330\4\0\46\330\32\0\2\15\7\0" - + "\7\15\4\0\2\15\1\331\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\332\11\15\1\333" - + "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\10\15\1\334\35\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\5\15\1\335\40\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\336\37\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\337" - + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\340\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\14\15\1\341\31\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\342\2\15\1\343" - + "\4\15\1\344\27\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\10\15\1\345\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\346\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\347" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\350\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\3\15\1\351\3\15\1\352\36\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\353\20\15" - + "\1\354\24\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\12\15\1\355\33\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\14\15\1\356\31\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\17\15\1\357\5\15" - + "\1\360\20\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\23\15\1\361\22\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\16\15\1\362\27\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\3\15\1\363\7\15" - + "\1\364\6\15\1\365\23\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\16\15\1\366\27\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\367\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15" - + "\1\370\17\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\1\15\1\371\10\15\1\372\33\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\21\15\1\373\24\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\6\15" - + "\1\374\2\15\1\375\34\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\32\15\1\376\13\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\21\15\1\377\24\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" - + "\1\u0100\1\15\1\u0101\27\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\15\15\1\u0102\1\u0103\27\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u0104" - + "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\10\15\1\u0105\35\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\16\15\1\u0106\27\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\5\15\1\u0107\40\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0108" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\10\15\1\u0109\35\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\10\15\1\u010a\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\10\15\1\u010b\35\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u010c" - + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\u010d\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\12\15\1\u010e\33\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u010f\4\15\1\u0110" - + "\2\15\1\u0111\33\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\5\15\1\u0112\40\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\1\u0113\45\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\3\15\1\u0114\42\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15" - + "\1\u0115\1\u0116\1\u0117\6\15\1\u0118\27\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u0119\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" - + "\1\u011a\33\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\11\15\1\u011b\34\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\11\15\1\u011c\34\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u011d\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\44\15" - + "\1\u011e\1\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\23\15\1\u011f\22\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\15\15\1\u0120\30\15\23\0\1\15" - + "\15\0\1\u0121\125\0\1\u0122\3\0\2\u0122\116\0\2\u0123" - + "\1\0\4\u0123\4\0\1\u0123\1\0\2\u0123\1\0\1\u0123" - + "\6\0\2\u0123\12\0\1\u0123\1\0\1\u0123\5\0\2\u0123" - + "\47\0\2\u0124\1\0\4\u0124\4\0\1\u0124\1\0\2\u0124" - + "\1\0\1\u0124\6\0\2\u0124\12\0\1\u0124\1\0\1\u0124" - + "\5\0\2\u0124\36\0\1\u0125\12\0\2\u0125\2\0\1\u0125" - + "\4\0\46\u0125\40\0\1\275\1\276\122\0\1\276\1\0" - + "\1\u0126\113\0\1\u0127\12\0\2\u0127\2\0\1\u0127\4\0" - + "\46\u0127\32\0\1\u0128\1\300\1\u0129\2\0\1\115\1\u012a" - + "\2\0\2\300\2\u0128\2\300\1\u0128\4\0\46\u0128\23\0" - + "\1\300\2\0\1\306\121\0\5\307\1\u012b\116\307\4\0" - + "\1\306\1\310\124\0\2\312\3\0\1\u012c\3\0\7\312" - + "\4\0\46\312\23\0\1\312\6\0\2\313\1\u012d\2\0" - + "\1\315\1\u012e\1\u012f\1\0\7\313\4\0\46\313\23\0" - + "\1\313\6\0\1\u0130\12\0\2\u0130\2\0\1\u0130\4\0" - + "\46\u0130\32\0\1\u0131\5\0\1\316\4\0\2\u0131\2\0" - + "\1\u0131\4\0\46\u0131\41\0\1\u0132\125\0\2\u0133\1\0" - + "\4\u0133\4\0\1\u0133\1\0\2\u0133\1\0\1\u0133\6\0" - + "\2\u0133\12\0\1\u0133\1\0\1\u0133\5\0\2\u0133\41\0" - + "\1\133\5\0\1\u0134\1\144\2\0\2\u0134\1\150\6\0" - + "\1\150\106\0\2\326\2\0\2\326\105\0\2\330\7\0" - + "\7\330\4\0\46\330\23\0\1\330\6\0\2\15\7\0" - + "\7\15\4\0\3\15\1\u0135\42\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\13\15\1\u0136\32\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0137" - + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\14\15\1\u0138\31\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\20\15\1\u0139\25\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u013a\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013b" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u013c\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u013d\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\5\15\1\u013e\40\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u013f" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\6\15\1\u0140\2\15\1\u0141\34\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\u0142\37\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0143" - + "\7\15\1\u0144\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\21\15\1\u0145\24\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\u0146\37\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0147" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\u0148\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\16\15\1\u0149\27\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u014a\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u014b" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\16\15\1\u014c\27\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\5\15\1\u014d\40\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u014e\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u014f" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\26\15\1\u0150\17\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\26\15\1\u0151\17\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\7\15\1\u0152\36\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u0153" - + "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u0154\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\11\15\1\u0155\34\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u0156\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u0157" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\7\15\1\u0158\6\15\1\u0159\27\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u015a\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u015b" - + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u015c\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u015d\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\16\15\1\u015e\27\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u015f" - + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\6\15\1\u0160\37\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\7\15\1\u0161\36\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u0162\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\5\15\1\u0163" - + "\40\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\26\15\1\u0164\17\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\14\15\1\u0165\31\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\20\15\1\u0166\25\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u0167" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\24\15\1\u0168\21\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\11\15\1\u0169\34\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\10\15\1\u016a\13\15\1\u016b" - + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\4\15\1\u016c\41\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\16\15\1\u016d\27\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\22\15\1\u016e\23\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\20\15\1\u016f" - + "\25\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\13\15\1\u0170\32\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\1\15\1\u0171\44\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u0172\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0173" - + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\27\15\1\u0174\3\15\1\u0175\6\15\1\u0176\3\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\7\15\1\u0177" - + "\36\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\12\15\1\u0178\33\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\1\u0179\45\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\u017a\33\15\23\0\1\15" - + "\17\0\1\u017b\3\0\2\u017b\116\0\2\u017c\1\0\4\u017c" - + "\4\0\1\u017c\1\0\2\u017c\1\0\1\u017c\6\0\2\u017c" - + "\12\0\1\u017c\1\0\1\u017c\5\0\2\u017c\47\0\2\u017d" - + "\1\0\4\u017d\4\0\1\u017d\1\0\2\u017d\1\0\1\u017d" - + "\6\0\2\u017d\12\0\1\u017d\1\0\1\u017d\5\0\2\u017d" - + "\36\0\2\u0125\4\0\1\275\1\276\1\0\7\u0125\4\0" - + "\46\u0125\23\0\1\u0125\1\u0126\2\0\13\u0126\1\u017e\105\u0126" - + "\6\0\2\u0127\1\u017f\2\0\1\u0180\3\0\7\u0127\4\0" - + "\46\u0127\23\0\1\u0127\6\0\2\u0128\1\u0181\2\0\1\115" - + "\1\u0182\1\u0183\1\0\7\u0128\4\0\46\u0128\23\0\1\u0128" - + "\6\0\1\u0184\12\0\2\u0184\2\0\1\u0184\4\0\46\u0184" - + "\32\0\1\u0185\5\0\1\u012a\4\0\2\u0185\2\0\1\u0185" - + "\4\0\46\u0185\24\0\4\307\1\306\1\u012b\116\307\6\0" - + "\1\u0186\12\0\2\u0186\2\0\1\u0186\4\0\46\u0186\32\0" - + "\1\u0131\5\0\1\u012e\1\u012f\3\0\2\u0131\2\0\1\u0131" - + "\4\0\46\u0131\40\0\1\u012f\1\0\1\u0187\113\0\1\u0188" - + "\1\u0130\3\0\1\315\1\316\2\0\2\u0130\2\u0188\2\u0130" - + "\1\u0188\4\0\46\u0188\23\0\1\u0130\6\0\2\u0131\1\u0189" - + "\3\0\1\u018a\1\u012f\1\0\7\u0131\4\0\46\u0131\23\0" - + "\1\u0131\17\0\2\u018b\1\0\4\u018b\4\0\1\u018b\1\0" - + "\2\u018b\1\0\1\u018b\6\0\2\u018b\12\0\1\u018b\1\0" - + "\1\u018b\5\0\2\u018b\41\0\1\133\5\0\1\u018c\1\144" - + "\2\0\2\u018c\1\150\6\0\1\150\75\0\2\15\7\0" - + "\7\15\4\0\4\15\1\u018d\41\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\1\15\1\u018e\44\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u018f" - + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\7\15\1\u0190\36\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\10\15\1\u0191\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\20\15\1\u0192\25\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u0193" - + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\12\15\1\u0194\33\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\6\15\1\u0195\37\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u0196\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u0197" - + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\30\15\1\u0198\10\15\1\u0199\4\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u019a\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u019b" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\5\15\1\u019c\40\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\12\15\1\u019d\33\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\32\15\1\u019e\13\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\6\15\1\u019f" - + "\37\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u01a0\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\33\15\1\u01a1\12\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u01a2\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01a3" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\17\15\1\u01a4\26\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\7\15\1\u01a5\36\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u01a6\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01a7" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u01a8\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\1\15\1\u01a9\44\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u01aa\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\15\15\1\u01ab" - + "\30\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u01ac\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\13\15\1\u01ad\32\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u01ae\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u01af" - + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\23\15\1\u01b0\22\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u01b1\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\23\15\1\u01b2\22\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u01b3" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\u01b4\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\11\15\1\u01b5\34\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\37\15\1\u01b6\2\15\1\u01b7" - + "\3\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u01b8\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\32\15\1\u01b9\13\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\2\15\1\u01ba\43\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u01bb" - + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u01bc\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\3\15\1\u01bd\42\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\12\15\1\u01be\33\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\1\15\1\u01bf" - + "\44\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\1\u01c0\45\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\14\15\1\u01c1\31\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\10\15\1\u01c2\35\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01c3\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" - + "\1\u01c4\33\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u01c5\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\30\15\1\u01c6\15\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01c7\35\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\u01c8\43\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\10\15\1\u01c9\35\15\23\0\1\15\1\u0126\2\0" - + "\11\u0126\1\u017e\1\u0126\1\u017e\105\u0126\6\0\1\u01ca\12\0" - + "\2\u01ca\2\0\1\u01ca\4\0\46\u01ca\32\0\1\u01cb\12\0" - + "\2\u01cb\2\0\1\u01cb\4\0\46\u01cb\32\0\1\u0185\5\0" - + "\1\u0182\1\u0183\3\0\2\u0185\2\0\1\u0185\4\0\46\u0185" - + "\40\0\1\u0183\1\0\1\u01cc\113\0\1\u01cd\1\u0184\3\0" - + "\1\115\1\u012a\2\0\2\u0184\2\u01cd\2\u0184\1\u01cd\4\0" - + "\46\u01cd\23\0\1\u0184\6\0\2\u0185\1\u01ce\3\0\1\u01cf" - + "\1\u0183\1\0\7\u0185\4\0\46\u0185\23\0\1\u0185\6\0" - + "\1\u0188\1\u0186\3\0\1\315\1\u012e\1\u012f\1\0\2\u0186" - + "\2\u0188\2\u0186\1\u0188\4\0\46\u0188\23\0\1\u0186\1\u0187" - + "\2\0\13\u0187\1\u01d0\105\u0187\6\0\2\u0188\1\u0189\2\0" - + "\1\315\1\u012e\1\u012f\1\0\7\u0188\4\0\46\u0188\23\0" - + "\1\u0188\6\0\1\u01d1\12\0\2\u01d1\2\0\1\u01d1\4\0" - + "\46\u01d1\40\0\1\u018a\1\u012f\125\0\2\u01d2\1\0\4\u01d2" - + "\4\0\1\u01d2\1\0\2\u01d2\1\0\1\u01d2\6\0\2\u01d2" - + "\12\0\1\u01d2\1\0\1\u01d2\5\0\2\u01d2\41\0\1\133" - + "\5\0\1\u01d3\1\144\2\0\2\u01d3\1\150\6\0\1\150" - + "\75\0\2\15\7\0\7\15\4\0\10\15\1\u01d4\35\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\u01d5\43\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\23\15\1\u01d6\22\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\14\15\1\u01d7\31\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\10\15\1\u01d8\35\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\41\15" - + "\1\u01d9\4\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\5\15\1\u01da\40\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\16\15\1\u01db\27\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01dc\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" - + "\1\u01dd\44\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\20\15\1\u01de\25\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\10\15\1\u01df\35\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\15\1\u01e0\44\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\21\15" - + "\1\u01e1\24\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\3\15\1\u01e2\42\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\11\15\1\u01e3\34\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u01e4\43\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\15\15" - + "\1\u01e5\30\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\10\15\1\u01e6\35\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\15\15\1\u01e7\30\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\23\15\1\u01e8\22\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" - + "\1\u01e9\34\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\23\15\1\u01ea\22\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\u01eb\33\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\14\15\1\u01ec\31\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\16\15" - + "\1\u01ed\27\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u01ee\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\5\15\1\u01ef\40\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u01f0\33\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" - + "\1\u01f1\22\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\16\15\1\u01f2\27\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\u01f3\33\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\20\15\1\u01f4\25\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\7\15" - + "\1\u01f5\36\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\3\15\1\u01f6\42\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\1\15\1\u01f7\44\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\5\15\1\u01f8\40\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\30\15" - + "\1\u01f9\13\15\1\u01fa\1\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\11\15\1\u01fb\34\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u01fc\17\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\5\15" - + "\1\u01fd\40\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\6\15\1\u01fe\37\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\26\15\1\u01ff\17\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\16\15\1\u0200\27\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" - + "\1\u0201\22\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\1\15\1\u0202\44\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\10\15\1\u0203\35\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0204\17\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" - + "\1\u0205\44\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\12\15\1\u0206\33\15\23\0\1\15\6\0\2\u01ca" - + "\3\0\1\u0180\3\0\7\u01ca\4\0\46\u01ca\23\0\1\u01ca" - + "\6\0\1\u01cd\1\u01cb\3\0\1\115\1\u0182\1\u0183\1\0" - + "\2\u01cb\2\u01cd\2\u01cb\1\u01cd\4\0\46\u01cd\23\0\1\u01cb" - + "\1\u01cc\2\0\13\u01cc\1\u0207\105\u01cc\6\0\2\u01cd\1\u01ce" - + "\2\0\1\115\1\u0182\1\u0183\1\0\7\u01cd\4\0\46\u01cd" - + "\23\0\1\u01cd\6\0\1\u0208\12\0\2\u0208\2\0\1\u0208" - + "\4\0\46\u0208\40\0\1\u01cf\1\u0183\106\0\1\u0187\2\0" - + "\10\u0187\1\u0209\1\u01d0\1\u0187\1\u01d0\105\u0187\6\0\2\u01d1" - + "\4\0\1\u018a\1\u012f\1\0\7\u01d1\4\0\46\u01d1\23\0" - + "\1\u01d1\17\0\2\u020a\1\0\4\u020a\4\0\1\u020a\1\0" - + "\2\u020a\1\0\1\u020a\6\0\2\u020a\12\0\1\u020a\1\0" - + "\1\u020a\5\0\2\u020a\41\0\1\133\5\0\1\u020b\1\144" - + "\2\0\2\u020b\1\150\6\0\1\150\75\0\2\15\7\0" - + "\7\15\4\0\37\15\1\u020c\6\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\u020d\37\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u020e" - + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\1\15\1\u020f\44\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\16\15\1\u0210\27\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u0211\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u0212" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u0213\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\3\15\1\u0214\42\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\1\15\1\u0215\44\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\43\15\1\u0216" - + "\2\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\34\15\1\u0217\11\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\5\15\1\u0218\40\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u0219\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u021a" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u021b\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\10\15\1\u021c\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\37\15\1\u021d\6\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u021e" - + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\3\15\1\u021f\42\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\5\15\1\u0220\40\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u0221\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\22\15\1\u0222" - + "\23\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\7\15\1\u0223\36\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\24\15\1\u0224\21\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\1\15\1\u0225\44\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0226" - + "\42\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\11\15\1\u0227\34\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\6\15\1\u0228\37\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\13\15\1\u0229\32\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022a" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u022b\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\11\15\1\u022c\34\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u022d\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\2\15\1\u022e" - + "\43\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\6\15\1\u022f\37\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\14\15\1\u0230\31\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u0231\34\15\23\0" - + "\1\15\1\u01cc\2\0\10\u01cc\1\u0232\1\u0207\1\u01cc\1\u0207" - + "\105\u01cc\6\0\2\u0208\4\0\1\u01cf\1\u0183\1\0\7\u0208" - + "\4\0\46\u0208\23\0\1\u0208\17\0\2\u0233\1\0\4\u0233" - + "\4\0\1\u0233\1\0\2\u0233\1\0\1\u0233\6\0\2\u0233" - + "\12\0\1\u0233\1\0\1\u0233\5\0\2\u0233\41\0\1\133" - + "\5\0\1\u0234\1\144\2\0\2\u0234\1\150\6\0\1\150" - + "\75\0\2\15\7\0\7\15\4\0\7\15\1\u0235\36\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\u0236\43\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\3\15\1\u0237\42\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\31\15\1\u0238\14\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\26\15\1\u0239\17\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" - + "\1\u023a\22\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\5\15\1\u023b\40\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\26\15\1\u023c\17\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\3\15\1\u023d\42\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" - + "\1\u023e\33\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u023f\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\5\15\1\u0240\40\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\36\15\1\u0241\7\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15" - + "\1\u0242\35\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u0243\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\7\15\1\u0244\36\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\11\15\1\u0245\34\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\10\15" - + "\1\u0246\35\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\10\15\1\u0247\35\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\u0248\33\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0249\33\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\23\15" - + "\1\u024a\22\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u024b\43\15\23\0\1\15\6\0\2\15" - + "\7\0\3\15\1\u024c\3\15\4\0\46\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\23\15\1\u024d\22\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\1\15" - + "\1\u024e\44\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\20\15\1\u024f\25\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\1\15\1\u0250\44\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\12\15\1\u0251\33\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\31\15" - + "\1\u0252\11\15\1\u0253\2\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\22\15\1\u0254\23\15\23\0\1\15" - + "\17\0\2\u0255\1\0\4\u0255\4\0\1\u0255\1\0\2\u0255" - + "\1\0\1\u0255\6\0\2\u0255\12\0\1\u0255\1\0\1\u0255" - + "\5\0\2\u0255\41\0\1\133\5\0\1\u0256\1\144\2\0" - + "\2\u0256\1\150\6\0\1\150\75\0\2\15\7\0\7\15" - + "\4\0\24\15\1\u0257\21\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\26\15\1\u0258\17\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0259\36\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\2\15" - + "\1\u025a\43\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u025b\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\2\15\1\u025c\43\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\11\15\1\u025d\34\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\26\15" - + "\1\u025e\17\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\7\15\1\u025f\36\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\2\15\1\u0260\43\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u0261\36\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" - + "\1\u0262\34\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\14\15\1\u0263\31\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\24\15\1\u0264\21\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0265\43\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" - + "\1\u0266\31\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\2\15\1\u0267\43\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\3\15\1\u0268\42\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\2\15\1\u0269\43\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\14\15" - + "\1\u026a\31\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\12\15\1\u026b\33\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\12\15\1\u026c\33\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\7\15\1\u026d\36\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\11\15" - + "\1\u026e\34\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\16\15\1\u026f\27\15\23\0\1\15\17\0\2\u0270" - + "\1\0\4\u0270\4\0\1\u0270\1\0\2\u0270\1\0\1\u0270" - + "\6\0\2\u0270\12\0\1\u0270\1\0\1\u0270\5\0\2\u0270" - + "\41\0\1\133\5\0\1\u0271\1\144\2\0\2\u0271\1\150" - + "\6\0\1\150\75\0\2\15\7\0\7\15\4\0\12\15" - + "\1\u0272\33\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\13\15\1\u0273\32\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\11\15\1\u0274\34\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\20\15\1\u0275\25\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\20\15" - + "\1\u0276\25\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\15\15\1\u0277\30\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\3\15\1\u0278\42\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\6\15\1\u0279\37\15" - + "\23\0\1\15\6\0\2\15\7\0\7\15\4\0\12\15" - + "\1\u027a\33\15\23\0\1\15\6\0\2\15\7\0\7\15" - + "\4\0\37\15\1\u027b\6\15\23\0\1\15\6\0\2\15" - + "\7\0\7\15\4\0\44\15\1\u027c\1\15\23\0\1\15" - + "\6\0\2\15\7\0\7\15\4\0\1\u027d\45\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\11\15\1\u027e" - + "\34\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\10\15\1\u027f\35\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\10\15\1\u0280\35\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\7\15\1\u0281\36\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\3\15\1\u0282" - + "\42\15\23\0\1\15\11\0\1\133\5\0\1\u0283\1\144" - + "\2\0\2\u0283\1\150\6\0\1\150\75\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u0284\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\10\15\1\u0285\35\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\35\15\1\u0286" - + "\10\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\14\15\1\u0287\31\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u0288\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\7\15\1\u0289\36\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u028a" - + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\16\15\1\u028b\27\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\23\15\1\u028c\22\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\26\15\1\u028d\17\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u028e" - + "\24\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\22\15\1\u028f\23\15\23\0\1\15\11\0\1\133\5\0" - + "\1\u0290\1\144\2\0\2\u0290\1\150\6\0\1\150\75\0" - + "\2\15\7\0\7\15\4\0\40\15\1\u0291\5\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u0292" - + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\13\15\1\u0293\32\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u0294\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\44\15\1\u0295\1\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\24\15\1\u0296" - + "\21\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\23\15\1\u0297\22\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\2\15\1\u0298\43\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u0299\42\15\23\0" - + "\1\15\11\0\1\133\5\0\1\u029a\1\144\2\0\2\u029a" - + "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0" - + "\16\15\1\u029b\27\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\6\15\1\u029c\37\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\3\15\1\u029d\42\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\14\15\1\u029e" - + "\31\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\13\15\1\u029f\32\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\12\15\1\u02a0\33\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\6\15\1\u02a1\37\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\21\15\1\u02a2" - + "\24\15\23\0\1\15\11\0\1\133\5\0\1\u02a3\1\144" - + "\2\0\2\u02a3\1\150\6\0\1\150\75\0\2\15\7\0" - + "\7\15\4\0\12\15\1\u02a4\33\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\16\15\1\u02a5\27\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\23\15\1\u02a6" - + "\22\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\2\15\1\u02a7\43\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\44\15\1\u02a8\1\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\44\15\1\u02a9\1\15\23\0" - + "\1\15\11\0\1\133\5\0\1\u02aa\1\144\2\0\2\u02aa" - + "\1\150\6\0\1\150\75\0\2\15\7\0\7\15\4\0" - + "\21\15\1\u02ab\24\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\12\15\1\u02ac\33\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\40\15\1\u02ad\5\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\13\15\1\u02ae" - + "\32\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\13\15\1\u02af\32\15\23\0\1\15\11\0\1\133\5\0" - + "\1\u02b0\1\144\2\0\2\u02b0\1\150\6\0\1\150\75\0" - + "\2\15\7\0\7\15\4\0\11\15\1\u02b1\34\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\16\15\1\u02b2" - + "\27\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\23\15\1\u02b3\22\15\23\0\1\15\6\0\2\15\7\0" - + "\7\15\4\0\23\15\1\u02b4\22\15\23\0\1\15\6\0" - + "\2\15\7\0\7\15\4\0\22\15\1\u02b5\23\15\23\0" - + "\1\15\6\0\2\15\7\0\7\15\4\0\12\15\1\u02b6" - + "\33\15\23\0\1\15\6\0\2\15\7\0\7\15\4\0" - + "\21\15\1\u02b7\24\15\23\0\1\15"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[45360]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - int j = offset; - /* index in unpacked array */ + /** the textposition at the last accepting state */ + private int zzMarkedPos; - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** the current text position in the buffer */ + private int zzCurrentPos; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - private static final int ZZ_NO_MATCH = 1; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - private static final int ZZ_PUSHBACK_2BIG = 2; + /** the number of characters up to the start of the matched text */ + private int yychar; - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\6\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11" - + "\27\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11" - + "\4\1\1\11\2\1\1\11\1\1\1\11\1\1\1\11" - + "\3\1\1\11\1\1\1\0\3\11\2\0\1\1\1\0" - + "\1\1\2\11\1\1\1\11\3\1\1\0\2\1\1\0" - + "\2\11\1\0\73\1\12\11\1\1\6\11\1\1\1\11" - + "\1\1\6\0\2\11\3\1\1\11\2\0\1\11\3\0" - + "\1\11\1\0\1\11\1\1\2\11\4\1\1\0\111\1" - + "\1\11\12\0\1\11\5\0\1\11\110\1\1\11\1\0" - + "\1\11\1\1\1\0\1\11\12\0\77\1\10\0\65\1" - + "\2\0\147\1\1\11\107\1"; + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - private static int[] zzUnpackAttribute() { - int[] result = new int[695]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; - private static int zzUnpackAttribute(String packed, int offset, int[] result) { - int i = 0; - /* index in packed string */ + /* user code: */ - int j = offset; - /* index in unpacked array */ - - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } - - /** - * the input device - */ - private java.io.Reader zzReader; - - /** - * the current state of the DFA - */ - private int zzState; - - /** - * the current lexical state - */ - private int zzLexicalState = YYINITIAL; - - /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string - */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - - /** - * the textposition at the last accepting state - */ - private int zzMarkedPos; - - /** - * the current text position in the buffer - */ - private int zzCurrentPos; - - /** - * startRead marks the beginning of the yytext() string in the buffer - */ - private int zzStartRead; - - /** - * endRead marks the last character in the buffer, that has been read from - * input - */ - private int zzEndRead; - - /** - * number of newlines encountered up to the start of the matched text - */ - private int yyline; - - /** - * the number of characters up to the start of the matched text - */ - private int yychar; - - /** - * the number of characters from the last newline up to the start of the - * matched text - */ - private int yycolumn; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** - * zzAtEOF == true <=> the scanner is at the EOF - */ - private boolean zzAtEOF; - - /** - * denotes if the user-EOF-code has already been executed - */ - private boolean zzEOFDone; - - /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. - */ - private int zzFinalHighSurrogate = 0; - - /* user code: */ StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; @@ -1273,22 +1248,22 @@ public final class ActionScriptLexer { private final List listeners = new ArrayList<>(); - public void addListener(LexListener listener) { + public void addListener(LexListener listener){ listeners.add(listener); } - public void removeListener(LexListener listener) { + public void removeListener(LexListener listener){ listeners.remove(listener); } - public void informListenersLex(ParsedSymbol s) { - for (LexListener l : listeners) { + public void informListenersLex(ParsedSymbol s){ + for(LexListener l:listeners){ l.onLex(s); } } - public void informListenersPushBack(ParsedSymbol s) { - for (LexListener l : listeners) { + public void informListenersPushBack(ParsedSymbol s){ + for(LexListener l:listeners){ l.onPushBack(s); } } @@ -1300,10 +1275,9 @@ public final class ActionScriptLexer { } ParsedSymbol last; - - public ParsedSymbol lex() throws java.io.IOException, ActionParseException { + public ParsedSymbol lex() throws java.io.IOException, ActionParseException{ ParsedSymbol ret = null; - if (!pushedBack.isEmpty()) { + if (!pushedBack.isEmpty()){ ret = last = pushedBack.pop(); } else { ret = last = yylex(); @@ -1312,1272 +1286,1052 @@ public final class ActionScriptLexer { return ret; } - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public ActionScriptLexer(java.io.Reader in) { - this.zzReader = in; + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public ActionScriptLexer(java.io.Reader in) { + this.zzReader = in; + } + + + /** + * Unpacks the compressed character translation table. + * + * @param packed the packed character translation table + * @return the unpacked character translation table + */ + private static char [] zzUnpackCMap(String packed) { + char [] map = new char[0x110000]; + int i = 0; /* index in packed string */ + int j = 0; /* index in unpacked array */ + while (i < 2916) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; } - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char[] zzUnpackCMap(String packed) { - char[] map = new char[0x110000]; - int i = 0; - /* index in packed string */ + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } - int j = 0; - /* index in unpacked array */ + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int totalRead = 0; + while (totalRead < requested) { + int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); + if (numRead == -1) { + break; + } + totalRead += numRead; + } - while (i < 2916) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 0); + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; } - return map; + } + return false; } - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * - * @exception java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { + // totalRead = 0: End of stream + return true; + } - /* first: make room (if you can) */ - if (zzStartRead > 0) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; - } + if (zzReader != null) + zzReader.close(); + } - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { - /* if not: blow it up */ - char newBuffer[] = new char[zzBuffer.length * 2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - } - /* fill the buffer with new input */ - int requested = zzBuffer.length - zzEndRead; - int totalRead = 0; - while (totalRead < requested) { - int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); - if (numRead == -1) { - break; - } - totalRead += numRead; - } + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + zzFinalHighSurrogate = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) + zzBuffer = new char[ZZ_BUFFERSIZE]; + } - if (totalRead > 0) { - zzEndRead += totalRead; - if (totalRead == requested) { - /* possibly more input available */ - if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { - --zzEndRead; - zzFinalHighSurrogate = 1; - } - } - return false; - } + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } - // totalRead = 0: End of stream - return true; + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + */ + public final String yytext() { + return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); + } + + + /** + * Returns the character at position pos from the + * matched text. + * + * It is equivalent to yytext().charAt(pos), but faster + * + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. + * + * @return the character at position pos + */ + public final char yycharat(int pos) { + return zzBuffer[zzStartRead+pos]; + } + + + /** + * Returns the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occured while scanning. + * + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). + * + * Usual syntax/scanner level error handling should be done + * in error fallback rules. + * + * @param errorCode the code of the errormessage to display + */ + private void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } + catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; } - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; - /* indicate end of file */ + throw new Error(message); + } - zzEndRead = zzStartRead; - /* invalidate buffer */ - if (zzReader != null) { - zzReader.close(); - } - } + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if ( number > yylength() ) + zzScanError(ZZ_PUSHBACK_2BIG); - /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has - * grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - zzFinalHighSurrogate = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) { - zzBuffer = new char[ZZ_BUFFERSIZE]; - } - } + zzMarkedPos -= number; + } - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - public final void yybegin(int newState) { - zzLexicalState = newState; - } + /** + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. + * + * @return the next token + * @exception java.io.IOException if any I/O-Error occurs + */ + public ParsedSymbol yylex() throws java.io.IOException, ActionParseException { + int zzInput; + int zzAction; - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); - } + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char [] zzBufferL = zzBuffer; + char [] zzCMapL = ZZ_CMAP; - /** - * Returns the character at position pos from the matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead + pos]; - } + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos - zzStartRead; - } + while (true) { + zzMarkedPosL = zzMarkedPos; - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } + yychar+= zzMarkedPosL-zzStartRead; - throw new Error(message); - } + zzAction = -1; - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! - */ - public void yypushback(int number) { - if (number > yylength()) { - zzScanError(ZZ_PUSHBACK_2BIG); - } + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; - zzMarkedPos -= number; - } + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } - /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public ParsedSymbol yylex() throws java.io.IOException, ActionParseException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char[] zzBufferL = zzBuffer; - char[] zzCMapL = ZZ_CMAP; - - int[] zzTransL = ZZ_TRANS; - int[] zzRowMapL = ZZ_ROWMAP; - int[] zzAttrL = ZZ_ATTRIBUTE; + zzForAction: { while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar += zzMarkedPosL - zzStartRead; - - zzAction = -1; - - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; - - zzState = ZZ_LEXSTATE[zzLexicalState]; - - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; } - - zzForAction: - { - while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } else { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - } - int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]]; - if (zzNext == -1) { - break zzForAction; - } - zzState = zzNext; - - zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ((zzAttributes & 8) == 8) { - break zzForAction; - } - } - - } + else { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); } + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; - // store back cached position - zzMarkedPos = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 184: - break; - case 2: { - yyline++; - } - case 185: - break; - case 3: { - /*ignore*/ - - } - case 186: - break; - case 4: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); - } - case 187: - break; - case 5: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); - } - case 188: - break; - case 6: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); - } - case 189: - break; - case 7: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); - } - case 190: - break; - case 8: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); - } - case 191: - break; - case 9: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); - } - case 192: - break; - case 10: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); - } - case 193: - break; - case 11: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); - } - case 194: - break; - case 12: { - string.setLength(0); - yybegin(STRING); - } - case 195: - break; - case 13: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); - } - case 196: - break; - case 14: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); - } - case 197: - break; - case 15: { - string.setLength(0); - yybegin(CHARLITERAL); - } - case 198: - break; - case 16: { - string.setLength(0); - yybegin(OIDENTIFIER); - } - case 199: - break; - case 17: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); - } - case 200: - break; - case 18: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); - } - case 201: - break; - case 19: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); - } - case 202: - break; - case 20: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); - } - case 203: - break; - case 21: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); - } - case 204: - break; - case 22: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); - } - case 205: - break; - case 23: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); - } - case 206: - break; - case 24: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); - } - case 207: - break; - case 25: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); - } - case 208: - break; - case 26: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); - } - case 209: - break; - case 27: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); - } - case 210: - break; - case 28: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); - } - case 211: - break; - case 29: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); - } - case 212: - break; - case 30: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); - } - case 213: - break; - case 31: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); - } - case 214: - break; - case 32: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); - } - case 215: - break; - case 33: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); - } - case 216: - break; - case 34: { - string.append(yytext()); - } - case 217: - break; - case 35: { - yybegin(YYINITIAL); - yyline++; - } - case 218: - break; - case 36: { - yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); - } - case 219: - break; - case 37: { - string.append(yytext()); - yyline++; - } - case 220: - break; - case 38: { - yybegin(XML); - string.append(yytext()); - } - case 221: - break; - case 39: { - string.append(yytext()); - yyline++; - } - case 222: - break; - case 40: { - yybegin(YYINITIAL); - // length also includes the trailing quote - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); - } - case 223: - break; - case 41: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); - } - case 224: - break; - case 42: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); - } - case 225: - break; - case 43: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); - } - case 226: - break; - case 44: { - return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); - } - case 227: - break; - case 45: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); - } - case 228: - break; - case 46: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); - } - case 229: - break; - case 47: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); - } - case 230: - break; - case 48: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); - } - case 231: - break; - case 49: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); - } - case 232: - break; - case 50: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); - } - case 233: - break; - case 51: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); - } - case 234: - break; - case 52: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); - } - case 235: - break; - case 53: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); - } - case 236: - break; - case 54: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); - } - case 237: - break; - case 55: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); - } - case 238: - break; - case 56: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); - } - case 239: - break; - case 57: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); - } - case 240: - break; - case 58: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); - } - case 241: - break; - case 59: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); - } - case 242: - break; - case 60: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); - } - case 243: - break; - case 61: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); - } - case 244: - break; - case 62: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); - } - case 245: - break; - case 63: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); - } - case 246: - break; - case 64: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); - } - case 247: - break; - case 65: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); - } - case 248: - break; - case 66: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); - } - case 249: - break; - case 67: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); - } - case 250: - break; - case 68: { - string.append('\\'); - /*illegal escape sequence*/ - - } - case 251: - break; - case 69: { - string.append('\"'); - } - case 252: - break; - case 70: { - string.append('\\'); - } - case 253: - break; - case 71: { - string.append('\''); - } - case 254: - break; - case 72: { - string.append('\b'); - } - case 255: - break; - case 73: { - string.append('\r'); - } - case 256: - break; - case 74: { - string.append('\n'); - } - case 257: - break; - case 75: { - string.append('\t'); - } - case 258: - break; - case 76: { - string.append('\f'); - } - case 259: - break; - case 77: { - throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 260: - break; - case 78: { - string.append('\u00A7'); - } - case 261: - break; - case 79: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); - } - case 262: - break; - case 80: { - string.setLength(0); - yybegin(XML); - String s = yytext(); - s = s.substring(1, s.length() - 1); - if (s.contains(" ")) { - s = s.substring(0, s.indexOf(' ')); - } - xmlTagName = s; - string.append(yytext()); - } - case 263: - break; - case 81: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); - } - case 264: - break; - case 82: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); - } - case 265: - break; - case 83: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); - } - case 266: - break; - case 84: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); - } - case 267: - break; - case 85: { - return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); - } - case 268: - break; - case 86: { - return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); - } - case 269: - break; - case 87: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); - } - case 270: - break; - case 88: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); - } - case 271: - break; - case 89: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); - } - case 272: - break; - case 90: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); - } - case 273: - break; - case 91: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); - } - case 274: - break; - case 92: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); - } - case 275: - break; - case 93: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); - } - case 276: - break; - case 94: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); - } - case 277: - break; - case 95: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); - } - case 278: - break; - case 96: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); - } - case 279: - break; - case 97: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); - } - case 280: - break; - case 98: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); - } - case 281: - break; - case 99: { - String t = yytext(); - return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); - } - case 282: - break; - case 100: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } - case 283: - break; - case 101: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); - } - case 284: - break; - case 102: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); - } - case 285: - break; - case 103: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); - } - case 286: - break; - case 104: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); - } - case 287: - break; - case 105: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); - } - case 288: - break; - case 106: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); - } - case 289: - break; - case 107: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); - } - case 290: - break; - case 108: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); - } - case 291: - break; - case 109: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); - } - case 292: - break; - case 110: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); - } - case 293: - break; - case 111: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); - } - case 294: - break; - case 112: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); - } - case 295: - break; - case 113: { - char val = (char) Integer.parseInt(yytext().substring(1), 8); - string.append(val); - } - case 296: - break; - case 114: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 297: - break; - case 115: { - string.append(yytext()); - String endtagname = yytext(); - endtagname = endtagname.substring(2, endtagname.length() - 1); - if (endtagname.equals(xmlTagName)) { - yybegin(YYINITIAL); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); - } - } - case 298: - break; - case 116: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); - } - case 299: - break; - case 117: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); - } - case 300: - break; - case 118: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); - } - case 301: - break; - case 119: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); - } - case 302: - break; - case 120: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); - } - case 303: - break; - case 121: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); - } - case 304: - break; - case 122: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); - } - case 305: - break; - case 123: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 306: - break; - case 124: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); - } - case 307: - break; - case 125: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); - } - case 308: - break; - case 126: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); - } - case 309: - break; - case 127: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); - } - case 310: - break; - case 128: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); - } - case 311: - break; - case 129: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); - } - case 312: - break; - case 130: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); - } - case 313: - break; - case 131: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); - } - case 314: - break; - case 132: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); - } - case 315: - break; - case 133: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); - } - case 316: - break; - case 134: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); - } - case 317: - break; - case 135: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); - } - case 318: - break; - case 136: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); - } - case 319: - break; - case 137: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); - } - case 320: - break; - case 138: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); - } - case 321: - break; - case 139: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); - } - case 322: - break; - case 140: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); - } - case 323: - break; - case 141: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); - } - case 324: - break; - case 142: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); - } - case 325: - break; - case 143: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); - } - case 326: - break; - case 144: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); - } - case 327: - break; - case 145: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); - } - case 328: - break; - case 146: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); - } - case 329: - break; - case 147: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); - } - case 330: - break; - case 148: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); - } - case 331: - break; - case 149: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); - } - case 332: - break; - case 150: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); - } - case 333: - break; - case 151: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); - } - case 334: - break; - case 152: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); - } - case 335: - break; - case 153: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); - } - case 336: - break; - case 154: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); - } - case 337: - break; - case 155: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); - } - case 338: - break; - case 156: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); - } - case 339: - break; - case 157: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); - } - case 340: - break; - case 158: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); - } - case 341: - break; - case 159: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); - } - case 342: - break; - case 160: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); - } - case 343: - break; - case 161: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); - } - case 344: - break; - case 162: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); - } - case 345: - break; - case 163: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); - } - case 346: - break; - case 164: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); - } - case 347: - break; - case 165: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); - } - case 348: - break; - case 166: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 349: - break; - case 167: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); - } - case 350: - break; - case 168: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); - } - case 351: - break; - case 169: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); - } - case 352: - break; - case 170: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); - } - case 353: - break; - case 171: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); - } - case 354: - break; - case 172: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); - } - case 355: - break; - case 173: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); - } - case 356: - break; - case 174: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); - } - case 357: - break; - case 175: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); - } - case 358: - break; - case 176: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); - } - case 359: - break; - case 177: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); - } - case 360: - break; - case 178: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); - } - case 361: - break; - case 179: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); - } - case 362: - break; - case 180: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); - } - case 363: - break; - case 181: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); - } - case 364: - break; - case 182: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); - } - case 365: - break; - case 183: { - return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); - } - case 366: - break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); - } - } else { - zzScanError(ZZ_NO_MATCH); - } - } } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + case 179: break; + case 2: + { yyline++; + } + case 180: break; + case 3: + { /*ignore*/ + } + case 181: break; + case 4: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); + } + case 182: break; + case 5: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); + } + case 183: break; + case 6: + { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); + } + case 184: break; + case 7: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); + } + case 185: break; + case 8: + { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); + } + case 186: break; + case 9: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); + } + case 187: break; + case 10: + { string.setLength(0); + yybegin(STRING); + } + case 188: break; + case 11: + { string.setLength(0); + yybegin(CHARLITERAL); + } + case 189: break; + case 12: + { string.setLength(0); + yybegin(OIDENTIFIER); + } + case 190: break; + case 13: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); + } + case 191: break; + case 14: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); + } + case 192: break; + case 15: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); + } + case 193: break; + case 16: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); + } + case 194: break; + case 17: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); + } + case 195: break; + case 18: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); + } + case 196: break; + case 19: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); + } + case 197: break; + case 20: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); + } + case 198: break; + case 21: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); + } + case 199: break; + case 22: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); + } + case 200: break; + case 23: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); + } + case 201: break; + case 24: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); + } + case 202: break; + case 25: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); + } + case 203: break; + case 26: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); + } + case 204: break; + case 27: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); + } + case 205: break; + case 28: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); + } + case 206: break; + case 29: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); + } + case 207: break; + case 30: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); + } + case 208: break; + case 31: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); + } + case 209: break; + case 32: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); + } + case 210: break; + case 33: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); + } + case 211: break; + case 34: + { string.append(yytext()); + } + case 212: break; + case 35: + { yybegin(YYINITIAL); yyline++; + } + case 213: break; + case 36: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); + } + case 214: break; + case 37: + { yybegin(YYINITIAL); + // length also includes the trailing quote + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); + } + case 215: break; + case 38: + { return new ParsedSymbol(SymbolGroup.PATH, SymbolType.PATH, yytext()); + } + case 216: break; + case 39: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); + } + case 217: break; + case 40: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); + } + case 218: break; + case 41: + { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); + } + case 219: break; + case 42: + { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); + } + case 220: break; + case 43: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); + } + case 221: break; + case 44: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); + } + case 222: break; + case 45: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); + } + case 223: break; + case 46: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLOR, yytext()); + } + case 224: break; + case 47: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); + } + case 225: break; + case 48: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); + } + case 226: break; + case 49: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); + } + case 227: break; + case 50: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); + } + case 228: break; + case 51: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); + } + case 229: break; + case 52: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); + } + case 230: break; + case 53: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); + } + case 231: break; + case 54: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); + } + case 232: break; + case 55: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); + } + case 233: break; + case 56: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); + } + case 234: break; + case 57: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); + } + case 235: break; + case 58: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); + } + case 236: break; + case 59: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); + } + case 237: break; + case 60: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); + } + case 238: break; + case 61: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); + } + case 239: break; + case 62: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); + } + case 240: break; + case 63: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); + } + case 241: break; + case 64: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); + } + case 242: break; + case 65: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); + } + case 243: break; + case 66: + { string.append('\\'); /*illegal escape sequence*/ + } + case 244: break; + case 67: + { string.append('\"'); + } + case 245: break; + case 68: + { string.append('\''); + } + case 246: break; + case 69: + { string.append('\\'); + } + case 247: break; + case 70: + { string.append('\b'); + } + case 248: break; + case 71: + { string.append('\r'); + } + case 249: break; + case 72: + { string.append('\n'); + } + case 250: break; + case 73: + { string.append('\t'); + } + case 251: break; + case 74: + { string.append('\f'); + } + case 252: break; + case 75: + { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 253: break; + case 76: + { string.append('\u00A7'); + } + case 254: break; + case 77: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); + } + case 255: break; + case 78: + { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); + } + case 256: break; + case 79: + { return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); + } + case 257: break; + case 80: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FULLAND, yytext()); + } + case 258: break; + case 81: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); + } + case 259: break; + case 82: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); + } + case 260: break; + case 83: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); + } + case 261: break; + case 84: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); + } + case 262: break; + case 85: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); + } + case 263: break; + case 86: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); + } + case 264: break; + case 87: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); + } + case 265: break; + case 88: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); + } + case 266: break; + case 89: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); + } + case 267: break; + case 90: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 268: break; + case 91: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); + } + case 269: break; + case 92: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); + } + case 270: break; + case 93: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); + } + case 271: break; + case 94: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); + } + case 272: break; + case 95: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); + } + case 273: break; + case 96: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); + } + case 274: break; + case 97: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + } + case 275: break; + case 98: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); + } + case 276: break; + case 99: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + } + case 277: break; + case 100: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CALL, yytext()); + } + case 278: break; + case 101: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); + } + case 279: break; + case 102: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 280: break; + case 103: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + } + case 281: break; + case 104: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + } + case 282: break; + case 105: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + } + case 283: break; + case 106: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); + } + case 284: break; + case 107: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 285: break; + case 108: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); + } + case 286: break; + case 109: + { char val = (char) Integer.parseInt(yytext().substring(1), 8); + string.append(val); + } + case 287: break; + case 110: + { char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 288: break; + case 111: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); + } + case 289: break; + case 112: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); + } + case 290: break; + case 113: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); + } + case 291: break; + case 114: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); + } + case 292: break; + case 115: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); + } + case 293: break; + case 116: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); + } + case 294: break; + case 117: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); + } + case 295: break; + case 118: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); + } + case 296: break; + case 119: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); + } + case 297: break; + case 120: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINT, yytext()); + } + case 298: break; + case 121: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); + } + case 299: break; + case 122: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); + } + case 300: break; + case 123: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); + } + case 301: break; + case 124: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); + } + case 302: break; + case 125: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); + } + case 303: break; + case 126: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); + } + case 304: break; + case 127: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); + } + case 305: break; + case 128: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); + } + case 306: break; + case 129: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); + } + case 307: break; + case 130: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); + } + case 308: break; + case 131: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); + } + case 309: break; + case 132: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); + } + case 310: break; + case 133: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); + } + case 311: break; + case 134: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); + } + case 312: break; + case 135: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); + } + case 313: break; + case 136: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); + } + case 314: break; + case 137: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); + } + case 315: break; + case 138: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); + } + case 316: break; + case 139: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); + } + case 317: break; + case 140: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); + } + case 318: break; + case 141: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); + } + case 319: break; + case 142: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); + } + case 320: break; + case 143: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); + } + case 321: break; + case 144: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); + } + case 322: break; + case 145: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); + } + case 323: break; + case 146: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTNUM, yytext()); + } + case 324: break; + case 147: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); + } + case 325: break; + case 148: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); + } + case 326: break; + case 149: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + } + case 327: break; + case 150: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); + } + case 328: break; + case 151: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); + } + case 329: break; + case 152: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); + } + case 330: break; + case 153: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); + } + case 331: break; + case 154: + { return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 332: break; + case 155: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.FSCOMMAND, yytext()); + } + case 333: break; + case 156: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); + } + case 334: break; + case 157: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); + } + case 335: break; + case 158: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + } + case 336: break; + case 159: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); + } + case 337: break; + case 160: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); + } + case 338: break; + case 161: + { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); + } + case 339: break; + case 162: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); + } + case 340: break; + case 163: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETVERSION, yytext()); + } + case 341: break; + case 164: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIE, yytext()); + } + case 342: break; + case 165: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); + } + case 343: break; + case 166: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); + } + case 344: break; + case 167: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); + } + case 345: break; + case 168: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIENUM, yytext()); + } + case 346: break; + case 169: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); + } + case 347: break; + case 170: + { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IFFRAMELOADED, yytext()); + } + case 348: break; + case 171: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); + } + case 349: break; + case 172: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAP, yytext()); + } + case 350: break; + case 173: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.UNLOADMOVIENUM, yytext()); + } + case 351: break; + case 174: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); + } + case 352: break; + case 175: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLESNUM, yytext()); + } + case 353: break; + case 176: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PRINTASBITMAPNUM, yytext()); + } + case 354: break; + case 177: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); + } + case 355: break; + case 178: + { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); + } + case 356: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ParsedSymbol(SymbolGroup.EOF, SymbolType.EOF, null); + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } } + } + + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java index 30f5823ea..27490287e 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.parser.script; /** @@ -25,7 +26,6 @@ public enum SymbolGroup { KEYWORD, STRING, COMMENT, - XML, IDENTIFIER, INTEGER, DOUBLE, @@ -33,5 +33,6 @@ public enum SymbolGroup { EOF, GLOBALFUNC, GLOBALCONST, - PREPROCESSOR + PREPROCESSOR, + PATH } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java index 79d47438a..a3cae84e2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.action.parser.script; import com.jpexs.decompiler.graph.GraphTargetItem; @@ -129,7 +130,6 @@ public enum SymbolType { //Other STRING(GraphTargetItem.PRECEDENCE_PRIMARY, false), COMMENT, - XML, IDENTIFIER(GraphTargetItem.PRECEDENCE_PRIMARY, false), INTEGER(GraphTargetItem.PRECEDENCE_PRIMARY, false), DOUBLE(GraphTargetItem.PRECEDENCE_PRIMARY, false), @@ -183,7 +183,8 @@ public enum SymbolType { UNLOADMOVIE(GraphTargetItem.PRECEDENCE_PRIMARY, false), UNLOADMOVIENUM(GraphTargetItem.PRECEDENCE_PRIMARY, false), FSCOMMAND(GraphTargetItem.PRECEDENCE_PRIMARY, false), - PREPROCESSOR(GraphTargetItem.PRECEDENCE_PRIMARY, false); + PREPROCESSOR(GraphTargetItem.PRECEDENCE_PRIMARY, false), + PATH(GraphTargetItem.PRECEDENCE_PRIMARY, false); private int precedence = GraphTargetItem.NOPRECEDENCE; diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index c60034eb9..eef22e528 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -732,7 +732,7 @@ public class ActionScript2Test extends ActionScript2TestBase { + "a = escape(\"how\");\r\n" + "var f = a;\r\n" + "fscommand(\"alert(\\\"hi\\\");\");\r\n" - + "a = mc._alpha;\r\n" + + "a = getProperty(mc, _alpha);\r\n" + "a = getTimer();\r\n" + "getURL(\"http://localhost/\",\"wnd\",\"POST\");\r\n" + "a = getVersion();\r\n" @@ -772,8 +772,8 @@ public class ActionScript2Test extends ActionScript2TestBase { + "a = random(10);\r\n" + "removeMovieClip(mc);\r\n" + "setInterval(tst,5,f);\r\n" - + "mc._alpha = 25;\r\n" - + "setTimeout(tst,5,f);\r\n" + + "setProperty(mc, _alpha, 25);\r\n" + + "setTimeout(ts,5,f);\r\n" + "showRedrawRegions(false,0);\r\n" + "startDrag(mc,1,5,5,6,6);\r\n" + "stop();\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java index 5228518be..c8539e3d3 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/FileTestBase.java @@ -12,7 +12,8 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash; import java.io.File; @@ -54,6 +55,7 @@ public abstract class FileTestBase { Object[][] ret = new Object[files.size() + 2][1]; ret[0][0] = "testdata/as2/as2.swf"; ret[1][0] = "testdata/as3/as3.swf"; + ret[1][0] = "testdata/as2_slash_syntax/slash_syntax.swf"; for (int f = 0; f < files.size(); f++) { ret[f + 2][0] = files.get(f); } diff --git a/libsrc/ffdec_lib/testdata/as2/as2.fla b/libsrc/ffdec_lib/testdata/as2/as2.fla index c8052c976..f65866a74 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.fla and b/libsrc/ffdec_lib/testdata/as2/as2.fla differ diff --git a/libsrc/ffdec_lib/testdata/as2/as2.swf b/libsrc/ffdec_lib/testdata/as2/as2.swf index e89b13e4a..9a417d836 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.swf and b/libsrc/ffdec_lib/testdata/as2/as2.swf differ diff --git a/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.fla b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.fla new file mode 100644 index 000000000..259958fba Binary files /dev/null and b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.fla differ diff --git a/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.html b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.html new file mode 100644 index 000000000..340f600b4 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.html @@ -0,0 +1,49 @@ + + + + slash_syntax + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + Get Adobe Flash player + + + + + +
+ + diff --git a/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.swf b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.swf new file mode 100644 index 000000000..7194b70fc Binary files /dev/null and b/libsrc/ffdec_lib/testdata/as2_slash_syntax/slash_syntax.swf differ diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex index 36088cacc..23bd380e8 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex @@ -70,6 +70,12 @@ IdentNext = {IdentFirst} | [\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}] /* identifiers */ Identifier = {IdentFirst}{IdentNext}* +IdentifierOrParent = {Identifier} | ".." + +Path = "/" | "/"? {IdentifierOrParent} ("/" {IdentifierOrParent})* "/"? + +SlashVariable = {Path} ":" {Identifier} + /* identifiers */ IdentifierNs = {Identifier} ":" {Identifier} @@ -291,6 +297,7 @@ RegExp = \/([^\r\n/]|\\\/)+\/[a-z]* xmlTagName = s.substring(1); }*/ /* identifiers */ + {SlashVariable} { return token(TokenType.IDENTIFIER); } {Identifier}{NamespaceSuffix} { return token(TokenType.REGEX); } {Identifier} { return token(TokenType.IDENTIFIER); }