diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java index b0d80384c..2c58924dc 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/pcode/ASMParser.java @@ -306,8 +306,13 @@ public class ASMParser { actualLen++; if (actualLen == stores.peek().getStoreSize()) { ActionStore st = stores.pop(); - st.setStore(list.subList(list.size() - actualLen, list.size())); - list = list.subList(0, list.size() - actualLen); + List sl = new ArrayList<>(); + sl.addAll(list.subList(list.size() - actualLen, list.size())); + st.setStore(sl); + + List sl2 = list.subList(0, list.size() - actualLen); + list = new ArrayList<>(); + list.addAll(sl2); if (!stores.isEmpty()) { actualLen = storeLengths.pop(); } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index ec0892c37..9fb9b431e 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 14.4.13 9:35 */ +/* The following code was generated by JFlex 1.4.3 on 13.7.13 19:57 */ /* * Copyright (C) 2013 JPEXS @@ -23,7 +23,7 @@ import java.util.Stack; /** * This class is a scanner generated by - * JFlex 1.4.3 on 14.4.13 9:35 from the + * JFlex 1.4.3 on 13.7.13 19:57 from the * specification file * D:/Dokumenty/Programovani/JavaSE/FFDec/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex */ @@ -57,120 +57,120 @@ public final class ActionScriptLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\14\1\106" - + "\1\16\1\0\1\6\1\115\1\111\1\30\1\76\1\77\1\5\1\113" - + "\1\105\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\104" - + "\1\12\1\15\1\13\1\110\1\116\1\61\1\22\1\71\1\72\1\25" - + "\1\63\1\6\1\65\3\6\1\67\1\70\1\75\1\6\1\74\1\66" - + "\1\6\1\62\1\64\1\60\1\73\1\6\1\21\2\6\1\102\1\27" - + "\1\103\1\114\1\6\1\0\1\34\1\31\1\36\1\45\1\33\1\46" - + "\1\57\1\51\1\43\1\6\1\35\1\47\1\54\1\41\1\40\1\52" - + "\1\6\1\32\1\37\1\42\1\44\1\55\1\50\1\56\1\53\1\6" - + "\1\100\1\112\1\101\1\107\41\7\2\0\4\6\4\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\11\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\4\7\7\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\244\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\2\6\42\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\12\0\53\6\1\0" - + "\1\6\3\0\u0149\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\12\7\3\0\2\6\12\7\6\0\46\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\1\7\15\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\32\0\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\32\6\26\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\16\0\46\6\12\0\66\6\11\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\u51cc\6\64\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\14\0\2\7\1\0\31\6\10\0" - + "\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6\1\0\2\6" - + "\16\0\12\6\120\0\10\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\43\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\u012e\6\2\0\76\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"; + "\11\7\1\3\1\2\1\0\1\3\1\1\16\7\4\0\1\14\1\107" + + "\1\16\1\0\1\6\1\116\1\112\1\30\1\77\1\100\1\5\1\114" + + "\1\106\1\26\1\11\1\4\1\17\3\23\4\24\2\20\1\10\1\105" + + "\1\12\1\15\1\13\1\111\1\117\1\61\1\22\1\71\1\72\1\25" + + "\1\63\1\6\1\65\1\76\2\6\1\67\1\70\1\75\1\6\1\74" + + "\1\66\1\6\1\62\1\64\1\60\1\73\1\6\1\21\2\6\1\103" + + "\1\27\1\104\1\115\1\6\1\0\1\34\1\31\1\36\1\45\1\33" + + "\1\46\1\57\1\51\1\43\1\6\1\35\1\47\1\54\1\41\1\40" + + "\1\52\1\6\1\32\1\37\1\42\1\44\1\55\1\50\1\56\1\53" + + "\1\6\1\101\1\113\1\102\1\110\41\7\2\0\4\6\4\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\11\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\4\7\7\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\244\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\2\6\42\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\12\0\53\6" + + "\1\0\1\6\3\0\u0149\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\12\7\3\0\2\6\12\7\6\0\46\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\1\7\15\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\32\0\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\32\6" + + "\26\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\16\0\46\6\12\0\66\6\11\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\u51cc\6\64\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\14\0\2\7\1\0\31\6" + + "\10\0\120\6\2\7\45\0\11\6\2\0\147\6\2\0\4\6\1\0" + + "\2\6\16\0\12\6\120\0\10\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\43\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\u012e\6\2\0\76\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"; /** * Translates characters to character classes */ @@ -182,43 +182,45 @@ public final class ActionScriptLexer { private static final String ZZ_ACTION_PACKED_0 = "\5\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" - + "\25\6\1\20\1\21\1\22\1\23\1\24\1\25\1\26" + + "\26\6\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\2\42\1\43\1\1\1\41\2\44" + "\1\41\1\1\1\45\3\41\1\3\1\0\1\46\1\47" + "\1\50\2\0\1\51\1\0\1\52\1\53\1\54\1\55" + "\1\56\1\57\1\51\1\0\2\57\1\0\1\60\1\61" - + "\6\6\1\62\23\6\1\63\1\64\1\65\3\6\1\66" - + "\25\6\1\67\1\70\1\71\1\72\1\73\1\74\1\75" + + "\7\6\1\62\23\6\1\63\1\64\1\65\4\6\1\66" + + "\27\6\1\67\1\70\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\6\0\2\3\2\0\1\112" + "\3\0\1\113\1\0\1\114\1\115\1\116\1\117\2\120" - + "\1\57\1\51\1\0\13\6\1\121\1\122\5\6\1\123" + + "\1\57\1\51\1\0\14\6\1\121\1\122\5\6\1\123" + "\1\6\1\124\5\6\1\125\7\6\1\126\2\6\1\127" - + "\5\6\1\130\20\6\1\131\1\6\1\132\3\6\1\133" - + "\1\102\7\0\1\134\5\0\1\135\1\120\1\57\4\6" - + "\1\136\1\137\1\6\1\140\6\6\1\141\6\6\1\142" - + "\1\6\1\143\4\6\1\144\17\6\1\145\6\6\1\146" - + "\4\6\1\147\5\6\1\41\1\0\1\150\12\0\1\120" - + "\1\57\1\151\4\6\1\152\1\153\1\6\1\154\5\6" - + "\1\155\4\6\1\156\3\6\1\157\12\6\1\160\5\6" - + "\1\161\5\6\1\162\1\6\1\163\6\6\10\0\1\120" - + "\1\57\1\164\1\6\1\165\3\6\1\166\2\6\1\167" - + "\1\170\6\6\1\171\4\6\1\172\2\6\1\173\4\6" - + "\1\174\6\6\1\175\2\6\1\176\2\6\1\177\1\200" - + "\2\0\1\113\1\120\1\57\1\6\1\201\17\6\1\202" - + "\1\6\1\203\1\204\5\6\1\205\1\206\4\6\1\41" - + "\1\120\1\57\1\6\1\207\2\6\1\210\1\211\6\6" - + "\1\212\4\6\1\213\5\6\1\214\1\215\2\6\1\120" - + "\1\57\1\6\1\216\1\6\1\217\1\220\4\6\1\221" - + "\3\6\1\222\1\6\1\223\1\224\3\6\1\120\1\57" - + "\2\6\1\225\1\226\1\6\1\227\1\6\1\230\5\6" - + "\1\57\6\6\1\231\1\232\1\233\1\57\6\6\1\57" - + "\1\6\1\234\1\6\1\235\1\6\1\236\1\57\3\6" - + "\1\57\1\237\2\6\1\57\2\6\1\240\1\6\1\241"; + + "\6\6\1\130\20\6\1\131\1\6\1\132\2\6\1\133" + + "\2\6\1\134\1\102\7\0\1\135\5\0\1\136\1\120" + + "\1\57\4\6\1\137\1\140\1\141\1\6\1\142\6\6" + + "\1\143\7\6\1\144\1\6\1\145\4\6\1\146\20\6" + + "\1\147\6\6\1\150\4\6\1\151\6\6\1\41\1\0" + + "\1\152\12\0\1\120\1\57\1\153\4\6\1\154\1\155" + + "\1\6\1\156\5\6\1\157\5\6\1\160\3\6\1\161" + + "\13\6\1\162\5\6\1\163\5\6\1\164\1\6\1\165" + + "\7\6\10\0\1\120\1\57\1\166\1\6\1\167\3\6" + + "\1\170\2\6\1\171\1\172\7\6\1\173\4\6\1\174" + + "\3\6\1\175\4\6\1\176\6\6\1\177\2\6\1\200" + + "\2\6\1\201\1\202\1\6\2\0\1\113\1\120\1\57" + + "\1\6\1\203\5\6\1\204\13\6\1\205\1\6\1\206" + + "\1\207\5\6\1\210\1\211\5\6\1\41\1\120\1\57" + + "\1\6\1\212\2\6\1\213\1\214\6\6\1\215\5\6" + + "\1\216\5\6\1\217\1\220\2\6\1\221\1\120\1\57" + + "\1\6\1\222\1\6\1\223\1\224\4\6\1\225\2\6" + + "\1\226\1\6\1\227\1\6\1\230\1\231\3\6\1\120" + + "\1\57\2\6\1\232\1\233\1\6\1\234\1\6\1\235" + + "\5\6\1\57\6\6\1\236\1\237\1\240\1\57\6\6" + + "\1\57\1\6\1\241\1\6\1\242\1\6\1\243\1\57" + + "\3\6\1\57\1\244\2\6\1\57\2\6\1\245\1\6" + + "\1\246"; private static int[] zzUnpackAction() { - int[] result = new int[608]; + int[] result = new int[633]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -242,85 +244,89 @@ public final class ActionScriptLexer { */ private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\117\0\236\0\355\0\u013c\0\u018b\0\u01da\0\u018b" - + "\0\u0229\0\u0278\0\u02c7\0\u0316\0\u0365\0\u03b4\0\u0403\0\u0452" - + "\0\u04a1\0\u018b\0\u04f0\0\u053f\0\u058e\0\u018b\0\u05dd\0\u062c" - + "\0\u067b\0\u06ca\0\u0719\0\u0768\0\u07b7\0\u0806\0\u0855\0\u08a4" - + "\0\u08f3\0\u0942\0\u0991\0\u09e0\0\u0a2f\0\u0a7e\0\u0acd\0\u0b1c" - + "\0\u0b6b\0\u0bba\0\u0c09\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b" - + "\0\u018b\0\u018b\0\u018b\0\u0c58\0\u018b\0\u018b\0\u0ca7\0\u0cf6" - + "\0\u0d45\0\u0d94\0\u0de3\0\u018b\0\u0e32\0\u0e81\0\u018b\0\u018b" - + "\0\u0ed0\0\u0f1f\0\u0f6e\0\u018b\0\u0fbd\0\u100c\0\u018b\0\u105b" - + "\0\u018b\0\u10aa\0\u10f9\0\u1148\0\u018b\0\u018b\0\u018b\0\u1197" - + "\0\u11e6\0\u1235\0\u1284\0\u12d3\0\u018b\0\u1322\0\u018b\0\u1371" - + "\0\u13c0\0\u140f\0\u145e\0\u14ad\0\u14fc\0\u154b\0\u018b\0\u018b" - + "\0\u159a\0\u15e9\0\u1638\0\u1687\0\u16d6\0\u1725\0\u0316\0\u1774" - + "\0\u17c3\0\u1812\0\u1861\0\u18b0\0\u18ff\0\u194e\0\u199d\0\u19ec" - + "\0\u1a3b\0\u1a8a\0\u1ad9\0\u1b28\0\u1b77\0\u1bc6\0\u1c15\0\u1c64" - + "\0\u1cb3\0\u1d02\0\u0316\0\u1d51\0\u1da0\0\u1def\0\u1e3e\0\u1e8d" - + "\0\u0316\0\u1edc\0\u1f2b\0\u1f7a\0\u1fc9\0\u2018\0\u2067\0\u20b6" - + "\0\u2105\0\u2154\0\u21a3\0\u21f2\0\u2241\0\u2290\0\u22df\0\u232e" - + "\0\u237d\0\u23cc\0\u241b\0\u246a\0\u24b9\0\u2508\0\u2557\0\u018b" - + "\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b" - + "\0\u018b\0\u25a6\0\u25f5\0\u018b\0\u018b\0\u018b\0\u018b\0\u018b" - + "\0\u018b\0\u018b\0\u100c\0\u2644\0\u2693\0\u26e2\0\u2731\0\u2780" - + "\0\u27cf\0\u018b\0\u281e\0\u286d\0\u018b\0\u28bc\0\u290b\0\u295a" - + "\0\u018b\0\u29a9\0\u018b\0\u29f8\0\u018b\0\u018b\0\u145e\0\u2a47" - + "\0\u2a96\0\u2ae5\0\u2ae5\0\u2b34\0\u2b83\0\u2bd2\0\u2c21\0\u2c70" - + "\0\u2cbf\0\u2d0e\0\u2d5d\0\u2dac\0\u2dfb\0\u2e4a\0\u0316\0\u0316" - + "\0\u2e99\0\u2ee8\0\u2f37\0\u2f86\0\u2fd5\0\u0316\0\u3024\0\u0316" - + "\0\u3073\0\u30c2\0\u3111\0\u3160\0\u31af\0\u0316\0\u31fe\0\u324d" - + "\0\u329c\0\u32eb\0\u333a\0\u3389\0\u33d8\0\u3427\0\u3476\0\u34c5" - + "\0\u0316\0\u3514\0\u3563\0\u35b2\0\u3601\0\u3650\0\u0316\0\u369f" - + "\0\u36ee\0\u373d\0\u378c\0\u37db\0\u382a\0\u3879\0\u38c8\0\u3917" - + "\0\u3966\0\u39b5\0\u3a04\0\u3a53\0\u3aa2\0\u3af1\0\u3b40\0\u0316" - + "\0\u3b8f\0\u3bde\0\u3c2d\0\u3c7c\0\u3ccb\0\u018b\0\u018b\0\u3d1a" - + "\0\u3d69\0\u3db8\0\u3e07\0\u3e56\0\u3ea5\0\u3ef4\0\u018b\0\u3f43" - + "\0\u3f92\0\u3fe1\0\u4030\0\u407f\0\u018b\0\u40ce\0\u411d\0\u416c" - + "\0\u41bb\0\u420a\0\u4259\0\u0316\0\u0316\0\u42a8\0\u0316\0\u42f7" - + "\0\u4346\0\u4395\0\u43e4\0\u4433\0\u4482\0\u44d1\0\u4520\0\u456f" - + "\0\u45be\0\u460d\0\u465c\0\u46ab\0\u0316\0\u46fa\0\u0316\0\u4749" - + "\0\u4798\0\u47e7\0\u4836\0\u0316\0\u4885\0\u48d4\0\u4923\0\u4972" - + "\0\u49c1\0\u4a10\0\u4a5f\0\u4aae\0\u4afd\0\u4b4c\0\u4b9b\0\u4bea" - + "\0\u4c39\0\u4c88\0\u4cd7\0\u0316\0\u4d26\0\u4d75\0\u4dc4\0\u4e13" - + "\0\u4e62\0\u4eb1\0\u0316\0\u4f00\0\u4f4f\0\u4f9e\0\u4fed\0\u0316" - + "\0\u503c\0\u508b\0\u50da\0\u5129\0\u5178\0\u51c7\0\u5216\0\u018b" - + "\0\u5265\0\u52b4\0\u5303\0\u5352\0\u53a1\0\u53f0\0\u543f\0\u548e" - + "\0\u54dd\0\u552c\0\u557b\0\u55ca\0\u0316\0\u5619\0\u5668\0\u56b7" - + "\0\u5706\0\u0316\0\u0316\0\u5755\0\u0316\0\u57a4\0\u57f3\0\u5842" - + "\0\u5891\0\u58e0\0\u0316\0\u592f\0\u597e\0\u59cd\0\u5a1c\0\u0316" - + "\0\u5a6b\0\u5aba\0\u5b09\0\u0316\0\u5b58\0\u5ba7\0\u5bf6\0\u5c45" - + "\0\u5c94\0\u5ce3\0\u5d32\0\u5d81\0\u5dd0\0\u5e1f\0\u0316\0\u5e6e" - + "\0\u5ebd\0\u5f0c\0\u5f5b\0\u5faa\0\u0316\0\u5ff9\0\u6048\0\u6097" - + "\0\u60e6\0\u6135\0\u0316\0\u6184\0\u0316\0\u61d3\0\u6222\0\u6271" - + "\0\u62c0\0\u630f\0\u635e\0\u63ad\0\u63fc\0\u644b\0\u649a\0\u64e9" - + "\0\u6538\0\u6587\0\u65d6\0\u6625\0\u6674\0\u0316\0\u66c3\0\u0316" - + "\0\u6712\0\u6761\0\u67b0\0\u0316\0\u67ff\0\u684e\0\u0316\0\u0316" - + "\0\u689d\0\u68ec\0\u693b\0\u698a\0\u69d9\0\u6a28\0\u0316\0\u6a77" - + "\0\u6ac6\0\u6b15\0\u6b64\0\u0316\0\u6bb3\0\u6c02\0\u0316\0\u6c51" - + "\0\u6ca0\0\u6cef\0\u6d3e\0\u0316\0\u6d8d\0\u6ddc\0\u6e2b\0\u6e7a" - + "\0\u6ec9\0\u6f18\0\u0316\0\u6f67\0\u6fb6\0\u0316\0\u7005\0\u7054" - + "\0\u0316\0\u0316\0\u70a3\0\u70f2\0\u543f\0\u7141\0\u7190\0\u71df" - + "\0\u0316\0\u722e\0\u727d\0\u72cc\0\u731b\0\u736a\0\u73b9\0\u7408" - + "\0\u7457\0\u74a6\0\u74f5\0\u7544\0\u7593\0\u75e2\0\u7631\0\u7680" - + "\0\u0316\0\u76cf\0\u0316\0\u0316\0\u771e\0\u776d\0\u77bc\0\u780b" - + "\0\u785a\0\u0316\0\u0316\0\u78a9\0\u78f8\0\u7947\0\u7996\0\u644b" - + "\0\u79e5\0\u7a34\0\u7a83\0\u0316\0\u7ad2\0\u7b21\0\u0316\0\u0316" - + "\0\u7b70\0\u7bbf\0\u7c0e\0\u7c5d\0\u7cac\0\u7cfb\0\u0316\0\u7d4a" - + "\0\u7d99\0\u7de8\0\u7e37\0\u0316\0\u7e86\0\u7ed5\0\u7f24\0\u7f73" - + "\0\u7fc2\0\u0316\0\u0316\0\u8011\0\u8060\0\u80af\0\u80fe\0\u814d" - + "\0\u0316\0\u819c\0\u0316\0\u0316\0\u81eb\0\u823a\0\u8289\0\u82d8" - + "\0\u0316\0\u8327\0\u8376\0\u83c5\0\u0316\0\u8414\0\u0316\0\u0316" - + "\0\u8463\0\u84b2\0\u8501\0\u018b\0\u8550\0\u859f\0\u85ee\0\u0316" - + "\0\u0316\0\u863d\0\u0316\0\u868c\0\u0316\0\u86db\0\u872a\0\u8779" - + "\0\u87c8\0\u8817\0\u8866\0\u88b5\0\u8904\0\u8953\0\u89a2\0\u89f1" - + "\0\u8a40\0\u0316\0\u0316\0\u0316\0\u8a8f\0\u8ade\0\u8b2d\0\u8b7c" - + "\0\u8bcb\0\u8c1a\0\u8c69\0\u8cb8\0\u8d07\0\u0316\0\u8d56\0\u0316" - + "\0\u8da5\0\u0316\0\u8df4\0\u8e43\0\u8e92\0\u8ee1\0\u8f30\0\u0316" - + "\0\u8f7f\0\u8fce\0\u140f\0\u901d\0\u906c\0\u0316\0\u90bb\0\u0316"; + "\0\0\0\120\0\240\0\360\0\u0140\0\u0190\0\u01e0\0\u0190" + + "\0\u0230\0\u0280\0\u02d0\0\u0320\0\u0370\0\u03c0\0\u0410\0\u0460" + + "\0\u04b0\0\u0190\0\u0500\0\u0550\0\u05a0\0\u0190\0\u05f0\0\u0640" + + "\0\u0690\0\u06e0\0\u0730\0\u0780\0\u07d0\0\u0820\0\u0870\0\u08c0" + + "\0\u0910\0\u0960\0\u09b0\0\u0a00\0\u0a50\0\u0aa0\0\u0af0\0\u0b40" + + "\0\u0b90\0\u0be0\0\u0c30\0\u0c80\0\u0190\0\u0190\0\u0190\0\u0190" + + "\0\u0190\0\u0190\0\u0190\0\u0190\0\u0cd0\0\u0190\0\u0190\0\u0d20" + + "\0\u0d70\0\u0dc0\0\u0e10\0\u0e60\0\u0190\0\u0eb0\0\u0f00\0\u0190" + + "\0\u0190\0\u0f50\0\u0fa0\0\u0ff0\0\u0190\0\u1040\0\u1090\0\u0190" + + "\0\u10e0\0\u0190\0\u1130\0\u1180\0\u11d0\0\u0190\0\u0190\0\u0190" + + "\0\u1220\0\u1270\0\u12c0\0\u1310\0\u1360\0\u0190\0\u13b0\0\u0190" + + "\0\u1400\0\u1450\0\u14a0\0\u14f0\0\u1540\0\u1590\0\u15e0\0\u0190" + + "\0\u0190\0\u1630\0\u1680\0\u16d0\0\u1720\0\u1770\0\u17c0\0\u1810" + + "\0\u0320\0\u1860\0\u18b0\0\u1900\0\u1950\0\u19a0\0\u19f0\0\u1a40" + + "\0\u1a90\0\u1ae0\0\u1b30\0\u1b80\0\u1bd0\0\u1c20\0\u1c70\0\u1cc0" + + "\0\u1d10\0\u1d60\0\u1db0\0\u1e00\0\u0320\0\u1e50\0\u1ea0\0\u1ef0" + + "\0\u1f40\0\u1f90\0\u1fe0\0\u0320\0\u2030\0\u2080\0\u20d0\0\u2120" + + "\0\u2170\0\u21c0\0\u2210\0\u2260\0\u22b0\0\u2300\0\u2350\0\u23a0" + + "\0\u23f0\0\u2440\0\u2490\0\u24e0\0\u2530\0\u2580\0\u25d0\0\u2620" + + "\0\u2670\0\u26c0\0\u2710\0\u2760\0\u0190\0\u0190\0\u0190\0\u0190" + + "\0\u0190\0\u0190\0\u0190\0\u0190\0\u0190\0\u0190\0\u27b0\0\u2800" + + "\0\u0190\0\u0190\0\u0190\0\u0190\0\u0190\0\u0190\0\u0190\0\u1090" + + "\0\u2850\0\u28a0\0\u28f0\0\u2940\0\u2990\0\u29e0\0\u0190\0\u2a30" + + "\0\u2a80\0\u0190\0\u2ad0\0\u2b20\0\u2b70\0\u0190\0\u2bc0\0\u0190" + + "\0\u2c10\0\u0190\0\u0190\0\u14f0\0\u2c60\0\u2cb0\0\u2d00\0\u2d00" + + "\0\u2d50\0\u2da0\0\u2df0\0\u2e40\0\u2e90\0\u2ee0\0\u2f30\0\u2f80" + + "\0\u2fd0\0\u3020\0\u3070\0\u30c0\0\u0320\0\u0320\0\u3110\0\u3160" + + "\0\u31b0\0\u3200\0\u3250\0\u0320\0\u32a0\0\u32f0\0\u3340\0\u3390" + + "\0\u33e0\0\u3430\0\u3480\0\u0320\0\u34d0\0\u3520\0\u3570\0\u35c0" + + "\0\u3610\0\u3660\0\u36b0\0\u3700\0\u3750\0\u37a0\0\u0320\0\u37f0" + + "\0\u3840\0\u3890\0\u38e0\0\u3930\0\u3980\0\u0320\0\u39d0\0\u3a20" + + "\0\u3a70\0\u3ac0\0\u3b10\0\u3b60\0\u3bb0\0\u3c00\0\u3c50\0\u3ca0" + + "\0\u3cf0\0\u3d40\0\u3d90\0\u3de0\0\u3e30\0\u3e80\0\u0320\0\u3ed0" + + "\0\u3f20\0\u3f70\0\u3fc0\0\u0320\0\u4010\0\u4060\0\u0190\0\u0190" + + "\0\u40b0\0\u4100\0\u4150\0\u41a0\0\u41f0\0\u4240\0\u4290\0\u0190" + + "\0\u42e0\0\u4330\0\u4380\0\u43d0\0\u4420\0\u0190\0\u4470\0\u44c0" + + "\0\u4510\0\u4560\0\u45b0\0\u4600\0\u0320\0\u0320\0\u0320\0\u4650" + + "\0\u0320\0\u46a0\0\u46f0\0\u4740\0\u4790\0\u47e0\0\u4830\0\u4880" + + "\0\u48d0\0\u4920\0\u4970\0\u49c0\0\u4a10\0\u4a60\0\u4ab0\0\u0320" + + "\0\u4b00\0\u0320\0\u4b50\0\u4ba0\0\u4bf0\0\u4c40\0\u0320\0\u4c90" + + "\0\u4ce0\0\u4d30\0\u4d80\0\u4dd0\0\u4e20\0\u4e70\0\u4ec0\0\u4f10" + + "\0\u4f60\0\u4fb0\0\u5000\0\u5050\0\u50a0\0\u50f0\0\u5140\0\u0320" + + "\0\u5190\0\u51e0\0\u5230\0\u5280\0\u52d0\0\u5320\0\u0320\0\u5370" + + "\0\u53c0\0\u5410\0\u5460\0\u0320\0\u54b0\0\u5500\0\u5550\0\u55a0" + + "\0\u55f0\0\u5640\0\u5690\0\u56e0\0\u0190\0\u5730\0\u5780\0\u57d0" + + "\0\u5820\0\u5870\0\u58c0\0\u5910\0\u5960\0\u59b0\0\u5a00\0\u5a50" + + "\0\u5aa0\0\u0320\0\u5af0\0\u5b40\0\u5b90\0\u5be0\0\u0320\0\u0320" + + "\0\u5c30\0\u0320\0\u5c80\0\u5cd0\0\u5d20\0\u5d70\0\u5dc0\0\u0320" + + "\0\u5e10\0\u5e60\0\u5eb0\0\u5f00\0\u5f50\0\u0320\0\u5fa0\0\u5ff0" + + "\0\u6040\0\u0320\0\u6090\0\u60e0\0\u6130\0\u6180\0\u61d0\0\u6220" + + "\0\u6270\0\u62c0\0\u6310\0\u6360\0\u63b0\0\u0320\0\u6400\0\u6450" + + "\0\u64a0\0\u64f0\0\u6540\0\u0320\0\u6590\0\u65e0\0\u6630\0\u6680" + + "\0\u66d0\0\u0320\0\u6720\0\u0320\0\u6770\0\u67c0\0\u6810\0\u6860" + + "\0\u68b0\0\u6900\0\u6950\0\u69a0\0\u69f0\0\u6a40\0\u6a90\0\u6ae0" + + "\0\u6b30\0\u6b80\0\u6bd0\0\u6c20\0\u6c70\0\u0320\0\u6cc0\0\u0320" + + "\0\u6d10\0\u6d60\0\u6db0\0\u0320\0\u6e00\0\u6e50\0\u0320\0\u0320" + + "\0\u6ea0\0\u6ef0\0\u6f40\0\u6f90\0\u6fe0\0\u7030\0\u7080\0\u0320" + + "\0\u70d0\0\u7120\0\u7170\0\u71c0\0\u0320\0\u7210\0\u7260\0\u72b0" + + "\0\u0320\0\u7300\0\u7350\0\u73a0\0\u73f0\0\u0320\0\u7440\0\u7490" + + "\0\u74e0\0\u7530\0\u7580\0\u75d0\0\u0320\0\u7620\0\u7670\0\u0320" + + "\0\u76c0\0\u7710\0\u0320\0\u0320\0\u7760\0\u77b0\0\u7800\0\u5910" + + "\0\u7850\0\u78a0\0\u78f0\0\u0320\0\u7940\0\u7990\0\u79e0\0\u7a30" + + "\0\u7a80\0\u0320\0\u7ad0\0\u7b20\0\u7b70\0\u7bc0\0\u7c10\0\u7c60" + + "\0\u7cb0\0\u7d00\0\u7d50\0\u7da0\0\u7df0\0\u0320\0\u7e40\0\u0320" + + "\0\u0320\0\u7e90\0\u7ee0\0\u7f30\0\u7f80\0\u7fd0\0\u0320\0\u0320" + + "\0\u8020\0\u8070\0\u80c0\0\u8110\0\u8160\0\u6a40\0\u81b0\0\u8200" + + "\0\u8250\0\u0320\0\u82a0\0\u82f0\0\u0320\0\u0320\0\u8340\0\u8390" + + "\0\u83e0\0\u8430\0\u8480\0\u84d0\0\u0320\0\u8520\0\u8570\0\u85c0" + + "\0\u8610\0\u8660\0\u0320\0\u86b0\0\u8700\0\u8750\0\u87a0\0\u87f0" + + "\0\u0320\0\u0320\0\u8840\0\u8890\0\u0320\0\u88e0\0\u8930\0\u8980" + + "\0\u0320\0\u89d0\0\u0320\0\u0320\0\u8a20\0\u8a70\0\u8ac0\0\u8b10" + + "\0\u0320\0\u8b60\0\u8bb0\0\u0320\0\u8c00\0\u0320\0\u8c50\0\u0320" + + "\0\u0320\0\u8ca0\0\u8cf0\0\u8d40\0\u0190\0\u8d90\0\u8de0\0\u8e30" + + "\0\u0320\0\u0320\0\u8e80\0\u0320\0\u8ed0\0\u0320\0\u8f20\0\u8f70" + + "\0\u8fc0\0\u9010\0\u9060\0\u90b0\0\u9100\0\u9150\0\u91a0\0\u91f0" + + "\0\u9240\0\u9290\0\u0320\0\u0320\0\u0320\0\u92e0\0\u9330\0\u9380" + + "\0\u93d0\0\u9420\0\u9470\0\u94c0\0\u9510\0\u9560\0\u0320\0\u95b0" + + "\0\u0320\0\u9600\0\u0320\0\u9650\0\u96a0\0\u96f0\0\u9740\0\u9790" + + "\0\u0320\0\u97e0\0\u9830\0\u14a0\0\u9880\0\u98d0\0\u0320\0\u9920" + + "\0\u0320"; private static int[] zzUnpackRowMap() { - int[] result = new int[608]; + int[] result = new int[633]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -349,493 +355,514 @@ public final class ActionScriptLexer { + "\1\46\1\14\1\47\1\50\1\14\1\51\2\14\1\52" + "\12\14\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\77\13\75\1\100" - + "\10\75\1\101\67\75\1\102\1\76\1\77\24\102\1\101" - + "\1\100\66\102\1\6\1\103\1\104\1\105\2\6\1\106" - + "\4\6\1\107\1\110\4\6\2\106\2\6\1\106\3\6" - + "\45\106\21\6\1\111\1\103\1\104\7\111\1\112\104\111" - + "\121\0\1\10\117\0\1\11\10\0\1\11\106\0\1\113" - + "\1\114\7\0\1\115\116\0\1\116\107\0\2\14\7\0" - + "\7\14\3\0\45\14\31\0\1\117\117\0\1\120\1\121" - + "\4\0\2\122\2\0\2\122\100\0\1\123\3\0\1\124" - + "\2\0\1\125\3\0\2\123\2\0\1\123\3\0\45\123" - + "\34\0\1\126\1\0\1\127\116\0\1\130\112\0\1\122" - + "\5\0\1\131\1\132\1\133\1\0\1\134\1\135\1\136" - + "\5\0\1\136\22\0\1\133\51\0\1\122\5\0\2\24" - + "\2\0\2\24\1\136\5\0\1\136\100\0\1\137\10\0" - + "\1\140\76\0\2\14\7\0\7\14\3\0\1\14\1\141" - + "\43\14\27\0\2\14\7\0\7\14\3\0\2\14\1\142" - + "\1\143\41\14\27\0\2\14\7\0\7\14\3\0\3\14" - + "\1\144\12\14\1\145\6\14\1\146\17\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\147\36\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\150\3\14\1\151\6\14" - + "\1\152\1\14\1\153\24\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\154\6\14\1\155\1\14\1\156\3\14" - + "\1\157\25\14\27\0\2\14\7\0\7\14\3\0\1\14" - + "\1\160\22\14\1\161\20\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\162\1\163\7\14\1\164\31\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\165\1\166\1\167" - + "\3\14\1\170\10\14\1\171\1\14\1\172\22\14\27\0" - + "\2\14\7\0\7\14\3\0\6\14\1\173\1\14\1\174" - + "\4\14\1\175\5\14\1\176\21\14\27\0\2\14\7\0" - + "\7\14\3\0\6\14\1\177\36\14\27\0\2\14\7\0" - + "\7\14\3\0\2\14\1\200\4\14\1\201\3\14\1\202" - + "\6\14\1\203\22\14\27\0\2\14\7\0\7\14\3\0" - + "\3\14\1\204\3\14\1\205\2\14\1\206\1\207\31\14" - + "\27\0\2\14\7\0\7\14\3\0\2\14\1\210\4\14" - + "\1\211\35\14\27\0\2\14\7\0\7\14\3\0\12\14" - + "\1\212\5\14\1\213\24\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\214\1\14\1\215\7\14\1\216\2\14" - + "\1\217\26\14\27\0\2\14\7\0\7\14\3\0\1\220" - + "\44\14\27\0\2\14\7\0\7\14\3\0\3\14\1\221" - + "\3\14\1\222\35\14\27\0\2\14\7\0\7\14\3\0" - + "\2\14\1\223\4\14\1\224\35\14\27\0\2\14\7\0" - + "\7\14\3\0\11\14\1\225\33\14\27\0\2\14\7\0" - + "\7\14\3\0\13\14\1\226\31\14\36\0\1\227\116\0" - + "\1\230\73\0\1\231\22\0\1\232\74\0\1\233\21\0" - + "\1\234\75\0\1\235\20\0\1\236\116\0\1\237\101\0" - + "\1\75\2\0\13\75\1\0\10\75\1\0\67\75\2\0" - + "\1\77\114\0\2\240\1\0\13\240\1\241\1\242\3\240" - + "\1\242\1\243\2\240\1\244\1\245\1\246\1\247\6\240" - + "\1\250\1\251\3\240\1\252\50\240\1\102\2\0\24\102" - + "\2\0\66\102\2\0\1\104\117\0\1\105\10\0\1\105" - + "\110\0\2\253\1\254\3\0\1\255\1\256\1\0\7\253" - + "\3\0\45\253\24\0\1\105\2\0\1\253\5\0\1\110" - + "\4\0\2\253\2\0\1\253\3\0\45\253\25\0\1\257" - + "\1\0\1\260\12\0\2\260\2\0\1\260\3\0\45\260" - + "\21\0\1\113\1\261\1\262\114\113\5\263\1\264\111\263" - + "\11\0\1\265\113\0\1\266\12\0\2\266\2\0\1\266" - + "\3\0\45\266\40\0\2\122\2\0\2\122\1\136\5\0" - + "\1\136\71\0\1\267\1\123\1\270\2\0\1\271\1\272" - + "\2\0\2\123\2\267\2\123\1\267\3\0\45\267\36\0" - + "\1\273\114\0\1\274\1\0\1\275\116\0\1\276\112\0" - + "\1\122\5\0\1\131\1\132\2\0\1\134\1\135\1\136" - + "\5\0\1\136\74\0\1\122\5\0\2\132\2\0\2\132" - + "\1\136\5\0\1\136\102\0\1\277\1\300\1\0\4\300" - + "\3\0\1\300\1\0\2\300\1\0\1\300\6\0\2\300" - + "\12\0\1\300\1\0\1\300\5\0\2\300\35\0\1\122" - + "\5\0\1\135\1\132\2\0\2\135\1\136\5\0\1\136" - + "\74\0\1\122\5\0\1\301\1\132\2\0\2\301\1\136" - + "\5\0\1\136\102\0\2\302\2\0\2\302\1\0\1\303" - + "\64\0\1\303\11\0\2\14\7\0\7\14\3\0\2\14" - + "\1\304\42\14\27\0\2\14\7\0\7\14\3\0\11\14" - + "\1\305\11\14\1\306\21\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\307\34\14\27\0\2\14\7\0\7\14" - + "\3\0\5\14\1\310\37\14\27\0\2\14\7\0\7\14" - + "\3\0\6\14\1\311\36\14\27\0\2\14\7\0\7\14" - + "\3\0\11\14\1\312\33\14\27\0\2\14\7\0\7\14" - + "\3\0\6\14\1\313\2\14\1\314\33\14\27\0\2\14" - + "\7\0\7\14\3\0\10\14\1\315\34\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\316\41\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\317\43\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\320\33\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\321\3\14\1\322\35\14" - + "\27\0\2\14\7\0\7\14\3\0\1\323\20\14\1\324" - + "\23\14\27\0\2\14\7\0\7\14\3\0\12\14\1\325" - + "\32\14\27\0\2\14\7\0\7\14\3\0\14\14\1\326" - + "\30\14\27\0\2\14\7\0\7\14\3\0\2\14\1\327" - + "\42\14\27\0\2\14\7\0\7\14\3\0\17\14\1\330" - + "\5\14\1\331\17\14\27\0\2\14\7\0\7\14\3\0" - + "\23\14\1\332\21\14\27\0\2\14\7\0\7\14\3\0" - + "\16\14\1\333\26\14\27\0\2\14\7\0\7\14\3\0" - + "\3\14\1\334\7\14\1\335\6\14\1\336\22\14\27\0" - + "\2\14\7\0\7\14\3\0\16\14\1\337\26\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\340\43\14\27\0" - + "\2\14\7\0\7\14\3\0\26\14\1\341\16\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\342\10\14\1\343" - + "\32\14\27\0\2\14\7\0\7\14\3\0\21\14\1\344" - + "\23\14\27\0\2\14\7\0\7\14\3\0\6\14\1\345" - + "\2\14\1\346\33\14\27\0\2\14\7\0\7\14\3\0" - + "\32\14\1\347\12\14\27\0\2\14\7\0\7\14\3\0" - + "\21\14\1\350\23\14\27\0\2\14\7\0\7\14\3\0" - + "\2\14\1\351\42\14\27\0\2\14\7\0\7\14\3\0" - + "\15\14\1\352\1\353\26\14\27\0\2\14\7\0\7\14" - + "\3\0\21\14\1\354\23\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\355\34\14\27\0\2\14\7\0\7\14" - + "\3\0\16\14\1\356\26\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\357\43\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\360\34\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\361\34\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\362\34\14\27\0\2\14\7\0\7\14" - + "\3\0\3\14\1\363\41\14\27\0\2\14\7\0\7\14" - + "\3\0\11\14\1\364\33\14\27\0\2\14\7\0\7\14" - + "\3\0\12\14\1\365\32\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\366\4\14\1\367\2\14\1\370\32\14" - + "\27\0\2\14\7\0\7\14\3\0\5\14\1\371\37\14" - + "\27\0\2\14\7\0\7\14\3\0\1\372\44\14\27\0" - + "\2\14\7\0\7\14\3\0\3\14\1\373\41\14\27\0" - + "\2\14\7\0\7\14\3\0\5\14\1\374\1\375\1\376" - + "\6\14\1\377\26\14\27\0\2\14\7\0\7\14\3\0" - + "\1\14\1\u0100\43\14\27\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u0101\32\14\27\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u0102\33\14\27\0\2\14\7\0\7\14\3\0" - + "\11\14\1\u0103\33\14\27\0\2\14\7\0\7\14\3\0" - + "\1\14\1\u0104\43\14\27\0\2\14\7\0\7\14\3\0" - + "\23\14\1\u0105\21\14\36\0\1\u0106\120\0\1\243\3\0" - + "\2\243\111\0\1\u0107\3\0\2\u0107\100\0\1\u0108\12\0" - + "\2\u0108\2\0\1\u0108\3\0\45\u0108\35\0\1\255\1\256" - + "\115\0\1\256\1\0\1\u0109\106\0\1\u010a\12\0\2\u010a" - + "\2\0\1\u010a\3\0\45\u010a\27\0\1\u010b\1\260\1\u010c" - + "\2\0\1\111\1\u010d\2\0\2\260\2\u010b\2\260\1\u010b" - + "\3\0\45\u010b\23\0\1\262\114\0\5\263\1\u010e\111\263" - + "\4\0\1\262\1\264\117\0\2\266\3\0\1\u010f\3\0" - + "\7\266\3\0\45\266\27\0\2\267\1\u0110\2\0\1\271" - + "\1\u0111\1\u0112\1\0\7\267\3\0\45\267\27\0\1\u0113" - + "\12\0\2\u0113\2\0\1\u0113\3\0\45\u0113\27\0\1\u0114" - + "\5\0\1\272\4\0\2\u0114\2\0\1\u0114\3\0\45\u0114" - + "\36\0\1\u0115\120\0\2\u0116\1\0\4\u0116\3\0\1\u0116" - + "\1\0\2\u0116\1\0\1\u0116\6\0\2\u0116\12\0\1\u0116" - + "\1\0\1\u0116\5\0\2\u0116\35\0\1\122\5\0\1\u0117" - + "\1\132\2\0\2\u0117\1\136\5\0\1\136\102\0\2\302" - + "\2\0\2\302\100\0\2\14\7\0\7\14\3\0\3\14" - + "\1\u0118\41\14\27\0\2\14\7\0\7\14\3\0\13\14" - + "\1\u0119\31\14\27\0\2\14\7\0\7\14\3\0\7\14" - + "\1\u011a\35\14\27\0\2\14\7\0\7\14\3\0\14\14" - + "\1\u011b\30\14\27\0\2\14\7\0\7\14\3\0\20\14" - + "\1\u011c\24\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u011d\42\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u011e\42\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u011f\42\14\27\0\2\14\7\0\7\14\3\0\5\14" - + "\1\u0120\37\14\27\0\2\14\7\0\7\14\3\0\6\14" - + "\1\u0121\2\14\1\u0122\33\14\27\0\2\14\7\0\7\14" - + "\3\0\6\14\1\u0123\36\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u0124\7\14\1\u0125\33\14\27\0\2\14" - + "\7\0\7\14\3\0\21\14\1\u0126\23\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u0127\36\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u0128\42\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u0129\33\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u012a\43\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u012b\33\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u012c\42\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u012d\26\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u012e\37\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u012f\42\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u0130\26\14\27\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u0131\16\14\27\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u0132\16\14\27\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u0133\35\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u0134\36\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u0135\42\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u0136\33\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u0137\42\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u0138\43\14\27\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u0139\6\14\1\u013a\26\14" - + "\27\0\2\14\7\0\7\14\3\0\3\14\1\u013b\41\14" - + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u013c\42\14" - + "\27\0\2\14\7\0\7\14\3\0\16\14\1\u013d\26\14" - + "\27\0\2\14\7\0\7\14\3\0\3\14\1\u013e\41\14" - + "\27\0\2\14\7\0\7\14\3\0\6\14\1\u013f\36\14" - + "\27\0\2\14\7\0\7\14\3\0\3\14\1\u0140\41\14" - + "\27\0\2\14\7\0\7\14\3\0\5\14\1\u0141\37\14" - + "\27\0\2\14\7\0\7\14\3\0\26\14\1\u0142\16\14" - + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u0143\30\14" - + "\27\0\2\14\7\0\7\14\3\0\20\14\1\u0144\24\14" - + "\27\0\2\14\7\0\7\14\3\0\16\14\1\u0145\26\14" - + "\27\0\2\14\7\0\7\14\3\0\24\14\1\u0146\20\14" - + "\27\0\2\14\7\0\7\14\3\0\11\14\1\u0147\33\14" - + "\27\0\2\14\7\0\7\14\3\0\24\14\1\u0148\20\14" - + "\27\0\2\14\7\0\7\14\3\0\4\14\1\u0149\40\14" - + "\27\0\2\14\7\0\7\14\3\0\16\14\1\u014a\26\14" - + "\27\0\2\14\7\0\7\14\3\0\22\14\1\u014b\22\14" - + "\27\0\2\14\7\0\7\14\3\0\20\14\1\u014c\24\14" - + "\27\0\2\14\7\0\7\14\3\0\13\14\1\u014d\31\14" - + "\27\0\2\14\7\0\7\14\3\0\1\14\1\u014e\43\14" - + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u014f\42\14" - + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u0150\30\14" - + "\27\0\2\14\7\0\7\14\3\0\27\14\1\u0151\3\14" - + "\1\u0152\11\14\27\0\2\14\7\0\7\14\3\0\7\14" - + "\1\u0153\35\14\27\0\2\14\7\0\7\14\3\0\12\14" - + "\1\u0154\32\14\27\0\2\14\7\0\7\14\3\0\1\u0155" - + "\44\14\27\0\2\u0108\4\0\1\255\1\256\1\0\7\u0108" - + "\3\0\45\u0108\21\0\1\u0109\2\0\13\u0109\1\u0156\100\u0109" - + "\6\0\2\u010a\1\u0157\2\0\1\u0158\3\0\7\u010a\3\0" - + "\45\u010a\27\0\2\u010b\1\u0159\2\0\1\111\1\u015a\1\u015b" - + "\1\0\7\u010b\3\0\45\u010b\27\0\1\u015c\12\0\2\u015c" - + "\2\0\1\u015c\3\0\45\u015c\27\0\1\u015d\5\0\1\u010d" - + "\4\0\2\u015d\2\0\1\u015d\3\0\45\u015d\21\0\4\263" - + "\1\262\1\u010e\111\263\6\0\1\u015e\12\0\2\u015e\2\0" - + "\1\u015e\3\0\45\u015e\27\0\1\u0114\5\0\1\u0111\1\u0112" - + "\3\0\2\u0114\2\0\1\u0114\3\0\45\u0114\35\0\1\u0112" - + "\1\0\1\u015f\106\0\1\u0160\1\u0113\3\0\1\271\1\272" - + "\2\0\2\u0113\2\u0160\2\u0113\1\u0160\3\0\45\u0160\27\0" - + "\2\u0114\1\u0161\3\0\1\u0162\1\u0112\1\0\7\u0114\3\0" - + "\45\u0114\40\0\2\u0163\1\0\4\u0163\3\0\1\u0163\1\0" - + "\2\u0163\1\0\1\u0163\6\0\2\u0163\12\0\1\u0163\1\0" - + "\1\u0163\5\0\2\u0163\35\0\1\122\5\0\1\u0164\1\132" - + "\2\0\2\u0164\1\136\5\0\1\136\71\0\2\14\7\0" - + "\7\14\3\0\4\14\1\u0165\40\14\27\0\2\14\7\0" - + "\7\14\3\0\1\14\1\u0166\43\14\27\0\2\14\7\0" - + "\7\14\3\0\24\14\1\u0167\20\14\27\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u0168\35\14\27\0\2\14\7\0" - + "\7\14\3\0\10\14\1\u0169\34\14\27\0\2\14\7\0" - + "\7\14\3\0\20\14\1\u016a\24\14\27\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u016b\33\14\27\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u016c\32\14\27\0\2\14\7\0" - + "\7\14\3\0\6\14\1\u016d\36\14\27\0\2\14\7\0" - + "\7\14\3\0\11\14\1\u016e\33\14\27\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u016f\32\14\27\0\2\14\7\0" - + "\7\14\3\0\30\14\1\u0170\10\14\1\u0171\3\14\27\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u0172\33\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u0173\43\14\27\0" - + "\2\14\7\0\7\14\3\0\5\14\1\u0174\37\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u0175\43\14\27\0" - + "\2\14\7\0\7\14\3\0\32\14\1\u0176\12\14\27\0" - + "\2\14\7\0\7\14\3\0\6\14\1\u0177\36\14\27\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u0178\42\14\27\0" - + "\2\14\7\0\7\14\3\0\33\14\1\u0179\11\14\27\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u017a\42\14\27\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u017b\26\14\27\0" - + "\2\14\7\0\7\14\3\0\17\14\1\u017c\25\14\27\0" - + "\2\14\7\0\7\14\3\0\7\14\1\u017d\35\14\27\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u017e\41\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u017f\43\14\27\0" - + "\2\14\7\0\7\14\3\0\3\14\1\u0180\41\14\27\0" - + "\2\14\7\0\7\14\3\0\1\14\1\u0181\43\14\27\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u0182\42\14\27\0" - + "\2\14\7\0\7\14\3\0\13\14\1\u0183\31\14\27\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u0184\33\14\27\0" - + "\2\14\7\0\7\14\3\0\12\14\1\u0185\32\14\27\0" - + "\2\14\7\0\7\14\3\0\23\14\1\u0186\21\14\27\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u0187\42\14\27\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u0188\26\14\27\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u0189\33\14\27\0" - + "\2\14\7\0\7\14\3\0\11\14\1\u018a\33\14\27\0" - + "\2\14\7\0\7\14\3\0\37\14\1\u018b\2\14\1\u018c" - + "\2\14\27\0\2\14\7\0\7\14\3\0\2\14\1\u018d" - + "\42\14\27\0\2\14\7\0\7\14\3\0\32\14\1\u018e" - + "\12\14\27\0\2\14\7\0\7\14\3\0\2\14\1\u018f" - + "\42\14\27\0\2\14\7\0\7\14\3\0\3\14\1\u0190" - + "\41\14\27\0\2\14\7\0\7\14\3\0\3\14\1\u0191" - + "\41\14\27\0\2\14\7\0\7\14\3\0\12\14\1\u0192" - + "\32\14\27\0\2\14\7\0\7\14\3\0\1\14\1\u0193" - + "\43\14\27\0\2\14\7\0\7\14\3\0\1\u0194\44\14" - + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u0195\30\14" - + "\27\0\2\14\7\0\7\14\3\0\10\14\1\u0196\34\14" - + "\27\0\2\14\7\0\7\14\3\0\1\14\1\u0197\43\14" - + "\27\0\2\14\7\0\7\14\3\0\12\14\1\u0198\32\14" - + "\27\0\2\14\7\0\7\14\3\0\30\14\1\u0199\14\14" - + "\27\0\2\14\7\0\7\14\3\0\10\14\1\u019a\34\14" - + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u019b\42\14" - + "\21\0\1\u0109\2\0\11\u0109\1\u0156\1\u0109\1\u0156\100\u0109" - + "\6\0\1\u019c\12\0\2\u019c\2\0\1\u019c\3\0\45\u019c" - + "\27\0\1\u019d\12\0\2\u019d\2\0\1\u019d\3\0\45\u019d" - + "\27\0\1\u015d\5\0\1\u015a\1\u015b\3\0\2\u015d\2\0" - + "\1\u015d\3\0\45\u015d\35\0\1\u015b\1\0\1\u019e\106\0" - + "\1\u019f\1\u015c\3\0\1\111\1\u010d\2\0\2\u015c\2\u019f" - + "\2\u015c\1\u019f\3\0\45\u019f\27\0\2\u015d\1\u01a0\3\0" - + "\1\u01a1\1\u015b\1\0\7\u015d\3\0\45\u015d\27\0\1\u0160" - + "\1\u015e\3\0\1\271\1\u0111\1\u0112\1\0\2\u015e\2\u0160" - + "\2\u015e\1\u0160\3\0\45\u0160\21\0\1\u015f\2\0\13\u015f" - + "\1\u01a2\100\u015f\6\0\2\u0160\1\u0161\2\0\1\271\1\u0111" - + "\1\u0112\1\0\7\u0160\3\0\45\u0160\27\0\1\u01a3\12\0" - + "\2\u01a3\2\0\1\u01a3\3\0\45\u01a3\35\0\1\u0162\1\u0112" - + "\120\0\2\u01a4\1\0\4\u01a4\3\0\1\u01a4\1\0\2\u01a4" - + "\1\0\1\u01a4\6\0\2\u01a4\12\0\1\u01a4\1\0\1\u01a4" - + "\5\0\2\u01a4\35\0\1\122\5\0\1\u01a5\1\132\2\0" - + "\2\u01a5\1\136\5\0\1\136\71\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u01a6\34\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01a7\42\14\27\0\2\14\7\0\7\14" - + "\3\0\23\14\1\u01a8\21\14\27\0\2\14\7\0\7\14" - + "\3\0\14\14\1\u01a9\30\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u01aa\34\14\27\0\2\14\7\0\7\14" - + "\3\0\41\14\1\u01ab\3\14\27\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u01ac\37\14\27\0\2\14\7\0\7\14" - + "\3\0\16\14\1\u01ad\26\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u01ae\43\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u01af\43\14\27\0\2\14\7\0\7\14" - + "\3\0\20\14\1\u01b0\24\14\27\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u01b1\32\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u01b2\43\14\27\0\2\14\7\0\7\14" - + "\3\0\21\14\1\u01b3\23\14\27\0\2\14\7\0\7\14" - + "\3\0\3\14\1\u01b4\41\14\27\0\2\14\7\0\7\14" - + "\3\0\11\14\1\u01b5\33\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01b6\42\14\27\0\2\14\7\0\7\14" - + "\3\0\15\14\1\u01b7\27\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u01b8\34\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u01b9\4\14\1\u01ba\27\14\27\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01bb\21\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01bc\33\14\27\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01bd\21\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u01be\26\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01bf\42\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01c0\37\14\27\0\2\14" - + "\7\0\7\14\3\0\12\14\1\u01c1\32\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u01c2\26\14\27\0\2\14" - + "\7\0\7\14\3\0\12\14\1\u01c3\32\14\27\0\2\14" - + "\7\0\7\14\3\0\20\14\1\u01c4\24\14\27\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u01c5\35\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01c6\41\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01c7\43\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01c8\37\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01c9\33\14\27\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u01ca\16\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01cb\37\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u01cc\36\14\27\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u01cd\16\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u01ce\26\14\27\0\2\14" - + "\7\0\7\14\3\0\23\14\1\u01cf\21\14\27\0\2\14" - + "\7\0\7\14\3\0\10\14\1\u01d0\34\14\27\0\2\14" - + "\7\0\7\14\3\0\26\14\1\u01d1\16\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01d2\43\14\27\0\2\u019c" - + "\3\0\1\u0158\3\0\7\u019c\3\0\45\u019c\27\0\1\u019f" - + "\1\u019d\3\0\1\111\1\u015a\1\u015b\1\0\2\u019d\2\u019f" - + "\2\u019d\1\u019f\3\0\45\u019f\21\0\1\u019e\2\0\13\u019e" - + "\1\u01d3\100\u019e\6\0\2\u019f\1\u01a0\2\0\1\111\1\u015a" - + "\1\u015b\1\0\7\u019f\3\0\45\u019f\27\0\1\u01d4\12\0" - + "\2\u01d4\2\0\1\u01d4\3\0\45\u01d4\35\0\1\u01a1\1\u015b" - + "\101\0\1\u015f\2\0\10\u015f\1\u01d5\1\u01a2\1\u015f\1\u01a2" - + "\100\u015f\6\0\2\u01a3\4\0\1\u0162\1\u0112\1\0\7\u01a3" - + "\3\0\45\u01a3\40\0\2\u01d6\1\0\4\u01d6\3\0\1\u01d6" - + "\1\0\2\u01d6\1\0\1\u01d6\6\0\2\u01d6\12\0\1\u01d6" - + "\1\0\1\u01d6\5\0\2\u01d6\35\0\1\122\5\0\1\u01d7" - + "\1\132\2\0\2\u01d7\1\136\5\0\1\136\71\0\2\14" - + "\7\0\7\14\3\0\37\14\1\u01d8\5\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u01d9\36\14\27\0\2\14" - + "\7\0\7\14\3\0\13\14\1\u01da\31\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01db\43\14\27\0\2\14" - + "\7\0\7\14\3\0\16\14\1\u01dc\26\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01dd\41\14\27\0\2\14" - + "\7\0\7\14\3\0\14\14\1\u01de\30\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01df\41\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01e0\41\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01e1\43\14\27\0\2\14" - + "\7\0\7\14\3\0\43\14\1\u01e2\1\14\27\0\2\14" - + "\7\0\7\14\3\0\34\14\1\u01e3\10\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01e4\37\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01e5\41\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01e6\41\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01e7\42\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01e8\42\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01e9\33\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01ea\41\14\27\0\2\14" - + "\7\0\7\14\3\0\5\14\1\u01eb\37\14\27\0\2\14" - + "\7\0\7\14\3\0\22\14\1\u01ec\22\14\27\0\2\14" - + "\7\0\7\14\3\0\7\14\1\u01ed\35\14\27\0\2\14" - + "\7\0\7\14\3\0\24\14\1\u01ee\20\14\27\0\2\14" - + "\7\0\7\14\3\0\1\14\1\u01ef\43\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u01f0\41\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01f1\33\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01f2\42\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01f3\42\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01f4\33\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u01f5\33\14\27\0\2\14" - + "\7\0\7\14\3\0\2\14\1\u01f6\42\14\27\0\2\14" - + "\7\0\7\14\3\0\14\14\1\u01f7\30\14\21\0\1\u019e" - + "\2\0\10\u019e\1\u01f8\1\u01d3\1\u019e\1\u01d3\100\u019e\6\0" - + "\2\u01d4\4\0\1\u01a1\1\u015b\1\0\7\u01d4\3\0\45\u01d4" - + "\40\0\2\u01f9\1\0\4\u01f9\3\0\1\u01f9\1\0\2\u01f9" - + "\1\0\1\u01f9\6\0\2\u01f9\12\0\1\u01f9\1\0\1\u01f9" - + "\5\0\2\u01f9\35\0\1\122\5\0\1\u01fa\1\132\2\0" - + "\2\u01fa\1\136\5\0\1\136\71\0\2\14\7\0\7\14" - + "\3\0\7\14\1\u01fb\35\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u01fc\42\14\27\0\2\14\7\0\7\14" - + "\3\0\3\14\1\u01fd\41\14\27\0\2\14\7\0\7\14" - + "\3\0\31\14\1\u01fe\13\14\27\0\2\14\7\0\7\14" - + "\3\0\26\14\1\u01ff\16\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u0200\42\14\27\0\2\14\7\0\7\14" - + "\3\0\23\14\1\u0201\21\14\27\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u0202\37\14\27\0\2\14\7\0\7\14" - + "\3\0\26\14\1\u0203\16\14\27\0\2\14\7\0\7\14" - + "\3\0\3\14\1\u0204\41\14\27\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u0205\32\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u0206\42\14\27\0\2\14\7\0\7\14" - + "\3\0\16\14\1\u0207\26\14\27\0\2\14\7\0\7\14" - + "\3\0\5\14\1\u0208\37\14\27\0\2\14\7\0\7\14" - + "\3\0\36\14\1\u0209\6\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u020a\34\14\27\0\2\14\7\0\7\14" - + "\3\0\11\14\1\u020b\33\14\27\0\2\14\7\0\7\14" - + "\3\0\10\14\1\u020c\34\14\27\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u020d\32\14\27\0\2\14\7\0\7\14" - + "\3\0\12\14\1\u020e\32\14\27\0\2\14\7\0\7\14" - + "\3\0\23\14\1\u020f\21\14\27\0\2\14\7\0\7\14" - + "\3\0\2\14\1\u0210\42\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u0211\43\14\27\0\2\14\7\0\7\14" - + "\3\0\20\14\1\u0212\24\14\27\0\2\14\7\0\7\14" - + "\3\0\1\14\1\u0213\43\14\27\0\2\14\7\0\7\14" - + "\3\0\31\14\1\u0214\11\14\1\u0215\1\14\40\0\2\u0216" - + "\1\0\4\u0216\3\0\1\u0216\1\0\2\u0216\1\0\1\u0216" - + "\6\0\2\u0216\12\0\1\u0216\1\0\1\u0216\5\0\2\u0216" - + "\35\0\1\122\5\0\1\u0217\1\132\2\0\2\u0217\1\136" - + "\5\0\1\136\71\0\2\14\7\0\7\14\3\0\24\14" - + "\1\u0218\20\14\27\0\2\14\7\0\7\14\3\0\26\14" - + "\1\u0219\16\14\27\0\2\14\7\0\7\14\3\0\7\14" - + "\1\u021a\35\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u021b\42\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u021c\42\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u021d\42\14\27\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u021e\33\14\27\0\2\14\7\0\7\14\3\0\26\14" - + "\1\u021f\16\14\27\0\2\14\7\0\7\14\3\0\7\14" + + "\1\72\1\73\1\74\1\75\1\76\1\77\1\100\13\76" + + "\1\101\10\76\1\102\70\76\1\103\1\77\1\100\24\103" + + "\1\102\1\101\67\103\1\6\1\104\1\105\1\106\2\6" + + "\1\107\4\6\1\110\1\111\4\6\2\107\2\6\1\107" + + "\3\6\46\107\21\6\1\112\1\104\1\105\7\112\1\113" + + "\105\112\122\0\1\10\120\0\1\11\10\0\1\11\107\0" + + "\1\114\1\115\7\0\1\116\117\0\1\117\110\0\2\14" + + "\7\0\7\14\3\0\46\14\31\0\1\120\120\0\1\121" + + "\1\122\4\0\2\123\2\0\2\123\101\0\1\124\3\0" + + "\1\125\2\0\1\126\3\0\2\124\2\0\1\124\3\0" + + "\46\124\34\0\1\127\1\0\1\130\117\0\1\131\113\0" + + "\1\123\5\0\1\132\1\133\1\134\1\0\1\135\1\136" + + "\1\137\5\0\1\137\22\0\1\134\52\0\1\123\5\0" + + "\2\24\2\0\2\24\1\137\5\0\1\137\101\0\1\140" + + "\10\0\1\141\77\0\2\14\7\0\7\14\3\0\1\14" + + "\1\142\44\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\143\1\144\42\14\27\0\2\14\7\0\7\14\3\0" + + "\3\14\1\145\12\14\1\146\5\14\1\147\1\150\20\14" + + "\27\0\2\14\7\0\7\14\3\0\6\14\1\151\37\14" + + "\27\0\2\14\7\0\7\14\3\0\3\14\1\152\3\14" + + "\1\153\6\14\1\154\1\14\1\155\25\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\156\6\14\1\157\1\14" + + "\1\160\3\14\1\161\26\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\162\22\14\1\163\21\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\164\1\165\7\14\1\166" + + "\32\14\27\0\2\14\7\0\7\14\3\0\1\14\1\167" + + "\1\170\1\171\3\14\1\172\10\14\1\173\1\14\1\174" + + "\23\14\27\0\2\14\7\0\7\14\3\0\6\14\1\175" + + "\1\14\1\176\4\14\1\177\5\14\1\200\22\14\27\0" + + "\2\14\7\0\7\14\3\0\6\14\1\201\1\14\1\202" + + "\35\14\27\0\2\14\7\0\7\14\3\0\2\14\1\203" + + "\4\14\1\204\3\14\1\205\6\14\1\206\23\14\27\0" + + "\2\14\7\0\7\14\3\0\3\14\1\207\3\14\1\210" + + "\2\14\1\211\1\212\32\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\213\4\14\1\214\36\14\27\0\2\14" + + "\7\0\7\14\3\0\12\14\1\215\5\14\1\216\25\14" + + "\27\0\2\14\7\0\7\14\3\0\1\14\1\217\1\14" + + "\1\220\7\14\1\221\2\14\1\222\27\14\27\0\2\14" + + "\7\0\7\14\3\0\1\223\45\14\27\0\2\14\7\0" + + "\7\14\3\0\3\14\1\224\3\14\1\225\36\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\226\4\14\1\227" + + "\36\14\27\0\2\14\7\0\7\14\3\0\11\14\1\230" + + "\34\14\27\0\2\14\7\0\7\14\3\0\3\14\1\231" + + "\7\14\1\232\32\14\27\0\2\14\7\0\7\14\3\0" + + "\10\14\1\233\35\14\36\0\1\234\117\0\1\235\74\0" + + "\1\236\22\0\1\237\75\0\1\240\21\0\1\241\76\0" + + "\1\242\20\0\1\243\117\0\1\244\102\0\1\76\2\0" + + "\13\76\1\0\10\76\1\0\70\76\2\0\1\100\115\0" + + "\2\245\1\0\13\245\1\246\1\247\3\245\1\247\1\250" + + "\2\245\1\251\1\252\1\253\1\254\6\245\1\255\1\256" + + "\3\245\1\257\51\245\1\103\2\0\24\103\2\0\67\103" + + "\2\0\1\105\120\0\1\106\10\0\1\106\111\0\2\260" + + "\1\261\3\0\1\262\1\263\1\0\7\260\3\0\46\260" + + "\24\0\1\106\2\0\1\260\5\0\1\111\4\0\2\260" + + "\2\0\1\260\3\0\46\260\25\0\1\264\1\0\1\265" + + "\12\0\2\265\2\0\1\265\3\0\46\265\21\0\1\114" + + "\1\266\1\267\115\114\5\270\1\271\112\270\11\0\1\272" + + "\114\0\1\273\12\0\2\273\2\0\1\273\3\0\46\273" + + "\40\0\2\123\2\0\2\123\1\137\5\0\1\137\72\0" + + "\1\274\1\124\1\275\2\0\1\276\1\277\2\0\2\124" + + "\2\274\2\124\1\274\3\0\46\274\36\0\1\300\115\0" + + "\1\301\1\0\1\302\117\0\1\303\113\0\1\123\5\0" + + "\1\132\1\133\2\0\1\135\1\136\1\137\5\0\1\137" + + "\75\0\1\123\5\0\2\133\2\0\2\133\1\137\5\0" + + "\1\137\103\0\1\304\1\305\1\0\4\305\3\0\1\305" + + "\1\0\2\305\1\0\1\305\6\0\2\305\12\0\1\305" + + "\1\0\1\305\5\0\2\305\36\0\1\123\5\0\1\136" + + "\1\133\2\0\2\136\1\137\5\0\1\137\75\0\1\123" + + "\5\0\1\306\1\133\2\0\2\306\1\137\5\0\1\137" + + "\103\0\2\307\2\0\2\307\1\0\1\310\65\0\1\310" + + "\11\0\2\14\7\0\7\14\3\0\2\14\1\311\43\14" + + "\27\0\2\14\7\0\7\14\3\0\11\14\1\312\11\14" + + "\1\313\22\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\314\35\14\27\0\2\14\7\0\7\14\3\0\5\14" + + "\1\315\40\14\27\0\2\14\7\0\7\14\3\0\6\14" + + "\1\316\37\14\27\0\2\14\7\0\7\14\3\0\3\14" + + "\1\317\42\14\27\0\2\14\7\0\7\14\3\0\11\14" + + "\1\320\34\14\27\0\2\14\7\0\7\14\3\0\6\14" + + "\1\321\2\14\1\322\34\14\27\0\2\14\7\0\7\14" + + "\3\0\10\14\1\323\35\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\324\42\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\325\44\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\326\34\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\327\3\14\1\330\36\14\27\0\2\14" + + "\7\0\7\14\3\0\1\331\20\14\1\332\24\14\27\0" + + "\2\14\7\0\7\14\3\0\12\14\1\333\33\14\27\0" + + "\2\14\7\0\7\14\3\0\14\14\1\334\31\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\335\43\14\27\0" + + "\2\14\7\0\7\14\3\0\17\14\1\336\5\14\1\337" + + "\20\14\27\0\2\14\7\0\7\14\3\0\23\14\1\340" + + "\22\14\27\0\2\14\7\0\7\14\3\0\16\14\1\341" + + "\27\14\27\0\2\14\7\0\7\14\3\0\3\14\1\342" + + "\7\14\1\343\6\14\1\344\23\14\27\0\2\14\7\0" + + "\7\14\3\0\16\14\1\345\27\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\346\44\14\27\0\2\14\7\0" + + "\7\14\3\0\26\14\1\347\17\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\350\10\14\1\351\33\14\27\0" + + "\2\14\7\0\7\14\3\0\21\14\1\352\24\14\27\0" + + "\2\14\7\0\7\14\3\0\6\14\1\353\2\14\1\354" + + "\34\14\27\0\2\14\7\0\7\14\3\0\32\14\1\355" + + "\13\14\27\0\2\14\7\0\7\14\3\0\21\14\1\356" + + "\24\14\27\0\2\14\7\0\7\14\3\0\2\14\1\357" + + "\43\14\27\0\2\14\7\0\7\14\3\0\14\14\1\360" + + "\31\14\27\0\2\14\7\0\7\14\3\0\15\14\1\361" + + "\1\362\27\14\27\0\2\14\7\0\7\14\3\0\21\14" + + "\1\363\24\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\364\35\14\27\0\2\14\7\0\7\14\3\0\16\14" + + "\1\365\27\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\366\44\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\367\35\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\370\35\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\371\35\14\27\0\2\14\7\0\7\14\3\0\3\14" + + "\1\372\42\14\27\0\2\14\7\0\7\14\3\0\11\14" + + "\1\373\34\14\27\0\2\14\7\0\7\14\3\0\12\14" + + "\1\374\33\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\375\4\14\1\376\2\14\1\377\33\14\27\0\2\14" + + "\7\0\7\14\3\0\5\14\1\u0100\40\14\27\0\2\14" + + "\7\0\7\14\3\0\1\u0101\45\14\27\0\2\14\7\0" + + "\7\14\3\0\3\14\1\u0102\42\14\27\0\2\14\7\0" + + "\7\14\3\0\5\14\1\u0103\1\u0104\1\u0105\6\14\1\u0106" + + "\27\14\27\0\2\14\7\0\7\14\3\0\1\14\1\u0107" + + "\44\14\27\0\2\14\7\0\7\14\3\0\12\14\1\u0108" + + "\33\14\27\0\2\14\7\0\7\14\3\0\11\14\1\u0109" + + "\34\14\27\0\2\14\7\0\7\14\3\0\11\14\1\u010a" + + "\34\14\27\0\2\14\7\0\7\14\3\0\1\14\1\u010b" + + "\44\14\27\0\2\14\7\0\7\14\3\0\44\14\1\u010c" + + "\1\14\27\0\2\14\7\0\7\14\3\0\23\14\1\u010d" + + "\22\14\27\0\2\14\7\0\7\14\3\0\15\14\1\u010e" + + "\30\14\36\0\1\u010f\121\0\1\250\3\0\2\250\112\0" + + "\1\u0110\3\0\2\u0110\101\0\1\u0111\12\0\2\u0111\2\0" + + "\1\u0111\3\0\46\u0111\35\0\1\262\1\263\116\0\1\263" + + "\1\0\1\u0112\107\0\1\u0113\12\0\2\u0113\2\0\1\u0113" + + "\3\0\46\u0113\27\0\1\u0114\1\265\1\u0115\2\0\1\112" + + "\1\u0116\2\0\2\265\2\u0114\2\265\1\u0114\3\0\46\u0114" + + "\23\0\1\267\115\0\5\270\1\u0117\112\270\4\0\1\267" + + "\1\271\120\0\2\273\3\0\1\u0118\3\0\7\273\3\0" + + "\46\273\27\0\2\274\1\u0119\2\0\1\276\1\u011a\1\u011b" + + "\1\0\7\274\3\0\46\274\27\0\1\u011c\12\0\2\u011c" + + "\2\0\1\u011c\3\0\46\u011c\27\0\1\u011d\5\0\1\277" + + "\4\0\2\u011d\2\0\1\u011d\3\0\46\u011d\36\0\1\u011e" + + "\121\0\2\u011f\1\0\4\u011f\3\0\1\u011f\1\0\2\u011f" + + "\1\0\1\u011f\6\0\2\u011f\12\0\1\u011f\1\0\1\u011f" + + "\5\0\2\u011f\36\0\1\123\5\0\1\u0120\1\133\2\0" + + "\2\u0120\1\137\5\0\1\137\103\0\2\307\2\0\2\307" + + "\101\0\2\14\7\0\7\14\3\0\3\14\1\u0121\42\14" + + "\27\0\2\14\7\0\7\14\3\0\13\14\1\u0122\32\14" + + "\27\0\2\14\7\0\7\14\3\0\7\14\1\u0123\36\14" + + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u0124\31\14" + + "\27\0\2\14\7\0\7\14\3\0\20\14\1\u0125\25\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0126\43\14" + + "\27\0\2\14\7\0\7\14\3\0\16\14\1\u0127\27\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0128\43\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0129\43\14" + + "\27\0\2\14\7\0\7\14\3\0\5\14\1\u012a\40\14" + + "\27\0\2\14\7\0\7\14\3\0\6\14\1\u012b\2\14" + + "\1\u012c\34\14\27\0\2\14\7\0\7\14\3\0\6\14" + + "\1\u012d\37\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u012e\7\14\1\u012f\34\14\27\0\2\14\7\0\7\14" + + "\3\0\21\14\1\u0130\24\14\27\0\2\14\7\0\7\14" + + "\3\0\6\14\1\u0131\37\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0132\43\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0133\34\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u0134\44\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u0135\27\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0136\34\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0137\43\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u0138\27\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u0139\40\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u013a\43\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u013b\27\14\27\0\2\14\7\0\7\14" + + "\3\0\26\14\1\u013c\17\14\27\0\2\14\7\0\7\14" + + "\3\0\26\14\1\u013d\17\14\27\0\2\14\7\0\7\14" + + "\3\0\7\14\1\u013e\36\14\27\0\2\14\7\0\7\14" + + "\3\0\6\14\1\u013f\37\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0140\43\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0141\34\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0142\43\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u0143\44\14\27\0\2\14\7\0\7\14" + + "\3\0\7\14\1\u0144\6\14\1\u0145\27\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\u0146\43\14\27\0\2\14" + + "\7\0\7\14\3\0\3\14\1\u0147\42\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\u0148\43\14\27\0\2\14" + + "\7\0\7\14\3\0\16\14\1\u0149\27\14\27\0\2\14" + + "\7\0\7\14\3\0\3\14\1\u014a\42\14\27\0\2\14" + + "\7\0\7\14\3\0\6\14\1\u014b\37\14\27\0\2\14" + + "\7\0\7\14\3\0\3\14\1\u014c\42\14\27\0\2\14" + + "\7\0\7\14\3\0\5\14\1\u014d\40\14\27\0\2\14" + + "\7\0\7\14\3\0\26\14\1\u014e\17\14\27\0\2\14" + + "\7\0\7\14\3\0\14\14\1\u014f\31\14\27\0\2\14" + + "\7\0\7\14\3\0\20\14\1\u0150\25\14\27\0\2\14" + + "\7\0\7\14\3\0\16\14\1\u0151\27\14\27\0\2\14" + + "\7\0\7\14\3\0\24\14\1\u0152\21\14\27\0\2\14" + + "\7\0\7\14\3\0\11\14\1\u0153\34\14\27\0\2\14" + + "\7\0\7\14\3\0\24\14\1\u0154\21\14\27\0\2\14" + + "\7\0\7\14\3\0\4\14\1\u0155\41\14\27\0\2\14" + + "\7\0\7\14\3\0\16\14\1\u0156\27\14\27\0\2\14" + + "\7\0\7\14\3\0\22\14\1\u0157\23\14\27\0\2\14" + + "\7\0\7\14\3\0\20\14\1\u0158\25\14\27\0\2\14" + + "\7\0\7\14\3\0\13\14\1\u0159\32\14\27\0\2\14" + + "\7\0\7\14\3\0\1\14\1\u015a\44\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\u015b\43\14\27\0\2\14" + + "\7\0\7\14\3\0\14\14\1\u015c\31\14\27\0\2\14" + + "\7\0\7\14\3\0\27\14\1\u015d\3\14\1\u015e\12\14" + + "\27\0\2\14\7\0\7\14\3\0\7\14\1\u015f\36\14" + + "\27\0\2\14\7\0\7\14\3\0\12\14\1\u0160\33\14" + + "\27\0\2\14\7\0\7\14\3\0\1\u0161\45\14\27\0" + + "\2\14\7\0\7\14\3\0\12\14\1\u0162\33\14\27\0" + + "\2\u0111\4\0\1\262\1\263\1\0\7\u0111\3\0\46\u0111" + + "\21\0\1\u0112\2\0\13\u0112\1\u0163\101\u0112\6\0\2\u0113" + + "\1\u0164\2\0\1\u0165\3\0\7\u0113\3\0\46\u0113\27\0" + + "\2\u0114\1\u0166\2\0\1\112\1\u0167\1\u0168\1\0\7\u0114" + + "\3\0\46\u0114\27\0\1\u0169\12\0\2\u0169\2\0\1\u0169" + + "\3\0\46\u0169\27\0\1\u016a\5\0\1\u0116\4\0\2\u016a" + + "\2\0\1\u016a\3\0\46\u016a\21\0\4\270\1\267\1\u0117" + + "\112\270\6\0\1\u016b\12\0\2\u016b\2\0\1\u016b\3\0" + + "\46\u016b\27\0\1\u011d\5\0\1\u011a\1\u011b\3\0\2\u011d" + + "\2\0\1\u011d\3\0\46\u011d\35\0\1\u011b\1\0\1\u016c" + + "\107\0\1\u016d\1\u011c\3\0\1\276\1\277\2\0\2\u011c" + + "\2\u016d\2\u011c\1\u016d\3\0\46\u016d\27\0\2\u011d\1\u016e" + + "\3\0\1\u016f\1\u011b\1\0\7\u011d\3\0\46\u011d\40\0" + + "\2\u0170\1\0\4\u0170\3\0\1\u0170\1\0\2\u0170\1\0" + + "\1\u0170\6\0\2\u0170\12\0\1\u0170\1\0\1\u0170\5\0" + + "\2\u0170\36\0\1\123\5\0\1\u0171\1\133\2\0\2\u0171" + + "\1\137\5\0\1\137\72\0\2\14\7\0\7\14\3\0" + + "\4\14\1\u0172\41\14\27\0\2\14\7\0\7\14\3\0" + + "\1\14\1\u0173\44\14\27\0\2\14\7\0\7\14\3\0" + + "\24\14\1\u0174\21\14\27\0\2\14\7\0\7\14\3\0" + + "\7\14\1\u0175\36\14\27\0\2\14\7\0\7\14\3\0" + + "\10\14\1\u0176\35\14\27\0\2\14\7\0\7\14\3\0" + + "\20\14\1\u0177\25\14\27\0\2\14\7\0\7\14\3\0" + + "\11\14\1\u0178\34\14\27\0\2\14\7\0\7\14\3\0" + + "\12\14\1\u0179\33\14\27\0\2\14\7\0\7\14\3\0" + + "\6\14\1\u017a\37\14\27\0\2\14\7\0\7\14\3\0" + + "\11\14\1\u017b\34\14\27\0\2\14\7\0\7\14\3\0" + + "\12\14\1\u017c\33\14\27\0\2\14\7\0\7\14\3\0" + + "\30\14\1\u017d\10\14\1\u017e\4\14\27\0\2\14\7\0" + + "\7\14\3\0\11\14\1\u017f\34\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\u0180\44\14\27\0\2\14\7\0" + + "\7\14\3\0\5\14\1\u0181\40\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\u0182\44\14\27\0\2\14\7\0" + + "\7\14\3\0\12\14\1\u0183\33\14\27\0\2\14\7\0" + + "\7\14\3\0\32\14\1\u0184\13\14\27\0\2\14\7\0" + + "\7\14\3\0\6\14\1\u0185\37\14\27\0\2\14\7\0" + + "\7\14\3\0\2\14\1\u0186\43\14\27\0\2\14\7\0" + + "\7\14\3\0\33\14\1\u0187\12\14\27\0\2\14\7\0" + + "\7\14\3\0\2\14\1\u0188\43\14\27\0\2\14\7\0" + + "\7\14\3\0\16\14\1\u0189\27\14\27\0\2\14\7\0" + + "\7\14\3\0\17\14\1\u018a\26\14\27\0\2\14\7\0" + + "\7\14\3\0\7\14\1\u018b\36\14\27\0\2\14\7\0" + + "\7\14\3\0\3\14\1\u018c\42\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\u018d\44\14\27\0\2\14\7\0" + + "\7\14\3\0\3\14\1\u018e\42\14\27\0\2\14\7\0" + + "\7\14\3\0\1\14\1\u018f\44\14\27\0\2\14\7\0" + + "\7\14\3\0\2\14\1\u0190\43\14\27\0\2\14\7\0" + + "\7\14\3\0\15\14\1\u0191\30\14\27\0\2\14\7\0" + + "\7\14\3\0\13\14\1\u0192\32\14\27\0\2\14\7\0" + + "\7\14\3\0\11\14\1\u0193\34\14\27\0\2\14\7\0" + + "\7\14\3\0\12\14\1\u0194\33\14\27\0\2\14\7\0" + + "\7\14\3\0\23\14\1\u0195\22\14\27\0\2\14\7\0" + + "\7\14\3\0\2\14\1\u0196\43\14\27\0\2\14\7\0" + + "\7\14\3\0\16\14\1\u0197\27\14\27\0\2\14\7\0" + + "\7\14\3\0\11\14\1\u0198\34\14\27\0\2\14\7\0" + + "\7\14\3\0\11\14\1\u0199\34\14\27\0\2\14\7\0" + + "\7\14\3\0\37\14\1\u019a\2\14\1\u019b\3\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\u019c\43\14\27\0" + + "\2\14\7\0\7\14\3\0\32\14\1\u019d\13\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\u019e\43\14\27\0" + + "\2\14\7\0\7\14\3\0\3\14\1\u019f\42\14\27\0" + + "\2\14\7\0\7\14\3\0\3\14\1\u01a0\42\14\27\0" + + "\2\14\7\0\7\14\3\0\12\14\1\u01a1\33\14\27\0" + + "\2\14\7\0\7\14\3\0\1\14\1\u01a2\44\14\27\0" + + "\2\14\7\0\7\14\3\0\1\u01a3\45\14\27\0\2\14" + + "\7\0\7\14\3\0\14\14\1\u01a4\31\14\27\0\2\14" + + "\7\0\7\14\3\0\10\14\1\u01a5\35\14\27\0\2\14" + + "\7\0\7\14\3\0\1\14\1\u01a6\44\14\27\0\2\14" + + "\7\0\7\14\3\0\12\14\1\u01a7\33\14\27\0\2\14" + + "\7\0\7\14\3\0\30\14\1\u01a8\15\14\27\0\2\14" + + "\7\0\7\14\3\0\10\14\1\u01a9\35\14\27\0\2\14" + + "\7\0\7\14\3\0\2\14\1\u01aa\43\14\27\0\2\14" + + "\7\0\7\14\3\0\10\14\1\u01ab\35\14\21\0\1\u0112" + + "\2\0\11\u0112\1\u0163\1\u0112\1\u0163\101\u0112\6\0\1\u01ac" + + "\12\0\2\u01ac\2\0\1\u01ac\3\0\46\u01ac\27\0\1\u01ad" + + "\12\0\2\u01ad\2\0\1\u01ad\3\0\46\u01ad\27\0\1\u016a" + + "\5\0\1\u0167\1\u0168\3\0\2\u016a\2\0\1\u016a\3\0" + + "\46\u016a\35\0\1\u0168\1\0\1\u01ae\107\0\1\u01af\1\u0169" + + "\3\0\1\112\1\u0116\2\0\2\u0169\2\u01af\2\u0169\1\u01af" + + "\3\0\46\u01af\27\0\2\u016a\1\u01b0\3\0\1\u01b1\1\u0168" + + "\1\0\7\u016a\3\0\46\u016a\27\0\1\u016d\1\u016b\3\0" + + "\1\276\1\u011a\1\u011b\1\0\2\u016b\2\u016d\2\u016b\1\u016d" + + "\3\0\46\u016d\21\0\1\u016c\2\0\13\u016c\1\u01b2\101\u016c" + + "\6\0\2\u016d\1\u016e\2\0\1\276\1\u011a\1\u011b\1\0" + + "\7\u016d\3\0\46\u016d\27\0\1\u01b3\12\0\2\u01b3\2\0" + + "\1\u01b3\3\0\46\u01b3\35\0\1\u016f\1\u011b\121\0\2\u01b4" + + "\1\0\4\u01b4\3\0\1\u01b4\1\0\2\u01b4\1\0\1\u01b4" + + "\6\0\2\u01b4\12\0\1\u01b4\1\0\1\u01b4\5\0\2\u01b4" + + "\36\0\1\123\5\0\1\u01b5\1\133\2\0\2\u01b5\1\137" + + "\5\0\1\137\72\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u01b6\35\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u01b7\43\14\27\0\2\14\7\0\7\14\3\0\23\14" + + "\1\u01b8\22\14\27\0\2\14\7\0\7\14\3\0\14\14" + + "\1\u01b9\31\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u01ba\35\14\27\0\2\14\7\0\7\14\3\0\41\14" + + "\1\u01bb\4\14\27\0\2\14\7\0\7\14\3\0\5\14" + + "\1\u01bc\40\14\27\0\2\14\7\0\7\14\3\0\16\14" + + "\1\u01bd\27\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u01be\44\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u01bf\44\14\27\0\2\14\7\0\7\14\3\0\20\14" + + "\1\u01c0\25\14\27\0\2\14\7\0\7\14\3\0\12\14" + + "\1\u01c1\33\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u01c2\35\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u01c3\44\14\27\0\2\14\7\0\7\14\3\0\21\14" + + "\1\u01c4\24\14\27\0\2\14\7\0\7\14\3\0\3\14" + + "\1\u01c5\42\14\27\0\2\14\7\0\7\14\3\0\11\14" + + "\1\u01c6\34\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u01c7\43\14\27\0\2\14\7\0\7\14\3\0\15\14" + + "\1\u01c8\30\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u01c9\35\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u01ca\4\14\1\u01cb\30\14\27\0\2\14\7\0\7\14" + + "\3\0\23\14\1\u01cc\22\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u01cd\34\14\27\0\2\14\7\0\7\14" + + "\3\0\23\14\1\u01ce\22\14\27\0\2\14\7\0\7\14" + + "\3\0\12\14\1\u01cf\33\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u01d0\27\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u01d1\43\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u01d2\40\14\27\0\2\14\7\0\7\14" + + "\3\0\12\14\1\u01d3\33\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u01d4\27\14\27\0\2\14\7\0\7\14" + + "\3\0\12\14\1\u01d5\33\14\27\0\2\14\7\0\7\14" + + "\3\0\20\14\1\u01d6\25\14\27\0\2\14\7\0\7\14" + + "\3\0\7\14\1\u01d7\36\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01d8\42\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u01d9\44\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u01da\40\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u01db\34\14\27\0\2\14\7\0\7\14" + + "\3\0\26\14\1\u01dc\17\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u01dd\40\14\27\0\2\14\7\0\7\14" + + "\3\0\6\14\1\u01de\37\14\27\0\2\14\7\0\7\14" + + "\3\0\26\14\1\u01df\17\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u01e0\27\14\27\0\2\14\7\0\7\14" + + "\3\0\23\14\1\u01e1\22\14\27\0\2\14\7\0\7\14" + + "\3\0\10\14\1\u01e2\35\14\27\0\2\14\7\0\7\14" + + "\3\0\26\14\1\u01e3\17\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u01e4\44\14\27\0\2\14\7\0\7\14" + + "\3\0\12\14\1\u01e5\33\14\27\0\2\u01ac\3\0\1\u0165" + + "\3\0\7\u01ac\3\0\46\u01ac\27\0\1\u01af\1\u01ad\3\0" + + "\1\112\1\u0167\1\u0168\1\0\2\u01ad\2\u01af\2\u01ad\1\u01af" + + "\3\0\46\u01af\21\0\1\u01ae\2\0\13\u01ae\1\u01e6\101\u01ae" + + "\6\0\2\u01af\1\u01b0\2\0\1\112\1\u0167\1\u0168\1\0" + + "\7\u01af\3\0\46\u01af\27\0\1\u01e7\12\0\2\u01e7\2\0" + + "\1\u01e7\3\0\46\u01e7\35\0\1\u01b1\1\u0168\102\0\1\u016c" + + "\2\0\10\u016c\1\u01e8\1\u01b2\1\u016c\1\u01b2\101\u016c\6\0" + + "\2\u01b3\4\0\1\u016f\1\u011b\1\0\7\u01b3\3\0\46\u01b3" + + "\40\0\2\u01e9\1\0\4\u01e9\3\0\1\u01e9\1\0\2\u01e9" + + "\1\0\1\u01e9\6\0\2\u01e9\12\0\1\u01e9\1\0\1\u01e9" + + "\5\0\2\u01e9\36\0\1\123\5\0\1\u01ea\1\133\2\0" + + "\2\u01ea\1\137\5\0\1\137\72\0\2\14\7\0\7\14" + + "\3\0\37\14\1\u01eb\6\14\27\0\2\14\7\0\7\14" + + "\3\0\6\14\1\u01ec\37\14\27\0\2\14\7\0\7\14" + + "\3\0\13\14\1\u01ed\32\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u01ee\44\14\27\0\2\14\7\0\7\14" + + "\3\0\16\14\1\u01ef\27\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01f0\42\14\27\0\2\14\7\0\7\14" + + "\3\0\14\14\1\u01f1\31\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u01f2\43\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01f3\42\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01f4\42\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u01f5\44\14\27\0\2\14\7\0\7\14" + + "\3\0\43\14\1\u01f6\2\14\27\0\2\14\7\0\7\14" + + "\3\0\34\14\1\u01f7\11\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u01f8\40\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01f9\42\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01fa\42\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u01fb\43\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u01fc\43\14\27\0\2\14\7\0\7\14" + + "\3\0\10\14\1\u01fd\35\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u01fe\34\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u01ff\42\14\27\0\2\14\7\0\7\14" + + "\3\0\5\14\1\u0200\40\14\27\0\2\14\7\0\7\14" + + "\3\0\22\14\1\u0201\23\14\27\0\2\14\7\0\7\14" + + "\3\0\7\14\1\u0202\36\14\27\0\2\14\7\0\7\14" + + "\3\0\24\14\1\u0203\21\14\27\0\2\14\7\0\7\14" + + "\3\0\1\14\1\u0204\44\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u0205\42\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0206\34\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0207\43\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u0208\43\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0209\34\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u020a\34\14\27\0\2\14\7\0\7\14" + + "\3\0\2\14\1\u020b\43\14\27\0\2\14\7\0\7\14" + + "\3\0\14\14\1\u020c\31\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u020d\34\14\21\0\1\u01ae\2\0\10\u01ae" + + "\1\u020e\1\u01e6\1\u01ae\1\u01e6\101\u01ae\6\0\2\u01e7\4\0" + + "\1\u01b1\1\u0168\1\0\7\u01e7\3\0\46\u01e7\40\0\2\u020f" + + "\1\0\4\u020f\3\0\1\u020f\1\0\2\u020f\1\0\1\u020f" + + "\6\0\2\u020f\12\0\1\u020f\1\0\1\u020f\5\0\2\u020f" + + "\36\0\1\123\5\0\1\u0210\1\133\2\0\2\u0210\1\137" + + "\5\0\1\137\72\0\2\14\7\0\7\14\3\0\7\14" + + "\1\u0211\36\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u0212\43\14\27\0\2\14\7\0\7\14\3\0\3\14" + + "\1\u0213\42\14\27\0\2\14\7\0\7\14\3\0\31\14" + + "\1\u0214\14\14\27\0\2\14\7\0\7\14\3\0\26\14" + + "\1\u0215\17\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u0216\43\14\27\0\2\14\7\0\7\14\3\0\23\14" + + "\1\u0217\22\14\27\0\2\14\7\0\7\14\3\0\5\14" + + "\1\u0218\40\14\27\0\2\14\7\0\7\14\3\0\26\14" + + "\1\u0219\17\14\27\0\2\14\7\0\7\14\3\0\3\14" + + "\1\u021a\42\14\27\0\2\14\7\0\7\14\3\0\12\14" + + "\1\u021b\33\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u021c\43\14\27\0\2\14\7\0\7\14\3\0\16\14" + + "\1\u021d\27\14\27\0\2\14\7\0\7\14\3\0\5\14" + + "\1\u021e\40\14\27\0\2\14\7\0\7\14\3\0\36\14" + + "\1\u021f\7\14\27\0\2\14\7\0\7\14\3\0\10\14" + "\1\u0220\35\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0221\42\14\27\0\2\14\7\0\7\14\3\0\7\14" - + "\1\u0222\35\14\27\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u0223\33\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0224\42\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0225\42\14\27\0\2\14\7\0\7\14\3\0\3\14" - + "\1\u0226\41\14\27\0\2\14\7\0\7\14\3\0\2\14" - + "\1\u0227\42\14\27\0\2\14\7\0\7\14\3\0\14\14" - + "\1\u0228\30\14\27\0\2\14\7\0\7\14\3\0\12\14" - + "\1\u0229\32\14\27\0\2\14\7\0\7\14\3\0\11\14" - + "\1\u022a\33\14\27\0\2\14\7\0\7\14\3\0\16\14" - + "\1\u022b\26\14\40\0\2\u022c\1\0\4\u022c\3\0\1\u022c" - + "\1\0\2\u022c\1\0\1\u022c\6\0\2\u022c\12\0\1\u022c" - + "\1\0\1\u022c\5\0\2\u022c\35\0\1\122\5\0\1\u022d" - + "\1\132\2\0\2\u022d\1\136\5\0\1\136\71\0\2\14" - + "\7\0\7\14\3\0\12\14\1\u022e\32\14\27\0\2\14" - + "\7\0\7\14\3\0\13\14\1\u022f\31\14\27\0\2\14" - + "\7\0\7\14\3\0\11\14\1\u0230\33\14\27\0\2\14" - + "\7\0\7\14\3\0\20\14\1\u0231\24\14\27\0\2\14" - + "\7\0\7\14\3\0\20\14\1\u0232\24\14\27\0\2\14" - + "\7\0\7\14\3\0\15\14\1\u0233\27\14\27\0\2\14" - + "\7\0\7\14\3\0\3\14\1\u0234\41\14\27\0\2\14" - + "\7\0\7\14\3\0\6\14\1\u0235\36\14\27\0\2\14" - + "\7\0\7\14\3\0\37\14\1\u0236\5\14\27\0\2\14" - + "\7\0\7\14\3\0\1\u0237\44\14\27\0\2\14\7\0" - + "\7\14\3\0\10\14\1\u0238\34\14\27\0\2\14\7\0" - + "\7\14\3\0\7\14\1\u0239\35\14\27\0\2\14\7\0" - + "\7\14\3\0\3\14\1\u023a\41\14\32\0\1\122\5\0" - + "\1\u023b\1\132\2\0\2\u023b\1\136\5\0\1\136\71\0" - + "\2\14\7\0\7\14\3\0\2\14\1\u023c\42\14\27\0" - + "\2\14\7\0\7\14\3\0\10\14\1\u023d\34\14\27\0" - + "\2\14\7\0\7\14\3\0\35\14\1\u023e\7\14\27\0" - + "\2\14\7\0\7\14\3\0\14\14\1\u023f\30\14\27\0" - + "\2\14\7\0\7\14\3\0\7\14\1\u0240\35\14\27\0" - + "\2\14\7\0\7\14\3\0\16\14\1\u0241\26\14\27\0" - + "\2\14\7\0\7\14\3\0\26\14\1\u0242\16\14\27\0" - + "\2\14\7\0\7\14\3\0\21\14\1\u0243\23\14\27\0" - + "\2\14\7\0\7\14\3\0\22\14\1\u0244\22\14\32\0" - + "\1\122\5\0\1\u0245\1\132\2\0\2\u0245\1\136\5\0" - + "\1\136\71\0\2\14\7\0\7\14\3\0\40\14\1\u0246" - + "\4\14\27\0\2\14\7\0\7\14\3\0\14\14\1\u0247" - + "\30\14\27\0\2\14\7\0\7\14\3\0\13\14\1\u0248" - + "\31\14\27\0\2\14\7\0\7\14\3\0\2\14\1\u0249" - + "\42\14\27\0\2\14\7\0\7\14\3\0\24\14\1\u024a" - + "\20\14\27\0\2\14\7\0\7\14\3\0\2\14\1\u024b" - + "\42\14\32\0\1\122\5\0\1\u024c\1\132\2\0\2\u024c" - + "\1\136\5\0\1\136\71\0\2\14\7\0\7\14\3\0" - + "\16\14\1\u024d\26\14\27\0\2\14\7\0\7\14\3\0" - + "\6\14\1\u024e\36\14\27\0\2\14\7\0\7\14\3\0" - + "\3\14\1\u024f\41\14\27\0\2\14\7\0\7\14\3\0" - + "\14\14\1\u0250\30\14\27\0\2\14\7\0\7\14\3\0" - + "\12\14\1\u0251\32\14\27\0\2\14\7\0\7\14\3\0" - + "\6\14\1\u0252\36\14\32\0\1\122\5\0\1\u0253\1\132" - + "\2\0\2\u0253\1\136\5\0\1\136\71\0\2\14\7\0" - + "\7\14\3\0\12\14\1\u0254\32\14\27\0\2\14\7\0" - + "\7\14\3\0\16\14\1\u0255\26\14\27\0\2\14\7\0" - + "\7\14\3\0\2\14\1\u0256\42\14\32\0\1\122\5\0" - + "\1\u0257\1\132\2\0\2\u0257\1\136\5\0\1\136\71\0" - + "\2\14\7\0\7\14\3\0\21\14\1\u0258\23\14\27\0" - + "\2\14\7\0\7\14\3\0\12\14\1\u0259\32\14\27\0" - + "\2\14\7\0\7\14\3\0\40\14\1\u025a\4\14\32\0" - + "\1\122\5\0\1\u025b\1\132\2\0\2\u025b\1\136\5\0" - + "\1\136\71\0\2\14\7\0\7\14\3\0\11\14\1\u025c" - + "\33\14\27\0\2\14\7\0\7\14\3\0\16\14\1\u025d" - + "\26\14\27\0\2\14\7\0\7\14\3\0\22\14\1\u025e" - + "\22\14\27\0\2\14\7\0\7\14\3\0\12\14\1\u025f" - + "\32\14\27\0\2\14\7\0\7\14\3\0\21\14\1\u0260" - + "\23\14\21\0"; + + "\1\u0221\43\14\27\0\2\14\7\0\7\14\3\0\11\14" + + "\1\u0222\34\14\27\0\2\14\7\0\7\14\3\0\10\14" + + "\1\u0223\35\14\27\0\2\14\7\0\7\14\3\0\12\14" + + "\1\u0224\33\14\27\0\2\14\7\0\7\14\3\0\12\14" + + "\1\u0225\33\14\27\0\2\14\7\0\7\14\3\0\23\14" + + "\1\u0226\22\14\27\0\2\14\7\0\7\14\3\0\2\14" + + "\1\u0227\43\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u0228\44\14\27\0\2\14\7\0\7\14\3\0\20\14" + + "\1\u0229\25\14\27\0\2\14\7\0\7\14\3\0\1\14" + + "\1\u022a\44\14\27\0\2\14\7\0\7\14\3\0\31\14" + + "\1\u022b\11\14\1\u022c\2\14\27\0\2\14\7\0\7\14" + + "\3\0\22\14\1\u022d\23\14\40\0\2\u022e\1\0\4\u022e" + + "\3\0\1\u022e\1\0\2\u022e\1\0\1\u022e\6\0\2\u022e" + + "\12\0\1\u022e\1\0\1\u022e\5\0\2\u022e\36\0\1\123" + + "\5\0\1\u022f\1\133\2\0\2\u022f\1\137\5\0\1\137" + + "\72\0\2\14\7\0\7\14\3\0\24\14\1\u0230\21\14" + + "\27\0\2\14\7\0\7\14\3\0\26\14\1\u0231\17\14" + + "\27\0\2\14\7\0\7\14\3\0\7\14\1\u0232\36\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0233\43\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0234\43\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0235\43\14" + + "\27\0\2\14\7\0\7\14\3\0\11\14\1\u0236\34\14" + + "\27\0\2\14\7\0\7\14\3\0\26\14\1\u0237\17\14" + + "\27\0\2\14\7\0\7\14\3\0\7\14\1\u0238\36\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0239\43\14" + + "\27\0\2\14\7\0\7\14\3\0\7\14\1\u023a\36\14" + + "\27\0\2\14\7\0\7\14\3\0\11\14\1\u023b\34\14" + + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u023c\31\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u023d\43\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u023e\43\14" + + "\27\0\2\14\7\0\7\14\3\0\3\14\1\u023f\42\14" + + "\27\0\2\14\7\0\7\14\3\0\2\14\1\u0240\43\14" + + "\27\0\2\14\7\0\7\14\3\0\14\14\1\u0241\31\14" + + "\27\0\2\14\7\0\7\14\3\0\12\14\1\u0242\33\14" + + "\27\0\2\14\7\0\7\14\3\0\11\14\1\u0243\34\14" + + "\27\0\2\14\7\0\7\14\3\0\16\14\1\u0244\27\14" + + "\40\0\2\u0245\1\0\4\u0245\3\0\1\u0245\1\0\2\u0245" + + "\1\0\1\u0245\6\0\2\u0245\12\0\1\u0245\1\0\1\u0245" + + "\5\0\2\u0245\36\0\1\123\5\0\1\u0246\1\133\2\0" + + "\2\u0246\1\137\5\0\1\137\72\0\2\14\7\0\7\14" + + "\3\0\12\14\1\u0247\33\14\27\0\2\14\7\0\7\14" + + "\3\0\13\14\1\u0248\32\14\27\0\2\14\7\0\7\14" + + "\3\0\11\14\1\u0249\34\14\27\0\2\14\7\0\7\14" + + "\3\0\20\14\1\u024a\25\14\27\0\2\14\7\0\7\14" + + "\3\0\20\14\1\u024b\25\14\27\0\2\14\7\0\7\14" + + "\3\0\15\14\1\u024c\30\14\27\0\2\14\7\0\7\14" + + "\3\0\3\14\1\u024d\42\14\27\0\2\14\7\0\7\14" + + "\3\0\6\14\1\u024e\37\14\27\0\2\14\7\0\7\14" + + "\3\0\37\14\1\u024f\6\14\27\0\2\14\7\0\7\14" + + "\3\0\1\u0250\45\14\27\0\2\14\7\0\7\14\3\0" + + "\10\14\1\u0251\35\14\27\0\2\14\7\0\7\14\3\0" + + "\7\14\1\u0252\36\14\27\0\2\14\7\0\7\14\3\0" + + "\3\14\1\u0253\42\14\32\0\1\123\5\0\1\u0254\1\133" + + "\2\0\2\u0254\1\137\5\0\1\137\72\0\2\14\7\0" + + "\7\14\3\0\2\14\1\u0255\43\14\27\0\2\14\7\0" + + "\7\14\3\0\10\14\1\u0256\35\14\27\0\2\14\7\0" + + "\7\14\3\0\35\14\1\u0257\10\14\27\0\2\14\7\0" + + "\7\14\3\0\14\14\1\u0258\31\14\27\0\2\14\7\0" + + "\7\14\3\0\7\14\1\u0259\36\14\27\0\2\14\7\0" + + "\7\14\3\0\16\14\1\u025a\27\14\27\0\2\14\7\0" + + "\7\14\3\0\26\14\1\u025b\17\14\27\0\2\14\7\0" + + "\7\14\3\0\21\14\1\u025c\24\14\27\0\2\14\7\0" + + "\7\14\3\0\22\14\1\u025d\23\14\32\0\1\123\5\0" + + "\1\u025e\1\133\2\0\2\u025e\1\137\5\0\1\137\72\0" + + "\2\14\7\0\7\14\3\0\40\14\1\u025f\5\14\27\0" + + "\2\14\7\0\7\14\3\0\14\14\1\u0260\31\14\27\0" + + "\2\14\7\0\7\14\3\0\13\14\1\u0261\32\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\u0262\43\14\27\0" + + "\2\14\7\0\7\14\3\0\24\14\1\u0263\21\14\27\0" + + "\2\14\7\0\7\14\3\0\2\14\1\u0264\43\14\32\0" + + "\1\123\5\0\1\u0265\1\133\2\0\2\u0265\1\137\5\0" + + "\1\137\72\0\2\14\7\0\7\14\3\0\16\14\1\u0266" + + "\27\14\27\0\2\14\7\0\7\14\3\0\6\14\1\u0267" + + "\37\14\27\0\2\14\7\0\7\14\3\0\3\14\1\u0268" + + "\42\14\27\0\2\14\7\0\7\14\3\0\14\14\1\u0269" + + "\31\14\27\0\2\14\7\0\7\14\3\0\12\14\1\u026a" + + "\33\14\27\0\2\14\7\0\7\14\3\0\6\14\1\u026b" + + "\37\14\32\0\1\123\5\0\1\u026c\1\133\2\0\2\u026c" + + "\1\137\5\0\1\137\72\0\2\14\7\0\7\14\3\0" + + "\12\14\1\u026d\33\14\27\0\2\14\7\0\7\14\3\0" + + "\16\14\1\u026e\27\14\27\0\2\14\7\0\7\14\3\0" + + "\2\14\1\u026f\43\14\32\0\1\123\5\0\1\u0270\1\133" + + "\2\0\2\u0270\1\137\5\0\1\137\72\0\2\14\7\0" + + "\7\14\3\0\21\14\1\u0271\24\14\27\0\2\14\7\0" + + "\7\14\3\0\12\14\1\u0272\33\14\27\0\2\14\7\0" + + "\7\14\3\0\40\14\1\u0273\5\14\32\0\1\123\5\0" + + "\1\u0274\1\133\2\0\2\u0274\1\137\5\0\1\137\72\0" + + "\2\14\7\0\7\14\3\0\11\14\1\u0275\34\14\27\0" + + "\2\14\7\0\7\14\3\0\16\14\1\u0276\27\14\27\0" + + "\2\14\7\0\7\14\3\0\22\14\1\u0277\23\14\27\0" + + "\2\14\7\0\7\14\3\0\12\14\1\u0278\33\14\27\0" + + "\2\14\7\0\7\14\3\0\21\14\1\u0279\24\14\21\0"; private static int[] zzUnpackTrans() { - int[] result = new int[37130]; + int[] result = new int[39280]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -873,17 +900,17 @@ public final class ActionScriptLexer { private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = "\5\0\1\11\1\1\1\11\11\1\1\11\3\1\1\11" - + "\25\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11" + + "\26\1\10\11\1\1\2\11\5\1\1\11\2\1\2\11" + "\3\1\1\11\2\1\1\11\1\1\1\11\2\1\1\0" + "\3\11\2\0\1\1\1\0\1\1\1\11\1\1\1\11" - + "\3\1\1\0\2\1\1\0\2\11\67\1\12\11\2\1" + + "\3\1\1\0\2\1\1\0\2\11\73\1\12\11\2\1" + "\7\11\6\0\1\1\1\11\2\0\1\11\3\0\1\11" - + "\1\0\1\11\1\1\2\11\4\1\1\0\102\1\2\11" - + "\7\0\1\11\5\0\1\11\101\1\1\0\1\11\12\0" - + "\71\1\10\0\57\1\2\0\127\1\1\11\64\1"; + + "\1\0\1\11\1\1\2\11\4\1\1\0\106\1\2\11" + + "\7\0\1\11\5\0\1\11\105\1\1\0\1\11\12\0" + + "\74\1\10\0\62\1\2\0\135\1\1\11\64\1"; private static int[] zzUnpackAttribute() { - int[] result = new int[608]; + int[] result = new int[633]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1018,7 +1045,7 @@ public final class ActionScriptLexer { char[] map = new char[0x10000]; int i = 0; /* index in packed string */ int j = 0; /* index in unpacked array */ - while (i < 2262) { + while (i < 2264) { int count = packed.charAt(i++); char value = packed.charAt(i++); do { @@ -1283,32 +1310,27 @@ public final class ActionScriptLexer { case 4: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); } - case 162: + case 167: break; - case 127: { + case 129: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STRING_OP, yytext()); } - case 163: + case 168: break; - case 98: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NULL, yytext()); - } - case 164: - break; - case 139: { + case 142: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); } - case 165: + case 169: break; case 30: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); } - case 166: + case 170: break; - case 135: { + case 138: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); } - case 167: + case 171: break; case 75: { string.setLength(0); @@ -1321,289 +1343,294 @@ public final class ActionScriptLexer { xmlTagName = s; string.append(yytext()); } - case 168: + case 172: break; case 59: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); } - case 169: + case 173: break; - case 132: { + case 135: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); } - case 170: + case 174: break; - case 93: { + case 94: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); } - case 171: + case 175: break; case 33: { string.append(yytext()); } - case 172: + case 176: break; case 61: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); } - case 173: + case 177: break; case 74: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); } - case 174: + case 178: break; case 16: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); } - case 175: + case 179: break; - case 153: { + case 158: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBSUBSTRING, yytext()); } - case 176: + case 180: break; - case 121: { + case 123: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); } - case 177: + case 181: break; case 17: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); } - case 178: + case 182: break; - case 94: { + case 95: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EACH, yytext()); } - case 179: + case 183: break; case 10: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); } - case 180: + case 184: break; case 9: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); } - case 181: + case 185: break; - case 155: { + case 160: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDPLAY, yytext()); } - case 182: + case 186: break; case 56: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); } - case 183: + case 187: break; - case 96: { + case 98: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); } - case 184: + case 188: break; - case 123: { + case 125: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); } - case 185: + case 189: break; case 38: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); } - case 186: + case 190: break; case 12: { string.setLength(0); yybegin(STRING); } - case 187: + case 191: break; - case 125: { + case 127: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); } - case 188: + case 192: break; - case 140: { + case 143: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBLENGTH, yytext()); } - case 189: + case 193: break; case 34: { yybegin(YYINITIAL); yyline++; } - case 190: + case 194: break; case 77: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); } - case 191: + case 195: break; - case 150: { + case 155: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TARGETPATH, yytext()); } - case 192: + case 196: break; case 81: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.CHR, yytext()); } - case 193: + case 197: break; - case 149: { + case 154: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TELLTARGET, yytext()); } - case 194: + case 198: break; case 50: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); } - case 195: + case 199: break; - case 117: { + case 119: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.RANDOM, yytext()); } - case 196: + case 200: break; - case 160: { + case 165: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TOGGLEHIGHQUALITY, yytext()); } - case 197: + case 201: break; case 8: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); } - case 198: + case 202: break; - case 124: { + case 126: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LENGTH, yytext()); } - case 199: + case 203: break; case 5: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); } - case 200: + case 204: break; - case 133: { + case 136: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); } - case 201: + case 205: break; - case 154: { + case 159: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GOTOANDSTOP, yytext()); } - case 202: + case 206: break; case 49: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); } - case 203: + case 207: break; - case 130: { + case 133: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); } - case 204: + case 208: break; - case 145: { + case 149: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); } - case 205: + case 209: break; - case 92: { + case 93: { String t = yytext(); return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, t.substring(2, t.length() - 1)); } - case 206: + case 210: break; case 57: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); } - case 207: + case 211: + break; + case 97: { + return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.EVAL, yytext()); + } + case 212: break; case 88: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); } - case 208: + case 213: break; - case 111: { + case 113: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); } - case 209: + case 214: break; case 64: { throw new ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - case 210: + case 215: break; - case 105: { + case 107: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); } - case 211: + case 216: break; - case 103: { + case 105: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); } - case 212: + case 217: break; case 25: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); } - case 213: + case 218: break; case 44: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); } - case 214: + case 219: break; - case 100: { + case 102: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); } - case 215: + case 220: break; case 76: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); } - case 216: + case 221: break; - case 122: { + case 124: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); } - case 217: + case 222: break; - case 91: { + case 92: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); } - case 218: + case 223: break; case 18: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); } - case 219: + case 224: break; - case 138: { + case 141: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); } - case 220: + case 225: break; case 35: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); } - case 221: + case 226: break; - case 109: { + case 111: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); } - case 222: + case 227: break; case 86: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.INT, yytext()); } - case 223: + case 228: break; - case 104: { + case 106: { string.append(yytext()); String endtagname = yytext(); endtagname = endtagname.substring(2, endtagname.length() - 1); @@ -1612,500 +1639,525 @@ public final class ActionScriptLexer { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML, string.toString()); } } - case 224: + case 229: break; case 45: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); } - case 225: + case 230: + break; + case 132: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NEWLINE, yytext()); + } + case 231: break; case 70: { string.append('\r'); } - case 226: + case 232: break; - case 136: { + case 139: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPDRAG, yytext()); } - case 227: + case 233: break; case 3: { /*ignore*/ } - case 228: + case 234: break; case 28: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); } - case 229: + case 235: break; - case 151: { + case 156: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); } - case 230: + case 236: break; case 31: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); } - case 231: + case 237: break; - case 112: { + case 114: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); } - case 232: + case 238: break; - case 137: { + case 140: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.OVERRIDE, yytext()); } - case 233: + case 239: break; case 90: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.GET, yytext()); } - case 234: + case 240: break; - case 148: { + case 153: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); } - case 235: + case 241: break; - case 157: { + case 162: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.IFFRAMELOADED, yytext()); } - case 236: + case 242: break; case 58: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); } - case 237: + case 243: break; case 37: { yybegin(XML); string.append(yytext()); } - case 238: + case 244: break; - case 95: { + case 96: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); } - case 239: + case 245: break; case 36: { string.append(yytext()); yyline++; } - case 240: + case 246: break; case 71: { string.append('\n'); } - case 241: + case 247: break; - case 115: { + case 117: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBORD, yytext()); } - case 242: + case 248: break; - case 134: { + case 137: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); } - case 243: + case 249: break; - case 152: { + case 157: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); } - case 244: + case 250: break; - case 159: { + case 164: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.REMOVEMOVIECLIP, yytext()); } - case 245: + case 251: break; case 26: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); } - case 246: + case 252: break; case 68: { string.append('\''); } - case 247: + case 253: break; case 24: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); } - case 248: + case 254: break; case 79: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); } - case 249: + case 255: break; - case 146: { + case 151: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADMOVIE, yytext()); } - case 250: + case 256: break; - case 118: { + case 120: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.STATIC, yytext()); } - case 251: + case 257: break; case 39: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); } - case 252: + case 258: break; case 6: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } - case 253: + case 259: break; case 23: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); } - case 254: + case 260: break; case 43: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); } - case 255: + case 261: break; case 63: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); } - case 256: + case 262: break; case 78: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); } - case 257: + case 263: break; case 67: { string.append('\\'); } - case 258: + case 264: break; case 66: { char val = (char) Integer.parseInt(yytext().substring(1), 8); string.append(val); } - case 259: + case 265: break; case 54: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); } - case 260: + case 266: break; case 47: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong(yytext(), 8))); } - case 261: + case 267: + break; + case 100: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + } + case 268: break; case 53: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); } - case 262: + case 269: break; - case 113: { + case 115: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); } - case 263: + case 270: break; case 19: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); } - case 264: + case 271: break; - case 143: { + case 147: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NEXTFRAME, yytext()); } - case 265: + case 272: break; case 80: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong(yytext().substring(2), 16))); } - case 266: + case 273: break; case 82: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SET, yytext()); } - case 267: + case 274: break; case 22: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); } - case 268: + case 275: break; - case 142: { + case 146: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STARTDRAG, yytext()); } - case 269: + case 276: break; case 40: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); } - case 270: + case 277: break; case 62: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); } - case 271: + case 278: break; case 29: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); } - case 272: + case 279: break; case 84: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); } - case 273: + case 280: break; case 60: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); } - case 274: + case 281: break; - case 108: { + case 110: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); } - case 275: + case 282: break; case 51: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); } - case 276: + case 283: break; - case 107: { + case 109: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); } - case 277: + case 284: break; - case 144: { + case 150: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 285: + break; + case 148: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.NAMESPACE, yytext()); } - case 278: + case 286: break; - case 120: { + case 122: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); } - case 279: + case 287: break; case 13: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, new Long(Long.parseLong((yytext())))); } - case 280: + case 288: break; - case 110: { + case 112: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.TRACE, yytext()); } - case 281: + case 289: break; - case 101: { + case 103: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); } - case 282: + case 290: break; - case 99: { + case 145: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + } + case 291: + break; + case 101: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); } - case 283: + case 292: break; case 32: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); } - case 284: + case 293: break; case 20: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); } - case 285: + case 294: break; - case 158: { + case 163: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.LOADVARIABLES, yytext()); } - case 286: + case 295: break; - case 141: { + case 144: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETTIMER, yytext()); } - case 287: + case 296: break; case 52: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); } - case 288: + case 297: break; case 55: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); } - case 289: + case 298: break; case 2: { yyline++; } - case 290: + case 299: break; case 14: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); } - case 291: + case 300: break; case 73: { string.append('\f'); } - case 292: + case 301: break; case 87: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); } - case 293: + case 302: break; - case 131: { + case 134: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DYNAMIC, yytext()); } - case 294: + case 303: break; - case 161: { + case 166: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.DUPLICATEMOVIECLIP, yytext()); } - case 295: + case 304: break; - case 102: { + case 104: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PLAY, yytext()); } - case 296: + case 305: break; case 83: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.ORD, yytext()); } - case 297: + case 306: break; case 72: { string.append('\t'); } - case 298: + case 307: break; case 48: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); } - case 299: + case 308: break; - case 116: { + case 118: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); } - case 300: + case 309: break; - case 126: { + case 128: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.GETURL, yytext()); } - case 301: + case 310: break; - case 129: { + case 131: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); } - case 302: + case 311: break; - case 114: { + case 116: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.MBCHR, yytext()); } - case 303: + case 312: break; case 15: { string.setLength(0); yybegin(CHARLITERAL); } - case 304: + case 313: break; case 42: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); } - case 305: + case 314: break; case 7: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); } - case 306: + case 315: break; case 89: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); } - case 307: + case 316: break; case 69: { string.append('\b'); } - case 308: + case 317: break; - case 97: { + case 99: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOP, yytext()); } - case 309: + case 318: break; - case 147: { + case 152: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.PREVFRAME, yytext()); } - case 310: + case 319: break; case 11: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); } - case 311: + case 320: break; case 46: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); } - case 312: + case 321: break; case 85: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); } - case 313: + case 322: break; case 65: { string.append('\"'); } - case 314: + case 323: break; - case 106: { + case 108: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); } - case 315: + case 324: break; - case 156: { + case 161: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.STOPALLSOUNDS, yytext()); } - case 316: + case 325: break; case 41: { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, new Double(Double.parseDouble((yytext())))); } - case 317: + case 326: break; - case 128: { + case 91: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 327: + break; + case 130: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.NUMBER_OP, yytext()); } - case 318: + case 328: break; case 21: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); } - case 319: + case 329: break; - case 119: { + case 121: { return new ParsedSymbol(SymbolGroup.GLOBALFUNC, SymbolType.SUBSTR, yytext()); } - case 320: + case 330: break; case 27: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); } - case 321: + case 331: break; case 1: { } - case 322: + case 332: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java index 2489394f1..407db83b1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptParser.java @@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.action.parser.script; import com.jpexs.decompiler.flash.SWF; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.parser.ParseException; +import static com.jpexs.decompiler.flash.action.parser.script.SymbolType.DELETE; import com.jpexs.decompiler.flash.action.swf3.ActionNextFrame; import com.jpexs.decompiler.flash.action.swf3.ActionPlay; import com.jpexs.decompiler.flash.action.swf3.ActionPrevFrame; @@ -65,9 +66,6 @@ public class ActionScriptParser { public static final int REGISTER_GLOBAL = 6; private long uniqLast = 0; private boolean debugMode = false; - /* - * TODO: WITH - */ private String uniqId() { uniqLast++; @@ -168,6 +166,62 @@ public class ActionScriptParser { return ret; } + private void memberOrCall(List newcmds, HashMap registerVars, boolean inFunction, boolean inMethod) throws IOException, ParseException { + ParsedSymbol s = lex(); + while (s.isType(SymbolType.DOT, SymbolType.BRACKET_OPEN, SymbolType.PARENT_OPEN)) { + switch (s.type) { + case DOT: + case BRACKET_OPEN: + lexer.pushback(s); + newcmds.addAll(member(registerVars, inFunction, inMethod)); + break; + case PARENT_OPEN: + if (newcmds.get(newcmds.size() - 1) instanceof ActionGetMember) { + newcmds.remove(newcmds.size() - 1); + newcmds.addAll(0, call(registerVars, inFunction, inMethod)); + newcmds.add(new ActionCallMethod()); + } else if (newcmds.get(newcmds.size() - 1) instanceof ActionGetVariable) { + newcmds.remove(newcmds.size() - 1); + newcmds.addAll(0, call(registerVars, inFunction, inMethod)); + newcmds.add(new ActionCallFunction()); + } else { + newcmds.addAll(0, call(registerVars, inFunction, inMethod)); + newcmds.add(new ActionCallFunction()); + } + break; + } + s = lex(); + } + lexer.pushback(s); + } + + private List member(HashMap registerVars, boolean inFunction, boolean inMethod) throws IOException, ParseException { + List ret = new ArrayList<>(); + ParsedSymbol s = lex(); + while (s.isType(SymbolType.DOT, SymbolType.BRACKET_OPEN)) { + if (s.type == SymbolType.BRACKET_OPEN) { + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.BRACKET_CLOSE); + ret.add(new ActionGetMember()); + s = lex(); + continue; + } + s = lex(); + expected(s, lexer.yyline(), SymbolType.IDENTIFIER, SymbolType.THIS, SymbolType.SUPER, SymbolGroup.GLOBALFUNC, SymbolGroup.GLOBALCONST); + //TODO: Handle properties (?) + if (false) {//Action.propertyNamesList.contains(s.value.toString())) { + ret.add(new ActionPush((Long) (long) (int) Action.propertyNamesList.indexOf(s.value.toString()))); + ret.add(new ActionGetProperty()); + } else { + ret.add(pushConst(s.value.toString())); + ret.add(new ActionGetMember()); + } + s = lex(); + } + lexer.pushback(s); + return ret; + } + private List variable(HashMap registerVars, boolean inFunction, boolean inMethod) throws IOException, ParseException { List ret = new ArrayList<>(); ParsedSymbol s = lex(); @@ -191,42 +245,24 @@ public class ActionScriptParser { ret.add(new ActionGetVariable()); } } - s = lex(); - while (s.isType(SymbolType.DOT, SymbolType.BRACKET_OPEN)) { - if (s.type == SymbolType.BRACKET_OPEN) { - ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.BRACKET_CLOSE); - ret.add(new ActionGetMember()); - s = lex(); - continue; - } - s = lex(); - expected(s, lexer.yyline(), SymbolType.IDENTIFIER, SymbolType.THIS, SymbolType.SUPER); - //TODO: Handle properties (?) - if (false) {//Action.propertyNamesList.contains(s.value.toString())) { - ret.add(new ActionPush((Long) (long) (int) Action.propertyNamesList.indexOf(s.value.toString()))); - ret.add(new ActionGetProperty()); - } else { - ret.add(pushConst(s.value.toString())); - ret.add(new ActionGetMember()); - } - s = lex(); - } - lexer.pushback(s); + ret.addAll(member(registerVars, inFunction, inMethod)); return ret; } - private void expected(ParsedSymbol symb, int line, SymbolType... expected) throws IOException, ParseException { + private void expected(ParsedSymbol symb, int line, Object... expected) throws IOException, ParseException { boolean found = false; - for (SymbolType t : expected) { + for (Object t : expected) { if (symb.type == t) { found = true; } + if (symb.group == t) { + found = true; + } } if (!found) { String expStr = ""; boolean first = true; - for (SymbolType e : expected) { + for (Object e : expected) { if (!first) { expStr += " or "; } @@ -237,7 +273,7 @@ public class ActionScriptParser { } } - private ParsedSymbol expected(SymbolType... type) throws IOException, ParseException { + private ParsedSymbol expectedType(Object... type) throws IOException, ParseException { ParsedSymbol symb = lex(); expected(symb, lexer.yyline(), type); return symb; @@ -272,7 +308,7 @@ public class ActionScriptParser { private List function(boolean withBody, String functionName, boolean isMethod) throws IOException, ParseException { List ret = new ArrayList<>(); ParsedSymbol s = null; - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); s = lex(); List paramNames = new ArrayList<>(); @@ -319,7 +355,7 @@ public class ActionScriptParser { TreeSet usedRegisters = new TreeSet<>(); if (withBody) { - expected(SymbolType.CURLY_OPEN); + expectedType(SymbolType.CURLY_OPEN); List body = commands(registerVars, true, isMethod, 0); for (Action a : body) { if (a instanceof ActionStoreRegister) { @@ -429,7 +465,7 @@ public class ActionScriptParser { } } } - expected(SymbolType.CURLY_CLOSE); + expectedType(SymbolType.CURLY_CLOSE); ret.addAll(body); } else { for (int i = 0; i < paramNames.size(); i++) { @@ -636,105 +672,120 @@ public class ActionScriptParser { List ret = new ArrayList<>(); switch (s.type) { case MBORD: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionMBCharToAscii()); break; case MBCHR: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionMBAsciiToChar()); break; case MBLENGTH: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionMBStringLength()); break; case MBSUBSTRING: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionMBStringExtract()); break; case SUBSTR: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionStringExtract()); break; case LENGTH: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionStringLength()); break; case RANDOM: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionRandomNumber()); break; case INT: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionToInteger()); break; case TARGETPATH: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionTargetPath()); break; case NUMBER_OP: - expected(SymbolType.PARENT_OPEN); - ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); - ret.add(new ActionToNumber()); + s = lex(); + if (s.type == SymbolType.DOT) { + ret.add(pushConst((String) s.value)); + ret.add(new ActionGetVariable()); + memberOrCall(ret, registerVars, inFunction, inMethod); + } else { + expected(s, lexer.yyline(), SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + ret.add(new ActionToNumber()); + } break; case STRING_OP: - expected(SymbolType.PARENT_OPEN); - ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); - ret.add(new ActionToString()); + s = lex(); + if (s.type == SymbolType.DOT) { + ret.add(pushConst((String) s.value)); + ret.add(new ActionGetVariable()); + memberOrCall(ret, registerVars, inFunction, inMethod); + } else { + expected(s, lexer.yyline(), SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + ret.add(new ActionToString()); + memberOrCall(ret, registerVars, inFunction, inMethod); + } break; case ORD: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionCharToAscii()); break; case CHR: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionAsciiToChar()); break; case DUPLICATEMOVIECLIP: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionCloneSprite()); break; case GETTIMER: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionGetTime()); break; default: @@ -753,14 +804,59 @@ public class ActionScriptParser { return null; } switch (s.type) { + case LENGTH: + expectedType(SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + ret.add(new ActionStringLength()); + break; + case MBLENGTH: + expectedType(SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + ret.add(new ActionMBStringLength()); + break; + case SET: + expectedType(SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.COMMA); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + ret.add(new ActionSetVariable()); + break; + case WITH: + expectedType(SymbolType.PARENT_OPEN); + ret.addAll(variable(registerVars, inFunction, inMethod)); + expectedType(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.CURLY_OPEN); + + List wcmd = commands(registerVars, inFunction, inMethod, forinlevel); + expectedType(SymbolType.CURLY_CLOSE); + int wlen = Action.actionsToBytes(wcmd, false, SWF.DEFAULT_VERSION).length; + ret.add(new ActionWith(wlen)); + ret.addAll(wcmd); + break; + case DELETE: + ret.addAll(variable(registerVars, inFunction, inMethod)); + if (ret.get(ret.size() - 1) instanceof ActionGetMember) { + ret.remove(ret.size() - 1); + } + ret.add(new ActionDelete()); + break; case TRACE: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); ret.add(new ActionTrace()); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); + break; + case GETVERSION: + expectedType(SymbolType.PARENT_OPEN); + ret.add(pushConst("/:$version")); + ret.add(new ActionGetVariable()); + expectedType(SymbolType.PARENT_CLOSE); break; case GETURL: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); s = lex(); expected(s, lexer.yyline(), SymbolType.PARENT_CLOSE, SymbolType.COMMA); @@ -786,10 +882,10 @@ public class ActionScriptParser { ret.add(pushConst("")); } ret.add(new ActionGetURL2(getuMethod, false, false)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); break; case GOTOANDSTOP: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); List gtsFrame = expression(registerVars, inFunction, inMethod, true); s = lex(); if (s.type == SymbolType.COMMA) { @@ -800,55 +896,55 @@ public class ActionScriptParser { } ret.addAll(gtsFrame); ret.add(new ActionGotoFrame2(false, false, (int) (long) (Long) s.value)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); break; case NEXTFRAME: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionNextFrame()); break; case PLAY: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionPlay()); break; case PREVFRAME: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionPrevFrame()); break; case TELLTARGET: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionSetTarget2()); break; case STOP: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionStop()); break; case STOPALLSOUNDS: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionStopSounds()); break; case TOGGLEHIGHQUALITY: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionToggleQuality()); break; case STOPDRAG: - expected(SymbolType.PARENT_OPEN); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionEndDrag()); break; case LOADVARIABLES: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COMMA); + expectedType(SymbolType.COMMA); ret.addAll(expression(registerVars, inFunction, inMethod, true)); s = lex(); expected(s, lexer.yyline(), SymbolType.PARENT_CLOSE, SymbolType.COMMA); @@ -866,11 +962,11 @@ public class ActionScriptParser { } else { lexer.pushback(s); } - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionGetURL2(lvmethod, false, true)); break; case LOADMOVIE: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); s = lex(); expected(s, lexer.yyline(), SymbolType.PARENT_CLOSE, SymbolType.COMMA); @@ -888,11 +984,11 @@ public class ActionScriptParser { } else { lexer.pushback(s); } - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionGetURL2(method, true, false)); break; case GOTOANDPLAY: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); List gtpFrame = expression(registerVars, inFunction, inMethod, true); s = lex(); if (s.type == SymbolType.COMMA) { @@ -903,17 +999,17 @@ public class ActionScriptParser { } ret.addAll(gtpFrame); ret.add(new ActionGotoFrame2(true, false, (int) (long) (Long) s.value)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); break; case REMOVEMOVIECLIP: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionRemoveSprite()); break; case STARTDRAG: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); s = lex(); if (s.type == SymbolType.COMMA) { @@ -955,17 +1051,17 @@ public class ActionScriptParser { ret.add(new ActionPush(Boolean.FALSE)); lexer.pushback(s); } - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); ret.add(new ActionStartDrag()); break; case IFFRAMELOADED: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); - expected(SymbolType.CURLY_OPEN); + expectedType(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.CURLY_OPEN); List iflComs = commands(registerVars, inFunction, inMethod, forinlevel); - expected(SymbolType.CURLY_CLOSE); + expectedType(SymbolType.CURLY_CLOSE); ret.add(new ActionWaitForFrame2(iflComs.size())); ret.addAll(iflComs); break; @@ -987,7 +1083,7 @@ public class ActionScriptParser { } expected(s, lexer.yyline(), SymbolType.CURLY_OPEN); ret.addAll(traits(false, classTypeStr, extendsTypeStr, implementsTypeStrs)); - expected(SymbolType.CURLY_CLOSE); + expectedType(SymbolType.CURLY_CLOSE); break; case INTERFACE: List interfaceTypeStr = type(); @@ -1003,7 +1099,7 @@ public class ActionScriptParser { } expected(s, lexer.yyline(), SymbolType.CURLY_OPEN); ret.addAll(traits(true, interfaceTypeStr, new ArrayList(), intExtendsTypeStrs)); - expected(SymbolType.CURLY_CLOSE); + expectedType(SymbolType.CURLY_CLOSE); break; case FUNCTION: s = lexer.lex(); @@ -1013,7 +1109,7 @@ public class ActionScriptParser { case NEW: List newcmds = new ArrayList<>(); newcmds.addAll(typeToActions(type(), null)); - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); if (newcmds.get(newcmds.size() - 1) instanceof ActionGetMember) { newcmds.remove(newcmds.size() - 1); newcmds.addAll(0, call(registerVars, inFunction, inMethod)); @@ -1070,7 +1166,7 @@ public class ActionScriptParser { break; case CURLY_OPEN: ret.addAll(commands(registerVars, inFunction, inMethod, forinlevel)); - expected(SymbolType.CURLY_CLOSE); + expectedType(SymbolType.CURLY_CLOSE); break; case INCREMENT: case DECREMENT: @@ -1088,8 +1184,25 @@ public class ActionScriptParser { case IDENTIFIER: case THIS: case SUPER: - lexer.pushback(s); - List var = variable(registerVars, inFunction, inMethod); + case PARENT_OPEN: + case EVAL: + boolean isEval = false; + List var; + if (s.type == SymbolType.PARENT_OPEN) { + var = expression(registerVars, inFunction, inMethod, true); + expectedType(SymbolType.PARENT_CLOSE); + memberOrCall(var, registerVars, inFunction, inMethod); + } else if (s.type == SymbolType.EVAL) { + expectedType(SymbolType.PARENT_OPEN); + var = expression(registerVars, inFunction, inMethod, true); + var.add(new ActionGetVariable()); + expectedType(SymbolType.PARENT_CLOSE); + memberOrCall(var, registerVars, inFunction, inMethod); + isEval = true; + } else { + lexer.pushback(s); + var = variable(registerVars, inFunction, inMethod); + } s = lex(); switch (s.type) { case ASSIGN: @@ -1151,35 +1264,21 @@ public class ActionScriptParser { ret = gettoset(ret, val); break; case PARENT_OPEN: //function call - List callcmds = new ArrayList<>(); - callcmds.addAll(var); - if (callcmds.get(callcmds.size() - 1) instanceof ActionPush) { //push register - callcmds.addAll(0, call(registerVars, inFunction, inMethod)); - callcmds.add(new ActionPush(new Undefined())); - callcmds.add(new ActionCallMethod()); - callcmds.add(new ActionPop()); - } else if (callcmds.get(callcmds.size() - 1) instanceof ActionGetMember) { - callcmds.remove(callcmds.size() - 1); - callcmds.addAll(0, call(registerVars, inFunction, inMethod)); - callcmds.add(new ActionCallMethod()); - callcmds.add(new ActionPop()); - } else if (callcmds.get(callcmds.size() - 1) instanceof ActionGetVariable) { - callcmds.remove(callcmds.size() - 1); - ActionPush ap = (ActionPush) callcmds.get(callcmds.size() - 1); - callcmds.addAll(0, call(registerVars, inFunction, inMethod)); - callcmds.add(new ActionCallFunction()); - callcmds.add(new ActionPop()); - } - ret.addAll(callcmds); + lexer.pushback(s); + ret.addAll(var); + memberOrCall(ret, registerVars, inFunction, inMethod); + ret.add(new ActionPop()); break; default: - throw new ParseException("Not a command", lexer.yyline()); + if (!isEval) { + throw new ParseException("Not a command", lexer.yyline()); + } } break; case IF: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); List onTrue = command(registerVars, inFunction, inMethod, forinlevel); List onFalse = null; s = lex(); @@ -1215,9 +1314,9 @@ public class ActionScriptParser { } break; case WHILE: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); List whileExpr = expression(registerVars, inFunction, inMethod, true); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); List whileBody = command(registerVars, inFunction, inMethod, forinlevel); whileExpr.add(new ActionNot()); ActionIf whileaif = new ActionIf(0); @@ -1235,11 +1334,11 @@ public class ActionScriptParser { break; case DO: List doBody = command(registerVars, inFunction, inMethod, forinlevel); - expected(SymbolType.WHILE); - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.WHILE); + expectedType(SymbolType.PARENT_OPEN); List doExpr = expression(registerVars, inFunction, inMethod, true); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); int doBodyLen = Action.actionsToBytes(doBody, false, SWF.DEFAULT_VERSION).length; int doExprLen = Action.actionsToBytes(doExpr, false, SWF.DEFAULT_VERSION).length; @@ -1251,16 +1350,22 @@ public class ActionScriptParser { fixLoop(doBody, doBodyLen + doExprLen + doif.getBytes(SWF.DEFAULT_VERSION).length, doBodyLen); break; case FOR: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); s = lex(); boolean forin = false; List collection = new ArrayList<>(); String objIdent = null; int innerExprReg = 0; - if (s.type == SymbolType.VAR) { - ParsedSymbol s2 = lex(); - if (s2.type == SymbolType.IDENTIFIER) { - objIdent = s2.value.toString(); + if (s.type == SymbolType.VAR || s.type == SymbolType.IDENTIFIER) { + ParsedSymbol s2 = null; + ParsedSymbol ssel = s; + if (s.type == SymbolType.VAR) { + s2 = lex(); + ssel = s2; + } + + if (ssel.type == SymbolType.IDENTIFIER) { + objIdent = ssel.value.toString(); ParsedSymbol s3 = lex(); if (s3.type == SymbolType.IN) { @@ -1277,11 +1382,15 @@ public class ActionScriptParser { forin = true; } else { lexer.pushback(s3); - lexer.pushback(s2); + if (s2 != null) { + lexer.pushback(s2); + } lexer.pushback(s); } } else { - lexer.pushback(s2); + if (s2 != null) { + lexer.pushback(s2); + } lexer.pushback(s); } } else { @@ -1292,10 +1401,10 @@ public class ActionScriptParser { if (!forin) { ret.addAll(nonempty(command(registerVars, inFunction, inMethod, forinlevel))); forExpr = expression(registerVars, inFunction, inMethod, true); - expected(SymbolType.SEMICOLON); + expectedType(SymbolType.SEMICOLON); forFinalCommands = command(registerVars, inFunction, inMethod, forinlevel); } - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); List forBody = command(registerVars, inFunction, inMethod, forin ? forinlevel + 1 : forinlevel); if (forin) { ret.addAll(collection); @@ -1354,10 +1463,10 @@ public class ActionScriptParser { } break; case SWITCH: - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); List switchExpr = expression(registerVars, inFunction, inMethod, true); - expected(SymbolType.PARENT_CLOSE); - expected(SymbolType.CURLY_OPEN); + expectedType(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.CURLY_OPEN); s = lex(); ret.addAll(switchExpr); int exprReg = 0; @@ -1389,7 +1498,7 @@ public class ActionScriptParser { curCaseExpr.add(aif); ret.addAll(curCaseExpr); firstCase = false; - expected(SymbolType.COLON); + expectedType(SymbolType.COLON); s = lex(); } caseExprsAll.add(caseExprs); @@ -1403,7 +1512,7 @@ public class ActionScriptParser { ret.add(defJump); List defCmd = new ArrayList<>(); if (s.type == SymbolType.DEFAULT) { - expected(SymbolType.COLON); + expectedType(SymbolType.COLON); defCmd = commands(registerVars, inFunction, inMethod, forinlevel); s = lexer.lex(); } @@ -1497,11 +1606,11 @@ public class ActionScriptParser { String catchName = null; int catchSize = 0; if (s.type == SymbolType.CATCH) { - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); s = lex(); expected(s, lexer.yyline(), SymbolType.IDENTIFIER); catchName = s.value.toString(); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); catchCommands = command(registerVars, inFunction, inMethod, forinlevel); s = lex(); found = true; @@ -1575,7 +1684,7 @@ public class ActionScriptParser { switch (s.type) { case TERNAR: List terOnTrue = expression(registerVars, inFunction, inMethod, true); - expected(SymbolType.COLON); + expectedType(SymbolType.COLON); List terOnFalse = expression(registerVars, inFunction, inMethod, true); ret.add(new ActionNot()); ActionIf ifter = new ActionIf(0); @@ -1601,6 +1710,10 @@ public class ActionScriptParser { ret.addAll(expression(registerVars, inFunction, inMethod, allowRemainder)); ret.add(new ActionDivide()); break; + case MODULO: + ret.addAll(expression(registerVars, inFunction, inMethod, allowRemainder)); + ret.add(new ActionModulo()); + break; case EQUALS: ret.addAll(expression(registerVars, inFunction, inMethod, allowRemainder)); ret.add(new ActionEquals2()); @@ -1689,10 +1802,6 @@ public class ActionScriptParser { break; case IS: - break; - case TYPEOF: - ret.addAll(expression(registerVars, inFunction, inMethod, allowRemainder)); - ret.add(new ActionTypeOf()); break; default: lexer.pushback(s); @@ -1700,12 +1809,86 @@ public class ActionScriptParser { return ret; } + private int brackets(List ret, HashMap registerVars, boolean inFunction, boolean inMethod) throws IOException, ParseException { + ParsedSymbol s = lex(); + int arrCnt = 0; + if (s.type == SymbolType.BRACKET_OPEN) { + s = lex(); + + while (s.type != SymbolType.BRACKET_CLOSE) { + if (s.type != SymbolType.COMMA) { + lexer.pushback(s); + } + arrCnt++; + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + s = lex(); + if (!s.isType(SymbolType.COMMA, SymbolType.BRACKET_CLOSE)) { + expected(s, lexer.yyline(), SymbolType.COMMA, SymbolType.BRACKET_CLOSE); + } + } + } else { + lexer.pushback(s); + return -1; + } + return arrCnt; + } + private List expression(boolean allowEmpty, HashMap registerVars, boolean inFunction, boolean inMethod, boolean allowRemainder) throws IOException, ParseException { + if (debugMode) { + System.out.println("expression:"); + } List ret = new ArrayList<>(); ParsedSymbol s = lex(); boolean existsRemainder = false; boolean assocRight = false; switch (s.type) { + case MINUS: + List num = expression(registerVars, inFunction, inMethod, true); + if ((num.size() == 1) && (num.get(0) instanceof ActionPush) + && (((ActionPush) num.get(0)).values.get(0) instanceof Long)) { + ((ActionPush) num.get(0)).values.set(0, -(Long) ((ActionPush) num.get(0)).values.get(0)); + ret.addAll(num); + } else if ((num.size() == 1) && (num.get(0) instanceof ActionPush) + && (((ActionPush) num.get(0)).values.get(0) instanceof Double)) { + Double d = (Double) ((ActionPush) num.get(0)).values.get(0); + if (d.isInfinite()) { + ((ActionPush) num.get(0)).values.set(0, Double.NEGATIVE_INFINITY); + } else { + ((ActionPush) num.get(0)).values.set(0, -d); + } + + ret.addAll(num); + } else if ((num.size() == 1) && (num.get(0) instanceof ActionPush) + && (((ActionPush) num.get(0)).values.get(0) instanceof Float)) { + ((ActionPush) num.get(0)).values.set(0, -(Float) ((ActionPush) num.get(0)).values.get(0)); + ret.addAll(num); + } else { + ret.add(new ActionPush(Long.valueOf(0))); + ret.addAll(num); + ret.add(new ActionSubtract()); + } + break; + case TYPEOF: + expectedType(SymbolType.PARENT_OPEN); + ret.addAll(expression(registerVars, inFunction, inMethod, true)); + expectedType(SymbolType.PARENT_CLOSE); + existsRemainder = true; + break; + case TRUE: + ret.add(new ActionPush(Boolean.TRUE)); + existsRemainder = true; + break; + case NULL: + ret.add(new ActionPush(new Null())); + existsRemainder = true; + break; + case UNDEFINED: + ret.add(new ActionPush(new Undefined())); + break; + case FALSE: + ret.add(new ActionPush(Boolean.FALSE)); + existsRemainder = true; + break; case CURLY_OPEN: //Object literal s = lex(); int objCnt = 0; @@ -1715,7 +1898,7 @@ public class ActionScriptParser { } objCnt++; ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.COLON); + expectedType(SymbolType.COLON); ret.addAll(expression(registerVars, inFunction, inMethod, true)); s = lex(); if (!s.isType(SymbolType.COMMA, SymbolType.CURLY_CLOSE)) { @@ -1725,23 +1908,11 @@ public class ActionScriptParser { ret.add(new ActionPush(fixZero(new Long(objCnt)))); ret.add(new ActionInitObject()); break; - case BRACKET_OPEN: //Array literal - s = lex(); - int arrCnt = 0; - while (s.type != SymbolType.BRACKET_CLOSE) { - if (s.type != SymbolType.COMMA) { - lexer.pushback(s); - } - arrCnt++; - expression(registerVars, inFunction, inMethod, true); - s = lex(); - if (!s.isType(SymbolType.COMMA, SymbolType.BRACKET_CLOSE)) { - expected(s, lexer.yyline(), SymbolType.COMMA, SymbolType.BRACKET_CLOSE); - } - } + case BRACKET_OPEN: //Array literal or just brackets + lexer.pushback(s); + int arrCnt = brackets(ret, registerVars, inFunction, inMethod); ret.add(new ActionPush(fixZero(new Long(arrCnt)))); ret.add(new ActionInitArray()); - break; case FUNCTION: s = lexer.lex(); @@ -1755,7 +1926,19 @@ public class ActionScriptParser { break; case STRING: ret.add(pushConst(s.value.toString())); - //ret.addAll(expressionRemainder(registerVars, inFunction, inMethod)); + memberOrCall(ret, registerVars, inFunction, inMethod); + existsRemainder = true; + break; + case NEWLINE: + ret.add(pushConst("\r")); + existsRemainder = true; + break; + case NAN: + ret.add(new ActionPush(Double.NaN)); + existsRemainder = true; + break; + case INFINITY: + ret.add(new ActionPush(Double.POSITIVE_INFINITY)); existsRemainder = true; break; case INTEGER: @@ -1766,6 +1949,9 @@ public class ActionScriptParser { break; case DELETE: ret.addAll(variable(registerVars, inFunction, inMethod)); + if (ret.get(ret.size() - 1) instanceof ActionGetMember) { + ret.remove(ret.size() - 1); + } ret.add(new ActionDelete()); break; case INCREMENT: @@ -1806,14 +1992,15 @@ public class ActionScriptParser { break; case PARENT_OPEN: ret.addAll(expression(registerVars, inFunction, inMethod, true)); - expected(SymbolType.PARENT_CLOSE); + expectedType(SymbolType.PARENT_CLOSE); + memberOrCall(ret, registerVars, inFunction, inMethod); //ret.addAll(expressionRemainder(registerVars, inFunction, inMethod)); existsRemainder = true; break; case NEW: List newcmds = new ArrayList<>(); newcmds.addAll(variable(registerVars, inFunction, inMethod)); - expected(SymbolType.PARENT_OPEN); + expectedType(SymbolType.PARENT_OPEN); if (newcmds.get(newcmds.size() - 1) instanceof ActionGetMember) { newcmds.remove(newcmds.size() - 1); newcmds.addAll(0, call(registerVars, inFunction, inMethod)); @@ -1828,9 +2015,19 @@ public class ActionScriptParser { break; case IDENTIFIER: case THIS: - lexer.pushback(s); - List var = variable(registerVars, inFunction, inMethod); + case EVAL: + List var; + if (s.type == SymbolType.EVAL) { + expectedType(SymbolType.PARENT_OPEN); + var = expression(registerVars, inFunction, inMethod, true); + var.add(new ActionGetVariable()); + expectedType(SymbolType.PARENT_CLOSE); + memberOrCall(var, registerVars, inFunction, inMethod); + } else { + lexer.pushback(s); + var = variable(registerVars, inFunction, inMethod); + } s = lex(); switch (s.type) { case ASSIGN: @@ -1917,16 +2114,10 @@ public class ActionScriptParser { } break; case PARENT_OPEN: //function call - if (var.get(var.size() - 1) instanceof ActionGetMember) { - var.remove(var.size() - 1); - var.addAll(0, call(registerVars, inFunction, inMethod)); - var.add(new ActionCallMethod()); - } else if (var.get(var.size() - 1) instanceof ActionGetVariable) { - var.remove(var.size() - 1); - var.addAll(0, call(registerVars, inFunction, inMethod)); - var.add(new ActionCallFunction()); - } + lexer.pushback(s); ret.addAll(var); + memberOrCall(ret, registerVars, inFunction, inMethod); + existsRemainder = true; break; default: ret.addAll(var); @@ -1938,6 +2129,7 @@ public class ActionScriptParser { default: List excmd = expressionCommands(s, registerVars, inFunction, inMethod, -1); if (excmd != null) { + existsRemainder = true; //? ret.addAll(excmd); break; } @@ -1950,6 +2142,9 @@ public class ActionScriptParser { ret.addAll(rem); } while ((!assocRight) && (!rem.isEmpty())); } + if (debugMode) { + System.out.println("/expression"); + } return ret; } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java index 904bfb194..f1a2cd450 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolGroup.java @@ -32,5 +32,6 @@ public enum SymbolGroup { DOUBLE, TYPENAME, EOF, - GLOBALFUNC + GLOBALFUNC, + GLOBALCONST } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java index 23002fb63..3fac4adc8 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/SymbolType.java @@ -165,5 +165,11 @@ public enum SymbolType { TARGETPATH, NUMBER_OP, STRING_OP, - IFFRAMELOADED + IFFRAMELOADED, + INFINITY, + EVAL, + UNDEFINED, + NEWLINE, + NAN, + GETVERSION } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex index ee9fae172..7a2062ab1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex +++ b/trunk/src/com/jpexs/decompiler/flash/action/parser/script/actionscript.flex @@ -154,7 +154,7 @@ SingleCharacter = [^\r\n\'\\] "import" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.IMPORT,yytext()); } "use" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.USE,yytext()); } "false" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.FALSE,yytext()); } - "null" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.NULL,yytext()); } + "null" { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NULL,yytext()); } "this" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.THIS,yytext()); } "true" { return new ParsedSymbol(SymbolGroup.KEYWORD,SymbolType.TRUE,yytext()); } "getUrl" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GETURL,yytext()); } @@ -187,8 +187,15 @@ SingleCharacter = [^\r\n\'\\] "length" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.LENGTH,yytext()); } "int" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.INT,yytext()); } "targetPath" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.TARGETPATH,yytext()); } - "Number" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.NUMBER_OP,yytext()); } - "String" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STRING_OP,yytext()); } + "Number" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.NUMBER_OP,yytext()); } + "String" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.STRING_OP,yytext()); } + "eval" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.EVAL,yytext()); } + "undefined" { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.UNDEFINED,yytext()); } + "newline" { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NEWLINE,yytext()); } + "Infinity" { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.INFINITY,yytext()); } + "NaN" { return new ParsedSymbol(SymbolGroup.GLOBALCONST,SymbolType.NAN,yytext()); } + "getVersion" { return new ParsedSymbol(SymbolGroup.GLOBALFUNC,SymbolType.GETVERSION,yytext()); } + /* operators */ diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java index 9bcaa596e..30db033ee 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionGetURL.java @@ -21,11 +21,17 @@ import com.jpexs.decompiler.flash.SWFOutputStream; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.parser.ParseException; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; +import com.jpexs.decompiler.flash.action.treemodel.DirectValueTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.FSCommandTreeItem; import com.jpexs.decompiler.flash.action.treemodel.GetURLTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.LoadMovieNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.UnLoadMovieNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.UnLoadMovieTreeItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; import com.jpexs.decompiler.flash.helpers.Helper; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Stack; @@ -69,6 +75,34 @@ public class ActionGetURL extends Action { @Override public void translate(Stack stack, List output, java.util.HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { - output.add(new GetURLTreeItem(this, urlString, targetString)); + String fsCommandPrefix = "FSCommand:"; + if (urlString.startsWith(fsCommandPrefix) && targetString.equals("")) { + String command = urlString.substring(fsCommandPrefix.length()); + output.add(new FSCommandTreeItem(this, command)); + return; + } + String levelPrefix = "_level"; + if (targetString.startsWith(levelPrefix)) { + try { + int num = Integer.valueOf(targetString.substring(levelPrefix.length())); + if (urlString.equals("")) { + output.add(new UnLoadMovieNumTreeItem(this, num)); + } else { + DirectValueTreeItem urlStringDi = new DirectValueTreeItem(null, 0, urlString, new ArrayList()); + output.add(new LoadMovieNumTreeItem(this, urlStringDi, num, 1/*GET*/)); + } + return; + } catch (NumberFormatException nfe) { + } + + } + + if (urlString.equals("")) { + DirectValueTreeItem targetStringDi = new DirectValueTreeItem(null, 0, targetString, new ArrayList()); + output.add(new UnLoadMovieTreeItem(this, targetStringDi)); + } else { + output.add(new GetURLTreeItem(this, urlString, targetString)); + } + } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionWaitForFrame.java b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionWaitForFrame.java index 499ff9e69..db9259292 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionWaitForFrame.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf3/ActionWaitForFrame.java @@ -53,8 +53,8 @@ public class ActionWaitForFrame extends Action implements ActionStore { @Override public String toString() { String ret = "WaitForFrame " + frame + " " + skipCount; - for (Action a : skipped) { - ret += "\r\n" + a.toString(); + for (int i = 0; i < skipped.size(); i++) { + ret += "\r\n" + skipped.get(i).toString(); } return ret; } @@ -66,8 +66,8 @@ public class ActionWaitForFrame extends Action implements ActionStore { try { sos.writeUI16(frame); sos.writeUI8(skipCount); - for (Action a : skipped) { - sos.write(a.getBytes(SWF.DEFAULT_VERSION)); + for (int i = 0; i < skipped.size(); i++) { + sos.write(skipped.get(i).getBytes(SWF.DEFAULT_VERSION)); } sos.close(); } catch (IOException e) { diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionCloneSprite.java b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionCloneSprite.java index 580c94315..74cc78c71 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionCloneSprite.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionCloneSprite.java @@ -37,8 +37,8 @@ public class ActionCloneSprite extends Action { @Override public void translate(Stack stack, List output, java.util.HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { GraphTargetItem depth = stack.pop(); - GraphTargetItem target = stack.pop(); GraphTargetItem source = stack.pop(); + GraphTargetItem target = stack.pop(); output.add(new CloneSpriteTreeItem(this, source, target, depth)); } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java index 26ee4e026..271f0cb6c 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetURL2.java @@ -21,7 +21,18 @@ import com.jpexs.decompiler.flash.SWFOutputStream; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.parser.ParseException; import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer; +import com.jpexs.decompiler.flash.action.treemodel.DirectValueTreeItem; import com.jpexs.decompiler.flash.action.treemodel.GetURL2TreeItem; +import com.jpexs.decompiler.flash.action.treemodel.LoadMovieNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.LoadMovieTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.LoadVariablesNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.LoadVariablesTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.PrintAsBitmapNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.PrintAsBitmapTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.PrintNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.PrintTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.UnLoadMovieNumTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.UnLoadMovieTreeItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -46,15 +57,15 @@ public class ActionGetURL2 extends Action { public ActionGetURL2(SWFInputStream sis) throws IOException { super(0x9A, 1); - sendVarsMethod = (int) sis.readUB(2); - sis.readUB(4); //reserved - loadTargetFlag = sis.readUB(1) == 1; loadVariablesFlag = sis.readUB(1) == 1; + loadTargetFlag = sis.readUB(1) == 1; + sis.readUB(4); //reserved + sendVarsMethod = (int) sis.readUB(2); //This is first in documentation, which is WRONG! } @Override public String toString() { - return "GetURL2 " + sendVarsMethod + " " + loadTargetFlag + " " + loadVariablesFlag; + return "GetURL2 " + loadTargetFlag + " " + loadVariablesFlag + " " + sendVarsMethod; } @Override @@ -62,10 +73,10 @@ public class ActionGetURL2 extends Action { ByteArrayOutputStream baos = new ByteArrayOutputStream(); SWFOutputStream sos = new SWFOutputStream(baos, version); try { - sos.writeUB(2, sendVarsMethod); - sos.writeUB(4, 0); - sos.writeUB(1, loadTargetFlag ? 1 : 0); sos.writeUB(1, loadVariablesFlag ? 1 : 0); + sos.writeUB(1, loadTargetFlag ? 1 : 0); + sos.writeUB(4, 0); + sos.writeUB(2, sendVarsMethod); sos.close(); } catch (IOException e) { } @@ -74,15 +85,68 @@ public class ActionGetURL2 extends Action { public ActionGetURL2(FlasmLexer lexer) throws IOException, ParseException { super(0x9A, -1); - sendVarsMethod = (int) lexLong(lexer); loadTargetFlag = lexBoolean(lexer); loadVariablesFlag = lexBoolean(lexer); + sendVarsMethod = (int) lexLong(lexer); } @Override public void translate(Stack stack, List output, java.util.HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { GraphTargetItem targetString = stack.pop(); GraphTargetItem urlString = stack.pop(); - output.add(new GetURL2TreeItem(this, urlString, targetString, sendVarsMethod, loadTargetFlag, loadTargetFlag)); + Integer num = null; + if (targetString instanceof DirectValueTreeItem) { + DirectValueTreeItem di = (DirectValueTreeItem) targetString; + Object res = di.getResult(); + if (res instanceof String) { + String tarStr = (String) res; + String levelPrefix = "_level"; + if (tarStr.startsWith(levelPrefix)) { + try { + num = Integer.valueOf(tarStr.substring(levelPrefix.length())); + } catch (NumberFormatException nfe) { + } + } + } + } + if (loadVariablesFlag) { + if (num != null) { + output.add(new LoadVariablesNumTreeItem(this, urlString, num, sendVarsMethod)); + } else { + output.add(new LoadVariablesTreeItem(this, urlString, targetString, sendVarsMethod)); + } + } else if (loadTargetFlag) { + if ((urlString instanceof DirectValueTreeItem) && (urlString.getResult().equals(""))) { + output.add(new UnLoadMovieTreeItem(this, targetString)); + } else { + output.add(new LoadMovieTreeItem(this, urlString, targetString, sendVarsMethod)); + } + } else { + String printPrefix = "print:#"; + String printAsBitmapPrefix = "printasbitmap:#"; + String urlStr = null; + if ((urlString instanceof DirectValueTreeItem) && (urlString.getResult() instanceof String)) { + urlStr = (String) urlString.getResult(); + } + if (num != null) { + if ("".equals(urlStr)) { + output.add(new UnLoadMovieNumTreeItem(this, num)); + } else if (urlStr != null && urlStr.startsWith(printPrefix)) { + output.add(new PrintNumTreeItem(this, num, urlStr.substring(printPrefix.length()))); + } else if (urlStr != null && urlStr.startsWith(printAsBitmapPrefix)) { + output.add(new PrintAsBitmapNumTreeItem(this, num, urlStr.substring(printAsBitmapPrefix.length()))); + } else { + output.add(new LoadMovieNumTreeItem(this, urlString, num, sendVarsMethod)); + } + } else { + if (urlStr != null && urlStr.startsWith(printPrefix)) { + output.add(new PrintTreeItem(this, targetString, urlStr.substring(printPrefix.length()))); + } else if (urlStr != null && urlStr.startsWith(printAsBitmapPrefix)) { + output.add(new PrintAsBitmapTreeItem(this, targetString, urlStr.substring(printAsBitmapPrefix.length()))); + } else { + output.add(new GetURL2TreeItem(this, urlString, targetString, sendVarsMethod)); + } + } + } } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetVariable.java b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetVariable.java index eb444869e..c4f642d44 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetVariable.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf4/ActionGetVariable.java @@ -18,7 +18,10 @@ package com.jpexs.decompiler.flash.action.swf4; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.treemodel.ConstantPool; +import com.jpexs.decompiler.flash.action.treemodel.DirectValueTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.EvalTreeItem; import com.jpexs.decompiler.flash.action.treemodel.GetVariableTreeItem; +import com.jpexs.decompiler.flash.action.treemodel.GetVersionTreeItem; import com.jpexs.decompiler.flash.graph.GraphTargetItem; import com.jpexs.decompiler.flash.helpers.Highlighting; import java.util.HashMap; @@ -40,8 +43,14 @@ public class ActionGetVariable extends Action { public void translate(Stack stack, List output, java.util.HashMap regNames, HashMap variables, HashMap functions, int staticOperation, String path) { GraphTargetItem name = stack.pop(); GraphTargetItem computedVal = variables.get(Highlighting.stripHilights(name.toStringNoQuotes((ConstantPool) null))); - GetVariableTreeItem gvt = new GetVariableTreeItem(this, name); - gvt.setComputedValue(computedVal); - stack.push(gvt); + if (name instanceof DirectValueTreeItem && ((DirectValueTreeItem) name).value.equals("/:$version")) { + stack.push(new GetVersionTreeItem(this)); + } else if (!(name instanceof DirectValueTreeItem) && !(name instanceof GetVariableTreeItem)) { + stack.push(new EvalTreeItem(this, name)); + } else { + GetVariableTreeItem gvt = new GetVariableTreeItem(this, name); + gvt.setComputedValue(computedVal); + stack.push(gvt); + } } } diff --git a/trunk/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java b/trunk/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java index 7ddf648eb..7f4a29136 100644 --- a/trunk/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java +++ b/trunk/src/com/jpexs/decompiler/flash/action/swf5/ActionWith.java @@ -36,10 +36,14 @@ import java.util.Stack; public class ActionWith extends Action implements GraphSourceItemContainer { - //public List actions; public int codeSize; public int version; + public ActionWith(int codeSize) { + super(0x94, 2); + this.codeSize = codeSize; + } + @Override public boolean parseDivision(int pos, long addr, FlasmLexer lexer) { codeSize = (int) (addr - getAddress() - getHeaderSize()); @@ -50,9 +54,6 @@ public class ActionWith extends Action implements GraphSourceItemContainer { super(0x94, 2); codeSize = sis.readUI16(); this.version = version; - //actions = new ArrayList(); - //actions = (new SWFInputStream(new ByteArrayInputStream(sis.readBytes(codeSize)), version)).readActionList(rri.getPos(), containerSWFOffset + getAddress() + 2, rri, codeSize); - } public ActionWith(long containerSWFPos, boolean ignoreNops, List