From e8fb8e2f37a1f87abcd0074b4cd06d0d847e93f8 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Wed, 16 Sep 2015 14:12:13 +0200 Subject: [PATCH] faster syntax highlighting --- lib/jsyntaxpane-0.9.5.jar | Bin 558596 -> 562925 bytes .../lexers/actionscript3_methodinfo.flex | 2 +- .../ffdec_lib/lexers/actionscript3_pcode.flex | 2 +- .../lexers/actionscript3_script.flex | 2 +- .../ffdec_lib/lexers/actionscript_pcode.flex | 380 +-- .../ffdec_lib/lexers/actionscript_script.flex | 2 +- libsrc/ffdec_lib/lexers/text.flex | 26 +- .../src/com/jpexs/decompiler/flash/SWF.java | 2 +- .../deobfuscation/AVM2DeobfuscatorSimple.java | 4 +- .../flash/abc/avm2/model/CoerceAVM2Item.java | 2 +- .../flash/abc/avm2/model/NullAVM2Item.java | 2 +- .../abc/avm2/model/UndefinedAVM2Item.java | 2 +- .../abc/avm2/parser/pcode/Flasm3Lexer.java | 73 +- .../avm2/parser/script/ActionScriptLexer.java | 1444 ++++++------ .../methodinfo_parser/MethodInfoLexer.java | 74 +- .../decompiler/flash/action/ActionGraph.java | 2 +- .../flash/action/ActionListReader.java | 4 +- .../action/model/DirectValueActionItem.java | 2 +- .../action/model/GetVariableActionItem.java | 2 +- .../flash/action/model/ReturnActionItem.java | 4 +- .../action/model/clauses/ForInActionItem.java | 2 +- .../flash/action/parser/pcode/FlasmLexer.java | 2039 ++++++++--------- .../parser/script/ActionScript2Parser.java | 8 +- .../parser/script/ActionScriptLexer.java | 4 +- .../parser/script/ActionSourceGenerator.java | 2 +- .../flash/action/swf4/ActionPush.java | 4 +- .../decompiler/flash/ecma/EcmaScript.java | 16 +- .../com/jpexs/decompiler/flash/ecma/Null.java | 14 +- .../decompiler/flash/ecma/Undefined.java | 14 +- .../decompiler/flash/tags/text/TextLexer.java | 28 +- .../annotations/parser/ConditionLexer.java | 72 +- .../jpexs/decompiler/graph/model/NotItem.java | 8 +- .../jpexs/decompiler/graph/model/PopItem.java | 2 +- .../main/java/jsyntaxpane/SyntaxDocument.java | 17 +- .../components/LineNumbersRuler.java | 12 +- .../jsyntaxpane/lexers/actionscript.flex | 2 +- .../main/jflex/jsyntaxpane/lexers/flasm.flex | 4 +- .../main/jflex/jsyntaxpane/lexers/flasm3.flex | 4 +- .../jsyntaxpane/lexers/flasm3_methodinfo.flex | 4 +- .../jflex/jsyntaxpane/lexers/swftext.flex | 4 +- .../flash/gui/editor/UndoFixedEditorPane.java | 13 +- 41 files changed, 2129 insertions(+), 2175 deletions(-) diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar index e424657282643c3348b17e7ece6ea2dd31ddd391..cd65def36464761c303ef62f1444589ed2dbe7b7 100644 GIT binary patch delta 148081 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℘in~dzxvY9j~T6_(nun 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 z z?y4mL_31V7y#F|VccY#NeFOLis++Z>CZ_~5p2OpF{28wj-qx%%=YCOjxG;?ciSA64 z_EyPiO{-ZY`u%;;ZPD{5uRWY;oF9_XU%o;{KhytEq^qI$vQun=)fb%t(l0nTe=ST< z)inAX8QZnTFe$TLyfjvN3Xwf3b#pHE`gzZW*2$55H?}N2bYyi{*Oj%uZ5{@e=)PAc zW$rz5OD!U-^u_m=Et}`g&YkZa+8UYYlk{e4@vAd792reI zG$*>N^z>y-i{hSN?CGlxJ#HT7Fc!#c(7sYoquG|O=f=_dAy8qgD?nq*rKzo>DblmC zF+wY}r)C2TcBt1V2+z^HoW`zg?ai?5a}p?|9xJv|tL=H|7EHr83R#h#k0E;6VvO)Xk1@9l@p!)yi@GZxkO$x>jN0Ck6 z2+pKK=^b`=wfWIXWc}HH?S#*v&w6^^{_PGod8|s3G*2lOn0PB~8Q=4&>X~iIb^F%o z`2p@p6RGYYV;{wyQ}=#vNFUzkV)yK0u>JMTS8kuVCpy-9c{h*Rvcu*HImpn4_ zH)Zle>=c{%YhDbj*r{r57u-@Ay6&~~@>6W*r8ihT-Y;L)Gkgi2`}BWyQD^1jL$2&X zUlPCi1w`nH`erQ?GIDVCvotuCytAS+h>-N&M~CHi!Dx$|cI0^F(aO8iLh zKB;?Z8P9Ap+%Vy2d|-o=On?;!%Q~akx%^ul_k*t2{^oXb-7@n}dreGKBF$W4_S|}9S}}D9Ts`(QF_|IlC`sq z;~SMW*z7EkWU8NQ7!Pl}P_N^8Vv4JwN$R!AaifIfJ0Ct0h1PrNTi#IE$JwZOdplFk z%jBsmGmft`ylf+%ttD(TcOMLYFDlpZ z+^qhvg<4QuqPt+_9_zw8BBkrvTQ3iVS2snKrhE}T_%c6J#a`Dhh~rq9)u7jK(4-h<*2Ke|^{FIV;T{|9#!5-m2haUtQ?> zj>V*_t%g0f-IJ93Hur9onK94p)ix8?6bQfL#J_hm*E1vticNLRX|>qDJe-j#`o3&s z^wVi0ai4mo?bVxBT5n#%eNW~DXV#l1XD4P%QYwtg9OYx`-#j}pm;X)Wu!f9*?8&R$ zwZD}jx-6FrhGahdnmF_I!VevRbkddawvkmsm)$B>{E5hQxEw$dITC(WDr|3^-KmGR znwoY8*5#~u7}BJwTo}2mJ1S0qyXM3<(vtn#0~qx)4(U~Xy76@Mpmop62ak_`)Z`nH zAKJRj_TV(r-C352J0cs0o1;G%It?n@PyM(-qP5n?k2D3Yfo7WrpDlcjB=c66?BQ~*J;_eBA+TKzIy0pECqab?`ycxZ zVLAT4RWk(hCHn&Ut+)>re`!bWB7#f2G!d5>f+})*2HqeqS{E4fP7j@`Z4#Mtb12M+ zv=mZSjc>hw>VnqE%YHp4zO&fZTCodd-6wm+TlHBo8CUV z$)fJQx?%rs8y`|%(bo?r5TmD7-y(0^e}_m$UD|jyqtUdxs?yJrPqDT@mawa+v*^bi zubj303A1f?+f@>U)H>43uHQ$Q`!nyYxRz^p|MG9a^MxS_{`Z@*<$5>j$t!S04RKsM zW*N}ly0?+@M%+r|McqY~+U%lESLTm;bR>&;|MToo^Nd%!^^)&r?RHypw_xDM{JWRM z-&H3cth~^DWz$>b$ex*d{I$<6h^AQ7%CkjveM~#qdRp@Pf!vSBq_=R8R3?WSCZe~G zjB<;`N9y0TD%+M^tP{CS?fO8qJ*(PT63lHC`f zx%zRLlZ);NuczF$>0H(u%gc6=%ucF{oKpGhFk`5Y6ub3Igt9PYb7Sej;{eJnhsL-np>0=UU9e1UZ>)ZyHzq{SC&yrb;o;yFcl(at0Tfgk#aKcbZ zeEJujoI$HpCHyhS9MlDJy%Q|?k8*H0#$12mnv$&h_3LiVZ|dJ;yS|E=^)?_7FI?Y#ls@DQ+0^bGur=$(ON`{e(dpv#Gh^T$cxMjQiw)>|T*G&-)JGJ^kzQ~y9E&tgF6H?l~oFO=i|9ixo_X}`!KiR`8) za$pG}`{^M?R>q7FW`3lC8hR5AU4e#5BX1Ll9E$|eq7ftlM@n-MmLU6>i5yb@N})&t zzk|dw5SK6FsX_x{VS?1vvKc9Y@-Tu(j#wb#V-D}322x1}P*NF2${1(jK@Kqg57imc zaQ}ldQeh%W;CirQ0v;aBkf!PXj&Dg5znU58cmzYhKTJd!oWUeBFj&HZ2M03~h45e* zb_fo@f(D~Am%*;BP@84HcV*J6Cj}4K6zE)XUU8w-&RYs;-@$%M0`jX#?MssR=#!vTRX^H!j!jJ#2Snv8}% z)(Q5N1+V%8k&faBk$X+Vhj|a#z8>wXExDb&a%R#ciRCNnC9bKX<9i1*s4(NO-a1rE` z7`fb{*D!3!fXwb?rK8iJflDA}ONhpJ-HBZS$<2j9K1DME!ugRWODJ-_MJXfUCXGzAS!*oTF-@sj1$&IqfmWv8PH6aBYNq#gjICMGH# z-<%KPA3cIeF`L4JB=J!==b@BiDP)QuGQvlZZw{q6XP}hyvn+@{KT!~8=E4tzj59bv z1j*;8#HdCI9R(P#mFIXC^c+Mw)Mm3h>XnXxqOBwRThlv>ut;WA+=#sZWDiB_7dE}V z3zZ=pV$imWyiy7}L!*p{R11IrXbj}G00?lgoJuvRAR?TC6sm+EP@5{rQ~^vqSiv7j znQa_|lyspq^=V2{>JCCLN)$(`1&Jzn=HH`CHr&I4GxF~UW=y~mBU-yKPU2x7HR^y< zJjhJTDe3_=3XvW*Wu93!}Po(Ju7O?S>05gQKn~<-q*;MN5baDKMBvBkM1a>LN#`JPL*hGrbV0NOx z69#Co5OPL}(iJwK!5S8LaH$2o(BDLD!W5T#K!Wd~zoYF1cx`ZestuHbk2Ixr?2!gu z7wu7+6jCZp_Q?&CEjiH3ylz90(%O$cXB29JRT93D@Y)JcZ!dhbmE`+cJTZ3}q6DUl z*}Qj%3&=IQNUlLQ6e@^pa;N9VJ7LV0x5$88``6>N-!kNm(oQQV?Fg{phk~V*tJs?g zWku9{$aNE|4Hi-Lr~h|B96<7A$+e-U$Z6mya3%p~TE*>yLz=QgVT4_dD2bPrh8)P2 zx*bo@R}PvCD)K;!&Ug)QkOU62ZF4>ZhhCF|Y@o*AR^R#XL{M)ZXhVXge$GW8aSB9! zgjb#@gh3ONE4k6<*A4<#X&PvKGzt|!eB>!E*gkoXYjPhRTmiut2e+3a$LK(=nnfJ6 zNH}zs0u5^{8T}54)h~hu#^X>M1)>NxhDd&)`>q?HhZjNfkyr(y7MAp6xml9}B>fhe z7_IO(|HJt?9HHk#)RoBo?$eH_o0Gsaa}iUiqZpoHM>ry*MDgJ16(PS)$8k;`PYwvu=tD8&$tcY-AE(_=B6I&%{ebHc$k)E)U(H0F$DyC|7iwl< zjiJ@#fnpp#QAoj~m688e>iHQkK5dW&Z9_3FL(-I?0i!6^gP~8iK^|+t4AP2`W7`9>5ce9lY9o-dAIyzYz?658w z`%9aF8#%g+Tz-`dxf1hGeL}72=%i>O1iB+;nqY-lHNoznatyL-?`DFLx!VOgIw)=G zPhnhfBnrj*Q0Xg;gr(3rd|m12KoIIrVcb|X&ahOID1r&w*1s{D9lDcBm@1;pnC}a+ zu+y4EIb1oCTA-YoPICAfEus|0gG1FJ<{;Fk$55YW+vM7xWNg591|BTKScIUd23u38 z+2?QlTdR0y$q|&M8J7Ij(9H+4s%*ZXEz-N&iZqz8QrIAgg>C7YN|1G;+-g+KSlTf6LT68^`n9XJkTb zb;$hd_*F7*gM0DW`QLu)=R+!90Lvh*+Ik(RiN8m2+K3L-16c|hj}&LZt5~WC6W4+` zo+xpZ5t+ErfJp$!UrMRk)hN-;flS4>^MBE+)K& zViEWc!3GGZ{`WTit6Ae@as;;|m`FmaG#24Uc~D*x*bQT@f4#C@m&p-c=u)QmW_3Z- zuzGU1+A^Xj#>2lZRPPio9i2ARDcZWeZjg-K^MQ$XfkJX2Dx>aCGVv+=g)4Ui4e#S+ z#05>OgN##v;fdKUa{gLHgCk ztD4Z7#Gy4UrNQ3HLoOMBb@s`H)KMdb)q1awXQ$`@pAH{w3pOgi@m*(_`4$+xRDGyw z3FmN{d>*qPM#FrvOUouS<{`}t;6>|9|3s<{paDr5P`oWO_>;l72YvBbHZ;Wes66Nr{7ztScKCb!-@{Ep|Z?>E=L}Y^O)B6AWOHrsH9{J)5 zh&)z?hDaixRuIK7U5MT+-^@TxnKrUd1up5I5@vzFl0KHVDrEtD8GPC_x-P54@p|PA6da267-x#h{s9MMOd@iJF+dd&we4HU)g?AsBT)uSfkUjBDpadGR3? zY%FX@mnEg|9JPenkjcw}_;9m`(WnhAR4tCc5L6-W;ZvkCLlcdYLg=l4UA`0xClb7h zJgM2Qw7Q4@IY(zT(DgscPhs3n=>_P$STm{Jy|M^57Agn5zS;Z&{i(RX}ebw z)u@rK>J1v@@fqmg)&x&NKpV72r)P(g_cgH$Rf&#lQw^C`GNRka@r70h!m2IcegpoClkbg9tuki!F%pr|+@X<;Qm)I2=%) z2(1v!mJAx%cpz(-k`8SvT%Ab8^DM~LEXu1SiAob&kdCh-WSJoaF<%3AF2|8PDfIN$ zl$IQ5O>$A;TswwC#~fhMd4WaK3)~u{|6+Tg^yMd8969>OAMuS zXv7O$SR=wmE5u+fiqg{74BoT--_~gM1ATjlj;;YdTK~~J9~WK5nKHk#(it>he;yC^ z&SxPavCfoQn+7!cxoj7rEW&gCe>BS1c8AJKA&o-#lxXVcLo}ICaES!rh$*6;HSP`f*A3j>=l&KDn*6K z0ybum6pvpmz_0V5SkE925Fn#-0j=s4w1s*PiiA&4K+!uYfQWFcr}Q<_>w#AN9;Z3I z2Q%)sp2B!9N;B@I(u9!a^%S1(P}+?TIPGZ`WFh=mAe7p3s*CpiMV2Z2u^ zOLqj2G61`35%bHxkxgDi7p&m@^a%7P042K!Rm_BRP*B!9CS3@i3KpSq*ie)K0(U%f zB0SOL>LiSm(uD#(W|5pHcrZL=Djl!V-R*p6uF@Bww+iCi4@8qQrG0bny=;IkR`F_a z916EN!shZ|vLJan&B|zzurCtaSQf{_jd+~M!5A|BAV-=?7~pe26f2q{fkWYjCVVa)*R?nkykf#e@pW3|KZuv3c*sn`rFcW9HEG7J>(2S_@6_7p7qE{s#M$JxVHttIGD zVjOR_!hSp)=x5<`puvB~@fo==cBZnYzETHJFB34HiL*HsDZr znFFtb->>!*YyqgrB534B9171IaKe=xWUah<&>CWnYgVqL^Syc9Dl9J|6M0#J5jtp zreq%aF>Y_*x&pYu+6eWhFm7KUigH5Ce2AhL)KlS(WD-ED7YX1TjLS-ELrDG|V}5`) zT7-89BjYJH(e znHW_>CNhD0Ik1T9h6EIE@lP{pei8qN8Sul4@Q)7Tc-m&-^N8^-J>Yv5;SG{;JhhoT z-zv8f9n&o#{F}kTV>lFTCYb5{rIdUZ9g*}d;wp-y1rsg7OI+AW*q@4B;Q-DIi#R7{ z;+$z)$w}6PpXgfsn?>yB5DZV#N)8pSO!@IY(Y~i~?$lOtct@NEn#GTc7~ejNLcMUe zdLkGcD!p@Ph$XTn1om>E72x@tMLPpT?uW><{X=;X4uz{a#V}~c1&z$*04-gVVX;zN zB-+OC_kH+(Rez&`jHfgP>Lb~USj$!8P-BK$}6!tH@*+(Fe;L zTB$+X*bi;LWOWTG*h@72r{kc$K?-WKCC5X56~@(Ic(Z?61ofduz|-aC!QSfA*|q10A`S)sp|C;nSgdXcyTM0Mo$K3Iu|D;4p+oq7x1 zBKE{VoISPW{ButiRqVnzkB>N%w&l=VaYRLD`k*-NILLkEVm)`d8al*0OHv$B0vls56opoFReEB^3Dy

eYS--N)iK13Ac+C#sGKII4)BTiViqWeF2th7o1 delta 144085 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 H%=Ui(&`nJT diff --git a/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex b/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex index cb7113614..ad6513f47 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex @@ -31,7 +31,7 @@ package com.jpexs.decompiler.flash.abc.methodinfo_parser; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname = false; long multinameId = 0; diff --git a/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex b/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex index 2b5011912..5e57af061 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex @@ -34,7 +34,7 @@ import java.util.Stack; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname = false; long multinameId = 0; diff --git a/libsrc/ffdec_lib/lexers/actionscript3_script.flex b/libsrc/ffdec_lib/lexers/actionscript3_script.flex index f0b94ba62..ce3714738 100644 --- a/libsrc/ffdec_lib/lexers/actionscript3_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript3_script.flex @@ -52,7 +52,7 @@ import java.util.Stack; yypushbackstr(s, YYINITIAL); } - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; diff --git a/libsrc/ffdec_lib/lexers/actionscript_pcode.flex b/libsrc/ffdec_lib/lexers/actionscript_pcode.flex index 6db5ef65f..e6fdf37fa 100644 --- a/libsrc/ffdec_lib/lexers/actionscript_pcode.flex +++ b/libsrc/ffdec_lib/lexers/actionscript_pcode.flex @@ -1,190 +1,190 @@ -/* - * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3.0 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. - */ -/* Flash assembler language lexer specification */ -package com.jpexs.decompiler.flash.action.parser.pcode; - -import com.jpexs.decompiler.flash.action.parser.ActionParseException; -import com.jpexs.decompiler.flash.action.swf4.ConstantIndex; -import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; -import com.jpexs.decompiler.flash.ecma.Null; -import com.jpexs.decompiler.flash.ecma.Undefined; - -%% - -%public -%class FlasmLexer -%final -%unicode -%char -%line -%column -%type ASMParsedSymbol -%throws ActionParseException - -%{ - - StringBuffer string = new StringBuffer(); - - /** - * Create an empty lexer, yyrset will be called later to reset and assign - * the reader - */ - public FlasmLexer() { - - } - - public int yychar() { - return yychar; - } - - public int yyline() { - return yyline + 1; - } - -%} - -/* main character classes */ -LineTerminator = \r|\n|\r\n - -InputCharacter = [^\r\n] -Comment = ";" {InputCharacter}* - -WhiteSpace = [ \t\f]+ - - -/* identifiers */ - -Identifier = [:jletter:][:jletterdigit:]* - -InstructionName = [a-zA-Z][a-zA-Z0-9_]* - -Label = {Identifier}: - -StartOfBlock = "{" - -EndOfBlock = "}" - -True = "true" -False = "false" -False = "false" -Null = "null" -Undefined = "undefined" - -Infinity = -? "Infinity" - -/* integer literals */ -PositiveNumberLiteral = 0 | [1-9][0-9]* -NegativeNumberLiteral = - {PositiveNumberLiteral} - -NumberLiteral = {PositiveNumberLiteral}|{NegativeNumberLiteral} - -/* floating point literals */ -FloatLiteral = "NaN" | {Infinity} | -?(({FLit1}|{FLit2}|{FLit3}) {Exponent}?) - -FLit1 = [0-9]+ \. [0-9]* -FLit2 = \. [0-9]+ -FLit3 = [0-9]+ -Exponent = [eE] [+-]? [0-9]+ - -HexDigit = [0-9a-fA-F] - -/* string and character literals */ -StringCharacter = [^\r\n\"\\] - -Register= register{PositiveNumberLiteral} -Constant= constant{PositiveNumberLiteral} - -%state STRING,PARAMETERS - -%% - - { - - - /* whitespace */ - {WhiteSpace} { } - - {Label} { - String s=yytext(); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); - } - - /* identifiers */ - {InstructionName} { yybegin(PARAMETERS); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); - } - {EndOfBlock} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); } -} - - { - /* string literal */ - \" { - yybegin(STRING); - string.setLength(0); - } - - /* numeric literals */ - - {NumberLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); } - {FloatLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); } - {LineTerminator} {yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); } - {Comment} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));} - {StartOfBlock} { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); } - {True} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE);} - {False} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE);} - {Null} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, new Null());} - {Undefined} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, new Undefined());} - - {Register} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); } - {Constant} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); } - - {Identifier} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); } - -} - - { - \" { - yybegin(PARAMETERS); - // length also includes the trailing quote - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); - } - - {StringCharacter}+ { string.append(yytext()); } - - /* escape sequences */ - "\\b" { string.append('\b'); } - "\\t" { string.append('\t'); } - "\\n" { string.append('\n'); } - "\\f" { string.append('\f'); } - "\\r" { string.append('\r'); } - "\\\"" { string.append('\"'); } - "\\'" { string.append('\''); } - "\\\\" { string.append('\\'); } - \\x{HexDigit}{2} { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); } - \\u{HexDigit}{4} { char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); } - - /* error cases */ - \\. { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - {LineTerminator} { throw new ActionParseException("Unterminated string at end of line", yyline + 1); } - -} - -/* error fallback */ -[^] { } -<> { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); } +/* + * Copyright (C) 2010-2015 JPEXS, All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. + */ +/* Flash assembler language lexer specification */ +package com.jpexs.decompiler.flash.action.parser.pcode; + +import com.jpexs.decompiler.flash.action.parser.ActionParseException; +import com.jpexs.decompiler.flash.action.swf4.ConstantIndex; +import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; +import com.jpexs.decompiler.flash.ecma.Null; +import com.jpexs.decompiler.flash.ecma.Undefined; + +%% + +%public +%class FlasmLexer +%final +%unicode +%char +%line +%column +%type ASMParsedSymbol +%throws ActionParseException + +%{ + + StringBuilder string = new StringBuilder(); + + /** + * Create an empty lexer, yyrset will be called later to reset and assign + * the reader + */ + public FlasmLexer() { + + } + + public int yychar() { + return yychar; + } + + public int yyline() { + return yyline + 1; + } + +%} + +/* main character classes */ +LineTerminator = \r|\n|\r\n + +InputCharacter = [^\r\n] +Comment = ";" {InputCharacter}* + +WhiteSpace = [ \t\f]+ + + +/* identifiers */ + +Identifier = [:jletter:][:jletterdigit:]* + +InstructionName = [a-zA-Z][a-zA-Z0-9_]* + +Label = {Identifier}: + +StartOfBlock = "{" + +EndOfBlock = "}" + +True = "true" +False = "false" +False = "false" +Null = "null" +Undefined = "undefined" + +Infinity = -? "Infinity" + +/* integer literals */ +PositiveNumberLiteral = 0 | [1-9][0-9]* +NegativeNumberLiteral = - {PositiveNumberLiteral} + +NumberLiteral = {PositiveNumberLiteral}|{NegativeNumberLiteral} + +/* floating point literals */ +FloatLiteral = "NaN" | {Infinity} | -?(({FLit1}|{FLit2}|{FLit3}) {Exponent}?) + +FLit1 = [0-9]+ \. [0-9]* +FLit2 = \. [0-9]+ +FLit3 = [0-9]+ +Exponent = [eE] [+-]? [0-9]+ + +HexDigit = [0-9a-fA-F] + +/* string and character literals */ +StringCharacter = [^\r\n\"\\] + +Register= register{PositiveNumberLiteral} +Constant= constant{PositiveNumberLiteral} + +%state STRING,PARAMETERS + +%% + + { + + + /* whitespace */ + {WhiteSpace} { } + + {Label} { + String s=yytext(); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + } + + /* identifiers */ + {InstructionName} { yybegin(PARAMETERS); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + {EndOfBlock} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); } +} + + { + /* string literal */ + \" { + yybegin(STRING); + string.setLength(0); + } + + /* numeric literals */ + + {NumberLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); } + {FloatLiteral} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); } + {LineTerminator} {yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); } + {Comment} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1));} + {StartOfBlock} { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); } + {True} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE);} + {False} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE);} + {Null} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE);} + {Undefined} {return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE);} + + {Register} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); } + {Constant} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); } + + {Identifier} { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); } + +} + + { + \" { + yybegin(PARAMETERS); + // length also includes the trailing quote + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); + } + + {StringCharacter}+ { string.append(yytext()); } + + /* escape sequences */ + "\\b" { string.append('\b'); } + "\\t" { string.append('\t'); } + "\\n" { string.append('\n'); } + "\\f" { string.append('\f'); } + "\\r" { string.append('\r'); } + "\\\"" { string.append('\"'); } + "\\'" { string.append('\''); } + "\\\\" { string.append('\\'); } + \\x{HexDigit}{2} { char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); } + \\u{HexDigit}{4} { char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); } + + /* error cases */ + \\. { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } + {LineTerminator} { throw new ActionParseException("Unterminated string at end of line", yyline + 1); } + +} + +/* error fallback */ +[^] { } +<> { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); } diff --git a/libsrc/ffdec_lib/lexers/actionscript_script.flex b/libsrc/ffdec_lib/lexers/actionscript_script.flex index d00294b43..329bcaa30 100644 --- a/libsrc/ffdec_lib/lexers/actionscript_script.flex +++ b/libsrc/ffdec_lib/lexers/actionscript_script.flex @@ -32,7 +32,7 @@ import java.util.Stack; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; diff --git a/libsrc/ffdec_lib/lexers/text.flex b/libsrc/ffdec_lib/lexers/text.flex index 179535dda..3e2993da4 100644 --- a/libsrc/ffdec_lib/lexers/text.flex +++ b/libsrc/ffdec_lib/lexers/text.flex @@ -31,7 +31,7 @@ package com.jpexs.decompiler.flash.tags.text; %{ - StringBuffer string = null; + StringBuilder string = null; boolean finish = false; boolean parameter = false; String parameterName = null; @@ -74,22 +74,22 @@ HexDigit = [0-9a-fA-F] } } /* escape sequences */ - "\\[" { if (string == null) string = new StringBuffer(); string.append('['); } - "\\]" { if (string == null) string = new StringBuffer(); string.append(']'); } - "\\b" { if (string == null) string = new StringBuffer(); string.append('\b'); } - "\\t" { if (string == null) string = new StringBuffer(); string.append('\t'); } - "\\n" { if (string == null) string = new StringBuffer(); string.append('\n'); } - "\\f" { if (string == null) string = new StringBuffer(); string.append('\f'); } - "\\r" { if (string == null) string = new StringBuffer(); string.append('\r'); } - "\\\"" { if (string == null) string = new StringBuffer(); string.append('\"'); } - "\\'" { if (string == null) string = new StringBuffer(); string.append('\''); } - "\\\\" { if (string == null) string = new StringBuffer(); string.append('\\'); } + "\\[" { if (string == null) string = new StringBuilder(); string.append('['); } + "\\]" { if (string == null) string = new StringBuilder(); string.append(']'); } + "\\b" { if (string == null) string = new StringBuilder(); string.append('\b'); } + "\\t" { if (string == null) string = new StringBuilder(); string.append('\t'); } + "\\n" { if (string == null) string = new StringBuilder(); string.append('\n'); } + "\\f" { if (string == null) string = new StringBuilder(); string.append('\f'); } + "\\r" { if (string == null) string = new StringBuilder(); string.append('\r'); } + "\\\"" { if (string == null) string = new StringBuilder(); string.append('\"'); } + "\\'" { if (string == null) string = new StringBuilder(); string.append('\''); } + "\\\\" { if (string == null) string = new StringBuilder(); string.append('\\'); } \\x{HexDigit}{HexDigit} { char val = (char) Integer.parseInt(yytext().substring(2), 16); string.append(val); } /* error cases */ \\. { throw new TextParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - . { if (string == null) string = new StringBuffer(); string.append(yytext()); } + . { if (string == null) string = new StringBuilder(); string.append(yytext()); } <> { if (finish) {return null;} else {finish=true; return new ParsedSymbol(SymbolType.TEXT, string == null ? null : string.toString());}} } @@ -118,5 +118,5 @@ HexDigit = [0-9a-fA-F] } /* error fallback */ -[^] { if (!parameter) { if (string == null) string = new StringBuffer(); string.append(yytext()); } } +[^] { if (!parameter) { if (string == null) string = new StringBuilder(); string.append(yytext()); } } <> { return null; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index b9e4cd4fb..291d2232c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -1788,7 +1788,7 @@ public final class SWF implements SWFContainerItem, Timelined { // for..in return if (((ins instanceof ActionEquals) || (ins instanceof ActionEquals2)) && (stack.size() == 1) && (stack.peek() instanceof DirectValueActionItem)) { - stack.push(new DirectValueActionItem(null, 0, new Null(), new ArrayList<>())); + stack.push(new DirectValueActionItem(null, 0, Null.INSTANCE, new ArrayList<>())); } if (ins instanceof ActionConstantPool) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorSimple.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorSimple.java index 8481d5180..21754601f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorSimple.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/deobfuscation/AVM2DeobfuscatorSimple.java @@ -154,9 +154,9 @@ public class AVM2DeobfuscatorSimple implements SWFDecompilerListener { } else if (graphTargetItem instanceof FalseItem) { return makePush(Boolean.FALSE, cpool); } else if (graphTargetItem instanceof NullAVM2Item) { - return makePush(new Null(), cpool); + return makePush(Null.INSTANCE, cpool); } else if (graphTargetItem instanceof UndefinedAVM2Item) { - return makePush(new Undefined(), cpool); + return makePush(Undefined.INSTANCE, cpool); } else { return null; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java index fcae92833..da8502bcb 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/CoerceAVM2Item.java @@ -77,7 +77,7 @@ public class CoerceAVM2Item extends AVM2Item { return ret; } if (ret instanceof Undefined) { - return new Null(); + return Null.INSTANCE; } return ret.toString(); case "*": diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java index df2c1be06..9af56a447 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/NullAVM2Item.java @@ -49,7 +49,7 @@ public class NullAVM2Item extends AVM2Item { @Override public Object getResult() { - return new Null(); + return Null.INSTANCE; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java index 9c7e01331..2f77f9998 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/model/UndefinedAVM2Item.java @@ -49,7 +49,7 @@ public class UndefinedAVM2Item extends AVM2Item { @Override public Object getResult() { - return new Undefined(); + return Undefined.INSTANCE; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java index dc86e8164..382825853 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/pcode/Flasm3Lexer.java @@ -24,8 +24,9 @@ import java.util.Stack; /** * This class is a scanner generated by - * JFlex 1.6.0 from the specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex + * JFlex 1.6.0 + * from the specification file + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript3_pcode.flex */ public final class Flasm3Lexer { @@ -50,8 +51,9 @@ public final class Flasm3Lexer { /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer */ private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1, 2, 2 @@ -2579,8 +2581,8 @@ public final class Flasm3Lexer { private int zzLexicalState = YYINITIAL; /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string + * this buffer contains the current text to be matched and is + * the source of the yytext() string */ private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; @@ -2600,8 +2602,8 @@ public final class Flasm3Lexer { private int zzStartRead; /** - * endRead marks the last character in the buffer, that has been read from - * input + * endRead marks the last character in the buffer, that has been read + * from input */ private int zzEndRead; @@ -2637,15 +2639,15 @@ public final class Flasm3Lexer { private boolean zzEOFDone; /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. */ private int zzFinalHighSurrogate = 0; /* user code: */ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname = false; @@ -2780,8 +2782,6 @@ public final class Flasm3Lexer { /** * Closes the input stream. - * - * @throws java.io.IOException */ public final void yyclose() throws java.io.IOException { zzAtEOF = true; /* indicate end of file */ @@ -2794,12 +2794,12 @@ public final class Flasm3Lexer { } /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. + * Resets the scanner to read from a new input stream. + * Does not close the old reader. * * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. * * Internal scan buffer is resized down to its initial length, if it has * grown. @@ -2823,8 +2823,6 @@ public final class Flasm3Lexer { /** * Returns the current lexical state. - * - * @return */ public final int yystate() { return zzLexicalState; @@ -2841,20 +2839,19 @@ public final class Flasm3Lexer { /** * Returns the text matched by the current regular expression. - * - * @return */ public final String yytext() { return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); } /** - * Returns the character at position pos from the matched text. + * Returns the character at position pos from the + * matched text. * * It is equivalent to yytext().charAt(pos), but faster * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. * * @return the character at position pos */ @@ -2864,8 +2861,6 @@ public final class Flasm3Lexer { /** * Returns the length of the matched text region. - * - * @return */ public final int yylength() { return zzMarkedPos - zzStartRead; @@ -2874,13 +2869,14 @@ public final class Flasm3Lexer { /** * Reports an error that occured while scanning. * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. + * Usual syntax/scanner level error handling should be done + * in error fallback rules. * * @param errorCode the code of the errormessage to display */ @@ -2900,8 +2896,8 @@ public final class Flasm3Lexer { * * They will be read again by then next call of the scanning method * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! */ public void yypushback(int number) { if (number > yylength()) { @@ -2912,12 +2908,11 @@ public final class Flasm3Lexer { } /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. * * @return the next token * @exception java.io.IOException if any I/O-Error occurs - * @throws com.jpexs.decompiler.flash.abc.avm2.parser.AVM2ParseException */ public ParsedSymbol yylex() throws java.io.IOException, AVM2ParseException { int zzInput; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java index 645a9916e..219837ed2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/parser/script/ActionScriptLexer.java @@ -28,7 +28,7 @@ import java.util.Stack; * This class is a scanner generated by * JFlex 1.6.0 * from the specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_script.flex + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript3_script.flex */ public final class ActionScriptLexer { @@ -262,32 +262,32 @@ public final class ActionScriptLexer { + "\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\0" + "\1\77\1\63\1\100\1\0\2\100\7\6\1\101\1\102" - + "\2\6\1\103\16\6\1\104\1\105\1\106\4\6\1\107" - + "\13\6\1\110\1\111\1\112\1\113\1\114\1\115\1\116" - + "\1\117\1\120\1\116\1\121\1\122\1\123\1\124\1\125" - + "\1\126\1\116\1\127\1\0\1\130\1\0\1\131\1\0" - + "\1\132\1\133\1\0\1\134\4\0\1\135\2\0\1\136" - + "\4\137\2\3\2\0\1\140\1\141\1\142\1\143\1\144" - + "\1\0\1\63\1\145\2\146\1\100\1\6\1\147\13\6" - + "\1\150\4\6\1\151\4\6\1\152\6\6\1\153\12\6" - + "\1\154\1\6\1\155\1\6\1\156\3\0\1\134\1\157" - + "\1\160\1\0\1\161\2\0\1\162\1\163\1\164\1\0" - + "\1\165\1\146\1\100\4\6\1\166\1\167\2\6\1\170" - + "\12\6\1\171\1\172\1\6\1\173\11\6\1\174\5\6" - + "\1\175\1\6\1\176\2\0\1\177\1\200\1\0\1\146" - + "\1\100\1\201\1\202\2\6\1\203\1\6\1\204\1\205" - + "\1\6\1\206\1\6\1\207\4\6\1\210\11\6\1\211" - + "\5\6\1\0\1\146\1\100\3\6\1\212\1\6\1\213" - + "\1\214\1\6\1\215\1\6\1\216\3\6\1\217\3\6" - + "\1\220\4\6\1\221\1\6\1\0\1\146\1\100\1\222" - + "\1\6\1\223\10\6\1\224\1\225\1\6\1\226\1\227" - + "\1\6\1\0\1\146\1\100\1\230\1\231\1\232\3\6" - + "\1\233\3\6\1\234\1\0\1\146\1\100\1\235\1\6" - + "\1\236\1\6\1\237\1\240\1\241\1\146\1\100\1\242" - + "\1\243\6\100"; + + "\1\0\2\6\1\103\16\6\1\104\1\105\1\106\4\6" + + "\1\107\13\6\1\110\1\111\1\112\1\113\1\114\1\115" + + "\1\116\1\117\1\120\1\116\1\121\1\122\1\123\1\124" + + "\1\125\1\126\1\116\1\127\1\0\1\130\1\0\1\131" + + "\1\0\1\132\1\133\1\0\1\134\4\0\1\135\2\0" + + "\1\136\4\137\2\3\2\0\1\140\1\141\1\142\1\143" + + "\1\144\1\0\1\63\1\145\2\146\1\100\1\6\1\147" + + "\5\6\1\150\6\6\1\151\4\6\1\152\4\6\1\153" + + "\6\6\1\154\12\6\1\155\1\6\1\156\1\6\1\157" + + "\3\0\1\134\1\160\1\161\1\0\1\162\2\0\1\163" + + "\1\164\1\165\1\0\1\166\1\146\1\100\4\6\1\167" + + "\1\170\2\6\1\171\12\6\1\172\1\173\1\6\1\174" + + "\11\6\1\175\5\6\1\176\1\6\1\177\2\0\1\200" + + "\1\201\1\0\1\146\1\100\1\202\1\203\2\6\1\204" + + "\1\6\1\205\1\206\1\6\1\207\1\6\1\210\4\6" + + "\1\211\11\6\1\212\5\6\1\0\1\146\1\100\3\6" + + "\1\213\1\6\1\214\1\215\1\6\1\216\1\6\1\217" + + "\3\6\1\220\3\6\1\221\4\6\1\222\1\6\1\0" + + "\1\146\1\100\1\223\1\6\1\224\10\6\1\225\1\226" + + "\1\6\1\227\1\230\1\6\1\0\1\146\1\100\1\231" + + "\1\232\1\233\3\6\1\234\3\6\1\235\1\0\1\146" + + "\1\100\1\236\1\6\1\237\1\6\1\240\1\241\1\242" + + "\1\146\1\100\1\243\1\244\6\100"; private static int[] zzUnpackAction() { - int[] result = new int[446]; + int[] result = new int[448]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -319,61 +319,61 @@ public final class ActionScriptLexer { + "\0\u0260\0\u02ac\0\u02f8\0\u0344\0\u0390\0\u0344\0\u03dc\0\u0428" + "\0\u0474\0\u04c0\0\u050c\0\u0558\0\u05a4\0\u05f0\0\u063c\0\u0688" + "\0\u06d4\0\u0344\0\u0344\0\u0344\0\u0720\0\u0344\0\u0344\0\u076c" - + "\0\u07b8\0\u0804\0\u0850\0\u0344\0\u089c\0\u08e8\0\u0934\0\u0980" - + "\0\u09cc\0\u0a18\0\u0a64\0\u0ab0\0\u0afc\0\u0b48\0\u0b94\0\u0be0" - + "\0\u0c2c\0\u0c78\0\u0cc4\0\u0d10\0\u0d5c\0\u0344\0\u0344\0\u0344" - + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0da8\0\u0df4\0\u0e40\0\u0e8c" - + "\0\u0344\0\u0ed8\0\u0f24\0\u0344\0\u0344\0\u0f70\0\u0fbc\0\u1008" - + "\0\u0344\0\u1054\0\u0344\0\u10a0\0\u10ec\0\u1138\0\u0344\0\u0344" - + "\0\u1184\0\u0344\0\u11d0\0\u121c\0\u0344\0\u1268\0\u0344\0\u0344" - + "\0\u12b4\0\u1300\0\u0344\0\u134c\0\u1398\0\u0344\0\u13e4\0\u1430" - + "\0\u0344\0\u147c\0\u14c8\0\u0344\0\u0344\0\u1514\0\u0344\0\u1560" - + "\0\u0344\0\u15ac\0\u15f8\0\u0344\0\u0344\0\u1644\0\u0344\0\u0344" - + "\0\u1690\0\u0344\0\u0344\0\u16dc\0\u1728\0\u1774\0\u17c0\0\u180c" - + "\0\u1858\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c" - + "\0\u1ab8\0\u0344\0\u0344\0\u1b04\0\u1b50\0\u04c0\0\u1b9c\0\u1be8" - + "\0\u1c34\0\u1c80\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48" - + "\0\u1e94\0\u1ee0\0\u1f2c\0\u1f78\0\u04c0\0\u04c0\0\u1fc4\0\u2010" - + "\0\u205c\0\u20a8\0\u20f4\0\u04c0\0\u2140\0\u218c\0\u21d8\0\u2224" - + "\0\u2270\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u0344" + + "\0\u07b8\0\u0804\0\u0850\0\u089c\0\u08e8\0\u0934\0\u0980\0\u09cc" + + "\0\u0a18\0\u0a64\0\u0ab0\0\u0afc\0\u0b48\0\u0b94\0\u0be0\0\u0c2c" + + "\0\u0c78\0\u0cc4\0\u0d10\0\u0d5c\0\u0da8\0\u0344\0\u0344\0\u0344" + + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0df4\0\u0e40\0\u0e8c\0\u0ed8" + + "\0\u0344\0\u0f24\0\u0f70\0\u0344\0\u0344\0\u0fbc\0\u1008\0\u1054" + + "\0\u0344\0\u10a0\0\u0344\0\u10ec\0\u1138\0\u1184\0\u0344\0\u0344" + + "\0\u11d0\0\u0344\0\u121c\0\u1268\0\u0344\0\u12b4\0\u0344\0\u0344" + + "\0\u1300\0\u134c\0\u0344\0\u1398\0\u13e4\0\u0344\0\u1430\0\u147c" + + "\0\u0344\0\u14c8\0\u1514\0\u0344\0\u0344\0\u1560\0\u0344\0\u15ac" + + "\0\u0344\0\u15f8\0\u1644\0\u0344\0\u0344\0\u1690\0\u0344\0\u0344" + + "\0\u16dc\0\u0344\0\u0344\0\u1728\0\u1774\0\u17c0\0\u180c\0\u1858" + + "\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c\0\u1ab8" + + "\0\u1b04\0\u0344\0\u0344\0\u1b50\0\u1b9c\0\u1be8\0\u04c0\0\u1c34" + + "\0\u1c80\0\u1ccc\0\u1d18\0\u1d64\0\u1db0\0\u1dfc\0\u1e48\0\u1e94" + + "\0\u1ee0\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u04c0\0\u04c0\0\u205c" + + "\0\u20a8\0\u20f4\0\u2140\0\u218c\0\u04c0\0\u21d8\0\u2224\0\u2270" + + "\0\u22bc\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u2484\0\u24d0" + "\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344" - + "\0\u2484\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u24d0" - + "\0\u0344\0\u1138\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344\0\u0344" - + "\0\u1268\0\u251c\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4" - + "\0\u2730\0\u0344\0\u0344\0\u2484\0\u24d0\0\u277c\0\u27c8\0\u0344" - + "\0\u2814\0\u2860\0\u0344\0\u0344\0\u0344\0\u28ac\0\u0344\0\u28f8" - + "\0\u28f8\0\u0344\0\u2944\0\u180c\0\u2990\0\u29dc\0\u04c0\0\u2a28" - + "\0\u2a74\0\u2ac0\0\u2b0c\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88" - + "\0\u2cd4\0\u2d20\0\u04c0\0\u2d6c\0\u2db8\0\u2e04\0\u2e50\0\u04c0" - + "\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u04c0\0\u2fcc\0\u3018\0\u3064" - + "\0\u30b0\0\u30fc\0\u3148\0\u04c0\0\u3194\0\u31e0\0\u322c\0\u3278" - + "\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u04c0\0\u348c" - + "\0\u04c0\0\u34d8\0\u04c0\0\u3524\0\u3570\0\u251c\0\u0344\0\u0344" - + "\0\u0344\0\u35bc\0\u0344\0\u3608\0\u3654\0\u36a0\0\u0344\0\u0344" - + "\0\u36ec\0\u0344\0\u3738\0\u3784\0\u37d0\0\u381c\0\u3868\0\u38b4" - + "\0\u04c0\0\u04c0\0\u3900\0\u394c\0\u04c0\0\u3998\0\u39e4\0\u3a30" - + "\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44\0\u04c0" - + "\0\u04c0\0\u3c90\0\u04c0\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c" - + "\0\u3e58\0\u3ea4\0\u3ef0\0\u3f3c\0\u04c0\0\u3f88\0\u3fd4\0\u4020" - + "\0\u406c\0\u40b8\0\u04c0\0\u4104\0\u0344\0\u2484\0\u4150\0\u0344" - + "\0\u0344\0\u419c\0\u41e8\0\u4234\0\u04c0\0\u4280\0\u42cc\0\u4318" - + "\0\u04c0\0\u4364\0\u04c0\0\u04c0\0\u43b0\0\u04c0\0\u43fc\0\u04c0" - + "\0\u4448\0\u4494\0\u44e0\0\u452c\0\u04c0\0\u4578\0\u45c4\0\u4610" - + "\0\u465c\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u04c0\0\u4824" - + "\0\u4870\0\u48bc\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84" - + "\0\u4ad0\0\u4b1c\0\u04c0\0\u4b68\0\u04c0\0\u04c0\0\u4bb4\0\u04c0" - + "\0\u4c00\0\u04c0\0\u4c4c\0\u4c98\0\u4ce4\0\u04c0\0\u4d30\0\u4d7c" - + "\0\u4dc8\0\u04c0\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u04c0\0\u4f44" - + "\0\u4f90\0\u4fdc\0\u5028\0\u04c0\0\u5074\0\u04c0\0\u50c0\0\u510c" - + "\0\u5158\0\u51a4\0\u51f0\0\u523c\0\u5288\0\u52d4\0\u04c0\0\u04c0" - + "\0\u5320\0\u04c0\0\u04c0\0\u536c\0\u53b8\0\u5404\0\u5450\0\u04c0" - + "\0\u04c0\0\u04c0\0\u549c\0\u54e8\0\u5534\0\u04c0\0\u5580\0\u55cc" - + "\0\u5618\0\u04c0\0\u5664\0\u56b0\0\u56fc\0\u04c0\0\u5748\0\u04c0" - + "\0\u5794\0\u04c0\0\u04c0\0\u0344\0\u0344\0\u57e0\0\u04c0\0\u04c0" - + "\0\u582c\0\u5878\0\u58c4\0\u5910\0\u595c\0\u1774"; + + "\0\u0344\0\u251c\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344\0\u0344" + + "\0\u2568\0\u0344\0\u1184\0\u0344\0\u11d0\0\u0344\0\u121c\0\u0344" + + "\0\u0344\0\u12b4\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4\0\u2730" + + "\0\u277c\0\u27c8\0\u0344\0\u0344\0\u251c\0\u2568\0\u2814\0\u2860" + + "\0\u0344\0\u28ac\0\u28f8\0\u0344\0\u0344\0\u0344\0\u2944\0\u0344" + + "\0\u2990\0\u2990\0\u0344\0\u29dc\0\u1858\0\u2a28\0\u2a74\0\u04c0" + + "\0\u2ac0\0\u2b0c\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88\0\u2cd4" + + "\0\u2d20\0\u2d6c\0\u2db8\0\u2e04\0\u04c0\0\u2e50\0\u2e9c\0\u2ee8" + + "\0\u2f34\0\u04c0\0\u2f80\0\u2fcc\0\u3018\0\u3064\0\u04c0\0\u30b0" + + "\0\u30fc\0\u3148\0\u3194\0\u31e0\0\u322c\0\u04c0\0\u3278\0\u32c4" + + "\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u348c\0\u34d8\0\u3524" + + "\0\u04c0\0\u3570\0\u04c0\0\u35bc\0\u04c0\0\u3608\0\u3654\0\u25b4" + + "\0\u0344\0\u0344\0\u0344\0\u36a0\0\u0344\0\u36ec\0\u3738\0\u3784" + + "\0\u0344\0\u0344\0\u37d0\0\u0344\0\u381c\0\u3868\0\u38b4\0\u3900" + + "\0\u394c\0\u3998\0\u04c0\0\u04c0\0\u39e4\0\u3a30\0\u04c0\0\u3a7c" + + "\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44\0\u3c90\0\u3cdc" + + "\0\u3d28\0\u04c0\0\u04c0\0\u3d74\0\u04c0\0\u3dc0\0\u3e0c\0\u3e58" + + "\0\u3ea4\0\u3ef0\0\u3f3c\0\u3f88\0\u3fd4\0\u4020\0\u04c0\0\u406c" + + "\0\u40b8\0\u4104\0\u4150\0\u419c\0\u04c0\0\u41e8\0\u0344\0\u251c" + + "\0\u4234\0\u0344\0\u0344\0\u4280\0\u42cc\0\u4318\0\u04c0\0\u4364" + + "\0\u43b0\0\u43fc\0\u04c0\0\u4448\0\u04c0\0\u04c0\0\u4494\0\u04c0" + + "\0\u44e0\0\u04c0\0\u452c\0\u4578\0\u45c4\0\u4610\0\u04c0\0\u465c" + + "\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u4824\0\u4870\0\u48bc" + + "\0\u04c0\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84\0\u4ad0" + + "\0\u4b1c\0\u4b68\0\u4bb4\0\u4c00\0\u04c0\0\u4c4c\0\u04c0\0\u04c0" + + "\0\u4c98\0\u04c0\0\u4ce4\0\u04c0\0\u4d30\0\u4d7c\0\u4dc8\0\u04c0" + + "\0\u4e14\0\u4e60\0\u4eac\0\u04c0\0\u4ef8\0\u4f44\0\u4f90\0\u4fdc" + + "\0\u04c0\0\u5028\0\u5074\0\u50c0\0\u510c\0\u04c0\0\u5158\0\u04c0" + + "\0\u51a4\0\u51f0\0\u523c\0\u5288\0\u52d4\0\u5320\0\u536c\0\u53b8" + + "\0\u04c0\0\u04c0\0\u5404\0\u04c0\0\u04c0\0\u5450\0\u549c\0\u54e8" + + "\0\u5534\0\u04c0\0\u04c0\0\u04c0\0\u5580\0\u55cc\0\u5618\0\u04c0" + + "\0\u5664\0\u56b0\0\u56fc\0\u04c0\0\u5748\0\u5794\0\u57e0\0\u04c0" + + "\0\u582c\0\u04c0\0\u5878\0\u04c0\0\u04c0\0\u0344\0\u0344\0\u58c4" + + "\0\u04c0\0\u04c0\0\u5910\0\u595c\0\u59a8\0\u59f4\0\u5a40\0\u17c0"; private static int[] zzUnpackRowMap() { - int[] result = new int[446]; + int[] result = new int[448]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -434,423 +434,427 @@ public final class ActionScriptLexer { + "\1\174\2\22\1\175\1\176\13\22\14\0\1\22\7\0" + "\3\22\7\0\2\22\3\0\4\22\4\0\1\22\1\177" + "\6\22\3\0\2\22\1\200\11\22\1\201\11\22\14\0" - + "\1\22\33\0\1\202\12\0\1\203\54\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\204" - + "\24\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\7\22\1\205\3\0\26\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\5\22\1\206\20\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" - + "\1\207\3\22\1\210\5\22\1\211\11\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" - + "\1\212\3\0\10\22\1\213\1\22\1\214\2\22\1\215" - + "\10\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\22\22\1\216\3\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\7\22\1\217\3\0\2\22\1\220\7\22\1\221\13\22" + + "\1\22\33\0\1\202\12\0\1\203\115\0\1\204\52\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\1\22\1\205\24\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\206\3\0\26\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\1\22\1\222\14\22\1\223\1\22" - + "\1\224\5\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\3\22\1\225\4\22\3\0\5\22" - + "\1\226\1\22\1\227\11\22\1\230\4\22\14\0\1\22" + + "\4\0\10\22\3\0\5\22\1\207\20\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\5\22\1\231\1\22\1\232\16\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" - + "\1\233\3\0\6\22\1\234\11\22\1\235\5\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\11\22\1\236\4\22\1\237\7\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\1\22\1\240\1\241\7\22\1\242\13\22" + + "\3\0\2\22\1\210\3\22\1\211\5\22\1\212\11\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\2\22\1\243\3\22\1\244\17\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\7\22\1\245\3\0\26\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\7\22\1\246\16\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\247" - + "\23\22\14\0\1\22\33\0\1\250\52\0\1\251\40\0" - + "\1\252\53\0\1\253\37\0\1\254\113\0\1\255\61\0" - + "\1\102\2\0\30\102\1\0\12\102\1\0\45\102\2\0" - + "\1\104\111\0\1\256\3\0\27\256\1\257\1\260\1\256" - + "\1\261\1\256\1\262\5\256\1\263\1\256\1\264\1\265" - + "\5\256\1\266\1\267\1\256\1\270\30\256\1\0\1\107" - + "\2\0\31\107\1\0\11\107\1\0\45\107\2\0\1\111" - + "\113\0\1\113\114\0\1\114\7\0\1\114\116\0\1\271" - + "\105\0\2\272\3\0\1\272\1\0\4\272\2\0\4\272" - + "\1\0\1\273\2\0\10\272\3\0\26\272\16\0\1\274" - + "\2\0\30\274\1\275\60\274\10\0\2\276\3\0\1\276" - + "\1\0\4\276\2\0\4\276\1\0\1\277\2\0\10\276" - + "\3\0\26\276\34\0\1\300\75\0\1\301\2\0\30\301" - + "\1\302\1\303\57\301\31\0\1\304\64\0\1\133\126\0" - + "\1\305\102\0\1\306\3\0\1\307\3\0\1\310\2\0" - + "\2\307\2\0\1\311\1\0\4\307\5\0\3\307\2\0" - + "\2\307\3\0\26\307\2\0\1\312\13\0\1\137\2\0" - + "\43\137\2\0\44\137\1\313\3\0\32\313\1\314\1\313" - + "\1\262\5\313\1\263\1\313\1\264\1\265\5\313\1\266" - + "\1\267\1\313\1\315\27\313\1\316\1\0\1\142\1\317" - + "\1\320\111\142\5\321\1\322\106\321\11\0\1\323\123\0" - + "\1\150\13\0\1\150\3\0\2\150\2\164\57\0\2\152" - + "\3\0\1\152\1\0\4\152\2\0\4\152\4\0\10\152" - + "\3\0\26\152\50\0\1\324\113\0\1\325\77\0\1\326" - + "\13\0\1\327\76\0\1\330\3\0\1\331\13\0\1\331" - + "\3\0\2\331\2\0\1\330\100\0\1\332\72\0\1\150" - + "\7\0\1\166\13\0\1\166\3\0\2\166\2\164\60\0" - + "\1\150\7\0\1\166\13\0\1\167\3\0\1\171\1\172" - + "\2\164\67\0\2\333\3\0\3\333\5\0\1\334\2\0" - + "\5\333\3\0\1\333\1\0\1\333\1\0\1\333\6\0" - + "\1\333\41\0\1\150\7\0\1\166\13\0\1\172\3\0" - + "\2\172\2\164\60\0\1\150\7\0\1\166\13\0\1\335" - + "\3\0\2\335\2\164\55\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\14\22\1\336\11\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\1\22\1\337\24\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\7\22\1\340\16\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\341" - + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\10\22\1\342\15\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\4\22\1\343\21\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\5\22\1\344\20\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\7\22\1\345\3\0\26\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\10\22\1\346\15\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\5\22\1\347\2\22\1\350\15\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\7\22\1\351\16\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" - + "\1\352\23\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\10\22\1\353\15\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\2\22\1\354\23\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\17\22\1\355\6\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22" - + "\1\356\14\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\7\22\1\357\3\0\26\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\15\22\1\360\10\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\10\22\1\361\10\22\1\362\4\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\14\22\1\363\11\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\12\22\1\364" - + "\5\22\1\365\5\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\366" - + "\7\22\1\367\14\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\17\22\1\370" - + "\6\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\5\22\1\371\2\22\1\372" - + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\17\22\1\373\6\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\7\22\1\374\3\0\26\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22" - + "\1\375\12\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\3\22\1\376\4\22\3\0\14\22" - + "\1\377\11\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\7\22\1\u0100\16\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\10\22\1\u0101\15\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\11\22\1\u0102\14\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22" - + "\1\u0103\2\22\1\u0104\14\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22" - + "\1\u0105\21\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\1\u0106\25\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\1\22\1\u0107\24\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\11\22\1\u0108\14\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u0109" - + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\3\22\1\u010a\4\22\3\0\26\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\25\22\1\u010b\14\0\1\22\21\0\2\u010c" - + "\3\0\3\u010c\5\0\1\u010c\2\0\5\u010c\3\0\1\u010c" - + "\1\0\1\u010c\1\0\1\u010c\6\0\1\u010c\50\0\2\u010d" - + "\3\0\3\u010d\5\0\1\u010d\2\0\5\u010d\3\0\1\u010d" - + "\1\0\1\u010d\1\0\1\u010d\6\0\1\u010d\30\0\1\u010e" - + "\2\0\30\u010e\1\302\1\0\57\u010e\1\303\2\0\30\303" - + "\1\u010f\60\303\16\0\1\u0110\113\0\1\u0111\105\0\1\u0112" - + "\6\0\2\u0112\4\0\4\u0112\5\0\3\u0112\2\0\2\u0112" - + "\3\0\26\u0112\2\0\1\u0113\23\0\2\307\3\0\1\307" - + "\1\0\4\307\2\0\4\307\4\0\10\307\3\0\26\307" - + "\33\0\1\u0114\6\0\1\u0115\77\0\1\u0116\6\0\2\u0116" - + "\4\0\4\u0116\5\0\3\u0116\2\0\2\u0116\3\0\26\u0116" - + "\2\0\1\u0117\62\0\1\u0118\46\0\1\320\111\0\5\321" - + "\1\u0119\106\321\4\0\1\320\1\322\140\0\1\u011a\102\0" - + "\1\331\13\0\1\331\3\0\2\331\71\0\2\u011b\3\0" - + "\3\u011b\5\0\1\u011b\2\0\5\u011b\3\0\1\u011b\1\0" - + "\1\u011b\1\0\1\u011b\6\0\1\u011b\41\0\1\150\7\0" - + "\1\166\13\0\1\u011c\3\0\2\u011c\2\164\55\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22" - + "\1\u011d\20\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u011e\23\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\4\22\1\u011f\21\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" - + "\1\u0120\3\0\26\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0121" - + "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\7\22\1\u0122\3\0\26\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\2\22\1\u0123\23\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\12\22" - + "\1\u0124\13\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\7\22\1\u0125\3\0\26\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\4\22\1\u0126\21\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\5\22\1\u0127\2\22\1\u0128\15\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\5\22\1\u0129\20\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u012a" - + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\7\22\1\u012b\3\0\26\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\10\22\1\u012c\15\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\1\22" - + "\1\u012d\24\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\11\22\1\u012e\14\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\7\22\1\u012f\3\0\26\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\14\22\1\u0130\11\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\7\22\1\u0131\3\0\26\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\6\22\1\u0132\17\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\5\22\1\u0133\20\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0134\3\0" - + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\10\22\1\u0135\15\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\7\22\1\u0136\3\0\26\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22" - + "\1\u0137\5\22\1\u0138\11\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0139\3\0" - + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\2\22\1\u013a\23\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\7\22\1\u013b\3\0\26\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" - + "\1\u013c\23\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\16\22\1\u013d\7\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\14\22\1\u013e\11\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\10\22\1\u013f\15\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\22\22" - + "\1\u0140\3\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\3\22\1\u0141\22\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\14\22\1\u0142\11\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\13\22\1\u0143\12\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\11\22" - + "\1\u0144\14\22\14\0\1\22\21\0\2\u0145\3\0\3\u0145" - + "\5\0\1\u0145\2\0\5\u0145\3\0\1\u0145\1\0\1\u0145" - + "\1\0\1\u0145\6\0\1\u0145\50\0\2\u0146\3\0\3\u0146" - + "\5\0\1\u0146\2\0\5\u0146\3\0\1\u0146\1\0\1\u0146" - + "\1\0\1\u0146\6\0\1\u0146\31\0\2\u0147\5\0\2\u0112" - + "\1\0\1\u0147\1\0\1\u0112\1\u0148\4\u0112\2\0\4\u0112" - + "\4\0\10\u0112\3\0\26\u0112\33\0\1\u0149\123\0\1\u014a" - + "\76\0\2\u0116\3\0\1\u0116\1\0\4\u0116\2\0\4\u0116" - + "\4\0\10\u0116\3\0\26\u0116\16\0\4\321\1\320\1\u0119" - + "\106\321\20\0\2\u014b\3\0\3\u014b\5\0\1\u014b\2\0" - + "\5\u014b\3\0\1\u014b\1\0\1\u014b\1\0\1\u014b\6\0" - + "\1\u014b\41\0\1\150\7\0\1\166\13\0\1\u014c\3\0" - + "\2\u014c\2\164\55\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\7\22\1\u014d\3\0\26\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\14\22\1\u014e\11\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u014f" - + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\7\22\1\u0150\16\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\3\22\1\u0151\22\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\1\22\1\u0152\24\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\16\22\1\u0153" - + "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\10\22\1\u0154\15\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\11\22\1\u0155\14\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\5\22\1\u0156\20\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0157" - + "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\1\22\1\u0158\24\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\4\22\1\u0159\21\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\1\22\1\u015a\24\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\22\22\1\u015b" + + "\4\0\7\22\1\213\3\0\10\22\1\214\1\22\1\215" + + "\2\22\1\216\10\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\22\22\1\217" + "\3\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\5\22\1\u015c\20\22\14\0" + + "\4\22\4\0\7\22\1\220\3\0\2\22\1\221\7\22" + + "\1\222\13\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\1\22\1\223\14\22" + + "\1\224\1\22\1\225\5\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\3\22\1\226\4\22" + + "\3\0\5\22\1\227\1\22\1\230\11\22\1\231\4\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\5\22\1\232\1\22\1\233\16\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\234\3\0\6\22\1\235\11\22\1\236" + + "\5\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\11\22\1\237\4\22\1\240" + + "\7\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\1\22\1\241\1\242\7\22" + + "\1\243\13\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\244\3\22" + + "\1\245\17\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\246\3\0\26\22\14\0" + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\15\22\1\u015d\10\22\14\0\1\22\7\0" + + "\10\22\3\0\7\22\1\247\16\22\14\0\1\22\7\0" + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\6\22\1\u015e\17\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\2\22\1\u015f" - + "\23\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\1\22\1\u0160\24\22\14\0" + + "\2\22\1\250\23\22\14\0\1\22\33\0\1\251\52\0" + + "\1\252\40\0\1\253\53\0\1\254\37\0\1\255\113\0" + + "\1\256\61\0\1\102\2\0\30\102\1\0\12\102\1\0" + + "\45\102\2\0\1\104\111\0\1\257\3\0\27\257\1\260" + + "\1\261\1\257\1\262\1\257\1\263\5\257\1\264\1\257" + + "\1\265\1\266\5\257\1\267\1\270\1\257\1\271\30\257" + + "\1\0\1\107\2\0\31\107\1\0\11\107\1\0\45\107" + + "\2\0\1\111\113\0\1\113\114\0\1\114\7\0\1\114" + + "\116\0\1\272\105\0\2\273\3\0\1\273\1\0\4\273" + + "\2\0\4\273\1\0\1\274\2\0\10\273\3\0\26\273" + + "\16\0\1\275\2\0\30\275\1\276\60\275\10\0\2\277" + + "\3\0\1\277\1\0\4\277\2\0\4\277\1\0\1\300" + + "\2\0\10\277\3\0\26\277\34\0\1\301\75\0\1\302" + + "\2\0\30\302\1\303\1\304\57\302\31\0\1\305\64\0" + + "\1\133\126\0\1\306\102\0\1\307\3\0\1\310\3\0" + + "\1\311\2\0\2\310\2\0\1\312\1\0\4\310\5\0" + + "\3\310\2\0\2\310\3\0\26\310\2\0\1\313\13\0" + + "\1\137\2\0\43\137\2\0\44\137\1\314\3\0\32\314" + + "\1\315\1\314\1\263\5\314\1\264\1\314\1\265\1\266" + + "\5\314\1\267\1\270\1\314\1\316\27\314\1\317\1\0" + + "\1\142\1\320\1\321\111\142\5\322\1\323\106\322\11\0" + + "\1\324\123\0\1\150\13\0\1\150\3\0\2\150\2\164" + + "\57\0\2\152\3\0\1\152\1\0\4\152\2\0\4\152" + + "\4\0\10\152\3\0\26\152\50\0\1\325\113\0\1\326" + + "\77\0\1\327\13\0\1\330\76\0\1\331\3\0\1\332" + + "\13\0\1\332\3\0\2\332\2\0\1\331\100\0\1\333" + + "\72\0\1\150\7\0\1\166\13\0\1\166\3\0\2\166" + + "\2\164\60\0\1\150\7\0\1\166\13\0\1\167\3\0" + + "\1\171\1\172\2\164\67\0\2\334\3\0\3\334\5\0" + + "\1\335\2\0\5\334\3\0\1\334\1\0\1\334\1\0" + + "\1\334\6\0\1\334\41\0\1\150\7\0\1\166\13\0" + + "\1\172\3\0\2\172\2\164\60\0\1\150\7\0\1\166" + + "\13\0\1\336\3\0\2\336\2\164\55\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\14\22\1\337" + + "\11\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\1\22\1\340\24\22\14\0" + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\1\22\1\u0161\24\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0162" + + "\10\22\3\0\7\22\1\341\16\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\342\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\343" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\4\22\1\344\21\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\5\22\1\345\20\22\14\0\1\22\7\0" + + "\1\346\1\0\1\346\7\0\1\346\4\0\4\346\5\0" + + "\3\346\2\0\2\346\3\0\26\346\14\0\1\346\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\347" + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\3\22\1\u0163\4\22\3\0\26\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\350\15\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\12\22\1\u0164\13\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\10\22\1\u0165\15\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\21\22" - + "\1\u0166\4\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\7\22\1\u0167\3\0\26\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\7\22\1\u0168\3\0\26\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" - + "\1\u0169\23\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u016a\23\22" + + "\4\0\10\22\3\0\5\22\1\351\2\22\1\352\15\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\11\22\1\u016b\14\22\14\0\1\22" + + "\4\0\10\22\3\0\7\22\1\353\16\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\7\22\1\u016c\16\22\14\0\1\22\2\0\2\u0147" - + "\10\0\1\u0147\2\0\1\u0148\123\0\1\u016d\105\0\2\u016e" - + "\3\0\3\u016e\5\0\1\u016e\2\0\5\u016e\3\0\1\u016e" - + "\1\0\1\u016e\1\0\1\u016e\6\0\1\u016e\41\0\1\150" - + "\7\0\1\166\13\0\1\u016f\3\0\2\u016f\2\164\55\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\14\22\1\u0170\11\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\11\22\1\u0171" - + "\14\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\13\22\1\u0172\12\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\7\22\1\u0173\16\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\7\22\1\u0174\16\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\4\22\1\u0175" - + "\21\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\16\22\1\u0176\7\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\11\22\1\u0177\14\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0178" - + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\17\22\1\u0179\6\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\3\22\1\u017a\4\22\3\0\26\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\7\22\1\u017b\16\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\3\22\1\u017c\4\22" - + "\3\0\7\22\1\u017d\16\22\14\0\1\22\7\0\3\22" + + "\3\0\2\22\1\354\23\22\14\0\1\22\7\0\3\22" + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" - + "\1\u017e\15\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\21\22\1\u017f\4\22" + + "\1\355\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\356\23\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\11\22\1\u0180\14\22\14\0\1\22" + + "\4\0\10\22\3\0\17\22\1\357\6\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\14\22\1\u0181\11\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0182\3\0" + + "\3\0\11\22\1\360\14\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\361\3\0" + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\11\22\1\u0183\14\22\14\0" + + "\4\22\4\0\10\22\3\0\15\22\1\362\10\22\14\0" + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\4\22\1\u0184\21\22\14\0\1\22\7\0" + + "\10\22\3\0\10\22\1\363\10\22\1\364\4\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\14\22\1\365\11\22\14\0\1\22\7\0" + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\10\22\1\u0185\15\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\23\22\1\u0186" - + "\2\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\4\22\1\u0187\21\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\11\22\1\u0188\14\22\14\0\1\22\30\0" - + "\1\u0189\104\0\2\u018a\3\0\3\u018a\5\0\1\u018a\2\0" - + "\5\u018a\3\0\1\u018a\1\0\1\u018a\1\0\1\u018a\6\0" - + "\1\u018a\41\0\1\150\7\0\1\166\13\0\1\u018b\3\0" - + "\2\u018b\2\164\55\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\20\22\1\u018c\5\22\14\0\1\22" + + "\12\22\1\366\5\22\1\367\5\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\1\22\1\370\7\22\1\371\14\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\17\22\1\372\6\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\5\22\1\373" + + "\2\22\1\374\15\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\17\22\1\375" + + "\6\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\376\3\0\26\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\6\22\1\u018d\17\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22" - + "\1\u018e\20\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\12\22\1\u018f\13\22" + + "\3\0\13\22\1\377\12\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\3\22\1\u0100\4\22" + + "\3\0\14\22\1\u0101\11\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u0102\16\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\u0103\15\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\13\22\1\u0190\12\22\14\0\1\22" + + "\4\0\10\22\3\0\11\22\1\u0104\14\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\2\22\1\u0191\23\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22" - + "\1\u0192\21\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u0193\23\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\10\22\3\0\2\22\1\u0194\23\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" - + "\1\u0195\3\0\26\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0196" - + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\10\22\1\u0197\15\22\14\0" + + "\3\0\6\22\1\u0105\2\22\1\u0106\14\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\4\22\1\u0107\21\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\1\u0108" + + "\25\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\1\22\1\u0109\24\22\14\0" + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\4\22\1\u0198\21\22\14\0\1\22\7\0" + + "\10\22\3\0\11\22\1\u010a\14\22\14\0\1\22\7\0" + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\10\22\1\u0199\15\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\7\22\1\u019a\3\0\26\22" - + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\7\22\1\u019b\3\0\26\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\10\22\1\u019c\15\22\14\0\1\22\31\0\1\u019d\103\0" - + "\2\u019e\3\0\3\u019e\5\0\1\u019e\2\0\5\u019e\3\0" - + "\1\u019e\1\0\1\u019e\1\0\1\u019e\6\0\1\u019e\41\0" - + "\1\150\7\0\1\166\13\0\1\u019f\3\0\2\u019f\2\164" + + "\10\22\1\u010b\15\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\3\22\1\u010c\4\22\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\25\22\1\u010d\14\0\1\22" + + "\21\0\2\u010e\3\0\3\u010e\5\0\1\u010e\2\0\5\u010e" + + "\3\0\1\u010e\1\0\1\u010e\1\0\1\u010e\6\0\1\u010e" + + "\50\0\2\u010f\3\0\3\u010f\5\0\1\u010f\2\0\5\u010f" + + "\3\0\1\u010f\1\0\1\u010f\1\0\1\u010f\6\0\1\u010f" + + "\30\0\1\u0110\2\0\30\u0110\1\303\1\0\57\u0110\1\304" + + "\2\0\30\304\1\u0111\60\304\16\0\1\u0112\113\0\1\u0113" + + "\105\0\1\u0114\6\0\2\u0114\4\0\4\u0114\5\0\3\u0114" + + "\2\0\2\u0114\3\0\26\u0114\2\0\1\u0115\23\0\2\310" + + "\3\0\1\310\1\0\4\310\2\0\4\310\4\0\10\310" + + "\3\0\26\310\33\0\1\u0116\6\0\1\u0117\77\0\1\u0118" + + "\6\0\2\u0118\4\0\4\u0118\5\0\3\u0118\2\0\2\u0118" + + "\3\0\26\u0118\2\0\1\u0119\62\0\1\u011a\46\0\1\321" + + "\111\0\5\322\1\u011b\106\322\4\0\1\321\1\323\140\0" + + "\1\u011c\102\0\1\332\13\0\1\332\3\0\2\332\71\0" + + "\2\u011d\3\0\3\u011d\5\0\1\u011d\2\0\5\u011d\3\0" + + "\1\u011d\1\0\1\u011d\1\0\1\u011d\6\0\1\u011d\41\0" + + "\1\150\7\0\1\166\13\0\1\u011e\3\0\2\u011e\2\164" + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\7\22\1\u01a0\16\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a1\3\0" - + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\7\22\1\u01a2\3\0\26\22\14\0\1\22" - + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\4\22\1\u01a3\21\22\14\0\1\22\7\0\3\22" - + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01a4\3\0" - + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\4\22\1\u01a5\21\22\14\0" - + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" - + "\10\22\3\0\14\22\1\u01a6\11\22\14\0\1\22\7\0" - + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\7\22\1\u01a7\16\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\7\22\1\u01a8\3\0\26\22" + + "\3\0\5\22\1\u011f\20\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\u0120\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\4\22\1\u0121\21\22" + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" - + "\4\0\7\22\1\u01a9\3\0\26\22\14\0\1\22\7\0" + + "\4\0\7\22\1\u0122\3\0\26\22\14\0\1\22\7\0" + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" - + "\20\22\1\u01aa\5\22\14\0\1\22\30\0\1\u01ab\104\0" - + "\2\u01ac\3\0\3\u01ac\5\0\1\u01ac\2\0\5\u01ac\3\0" - + "\1\u01ac\1\0\1\u01ac\1\0\1\u01ac\6\0\1\u01ac\41\0" - + "\1\150\7\0\1\166\13\0\1\u01ad\3\0\2\u01ad\2\164" - + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" - + "\1\u01ae\3\0\26\22\14\0\1\22\7\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\10\22\3\0\6\22\1\u01af" - + "\17\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\7\22\1\u01b0\3\0\26\22\14\0\1\22" + + "\16\22\1\u0123\7\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u0124\3\0\26\22" + + "\14\0\1\22\7\0\3\346\7\0\2\346\3\0\4\346" + + "\4\0\10\346\3\0\26\346\14\0\1\346\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\u0125\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\12\22\1\u0126\13\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u0127\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u0128\21\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\5\22\1\u0129" + + "\2\22\1\u012a\15\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\5\22\1\u012b" + + "\20\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u012c\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u012d\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u012e\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\1\22\1\u012f\24\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\11\22\1\u0130\14\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u0131\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\14\22\1\u0132" + + "\11\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u0133\3\0\26\22\14\0\1\22" + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" - + "\3\0\10\22\1\u01b1\15\22\14\0\1\22\7\0\3\22" + + "\3\0\6\22\1\u0134\17\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\5\22" + + "\1\u0135\20\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u0136\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u0137\15\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u0138" + + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\6\22\1\u0139\5\22" + + "\1\u013a\11\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u013b\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\2\22\1\u013c\23\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u013d" + + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u013e\23\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\16\22\1\u013f\7\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\14\22\1\u0140\11\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u0141\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\22\22\1\u0142\3\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\3\22\1\u0143\22\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\14\22\1\u0144\11\22\14\0\1\22\7\0\3\22" + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\13\22" - + "\1\u01b2\12\22\14\0\1\22\7\0\3\22\7\0\2\22" - + "\3\0\4\22\4\0\10\22\3\0\13\22\1\u01b3\12\22" - + "\14\0\1\22\25\0\1\u01b4\107\0\2\u01b5\3\0\3\u01b5" - + "\5\0\1\u01b5\2\0\5\u01b5\3\0\1\u01b5\1\0\1\u01b5" - + "\1\0\1\u01b5\6\0\1\u01b5\41\0\1\150\7\0\1\166" - + "\13\0\1\u01b6\3\0\2\u01b6\2\164\55\0\3\22\7\0" - + "\2\22\3\0\4\22\4\0\3\22\1\u01b7\4\22\3\0" + + "\1\u0145\12\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\11\22\1\u0146\14\22" + + "\14\0\1\22\21\0\2\u0147\3\0\3\u0147\5\0\1\u0147" + + "\2\0\5\u0147\3\0\1\u0147\1\0\1\u0147\1\0\1\u0147" + + "\6\0\1\u0147\50\0\2\u0148\3\0\3\u0148\5\0\1\u0148" + + "\2\0\5\u0148\3\0\1\u0148\1\0\1\u0148\1\0\1\u0148" + + "\6\0\1\u0148\31\0\2\u0149\5\0\2\u0114\1\0\1\u0149" + + "\1\0\1\u0114\1\u014a\4\u0114\2\0\4\u0114\4\0\10\u0114" + + "\3\0\26\u0114\33\0\1\u014b\123\0\1\u014c\76\0\2\u0118" + + "\3\0\1\u0118\1\0\4\u0118\2\0\4\u0118\4\0\10\u0118" + + "\3\0\26\u0118\16\0\4\322\1\321\1\u011b\106\322\20\0" + + "\2\u014d\3\0\3\u014d\5\0\1\u014d\2\0\5\u014d\3\0" + + "\1\u014d\1\0\1\u014d\1\0\1\u014d\6\0\1\u014d\41\0" + + "\1\150\7\0\1\166\13\0\1\u014e\3\0\2\u014e\2\164" + + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u014f\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\14\22\1\u0150" + + "\11\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\10\22\1\u0151\15\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\7\22\1\u0152\16\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\3\22\1\u0153\22\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\u0154" + + "\24\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\16\22\1\u0155\7\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u0156\15\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u0157\14\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\5\22\1\u0158" + + "\20\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\11\22\1\u0159\14\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\u015a\24\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u015b\21\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\1\22\1\u015c" + + "\24\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\22\22\1\u015d\3\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\5\22\1\u015e\20\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\15\22\1\u015f\10\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\6\22\1\u0160" + + "\17\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\2\22\1\u0161\23\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\1\22\1\u0162\24\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\1\22\1\u0163\24\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u0164\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\3\22\1\u0165\4\22\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\12\22\1\u0166\13\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u0167\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\21\22\1\u0168\4\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\7\22\1\u0169\3\0\26\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\7\22\1\u016a" + + "\3\0\26\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\2\22\1\u016b\23\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\u016c\23\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\11\22\1\u016d\14\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u016e\16\22\14\0\1\22\2\0\2\u0149\10\0\1\u0149" + + "\2\0\1\u014a\123\0\1\u016f\105\0\2\u0170\3\0\3\u0170" + + "\5\0\1\u0170\2\0\5\u0170\3\0\1\u0170\1\0\1\u0170" + + "\1\0\1\u0170\6\0\1\u0170\41\0\1\150\7\0\1\166" + + "\13\0\1\u0171\3\0\2\u0171\2\164\55\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\14\22\1\u0172" + + "\11\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\11\22\1\u0173\14\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\13\22\1\u0174\12\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\7\22\1\u0175\16\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u0176" + + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\4\22\1\u0177\21\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\16\22\1\u0178\7\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u0179\14\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\7\22\1\u017a\3\0\26\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\17\22\1\u017b\6\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\3\22" + + "\1\u017c\4\22\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u017d\16\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\3\22\1\u017e\4\22\3\0\7\22" + + "\1\u017f\16\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\10\22\1\u0180\15\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\21\22\1\u0181\4\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\11\22\1\u0182\14\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\14\22" + + "\1\u0183\11\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u0184\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\11\22\1\u0185\14\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u0186\21\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u0187" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\23\22\1\u0188\2\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u0189\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\11\22\1\u018a\14\22\14\0\1\22\30\0\1\u018b\104\0" + + "\2\u018c\3\0\3\u018c\5\0\1\u018c\2\0\5\u018c\3\0" + + "\1\u018c\1\0\1\u018c\1\0\1\u018c\6\0\1\u018c\41\0" + + "\1\150\7\0\1\166\13\0\1\u018d\3\0\2\u018d\2\164" + + "\55\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\20\22\1\u018e\5\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\6\22" + + "\1\u018f\17\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\5\22\1\u0190\20\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\12\22\1\u0191\13\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\13\22\1\u0192\12\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\2\22" + + "\1\u0193\23\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\4\22\1\u0194\21\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\2\22\1\u0195\23\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\10\22" + + "\3\0\2\22\1\u0196\23\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u0197\3\0" + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" - + "\4\22\4\0\10\22\3\0\5\22\1\u01b8\20\22\14\0" - + "\1\22\12\0\1\150\7\0\1\166\13\0\1\u01b9\3\0" - + "\2\u01b9\2\164\60\0\1\150\7\0\1\166\13\0\1\u01ba" - + "\3\0\2\u01ba\2\164\60\0\1\150\7\0\1\166\13\0" - + "\1\u01bb\3\0\2\u01bb\2\164\60\0\1\150\7\0\1\166" - + "\13\0\1\u01bc\3\0\2\u01bc\2\164\60\0\1\150\7\0" - + "\1\166\13\0\1\u01bd\3\0\2\u01bd\2\164\60\0\1\150" - + "\7\0\1\166\13\0\1\u01be\3\0\2\u01be\2\164\47\0"; + + "\4\22\4\0\10\22\3\0\7\22\1\u0198\16\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\10\22\1\u0199\15\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\4\22\1\u019a\21\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u019b" + + "\15\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u019c\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u019d\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\10\22\1\u019e" + + "\15\22\14\0\1\22\31\0\1\u019f\103\0\2\u01a0\3\0" + + "\3\u01a0\5\0\1\u01a0\2\0\5\u01a0\3\0\1\u01a0\1\0" + + "\1\u01a0\1\0\1\u01a0\6\0\1\u01a0\41\0\1\150\7\0" + + "\1\166\13\0\1\u01a1\3\0\2\u01a1\2\164\55\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\7\22" + + "\1\u01a2\16\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u01a3\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u01a4\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\4\22" + + "\1\u01a5\21\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\7\22\1\u01a6\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\4\22\1\u01a7\21\22\14\0\1\22\7\0" + + "\3\22\7\0\2\22\3\0\4\22\4\0\10\22\3\0" + + "\14\22\1\u01a8\11\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\7\22\1\u01a9" + + "\16\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\7\22\1\u01aa\3\0\26\22\14\0\1\22" + + "\7\0\3\22\7\0\2\22\3\0\4\22\4\0\7\22" + + "\1\u01ab\3\0\26\22\14\0\1\22\7\0\3\22\7\0" + + "\2\22\3\0\4\22\4\0\10\22\3\0\20\22\1\u01ac" + + "\5\22\14\0\1\22\30\0\1\u01ad\104\0\2\u01ae\3\0" + + "\3\u01ae\5\0\1\u01ae\2\0\5\u01ae\3\0\1\u01ae\1\0" + + "\1\u01ae\1\0\1\u01ae\6\0\1\u01ae\41\0\1\150\7\0" + + "\1\166\13\0\1\u01af\3\0\2\u01af\2\164\55\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\7\22\1\u01b0\3\0" + + "\26\22\14\0\1\22\7\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\10\22\3\0\6\22\1\u01b1\17\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\7\22\1\u01b2\3\0\26\22\14\0\1\22\7\0\3\22" + + "\7\0\2\22\3\0\4\22\4\0\10\22\3\0\10\22" + + "\1\u01b3\15\22\14\0\1\22\7\0\3\22\7\0\2\22" + + "\3\0\4\22\4\0\10\22\3\0\13\22\1\u01b4\12\22" + + "\14\0\1\22\7\0\3\22\7\0\2\22\3\0\4\22" + + "\4\0\10\22\3\0\13\22\1\u01b5\12\22\14\0\1\22" + + "\25\0\1\u01b6\107\0\2\u01b7\3\0\3\u01b7\5\0\1\u01b7" + + "\2\0\5\u01b7\3\0\1\u01b7\1\0\1\u01b7\1\0\1\u01b7" + + "\6\0\1\u01b7\41\0\1\150\7\0\1\166\13\0\1\u01b8" + + "\3\0\2\u01b8\2\164\55\0\3\22\7\0\2\22\3\0" + + "\4\22\4\0\3\22\1\u01b9\4\22\3\0\26\22\14\0" + + "\1\22\7\0\3\22\7\0\2\22\3\0\4\22\4\0" + + "\10\22\3\0\5\22\1\u01ba\20\22\14\0\1\22\12\0" + + "\1\150\7\0\1\166\13\0\1\u01bb\3\0\2\u01bb\2\164" + + "\60\0\1\150\7\0\1\166\13\0\1\u01bc\3\0\2\u01bc" + + "\2\164\60\0\1\150\7\0\1\166\13\0\1\u01bd\3\0" + + "\2\u01bd\2\164\60\0\1\150\7\0\1\166\13\0\1\u01be" + + "\3\0\2\u01be\2\164\60\0\1\150\7\0\1\166\13\0" + + "\1\u01bf\3\0\2\u01bf\2\164\60\0\1\150\7\0\1\166" + + "\13\0\1\u01c0\3\0\2\u01c0\2\164\47\0"; private static int[] zzUnpackTrans() { - int[] result = new int[22952]; + int[] result = new int[23180]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -895,22 +899,21 @@ public final class ActionScriptLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\13\0\1\11\1\1\1\11\13\1\3\11\1\1\2\11" - + "\4\1\1\11\21\1\7\11\4\1\1\11\2\1\2\11" - + "\3\1\1\11\1\1\1\11\3\1\2\11\1\1\1\11" - + "\2\1\1\11\1\1\2\11\2\1\1\11\2\1\1\11" - + "\2\1\1\11\1\1\1\0\2\11\1\1\1\11\1\1" - + "\1\11\2\1\2\11\1\1\2\11\1\1\2\11\1\0" - + "\3\1\1\0\11\1\2\11\44\1\11\11\1\1\6\11" - + "\1\1\1\11\1\0\1\11\1\0\1\11\1\0\2\11" - + "\1\0\1\1\4\0\1\1\2\0\2\11\4\1\1\11" - + "\2\0\3\11\1\1\1\11\1\0\1\1\1\11\61\1" - + "\3\0\3\11\1\0\1\11\2\0\1\1\2\11\1\0" - + "\1\11\52\1\1\11\2\0\2\11\1\0\42\1\1\0" - + "\33\1\1\0\23\1\1\0\15\1\1\0\10\1\2\11" - + "\11\1"; + + "\26\1\7\11\4\1\1\11\2\1\2\11\3\1\1\11" + + "\1\1\1\11\3\1\2\11\1\1\1\11\2\1\1\11" + + "\1\1\2\11\2\1\1\11\2\1\1\11\2\1\1\11" + + "\1\1\1\0\2\11\1\1\1\11\1\1\1\11\2\1" + + "\2\11\1\1\2\11\1\1\2\11\1\0\3\1\1\0" + + "\11\1\2\11\1\0\44\1\11\11\1\1\6\11\1\1" + + "\1\11\1\0\1\11\1\0\1\11\1\0\2\11\1\0" + + "\1\1\4\0\1\1\2\0\2\11\4\1\1\11\2\0" + + "\3\11\1\1\1\11\1\0\1\1\1\11\62\1\3\0" + + "\3\11\1\0\1\11\2\0\1\1\2\11\1\0\1\11" + + "\52\1\1\11\2\0\2\11\1\0\42\1\1\0\33\1" + + "\1\0\23\1\1\0\15\1\1\0\10\1\2\11\11\1"; private static int[] zzUnpackAttribute() { - int[] result = new int[446]; + int[] result = new int[448]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1031,7 +1034,7 @@ public final class ActionScriptLexer { yypushbackstr(s, YYINITIAL); } - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; @@ -1396,200 +1399,200 @@ public final class ActionScriptLexer { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 1: { } - case 164: + case 165: break; case 2: { yyline++; } - case 165: + case 166: break; case 3: { /*ignore*/ } - case 166: + case 167: break; case 4: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DIVIDE, yytext()); } - case 167: + case 168: break; case 5: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MULTIPLY, yytext()); } - case 168: + case 169: break; case 6: { return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, yytext()); } - case 169: + case 170: break; case 7: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DOT, yytext()); } - case 170: + case 171: break; case 8: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_THAN, yytext()); } - case 171: + case 172: break; case 9: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT, yytext()); } - case 172: + case 173: break; case 10: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MINUS, yytext()); } - case 173: + case 174: break; case 11: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_THAN, yytext()); } - case 174: + case 175: break; case 12: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COLON, yytext()); } - case 175: + case 176: break; case 13: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong((yytext()))); } - case 176: + case 177: break; case 14: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TERNAR, yytext()); } - case 177: + case 178: break; case 15: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_OPEN, yytext()); } - case 178: + case 179: break; case 16: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BRACKET_CLOSE, yytext()); } - case 179: + case 180: break; case 17: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN, yytext()); } - case 180: + case 181: break; case 18: { string.setLength(0); yybegin(STRING); } - case 181: + case 182: break; case 19: { string.setLength(0); yybegin(CHARLITERAL); } - case 182: + case 183: break; case 20: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PLUS, yytext()); } - case 183: + case 184: break; case 21: { string.setLength(0); yybegin(OIDENTIFIER); } - case 184: + case 185: break; case 22: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_OPEN, yytext()); } - case 185: + case 186: break; case 23: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.PARENT_CLOSE, yytext()); } - case 186: + case 187: break; case 24: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_OPEN, yytext()); } - case 187: + case 188: break; case 25: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.CURLY_CLOSE, yytext()); } - case 188: + case 189: break; case 26: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SEMICOLON, yytext()); } - case 189: + case 190: break; case 27: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.COMMA, yytext()); } - case 190: + case 191: break; case 28: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEGATE, yytext()); } - case 191: + case 192: break; case 29: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITAND, yytext()); } - case 192: + case 193: break; case 30: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.BITOR, yytext()); } - case 193: + case 194: break; case 31: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.XOR, yytext()); } - case 194: + case 195: break; case 32: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.MODULO, yytext()); } - case 195: + case 196: break; case 33: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ATTRIBUTE, yytext()); } - case 196: + case 197: break; case 34: { string.append(yytext()); } - case 197: + case 198: break; case 35: { yybegin(YYINITIAL); yyline++; } - case 198: + case 199: break; case 36: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.STRING, SymbolType.STRING, string.toString()); } - case 199: + case 200: break; case 37: { yybegin(YYINITIAL); yyline++; } - case 200: + case 201: break; case 38: { string.append(yytext()); yyline++; } - case 201: + case 202: break; case 39: { yybegin(XML); @@ -1600,7 +1603,7 @@ public final class ActionScriptLexer { } return lex(); } - case 202: + case 203: break; case 40: { yybegin(YYINITIAL); @@ -1611,13 +1614,13 @@ public final class ActionScriptLexer { } return lex(); } - case 203: + case 204: break; case 41: { yybegin(YYINITIAL); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRVALVAR_BEGIN, yytext()); } - case 204: + case 205: break; case 42: { yybegin(YYINITIAL); @@ -1628,19 +1631,19 @@ public final class ActionScriptLexer { } return lex(); } - case 205: + case 206: break; case 43: { yybegin(YYINITIAL); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRATTRVALVAR_BEGIN, yytext()); } - case 206: + case 207: break; case 44: { string.append(yytext()); yyline++; } - case 207: + case 208: break; case 45: { yybegin(YYINITIAL); @@ -1651,216 +1654,216 @@ public final class ActionScriptLexer { } return lex(); } - case 208: + case 209: break; case 46: { yybegin(YYINITIAL); // length also includes the trailing quote return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.IDENTIFIER, string.toString()); } - case 209: + case 210: break; case 47: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_DIVIDE, yytext()); } - case 210: + case 211: break; case 48: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MULTIPLY, yytext()); } - case 211: + case 212: break; case 49: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DESCENDANTS, yytext()); } - case 212: + case 213: break; case 50: { return new ParsedSymbol(SymbolGroup.TYPENAME, SymbolType.TYPENAME, yytext()); } - case 213: + case 214: break; case 51: { return new ParsedSymbol(SymbolGroup.DOUBLE, SymbolType.DOUBLE, Double.parseDouble((yytext()))); } - case 214: + case 215: break; case 52: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.FILTER, yytext()); } - case 215: + case 216: break; case 53: { yybegin(XMLOPENTAG); string.setLength(0); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTTAG_BEGIN, yytext()); } - case 216: + case 217: break; case 54: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_LEFT, yytext()); } - case 217: + case 218: break; case 55: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.LOWER_EQUAL, yytext()); } - case 218: + case 219: break; case 56: { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_STARTVARTAG_BEGIN, yytext()); } - case 219: + case 220: break; case 57: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NOT_EQUAL, yytext()); } - case 220: + case 221: break; case 58: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DECREMENT, yytext()); } - case 221: + case 222: break; case 59: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MINUS, yytext()); } - case 222: + case 223: break; case 60: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.SHIFT_RIGHT, yytext()); } - case 223: + case 224: break; case 61: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.GREATER_EQUAL, yytext()); } - case 224: + case 225: break; case 62: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NAMESPACE_OP, yytext()); } - case 225: + case 226: break; case 63: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.EQUALS, yytext()); } - case 226: + case 227: break; case 64: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext(), 8)); } - case 227: + case 228: break; case 65: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_PLUS, yytext()); } - case 228: + case 229: break; case 66: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INCREMENT, yytext()); } - case 229: + case 230: break; case 67: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AS, yytext()); } - case 230: + case 231: break; case 68: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IF, yytext()); } - case 231: + case 232: break; case 69: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.IS, yytext()); } - case 232: + case 233: break; case 70: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IN, yytext()); } - case 233: + case 234: break; case 71: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DO, yytext()); } - case 234: + case 235: break; case 72: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITAND, yytext()); } - case 235: + case 236: break; case 73: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.AND, yytext()); } - case 236: + case 237: break; case 74: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_BITOR, yytext()); } - case 237: + case 238: break; case 75: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.OR, yytext()); } - case 238: + case 239: break; case 76: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_XOR, yytext()); } - case 239: + case 240: break; case 77: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_MODULO, yytext()); } - case 240: + case 241: break; case 78: { /* ignore illegal character escape */ } - case 241: + case 242: break; case 79: { string.append('\"'); } - case 242: + case 243: break; case 80: { string.append('\''); } - case 243: + case 244: break; case 81: { string.append('\f'); } - case 244: + case 245: break; case 82: { string.append('\\'); } - case 245: + case 246: break; case 83: { string.append('\b'); } - case 246: + case 247: break; case 84: { string.append('\r'); } - case 247: + case 248: break; case 85: { string.append('\n'); } - case 248: + case 249: break; case 86: { string.append('\t'); } - case 249: + case 250: break; case 87: { yybegin(XML); @@ -1871,7 +1874,7 @@ public final class ActionScriptLexer { } return lex(); } - case 250: + case 251: break; case 88: { yybegin(XMLOPENTAGATTRIB); @@ -1882,13 +1885,13 @@ public final class ActionScriptLexer { } return lex(); } - case 251: + case 252: break; case 89: { yybegin(XMLOPENTAG); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); } - case 252: + case 253: break; case 90: { yybegin(XMLINSTRATTRIB); @@ -1899,7 +1902,7 @@ public final class ActionScriptLexer { } return lex(); } - case 253: + case 254: break; case 91: { yybegin(XML); @@ -1910,13 +1913,13 @@ public final class ActionScriptLexer { } return lex(); } - case 254: + case 255: break; case 92: { yybegin(XMLINSTROPENTAG); return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_ATTRIBUTEVALUE, yytext()); } - case 255: + case 256: break; case 93: { yybegin(XMLOPENTAG); @@ -1927,7 +1930,7 @@ public final class ActionScriptLexer { } return lex(); } - case 256: + case 257: break; case 94: { yybegin(YYINITIAL); @@ -1938,107 +1941,112 @@ public final class ActionScriptLexer { } return lex(); } - case 257: + case 258: break; case 95: { throw new AVM2ParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); } - case 258: + case 259: break; case 96: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.REST, yytext()); } - case 259: + case 260: break; case 97: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_LEFT, yytext()); } - case 260: + case 261: break; case 98: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_NOT_EQUAL, yytext()); } - case 261: + case 262: break; case 99: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.USHIFT_RIGHT, yytext()); } - case 262: + case 263: break; case 100: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_SHIFT_RIGHT, yytext()); } - case 263: + case 264: break; case 101: { return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.STRICT_EQUALS, yytext()); } - case 264: + case 265: break; case 102: { return new ParsedSymbol(SymbolGroup.INTEGER, SymbolType.INTEGER, Long.parseLong(yytext().substring(2), 16)); } - case 265: + case 266: break; case 103: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FOR, yytext()); } - case 266: - break; - case 104: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); - } case 267: break; - case 105: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); + case 104: { + return new ParsedSymbol(SymbolGroup.PREPROCESSOR, SymbolType.PREPROCESSOR, yytext().substring(2)); } case 268: break; - case 106: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); + case 105: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.SET, yytext()); } case 269: break; - case 107: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); + case 106: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.NEW, yytext()); } case 270: break; - case 108: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); + case 107: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRY, yytext()); } case 271: break; - case 109: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); + case 108: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.USE, yytext()); } case 272: break; - case 110: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + case 109: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.VAR, yytext()); } case 273: break; - case 111: { - string.append(yytext()); - yybegin(XML); - String ret = string.toString(); - string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); + case 110: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.GET, yytext()); } case 274: break; + case 111: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NAN, yytext()); + } + case 275: + break; case 112: { string.append(yytext()); yybegin(XML); String ret = string.toString(); string.setLength(0); - return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_CDATA, ret); } - case 275: + case 276: break; case 113: { + string.append(yytext()); + yybegin(XML); + String ret = string.toString(); + string.setLength(0); + return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_COMMENT, ret); + } + case 277: + break; + case 114: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHVARTAG_BEGIN, yytext())); if (string.length() > 0) { @@ -2047,9 +2055,9 @@ public final class ActionScriptLexer { } return lex(); } - case 276: + case 278: break; - case 114: { + case 115: { yybegin(XMLINSTROPENTAG); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTR_BEGIN, yytext())); if (string.length() > 0) { @@ -2058,9 +2066,9 @@ public final class ActionScriptLexer { } return lex(); } - case 277: + case 279: break; - case 115: { + case 116: { yybegin(YYINITIAL); pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_INSTRVARTAG_BEGIN, yytext())); if (string.length() > 0) { @@ -2069,65 +2077,65 @@ public final class ActionScriptLexer { } return lex(); } - case 278: - break; - case 116: { - string.append('\u00A7'); - } - case 279: - break; - case 117: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); - } case 280: break; - case 118: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); + case 117: { + string.append('\u00A7'); } case 281: break; - case 119: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); + case 118: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.ASSIGN_USHIFT_RIGHT, yytext()); } case 282: break; - case 120: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); + case 119: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.EACH, yytext()); } case 283: break; - case 121: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); + case 120: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.ELSE, yytext()); } case 284: break; - case 122: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); + case 121: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CASE, yytext()); } case 285: break; - case 123: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); + case 122: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.NULL, yytext()); } case 286: break; - case 124: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); + case 123: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.TRUE, yytext()); } case 287: break; - case 125: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + case 124: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THIS, yytext()); } case 288: break; - case 126: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); + case 125: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WITH, yytext()); } case 289: break; + case 126: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.VOID, yytext()); + } + case 290: + break; case 127: { + char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 291: + break; + case 128: { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_FINISHTAG, yytext())); if (string.length() > 0) { pushback(new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, string.toString())); @@ -2135,9 +2143,9 @@ public final class ActionScriptLexer { } return lex(); } - case 290: + case 292: break; - case 128: { + case 129: { String ret = string.toString(); string.setLength(0); string.append(yytext()); @@ -2146,169 +2154,169 @@ public final class ActionScriptLexer { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } } - case 291: - break; - case 129: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); - } - case 292: - break; - case 130: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); - } case 293: break; - case 131: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); + case 130: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FALSE, yytext()); } case 294: break; - case 132: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); + case 131: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.FINAL, yytext()); } case 295: break; - case 133: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); + case 132: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.BREAK, yytext()); } case 296: break; - case 134: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); + case 133: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CATCH, yytext()); } case 297: break; - case 135: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); + case 134: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONST, yytext()); } case 298: break; - case 136: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); + case 135: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CLASS, yytext()); } case 299: break; - case 137: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); + case 136: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SUPER, yytext()); } case 300: break; - case 138: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); + case 137: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.THROW, yytext()); } case 301: break; - case 139: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); + case 138: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.WHILE, yytext()); } case 302: break; - case 140: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); + case 139: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.RETURN, yytext()); } case 303: break; - case 141: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); + case 140: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.STATIC, yytext()); } case 304: break; - case 142: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); + case 141: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.SWITCH, yytext()); } case 305: break; - case 143: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); + case 142: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NATIVE, yytext()); } case 306: break; - case 144: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); + case 143: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.TYPEOF, yytext()); } case 307: break; - case 145: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); + case 144: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPORT, yytext()); } case 308: break; - case 146: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); + case 145: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.DELETE, yytext()); } case 309: break; - case 147: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); + case 146: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PUBLIC, yytext()); } case 310: break; - case 148: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); + case 147: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FINALLY, yytext()); } case 311: break; - case 149: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); + case 148: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.EXTENDS, yytext()); } case 312: break; - case 150: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); + case 149: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.DEFAULT, yytext()); } case 313: break; - case 151: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); + case 150: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.DYNAMIC, yytext()); } case 314: break; - case 152: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); + case 151: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PRIVATE, yytext()); } case 315: break; - case 153: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); + case 152: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PACKAGE, yytext()); } case 316: break; - case 154: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); + case 153: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.FUNCTION, yytext()); } case 317: break; - case 155: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); + case 154: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.CONTINUE, yytext()); } case 318: break; - case 156: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); + case 155: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.OVERRIDE, yytext()); } case 319: break; - case 157: { - return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); + case 156: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERNAL, yytext()); } case 320: break; - case 158: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); + case 157: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.INFINITY, yytext()); } case 321: break; - case 159: { - return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + case 158: { + return new ParsedSymbol(SymbolGroup.IDENTIFIER, SymbolType.NAMESPACE, yytext()); } case 322: break; - case 160: { - return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + case 159: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.INTERFACE, yytext()); } case 323: break; + case 160: { + return new ParsedSymbol(SymbolGroup.GLOBALCONST, SymbolType.UNDEFINED, yytext()); + } + case 324: + break; case 161: { + return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.PROTECTED, yytext()); + } + case 325: + break; + case 162: { String ret = string.toString(); string.setLength(0); string.append(yytext()); @@ -2317,17 +2325,17 @@ public final class ActionScriptLexer { return new ParsedSymbol(SymbolGroup.XML, SymbolType.XML_TEXT, ret); } } - case 324: - break; - case 162: { - return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); - } - case 325: + case 326: break; case 163: { + return new ParsedSymbol(SymbolGroup.OPERATOR, SymbolType.INSTANCEOF, yytext()); + } + case 327: + break; + case 164: { return new ParsedSymbol(SymbolGroup.KEYWORD, SymbolType.IMPLEMENTS, yytext()); } - case 326: + case 328: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoLexer.java index 9456219ba..a4ad3cf0b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/methodinfo_parser/MethodInfoLexer.java @@ -21,8 +21,9 @@ package com.jpexs.decompiler.flash.abc.methodinfo_parser; /** * This class is a scanner generated by - * JFlex 1.6.0 from the specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex + * JFlex 1.6.0 + * from the specification file + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript3_methodinfo.flex */ public final class MethodInfoLexer { @@ -45,8 +46,9 @@ public final class MethodInfoLexer { /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer */ private static final int ZZ_LEXSTATE[] = { 0, 0, 1, 1 @@ -547,8 +549,8 @@ public final class MethodInfoLexer { private int zzLexicalState = YYINITIAL; /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string + * this buffer contains the current text to be matched and is + * the source of the yytext() string */ private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; @@ -568,8 +570,8 @@ public final class MethodInfoLexer { private int zzStartRead; /** - * endRead marks the last character in the buffer, that has been read from - * input + * endRead marks the last character in the buffer, that has been read + * from input */ private int zzEndRead; @@ -605,15 +607,15 @@ public final class MethodInfoLexer { private boolean zzEOFDone; /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. */ private int zzFinalHighSurrogate = 0; /* user code: */ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname = false; @@ -729,8 +731,6 @@ public final class MethodInfoLexer { /** * Closes the input stream. - * - * @throws java.io.IOException */ public final void yyclose() throws java.io.IOException { zzAtEOF = true; /* indicate end of file */ @@ -743,12 +743,12 @@ public final class MethodInfoLexer { } /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. + * Resets the scanner to read from a new input stream. + * Does not close the old reader. * * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. * * Internal scan buffer is resized down to its initial length, if it has * grown. @@ -772,8 +772,6 @@ public final class MethodInfoLexer { /** * Returns the current lexical state. - * - * @return */ public final int yystate() { return zzLexicalState; @@ -790,20 +788,19 @@ public final class MethodInfoLexer { /** * Returns the text matched by the current regular expression. - * - * @return */ public final String yytext() { return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); } /** - * Returns the character at position pos from the matched text. + * Returns the character at position pos from the + * matched text. * * It is equivalent to yytext().charAt(pos), but faster * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. * * @return the character at position pos */ @@ -813,8 +810,6 @@ public final class MethodInfoLexer { /** * Returns the length of the matched text region. - * - * @return */ public final int yylength() { return zzMarkedPos - zzStartRead; @@ -823,13 +818,14 @@ public final class MethodInfoLexer { /** * Reports an error that occured while scanning. * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. + * Usual syntax/scanner level error handling should be done + * in error fallback rules. * * @param errorCode the code of the errormessage to display */ @@ -849,8 +845,8 @@ public final class MethodInfoLexer { * * They will be read again by then next call of the scanning method * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! */ public void yypushback(int number) { if (number > yylength()) { @@ -861,13 +857,11 @@ public final class MethodInfoLexer { } /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. * * @return the next token * @exception java.io.IOException if any I/O-Error occurs - * @throws - * com.jpexs.decompiler.flash.abc.methodinfo_parser.MethodInfoParseException */ public ParsedSymbol yylex() throws java.io.IOException, MethodInfoParseException { int zzInput; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java index 41e542faf..f66eb1605 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionGraph.java @@ -268,7 +268,7 @@ public class ActionGraph extends Graph { } } if (switchedObject == null) { - switchedObject = new DirectValueActionItem(null, -1, new Null(), null); + switchedObject = new DirectValueActionItem(null, -1, Null.INSTANCE, null); } HashMap caseValuesMap = new HashMap<>(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionListReader.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionListReader.java index 3cb87fc5d..f0703f3e7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionListReader.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/ActionListReader.java @@ -1065,10 +1065,10 @@ public class ActionListReader { } else if (!(a instanceof GraphSourceItemContainer)) { //return in for..in, TODO:Handle this better way if (((a instanceof ActionEquals) || (a instanceof ActionEquals2)) && (stack.size() == 1) && (stack.peek() instanceof DirectValueActionItem)) { - stack.push(new DirectValueActionItem(null, 0, new Null(), new ArrayList<>())); + stack.push(new DirectValueActionItem(null, 0, Null.INSTANCE, new ArrayList<>())); } if ((a instanceof ActionStoreRegister) && stack.isEmpty()) { - stack.push(new DirectValueActionItem(null, 0, new Null(), new ArrayList<>())); + stack.push(new DirectValueActionItem(null, 0, Null.INSTANCE, new ArrayList<>())); } a.translate(localData, stack, output, Graph.SOP_USE_STATIC/*Graph.SOP_SKIP_STATIC*/, path); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java index 78c69670c..0872391cc 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/DirectValueActionItem.java @@ -94,7 +94,7 @@ public class DirectValueActionItem extends ActionItem implements SimpleValue { return (this.constants.get(((ConstantIndex) value).index)); } if (value instanceof RegisterNumber) { - return new Undefined(); //has not computed value + return Undefined.INSTANCE; //has not computed value } return value; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java index 878af466e..fe70e95e6 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/GetVariableActionItem.java @@ -97,7 +97,7 @@ public class GetVariableActionItem extends ActionItem { @Override public Object getResult() { if (computedValue == null) { - return new Undefined(); + return Undefined.INSTANCE; } return computedResult; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java index 00e3dd357..f02a02782 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/ReturnActionItem.java @@ -71,7 +71,7 @@ public class ReturnActionItem extends ActionItem implements ExitItem { int forinlevel = asGenerator.getForInLevel(localData); for (int i = 0; i < forinlevel; i++) { //Must POP all remaining values from enumerations (for..in) List forinret = new ArrayList<>(); - forinret.add(new ActionPush(new Null())); + forinret.add(new ActionPush(Null.INSTANCE)); forinret.add(new ActionEquals2()); forinret.add(new ActionNot()); ActionIf aforinif = new ActionIf(0); @@ -80,7 +80,7 @@ public class ReturnActionItem extends ActionItem implements ExitItem { ret.addAll(forinret); } if (value == null) { - ret.add(new ActionPush(new Undefined())); + ret.add(new ActionPush(Undefined.INSTANCE)); } else { ret.addAll(value.toSource(localData, generator)); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java index 66f0286b8..cb3a8324f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/model/clauses/ForInActionItem.java @@ -132,7 +132,7 @@ public class ForInActionItem extends LoopActionItem implements Block { int exprReg = asGenerator.getTempRegister(localData); loopExpr.add(new ActionStoreRegister(exprReg)); - loopExpr.add(new ActionPush(new Null())); + loopExpr.add(new ActionPush(Null.INSTANCE)); loopExpr.add(new ActionEquals2()); ActionIf forInEndIf = new ActionIf(0); loopExpr.add(forInEndIf); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java index 86355d3b0..7f55acb47 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/pcode/FlasmLexer.java @@ -2,17 +2,17 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library. */ @@ -25,589 +25,543 @@ import com.jpexs.decompiler.flash.action.swf4.RegisterNumber; import com.jpexs.decompiler.flash.ecma.Null; import com.jpexs.decompiler.flash.ecma.Undefined; + /** - * This class is a scanner generated by + * This class is a scanner generated by * JFlex 1.6.0 - * from the specification file - * C:/Projects/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript_pcode.flex + * from the specification file C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript_pcode.flex */ public final class FlasmLexer { - /** - * This character denotes the end of file - */ - public static final int YYEOF = -1; + /** This character denotes the end of file */ + public static final int YYEOF = -1; - /** - * initial size of the lookahead buffer - */ - private static final int ZZ_BUFFERSIZE = 16384; + /** initial size of the lookahead buffer */ + private static final int ZZ_BUFFERSIZE = 16384; - /** - * lexical states - */ - public static final int YYINITIAL = 0; + /** lexical states */ + public static final int YYINITIAL = 0; + public static final int STRING = 2; + public static final int PARAMETERS = 4; - public static final int STRING = 2; + /** + * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer + */ + private static final int ZZ_LEXSTATE[] = { + 0, 0, 1, 1, 2, 2 + }; - public static final int PARAMETERS = 4; + /** + * Translates characters to character classes + */ + private static final String ZZ_CMAP_PACKED = + "\11\6\1\4\1\2\1\51\1\52\1\1\16\6\4\0\1\4\1\0"+ + "\1\45\1\0\1\5\2\0\1\47\3\0\1\37\1\0\1\30\1\35"+ + "\1\0\1\33\11\11\1\12\1\3\5\0\4\40\1\36\1\40\2\7"+ + "\1\31\4\7\1\34\14\7\1\0\1\41\2\0\1\10\1\0\1\22"+ + "\1\46\1\43\1\26\1\20\1\21\1\42\1\7\1\27\2\7\1\23"+ + "\1\7\1\25\1\44\2\7\1\16\1\24\1\15\1\17\2\7\1\50"+ + "\1\32\1\7\1\13\1\0\1\14\1\0\6\6\1\53\32\6\2\0"+ + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0"+ + "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0"+ + "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5"+ + "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5"+ + "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5"+ + "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6"+ + "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6"+ + "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6"+ + "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6"+ + "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5"+ + "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5"+ + "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5"+ + "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6"+ + "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6"+ + "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5"+ + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5"+ + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0"+ + "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0"+ + "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0"+ + "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0"+ + "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0"+ + "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0"+ + "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0"+ + "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0"+ + "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5"+ + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5"+ + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6"+ + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0"+ + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5"+ + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5"+ + "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6"+ + "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5"+ + "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0"+ + "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6"+ + "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5"+ + "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6"+ + "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0"+ + "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0"+ + "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0"+ + "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6"+ + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5"+ + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6"+ + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6"+ + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5"+ + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5"+ + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5"+ + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5"+ + "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6"+ + "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0"+ + "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6"+ + "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5"+ + "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0"+ + "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0"+ + "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0"+ + "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0"+ + "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0"+ + "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0"+ + "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5"+ + "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6"+ + "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6"+ + "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5"+ + "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6"+ + "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0"+ + "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0"+ + "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5"+ + "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6"+ + "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6"+ + "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5"+ + "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5"+ + "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5"+ + "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5"+ + "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5"+ + "\1\0\7\5\16\0\5\6\30\0\1\51\1\51\5\6\20\0\2\5"+ + "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5"+ + "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6"+ + "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5"+ + "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5"+ + "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5"+ + "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5"+ + "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6"+ + "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0"+ + "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0"+ + "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5"+ + "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5"+ + "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5"+ + "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5"+ + "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0"+ + "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0"+ + "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6"+ + "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6"+ + "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5"+ + "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6"+ + "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5"+ + "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5"+ + "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5"+ + "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5"+ + "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5"+ + "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0"+ + "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0"+ + "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0"+ + "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0"+ + "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0"+ + "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0"+ + "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0"+ + "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0"+ + "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0"+ + "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0"+ + "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0"+ + "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0"+ + "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0"+ + "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0"+ + "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6"+ + "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0"+ + "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0"+ + "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0"+ + "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0"+ + "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5"+ + "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0"+ + "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0"+ + "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0"+ + "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0"+ + "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0"+ + "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0"+ + "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0"+ + "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0"+ + "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0"+ + "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0"+ + "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0"+ + "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0"+ + "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0"+ + "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0"+ + "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0"+ + "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0"+ + "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0"+ + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; - /** - * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l - * at the beginning of a line - * l is of the form l = 2*k, k a non negative integer - */ - private static final int ZZ_LEXSTATE[] = { - 0, 0, 1, 1, 2, 2 - }; + /** + * Translates characters to character classes + */ + private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); - /** - * Translates characters to character classes - */ - private static final String ZZ_CMAP_PACKED - = "\11\6\1\4\1\2\1\51\1\52\1\1\16\6\4\0\1\4\1\0" - + "\1\45\1\0\1\5\2\0\1\47\3\0\1\37\1\0\1\30\1\35" - + "\1\0\1\33\11\11\1\12\1\3\5\0\4\40\1\36\1\40\2\7" - + "\1\31\4\7\1\34\14\7\1\0\1\41\2\0\1\10\1\0\1\22" - + "\1\46\1\43\1\26\1\20\1\21\1\42\1\7\1\27\2\7\1\23" - + "\1\7\1\25\1\44\2\7\1\16\1\24\1\15\1\17\2\7\1\50" - + "\1\32\1\7\1\13\1\0\1\14\1\0\6\6\1\53\32\6\2\0" - + "\4\5\4\0\1\5\2\0\1\6\7\0\1\5\4\0\1\5\5\0" - + "\27\5\1\0\37\5\1\0\u01ca\5\4\0\14\5\16\0\5\5\7\0" - + "\1\5\1\0\1\5\21\0\160\6\5\5\1\0\2\5\2\0\4\5" - + "\10\0\1\5\1\0\3\5\1\0\1\5\1\0\24\5\1\0\123\5" - + "\1\0\213\5\1\0\5\6\2\0\236\5\11\0\46\5\2\0\1\5" - + "\7\0\47\5\7\0\1\5\1\0\55\6\1\0\1\6\1\0\2\6" - + "\1\0\2\6\1\0\1\6\10\0\33\5\5\0\3\5\15\0\5\6" - + "\6\0\1\5\4\0\13\6\5\0\53\5\37\6\4\0\2\5\1\6" - + "\143\5\1\0\1\5\10\6\1\0\6\6\2\5\2\6\1\0\4\6" - + "\2\5\12\6\3\5\2\0\1\5\17\0\1\6\1\5\1\6\36\5" - + "\33\6\2\0\131\5\13\6\1\5\16\0\12\6\41\5\11\6\2\5" - + "\4\0\1\5\5\0\26\5\4\6\1\5\11\6\1\5\3\6\1\5" - + "\5\6\22\0\31\5\3\6\104\0\1\5\1\0\13\5\67\0\33\6" - + "\1\0\4\6\66\5\3\6\1\5\22\6\1\5\7\6\12\5\2\6" - + "\2\0\12\6\1\0\7\5\1\0\7\5\1\0\3\6\1\0\10\5" - + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\1\5\3\0\4\5" - + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\1\5\10\0" - + "\1\6\4\0\2\5\1\0\3\5\2\6\2\0\12\6\4\5\7\0" - + "\1\5\5\0\3\6\1\0\6\5\4\0\2\5\2\0\26\5\1\0" - + "\7\5\1\0\2\5\1\0\2\5\1\0\2\5\2\0\1\6\1\0" - + "\5\6\4\0\2\6\2\0\3\6\3\0\1\6\7\0\4\5\1\0" - + "\1\5\7\0\14\6\3\5\1\6\13\0\3\6\1\0\11\5\1\0" - + "\3\5\1\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5\2\0" - + "\1\6\1\5\10\6\1\0\3\6\1\0\3\6\2\0\1\5\17\0" - + "\2\5\2\6\2\0\12\6\1\0\1\5\17\0\3\6\1\0\10\5" - + "\2\0\2\5\2\0\26\5\1\0\7\5\1\0\2\5\1\0\5\5" - + "\2\0\1\6\1\5\7\6\2\0\2\6\2\0\3\6\10\0\2\6" - + "\4\0\2\5\1\0\3\5\2\6\2\0\12\6\1\0\1\5\20\0" - + "\1\6\1\5\1\0\6\5\3\0\3\5\1\0\4\5\3\0\2\5" - + "\1\0\1\5\1\0\2\5\3\0\2\5\3\0\3\5\3\0\14\5" - + "\4\0\5\6\3\0\3\6\1\0\4\6\2\0\1\5\6\0\1\6" - + "\16\0\12\6\11\0\1\5\7\0\3\6\1\0\10\5\1\0\3\5" - + "\1\0\27\5\1\0\12\5\1\0\5\5\3\0\1\5\7\6\1\0" - + "\3\6\1\0\4\6\7\0\2\6\1\0\2\5\6\0\2\5\2\6" - + "\2\0\12\6\22\0\2\6\1\0\10\5\1\0\3\5\1\0\27\5" - + "\1\0\12\5\1\0\5\5\2\0\1\6\1\5\7\6\1\0\3\6" - + "\1\0\4\6\7\0\2\6\7\0\1\5\1\0\2\5\2\6\2\0" - + "\12\6\1\0\2\5\17\0\2\6\1\0\10\5\1\0\3\5\1\0" - + "\51\5\2\0\1\5\7\6\1\0\3\6\1\0\4\6\1\5\10\0" - + "\1\6\10\0\2\5\2\6\2\0\12\6\12\0\6\5\2\0\2\6" - + "\1\0\22\5\3\0\30\5\1\0\11\5\1\0\1\5\2\0\7\5" - + "\3\0\1\6\4\0\6\6\1\0\1\6\1\0\10\6\22\0\2\6" - + "\15\0\60\5\1\6\2\5\7\6\4\0\10\5\10\6\1\0\12\6" - + "\47\0\2\5\1\0\1\5\2\0\2\5\1\0\1\5\2\0\1\5" - + "\6\0\4\5\1\0\7\5\1\0\3\5\1\0\1\5\1\0\1\5" - + "\2\0\2\5\1\0\4\5\1\6\2\5\6\6\1\0\2\6\1\5" - + "\2\0\5\5\1\0\1\5\1\0\6\6\2\0\12\6\2\0\4\5" - + "\40\0\1\5\27\0\2\6\6\0\12\6\13\0\1\6\1\0\1\6" - + "\1\0\1\6\4\0\2\6\10\5\1\0\44\5\4\0\24\6\1\0" - + "\2\6\5\5\13\6\1\0\44\6\11\0\1\6\71\0\53\5\24\6" - + "\1\5\12\6\6\0\6\5\4\6\4\5\3\6\1\5\3\6\2\5" - + "\7\6\3\5\4\6\15\5\14\6\1\5\17\6\2\0\46\5\1\0" - + "\1\5\5\0\1\5\2\0\53\5\1\0\u014d\5\1\0\4\5\2\0" - + "\7\5\1\0\1\5\1\0\4\5\2\0\51\5\1\0\4\5\2\0" - + "\41\5\1\0\4\5\2\0\7\5\1\0\1\5\1\0\4\5\2\0" - + "\17\5\1\0\71\5\1\0\4\5\2\0\103\5\2\0\3\6\40\0" - + "\20\5\20\0\125\5\14\0\u026c\5\2\0\21\5\1\0\32\5\5\0" - + "\113\5\3\0\3\5\17\0\15\5\1\0\4\5\3\6\13\0\22\5" - + "\3\6\13\0\22\5\2\6\14\0\15\5\1\0\3\5\1\0\2\6" - + "\14\0\64\5\40\6\3\0\1\5\3\0\2\5\1\6\2\0\12\6" - + "\41\0\3\6\2\0\12\6\6\0\130\5\10\0\51\5\1\6\1\5" - + "\5\0\106\5\12\0\35\5\3\0\14\6\4\0\14\6\12\0\12\6" - + "\36\5\2\0\5\5\13\0\54\5\4\0\21\6\7\5\2\6\6\0" - + "\12\6\46\0\27\5\5\6\4\0\65\5\12\6\1\0\35\6\2\0" - + "\13\6\6\0\12\6\15\0\1\5\130\0\5\6\57\5\21\6\7\5" - + "\4\0\12\6\21\0\11\6\14\0\3\6\36\5\15\6\2\5\12\6" - + "\54\5\16\6\14\0\44\5\24\6\10\0\12\6\3\0\3\5\12\6" - + "\44\5\122\0\3\6\1\0\25\6\4\5\1\6\4\5\3\6\2\5" - + "\11\0\300\5\47\6\25\0\4\6\u0116\5\2\0\6\5\2\0\46\5" - + "\2\0\6\5\2\0\10\5\1\0\1\5\1\0\1\5\1\0\1\5" - + "\1\0\37\5\2\0\65\5\1\0\7\5\1\0\1\5\3\0\3\5" - + "\1\0\7\5\3\0\4\5\2\0\6\5\4\0\15\5\5\0\3\5" - + "\1\0\7\5\16\0\5\6\30\0\1\51\1\51\5\6\20\0\2\5" - + "\23\0\1\5\13\0\5\6\5\0\6\6\1\0\1\5\15\0\1\5" - + "\20\0\15\5\3\0\33\5\25\0\15\6\4\0\1\6\3\0\14\6" - + "\21\0\1\5\4\0\1\5\2\0\12\5\1\0\1\5\3\0\5\5" - + "\6\0\1\5\1\0\1\5\1\0\1\5\1\0\4\5\1\0\13\5" - + "\2\0\4\5\5\0\5\5\4\0\1\5\21\0\51\5\u0a77\0\57\5" - + "\1\0\57\5\1\0\205\5\6\0\4\5\3\6\2\5\14\0\46\5" - + "\1\0\1\5\5\0\1\5\2\0\70\5\7\0\1\5\17\0\1\6" - + "\27\5\11\0\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0" - + "\7\5\1\0\7\5\1\0\7\5\1\0\7\5\1\0\40\6\57\0" - + "\1\5\u01d5\0\3\5\31\0\11\5\6\6\1\0\5\5\2\0\5\5" - + "\4\0\126\5\2\0\2\6\2\0\3\5\1\0\132\5\1\0\4\5" - + "\5\0\51\5\3\0\136\5\21\0\33\5\65\0\20\5\u0200\0\u19b6\5" - + "\112\0\u51cd\5\63\0\u048d\5\103\0\56\5\2\0\u010d\5\3\0\20\5" - + "\12\6\2\5\24\0\57\5\1\6\4\0\12\6\1\0\31\5\7\0" - + "\1\6\120\5\2\6\45\0\11\5\2\0\147\5\2\0\4\5\1\0" - + "\4\5\14\0\13\5\115\0\12\5\1\6\3\5\1\6\4\5\1\6" - + "\27\5\5\6\20\0\1\5\7\0\64\5\14\0\2\6\62\5\21\6" - + "\13\0\12\6\6\0\22\6\6\5\3\0\1\5\4\0\12\6\34\5" - + "\10\6\2\0\27\5\15\6\14\0\35\5\3\0\4\6\57\5\16\6" - + "\16\0\1\5\12\6\46\0\51\5\16\6\11\0\3\5\1\6\10\5" - + "\2\6\2\0\12\6\6\0\27\5\3\0\1\5\1\6\4\0\60\5" - + "\1\6\1\5\3\6\2\5\2\6\5\5\2\6\1\5\1\6\1\5" - + "\30\0\3\5\2\0\13\5\5\6\2\0\3\5\2\6\12\0\6\5" - + "\2\0\6\5\2\0\6\5\11\0\7\5\1\0\7\5\221\0\43\5" - + "\10\6\1\0\2\6\2\0\12\6\6\0\u2ba4\5\14\0\27\5\4\0" - + "\61\5\u2104\0\u016e\5\2\0\152\5\46\0\7\5\14\0\5\5\5\0" - + "\1\5\1\6\12\5\1\0\15\5\1\0\5\5\1\0\1\5\1\0" - + "\2\5\1\0\2\5\1\0\154\5\41\0\u016b\5\22\0\100\5\2\0" - + "\66\5\50\0\15\5\3\0\20\6\20\0\7\6\14\0\2\5\30\0" - + "\3\5\31\0\1\5\6\0\5\5\1\0\207\5\2\0\1\6\4\0" - + "\1\5\13\0\12\6\7\0\32\5\4\0\1\5\1\0\32\5\13\0" - + "\131\5\3\0\6\5\2\0\6\5\2\0\6\5\2\0\3\5\3\0" - + "\2\5\3\0\2\5\22\0\3\6\4\0\14\5\1\0\32\5\1\0" - + "\23\5\1\0\2\5\1\0\17\5\2\0\16\5\42\0\173\5\105\0" - + "\65\5\210\0\1\6\202\0\35\5\3\0\61\5\57\0\37\5\21\0" - + "\33\5\65\0\36\5\2\0\44\5\4\0\10\5\1\0\5\5\52\0" - + "\236\5\2\0\12\6\u0356\0\6\5\2\0\1\5\1\0\54\5\1\0" - + "\2\5\3\0\1\5\2\0\27\5\252\0\26\5\12\0\32\5\106\0" - + "\70\5\6\0\2\5\100\0\1\5\3\6\1\0\2\6\5\0\4\6" - + "\4\5\1\0\3\5\1\0\33\5\4\0\3\6\4\0\1\6\40\0" - + "\35\5\203\0\66\5\12\0\26\5\12\0\23\5\215\0\111\5\u03b7\0" - + "\3\6\65\5\17\6\37\0\12\6\20\0\3\6\55\5\13\6\2\0" - + "\1\6\22\0\31\5\7\0\12\6\6\0\3\6\44\5\16\6\1\0" - + "\12\6\100\0\3\6\60\5\16\6\4\5\13\0\12\6\u04a6\0\53\5" - + "\15\6\10\0\12\6\u0936\0\u036f\5\221\0\143\5\u0b9d\0\u042f\5\u33d1\0" - + "\u0239\5\u04c7\0\105\5\13\0\1\5\56\6\20\0\4\6\15\5\u4060\0" - + "\2\5\u2163\0\5\6\3\0\26\6\2\0\7\6\36\0\4\6\224\0" - + "\3\6\u01bb\0\125\5\1\0\107\5\1\0\2\5\2\0\1\5\2\0" - + "\2\5\2\0\4\5\1\0\14\5\1\0\1\5\1\0\7\5\1\0" - + "\101\5\1\0\4\5\2\0\10\5\1\0\7\5\1\0\34\5\1\0" - + "\4\5\1\0\5\5\1\0\1\5\3\0\7\5\1\0\u0154\5\2\0" - + "\31\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0" - + "\31\5\1\0\37\5\1\0\31\5\1\0\37\5\1\0\31\5\1\0" - + "\10\5\2\0\62\6\u1600\0\4\5\1\0\33\5\1\0\2\5\1\0" - + "\1\5\2\0\1\5\1\0\12\5\1\0\4\5\1\0\1\5\1\0" - + "\1\5\6\0\1\5\4\0\1\5\1\0\1\5\1\0\1\5\1\0" - + "\3\5\1\0\2\5\1\0\1\5\2\0\1\5\1\0\1\5\1\0" - + "\1\5\1\0\1\5\1\0\1\5\1\0\2\5\1\0\1\5\2\0" - + "\4\5\1\0\7\5\1\0\4\5\1\0\4\5\1\0\1\5\1\0" - + "\12\5\1\0\21\5\5\0\3\5\1\0\5\5\1\0\21\5\u1144\0" - + "\ua6d7\5\51\0\u1035\5\13\0\336\5\u3fe2\0\u021e\5\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\u05ee\0" - + "\1\6\36\0\140\6\200\0\360\6\uffff\0\uffff\0\ufe12\0"; + /** + * Translates DFA states to action switch labels. + */ + private static final int [] ZZ_ACTION = zzUnpackAction(); - /** - * Translates characters to character classes - */ - private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); + private static final String ZZ_ACTION_PACKED_0 = + "\3\0\3\1\1\2\1\3\1\4\2\5\1\1\1\6"+ + "\2\7\1\10\1\11\1\12\1\13\5\11\1\1\1\11"+ + "\1\12\1\11\1\1\1\11\1\14\1\0\1\15\1\16"+ + "\1\17\1\20\1\16\1\21\1\22\1\23\1\24\1\25"+ + "\1\26\1\16\1\0\1\27\5\11\2\0\1\11\1\27"+ + "\2\11\2\0\1\27\1\0\5\11\1\0\1\11\1\27"+ + "\1\11\1\0\1\30\1\31\3\11\1\32\1\0\4\11"+ + "\1\33\1\0\4\11\1\0\4\11\1\0\4\11\1\0"+ + "\1\11\2\34\1\35\1\27\2\36"; - /** - * Translates DFA states to action switch labels. - */ - private static final int[] ZZ_ACTION = zzUnpackAction(); + private static int [] zzUnpackAction() { + int [] result = new int[106]; + int offset = 0; + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); + return result; + } - private static final String ZZ_ACTION_PACKED_0 - = "\3\0\3\1\1\2\1\3\1\4\2\5\1\1\1\6" - + "\2\7\1\10\1\11\1\12\1\13\5\11\1\1\1\11" - + "\1\12\1\11\1\1\1\11\1\14\1\0\1\15\1\16" - + "\1\17\1\20\1\16\1\21\1\22\1\23\1\24\1\25" - + "\1\26\1\16\1\0\1\27\5\11\2\0\1\11\1\27" - + "\2\11\2\0\1\27\1\0\5\11\1\0\1\11\1\27" - + "\1\11\1\0\1\30\1\31\3\11\1\32\1\0\4\11" - + "\1\33\1\0\4\11\1\0\4\11\1\0\4\11\1\0" - + "\1\11\2\34\1\35\1\27\2\36"; - - private static int[] zzUnpackAction() { - int[] result = new int[106]; - int offset = 0; - offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); - return result; + private static int zzUnpackAction(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackAction(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ + /** + * Translates a state to a row index in the transition table + */ + private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; + private static final String ZZ_ROWMAP_PACKED_0 = + "\0\0\0\54\0\130\0\204\0\260\0\334\0\u0108\0\204"+ + "\0\u0134\0\u0160\0\204\0\u018c\0\204\0\u01b8\0\204\0\u01e4"+ + "\0\u0210\0\u023c\0\204\0\u0268\0\u0294\0\u02c0\0\u02ec\0\u0318"+ + "\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\204\0\334"+ + "\0\204\0\204\0\204\0\204\0\u044c\0\204\0\204\0\204"+ + "\0\204\0\204\0\204\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528"+ + "\0\u0554\0\u0580\0\u05ac\0\u05d8\0\u03f4\0\u0604\0\u039c\0\u0630"+ + "\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u06e0\0\u070c\0\u0738\0\u0764"+ + "\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0210\0\u0840\0\u0478\0\204"+ + "\0\u0210\0\u086c\0\u0898\0\u08c4\0\u0210\0\u08f0\0\u091c\0\u0948"+ + "\0\u0974\0\u09a0\0\u0210\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c"+ + "\0\u0aa8\0\u0ad4\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc"+ + "\0\u0c08\0\u0c34\0\u0c60\0\u0c8c\0\u0cb8\0\u0210\0\u0210\0\204"+ + "\0\u0ce4\0\u0210"; + + private static int [] zzUnpackRowMap() { + int [] result = new int[106]; + int offset = 0; + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackRowMap(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int high = packed.charAt(i++) << 16; + result[j++] = high | packed.charAt(i++); } + return j; + } - /** - * Translates a state to a row index in the transition table - */ - private static final int[] ZZ_ROWMAP = zzUnpackRowMap(); + /** + * The transition table of the DFA + */ + private static final int [] ZZ_TRANS = zzUnpackTrans(); - private static final String ZZ_ROWMAP_PACKED_0 - = "\0\0\0\54\0\130\0\204\0\260\0\334\0\u0108\0\204" - + "\0\u0134\0\u0160\0\204\0\u018c\0\204\0\u01b8\0\204\0\u01e4" - + "\0\u0210\0\u023c\0\204\0\u0268\0\u0294\0\u02c0\0\u02ec\0\u0318" - + "\0\u0344\0\u0370\0\u039c\0\u03c8\0\u03f4\0\u0420\0\204\0\334" - + "\0\204\0\204\0\204\0\204\0\u044c\0\204\0\204\0\204" - + "\0\204\0\204\0\204\0\u0478\0\u04a4\0\u04d0\0\u04fc\0\u0528" - + "\0\u0554\0\u0580\0\u05ac\0\u05d8\0\u03f4\0\u0604\0\u039c\0\u0630" - + "\0\u065c\0\u0688\0\u06b4\0\u06e0\0\u06e0\0\u070c\0\u0738\0\u0764" - + "\0\u0790\0\u07bc\0\u07e8\0\u0814\0\u0210\0\u0840\0\u0478\0\204" - + "\0\u0210\0\u086c\0\u0898\0\u08c4\0\u0210\0\u08f0\0\u091c\0\u0948" - + "\0\u0974\0\u09a0\0\u0210\0\u09cc\0\u09f8\0\u0a24\0\u0a50\0\u0a7c" - + "\0\u0aa8\0\u0ad4\0\u0b00\0\u0b2c\0\u0b58\0\u0b84\0\u0bb0\0\u0bdc" - + "\0\u0c08\0\u0c34\0\u0c60\0\u0c8c\0\u0cb8\0\u0210\0\u0210\0\204" - + "\0\u0ce4\0\u0210"; + private static final String ZZ_TRANS_PACKED_0 = + "\4\4\1\5\1\6\1\4\1\7\1\6\3\4\1\10"+ + "\13\7\1\4\2\7\1\4\1\7\1\4\1\7\1\4"+ + "\1\7\1\4\3\7\1\4\1\7\1\4\1\7\1\4"+ + "\1\5\1\4\1\11\1\12\1\13\36\11\1\14\3\11"+ + "\1\15\6\11\1\4\1\16\1\17\1\20\1\4\1\21"+ + "\1\4\2\21\1\22\1\4\1\23\1\4\1\24\1\25"+ + "\1\26\1\21\1\27\3\21\1\30\2\21\1\31\1\32"+ + "\1\21\1\33\1\34\1\35\1\21\1\4\1\21\1\4"+ + "\1\21\1\36\1\21\1\37\1\21\1\4\1\21\3\4"+ + "\60\0\1\5\45\0\1\5\6\0\5\40\1\41\2\0"+ + "\13\40\1\0\4\40\1\0\1\40\1\0\1\40\1\0"+ + "\3\40\1\0\1\40\1\0\1\40\2\0\1\40\5\0"+ + "\2\40\3\7\1\41\2\0\13\7\1\0\4\7\1\0"+ + "\1\7\1\0\1\7\1\0\3\7\1\0\1\7\1\0"+ + "\1\7\2\0\1\40\1\11\2\0\36\11\1\0\3\11"+ + "\1\0\6\11\2\0\1\13\51\0\1\42\2\0\12\42"+ + "\1\43\1\44\1\45\1\42\1\46\3\42\1\47\13\42"+ + "\1\50\3\42\1\51\1\52\1\53\1\54\5\0\1\17"+ + "\51\0\1\20\2\0\51\20\5\0\5\21\3\0\13\21"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\11\0\1\22"+ + "\6\0\1\55\12\0\1\22\1\0\1\56\1\55\22\0"+ + "\5\21\3\0\1\21\1\57\11\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\60"+ + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\10\21\1\61\2\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\62"+ + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\2\21\1\63\10\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\11\0\1\22\17\0\1\64\1\0"+ + "\1\33\1\0\1\65\23\0\5\21\3\0\10\21\1\66"+ + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\11\0"+ + "\1\67\6\0\1\55\12\0\1\67\1\0\1\56\1\55"+ + "\22\0\5\21\3\0\5\21\1\70\5\21\1\0\4\21"+ + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ + "\1\0\1\21\2\0\1\21\11\0\1\56\21\0\1\56"+ + "\25\0\5\21\3\0\13\21\1\0\4\21\1\0\1\21"+ + "\1\0\1\21\1\0\2\21\1\71\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\11\0\1\72\6\0\3\72\3\0"+ + "\1\72\4\0\1\72\2\0\1\72\1\0\1\72\2\0"+ + "\1\72\2\0\1\72\16\0\1\73\6\0\3\73\3\0"+ + "\1\73\4\0\1\73\2\0\1\73\1\0\1\73\2\0"+ + "\1\73\2\0\1\73\16\0\1\74\16\0\1\75\2\0"+ + "\1\74\3\0\1\75\25\0\1\56\6\0\1\55\12\0"+ + "\1\56\2\0\1\55\22\0\5\21\3\0\2\21\1\76"+ + "\10\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\13\21\1\0\4\21\1\0\1\21\1\0"+ + "\1\21\1\0\1\77\2\21\1\0\1\21\1\0\1\21"+ + "\2\0\1\21\5\0\5\21\3\0\11\21\1\100\1\21"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ + "\3\0\6\21\1\101\4\21\1\0\4\21\1\0\1\21"+ + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ + "\2\0\1\21\5\0\5\21\3\0\6\21\1\102\4\21"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\103"+ + "\33\0\5\21\3\0\4\21\1\104\6\21\1\0\4\21"+ + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\13\21"+ + "\1\0\3\21\1\105\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\10\21\1\106\2\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\11\0\1\107\6\0\3\107\3\0"+ + "\1\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0"+ + "\1\107\2\0\1\107\16\0\1\110\6\0\3\110\3\0"+ + "\1\110\4\0\1\110\2\0\1\110\1\0\1\110\2\0"+ + "\1\110\2\0\1\110\16\0\1\74\21\0\1\74\25\0"+ + "\5\21\3\0\3\21\1\111\7\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\112"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ + "\3\0\3\21\1\113\7\21\1\0\4\21\1\0\1\21"+ + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ + "\2\0\1\21\5\0\5\21\3\0\7\21\1\114\3\21"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ + "\3\0\6\21\1\115\4\21\1\0\4\21\1\0\1\21"+ + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ + "\2\0\1\21\21\0\1\116\37\0\5\21\3\0\12\21"+ + "\1\117\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\7\21\1\120\3\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\7\21\1\121"+ + "\3\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\4\21\1\122\6\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\123"+ + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0"+ + "\1\124\31\0\5\21\3\0\10\21\1\125\2\21\1\0"+ + "\4\21\1\0\1\21\1\0\1\21\1\0\3\21\1\0"+ + "\1\21\1\0\1\21\2\0\1\21\5\0\5\21\3\0"+ + "\1\126\12\21\1\0\4\21\1\0\1\21\1\0\1\21"+ + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ + "\5\0\5\21\3\0\1\127\12\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\130"+ + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\131"+ + "\33\0\5\21\3\0\12\21\1\132\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\133"+ + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0"+ + "\5\21\3\0\3\21\1\134\7\21\1\0\4\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21\5\0\5\21\3\0\10\21\1\135"+ + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0"+ + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0"+ + "\1\136\31\0\5\21\3\0\1\137\12\21\1\0\4\21"+ + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\10\21"+ + "\1\140\2\21\1\0\4\21\1\0\1\21\1\0\1\21"+ + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ + "\5\0\5\21\3\0\1\21\1\141\11\21\1\0\4\21"+ + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21"+ + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\3\21"+ + "\1\142\7\21\1\0\4\21\1\0\1\21\1\0\1\21"+ + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21"+ + "\15\0\1\143\43\0\5\21\3\0\13\21\1\0\1\21"+ + "\1\105\2\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ + "\3\0\1\144\12\21\1\0\4\21\1\0\1\21\1\0"+ + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0"+ + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21"+ + "\1\146\1\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21"+ + "\3\0\11\21\1\147\1\21\1\0\4\21\1\0\1\21"+ + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21"+ + "\2\0\1\21\32\0\1\150\26\0\4\21\1\151\3\0"+ + "\13\21\1\0\2\21\1\152\1\21\1\0\1\21\1\0"+ + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0"+ + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21"+ + "\1\145\1\21\1\0\1\21\1\0\1\21\1\0\3\21"+ + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\4\21"+ + "\1\151\3\0\13\21\1\0\2\21\1\151\1\21\1\0"+ + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0"+ + "\1\21\2\0\1\21"; - private static int[] zzUnpackRowMap() { - int[] result = new int[106]; - int offset = 0; - offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); - return result; + private static int [] zzUnpackTrans() { + int [] result = new int[3344]; + int offset = 0; + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackTrans(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + value--; + do result[j++] = value; while (--count > 0); } + return j; + } - private static int zzUnpackRowMap(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ - int j = offset; /* index in unpacked array */ + /* error codes */ + private static final int ZZ_UNKNOWN_ERROR = 0; + private static final int ZZ_NO_MATCH = 1; + private static final int ZZ_PUSHBACK_2BIG = 2; - int l = packed.length(); - while (i < l) { - int high = packed.charAt(i++) << 16; - result[j++] = high | packed.charAt(i++); - } - return j; + /* error messages for the codes above */ + private static final String ZZ_ERROR_MSG[] = { + "Unkown internal scanner error", + "Error: could not match input", + "Error: pushback value was too large" + }; + + /** + * ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ + private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); + + private static final String ZZ_ATTRIBUTE_PACKED_0 = + "\3\0\1\11\3\1\1\11\2\1\1\11\1\1\1\11"+ + "\1\1\1\11\3\1\1\11\13\1\1\11\1\0\4\11"+ + "\1\1\6\11\1\1\1\0\6\1\2\0\4\1\2\0"+ + "\1\1\1\0\5\1\1\0\3\1\1\0\1\11\5\1"+ + "\1\0\5\1\1\0\4\1\1\0\4\1\1\0\4\1"+ + "\1\0\4\1\1\11\2\1"; + + private static int [] zzUnpackAttribute() { + int [] result = new int[106]; + int offset = 0; + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); + return result; + } + + private static int zzUnpackAttribute(String packed, int offset, int [] result) { + int i = 0; /* index in packed string */ + int j = offset; /* index in unpacked array */ + int l = packed.length(); + while (i < l) { + int count = packed.charAt(i++); + int value = packed.charAt(i++); + do result[j++] = value; while (--count > 0); } + return j; + } - /** - * The transition table of the DFA - */ - private static final int[] ZZ_TRANS = zzUnpackTrans(); + /** the input device */ + private java.io.Reader zzReader; - private static final String ZZ_TRANS_PACKED_0 - = "\4\4\1\5\1\6\1\4\1\7\1\6\3\4\1\10" - + "\13\7\1\4\2\7\1\4\1\7\1\4\1\7\1\4" - + "\1\7\1\4\3\7\1\4\1\7\1\4\1\7\1\4" - + "\1\5\1\4\1\11\1\12\1\13\36\11\1\14\3\11" - + "\1\15\6\11\1\4\1\16\1\17\1\20\1\4\1\21" - + "\1\4\2\21\1\22\1\4\1\23\1\4\1\24\1\25" - + "\1\26\1\21\1\27\3\21\1\30\2\21\1\31\1\32" - + "\1\21\1\33\1\34\1\35\1\21\1\4\1\21\1\4" - + "\1\21\1\36\1\21\1\37\1\21\1\4\1\21\3\4" - + "\60\0\1\5\45\0\1\5\6\0\5\40\1\41\2\0" - + "\13\40\1\0\4\40\1\0\1\40\1\0\1\40\1\0" - + "\3\40\1\0\1\40\1\0\1\40\2\0\1\40\5\0" - + "\2\40\3\7\1\41\2\0\13\7\1\0\4\7\1\0" - + "\1\7\1\0\1\7\1\0\3\7\1\0\1\7\1\0" - + "\1\7\2\0\1\40\1\11\2\0\36\11\1\0\3\11" - + "\1\0\6\11\2\0\1\13\51\0\1\42\2\0\12\42" - + "\1\43\1\44\1\45\1\42\1\46\3\42\1\47\13\42" - + "\1\50\3\42\1\51\1\52\1\53\1\54\5\0\1\17" - + "\51\0\1\20\2\0\51\20\5\0\5\21\3\0\13\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\11\0\1\22" - + "\6\0\1\55\12\0\1\22\1\0\1\56\1\55\22\0" - + "\5\21\3\0\1\21\1\57\11\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\60" - + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\10\21\1\61\2\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\62" - + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\2\21\1\63\10\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\22\17\0\1\64\1\0" - + "\1\33\1\0\1\65\23\0\5\21\3\0\10\21\1\66" - + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\11\0" - + "\1\67\6\0\1\55\12\0\1\67\1\0\1\56\1\55" - + "\22\0\5\21\3\0\5\21\1\70\5\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\11\0\1\56\21\0\1\56" - + "\25\0\5\21\3\0\13\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\2\21\1\71\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\72\6\0\3\72\3\0" - + "\1\72\4\0\1\72\2\0\1\72\1\0\1\72\2\0" - + "\1\72\2\0\1\72\16\0\1\73\6\0\3\73\3\0" - + "\1\73\4\0\1\73\2\0\1\73\1\0\1\73\2\0" - + "\1\73\2\0\1\73\16\0\1\74\16\0\1\75\2\0" - + "\1\74\3\0\1\75\25\0\1\56\6\0\1\55\12\0" - + "\1\56\2\0\1\55\22\0\5\21\3\0\2\21\1\76" - + "\10\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\13\21\1\0\4\21\1\0\1\21\1\0" - + "\1\21\1\0\1\77\2\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\11\21\1\100\1\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\6\21\1\101\4\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\6\21\1\102\4\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\103" - + "\33\0\5\21\3\0\4\21\1\104\6\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\13\21" - + "\1\0\3\21\1\105\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\10\21\1\106\2\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\11\0\1\107\6\0\3\107\3\0" - + "\1\107\4\0\1\107\2\0\1\107\1\0\1\107\2\0" - + "\1\107\2\0\1\107\16\0\1\110\6\0\3\110\3\0" - + "\1\110\4\0\1\110\2\0\1\110\1\0\1\110\2\0" - + "\1\110\2\0\1\110\16\0\1\74\21\0\1\74\25\0" - + "\5\21\3\0\3\21\1\111\7\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\112" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\3\21\1\113\7\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\5\0\5\21\3\0\7\21\1\114\3\21" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\6\21\1\115\4\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\21\0\1\116\37\0\5\21\3\0\12\21" - + "\1\117\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\7\21\1\120\3\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\7\21\1\121" - + "\3\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\4\21\1\122\6\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\3\21\1\123" - + "\7\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" - + "\1\124\31\0\5\21\3\0\10\21\1\125\2\21\1\0" - + "\4\21\1\0\1\21\1\0\1\21\1\0\3\21\1\0" - + "\1\21\1\0\1\21\2\0\1\21\5\0\5\21\3\0" - + "\1\126\12\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\5\0\5\21\3\0\1\127\12\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\12\21\1\130" - + "\1\0\4\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\25\0\1\131" - + "\33\0\5\21\3\0\12\21\1\132\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\5\21\1\133" - + "\5\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\5\0" - + "\5\21\3\0\3\21\1\134\7\21\1\0\4\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21\5\0\5\21\3\0\10\21\1\135" - + "\2\21\1\0\4\21\1\0\1\21\1\0\1\21\1\0" - + "\3\21\1\0\1\21\1\0\1\21\2\0\1\21\27\0" - + "\1\136\31\0\5\21\3\0\1\137\12\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\10\21" - + "\1\140\2\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\5\0\5\21\3\0\1\21\1\141\11\21\1\0\4\21" - + "\1\0\1\21\1\0\1\21\1\0\3\21\1\0\1\21" - + "\1\0\1\21\2\0\1\21\5\0\5\21\3\0\3\21" - + "\1\142\7\21\1\0\4\21\1\0\1\21\1\0\1\21" - + "\1\0\3\21\1\0\1\21\1\0\1\21\2\0\1\21" - + "\15\0\1\143\43\0\5\21\3\0\13\21\1\0\1\21" - + "\1\105\2\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\1\144\12\21\1\0\4\21\1\0\1\21\1\0" - + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" - + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" - + "\1\146\1\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\5\21" - + "\3\0\11\21\1\147\1\21\1\0\4\21\1\0\1\21" - + "\1\0\1\21\1\0\3\21\1\0\1\21\1\0\1\21" - + "\2\0\1\21\32\0\1\150\26\0\4\21\1\151\3\0" - + "\13\21\1\0\2\21\1\152\1\21\1\0\1\21\1\0" - + "\1\21\1\0\3\21\1\0\1\21\1\0\1\21\2\0" - + "\1\21\5\0\4\21\1\145\3\0\13\21\1\0\2\21" - + "\1\145\1\21\1\0\1\21\1\0\1\21\1\0\3\21" - + "\1\0\1\21\1\0\1\21\2\0\1\21\5\0\4\21" - + "\1\151\3\0\13\21\1\0\2\21\1\151\1\21\1\0" - + "\1\21\1\0\1\21\1\0\3\21\1\0\1\21\1\0" - + "\1\21\2\0\1\21"; + /** the current state of the DFA */ + private int zzState; - private static int[] zzUnpackTrans() { - int[] result = new int[3344]; - int offset = 0; - offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); - return result; - } + /** the current lexical state */ + private int zzLexicalState = YYINITIAL; - private static int zzUnpackTrans(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - int j = offset; /* index in unpacked array */ + /** the textposition at the last accepting state */ + private int zzMarkedPos; - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - value--; - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } + /** the current text position in the buffer */ + private int zzCurrentPos; + /** startRead marks the beginning of the yytext() string in the buffer */ + private int zzStartRead; - /* error codes */ - private static final int ZZ_UNKNOWN_ERROR = 0; + /** endRead marks the last character in the buffer, that has been read + from input */ + private int zzEndRead; - private static final int ZZ_NO_MATCH = 1; + /** number of newlines encountered up to the start of the matched text */ + private int yyline; - private static final int ZZ_PUSHBACK_2BIG = 2; + /** the number of characters up to the start of the matched text */ + private int yychar; - /* error messages for the codes above */ - private static final String ZZ_ERROR_MSG[] = { - "Unkown internal scanner error", - "Error: could not match input", - "Error: pushback value was too large" - }; + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + private int yycolumn; - /** - * ZZ_ATTRIBUTE[aState] contains the attributes of state aState - */ - private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute(); + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + private boolean zzAtBOL = true; - private static final String ZZ_ATTRIBUTE_PACKED_0 - = "\3\0\1\11\3\1\1\11\2\1\1\11\1\1\1\11" - + "\1\1\1\11\3\1\1\11\13\1\1\11\1\0\4\11" - + "\1\1\6\11\1\1\1\0\6\1\2\0\4\1\2\0" - + "\1\1\1\0\5\1\1\0\3\1\1\0\1\11\5\1" - + "\1\0\5\1\1\0\4\1\1\0\4\1\1\0\4\1" - + "\1\0\4\1\1\11\2\1"; + /** zzAtEOF == true <=> the scanner is at the EOF */ + private boolean zzAtEOF; - private static int[] zzUnpackAttribute() { - int[] result = new int[106]; - int offset = 0; - offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); - return result; - } + /** denotes if the user-EOF-code has already been executed */ + private boolean zzEOFDone; + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. + */ + private int zzFinalHighSurrogate = 0; - private static int zzUnpackAttribute(String packed, int offset, int[] result) { - int i = 0; /* index in packed string */ + /* user code: */ - int j = offset; /* index in unpacked array */ - - int l = packed.length(); - while (i < l) { - int count = packed.charAt(i++); - int value = packed.charAt(i++); - do { - result[j++] = value; - } while (--count > 0); - } - return j; - } - - /** - * the input device - */ - private java.io.Reader zzReader; - - /** - * the current state of the DFA - */ - private int zzState; - - /** - * the current lexical state - */ - private int zzLexicalState = YYINITIAL; - - /** - * this buffer contains the current text to be matched and is - * the source of the yytext() string - */ - private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; - - /** - * the textposition at the last accepting state - */ - private int zzMarkedPos; - - /** - * the current text position in the buffer - */ - private int zzCurrentPos; - - /** - * startRead marks the beginning of the yytext() string in the buffer - */ - private int zzStartRead; - - /** - * endRead marks the last character in the buffer, that has been read - * from input - */ - private int zzEndRead; - - /** - * number of newlines encountered up to the start of the matched text - */ - private int yyline; - - /** - * the number of characters up to the start of the matched text - */ - private int yychar; - - /** - * the number of characters from the last newline up to the start of the - * matched text - */ - private int yycolumn; - - /** - * zzAtBOL == true <=> the scanner is currently at the beginning of a line - */ - private boolean zzAtBOL = true; - - /** - * zzAtEOF == true <=> the scanner is at the EOF - */ - private boolean zzAtEOF; - - /** - * denotes if the user-EOF-code has already been executed - */ - private boolean zzEOFDone; - - /** - * The number of occupied positions in zzBuffer beyond zzEndRead. - * When a lead/high surrogate has been read from the input stream - * into the final zzBuffer position, this will have a value of 1; - * otherwise, it will have a value of 0. - */ - private int zzFinalHighSurrogate = 0; - - /* user code: */ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); /** * Create an empty lexer, yyrset will be called later to reset and assign @@ -625,540 +579,513 @@ public final class FlasmLexer { return yyline + 1; } - /** - * Creates a new scanner - * - * @param in the java.io.Reader to read input from. - */ - public FlasmLexer(java.io.Reader in) { - this.zzReader = in; + + + /** + * Creates a new scanner + * + * @param in the java.io.Reader to read input from. + */ + public FlasmLexer(java.io.Reader in) { + this.zzReader = in; + } + + + /** + * Unpacks the compressed character translation table. + * + * @param packed the packed character translation table + * @return the unpacked character translation table + */ + private static char [] zzUnpackCMap(String packed) { + char [] map = new char[0x110000]; + int i = 0; /* index in packed string */ + int j = 0; /* index in unpacked array */ + while (i < 2854) { + int count = packed.charAt(i++); + char value = packed.charAt(i++); + do map[j++] = value; while (--count > 0); + } + return map; + } + + + /** + * Refills the input buffer. + * + * @return false, iff there was new input. + * + * @exception java.io.IOException if any I/O-Error occurs + */ + private boolean zzRefill() throws java.io.IOException { + + /* first: make room (if you can) */ + if (zzStartRead > 0) { + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + System.arraycopy(zzBuffer, zzStartRead, + zzBuffer, 0, + zzEndRead-zzStartRead); + + /* translate stored positions */ + zzEndRead-= zzStartRead; + zzCurrentPos-= zzStartRead; + zzMarkedPos-= zzStartRead; + zzStartRead = 0; } - /** - * Unpacks the compressed character translation table. - * - * @param packed the packed character translation table - * @return the unpacked character translation table - */ - private static char[] zzUnpackCMap(String packed) { - char[] map = new char[0x110000]; - int i = 0; /* index in packed string */ + /* is the buffer big enough? */ + if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { + /* if not: blow it up */ + char newBuffer[] = new char[zzBuffer.length*2]; + System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); + zzBuffer = newBuffer; + zzEndRead += zzFinalHighSurrogate; + zzFinalHighSurrogate = 0; + } - int j = 0; /* index in unpacked array */ + /* fill the buffer with new input */ + int requested = zzBuffer.length - zzEndRead; + int totalRead = 0; + while (totalRead < requested) { + int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); + if (numRead == -1) { + break; + } + totalRead += numRead; + } - while (i < 2854) { - int count = packed.charAt(i++); - char value = packed.charAt(i++); - do { - map[j++] = value; - } while (--count > 0); + if (totalRead > 0) { + zzEndRead += totalRead; + if (totalRead == requested) { /* possibly more input available */ + if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { + --zzEndRead; + zzFinalHighSurrogate = 1; } - return map; + } + return false; } - /** - * Refills the input buffer. - * - * @return false, iff there was new input. - * - * @exception java.io.IOException if any I/O-Error occurs - */ - private boolean zzRefill() throws java.io.IOException { + // totalRead = 0: End of stream + return true; + } - /* first: make room (if you can) */ - if (zzStartRead > 0) { - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; - System.arraycopy(zzBuffer, zzStartRead, - zzBuffer, 0, - zzEndRead - zzStartRead); + + /** + * Closes the input stream. + */ + public final void yyclose() throws java.io.IOException { + zzAtEOF = true; /* indicate end of file */ + zzEndRead = zzStartRead; /* invalidate buffer */ - /* translate stored positions */ - zzEndRead -= zzStartRead; - zzCurrentPos -= zzStartRead; - zzMarkedPos -= zzStartRead; - zzStartRead = 0; + if (zzReader != null) + zzReader.close(); + } + + + /** + * Resets the scanner to read from a new input stream. + * Does not close the old reader. + * + * All internal variables are reset, the old input stream + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. + * + * Internal scan buffer is resized down to its initial length, if it has grown. + * + * @param reader the new input stream + */ + public final void yyreset(java.io.Reader reader) { + zzReader = reader; + zzAtBOL = true; + zzAtEOF = false; + zzEOFDone = false; + zzEndRead = zzStartRead = 0; + zzCurrentPos = zzMarkedPos = 0; + zzFinalHighSurrogate = 0; + yyline = yychar = yycolumn = 0; + zzLexicalState = YYINITIAL; + if (zzBuffer.length > ZZ_BUFFERSIZE) + zzBuffer = new char[ZZ_BUFFERSIZE]; + } + + + /** + * Returns the current lexical state. + */ + public final int yystate() { + return zzLexicalState; + } + + + /** + * Enters a new lexical state + * + * @param newState the new lexical state + */ + public final void yybegin(int newState) { + zzLexicalState = newState; + } + + + /** + * Returns the text matched by the current regular expression. + */ + public final String yytext() { + return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); + } + + + /** + * Returns the character at position pos from the + * matched text. + * + * It is equivalent to yytext().charAt(pos), but faster + * + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. + * + * @return the character at position pos + */ + public final char yycharat(int pos) { + return zzBuffer[zzStartRead+pos]; + } + + + /** + * Returns the length of the matched text region. + */ + public final int yylength() { + return zzMarkedPos-zzStartRead; + } + + + /** + * Reports an error that occured while scanning. + * + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). + * + * Usual syntax/scanner level error handling should be done + * in error fallback rules. + * + * @param errorCode the code of the errormessage to display + */ + private void zzScanError(int errorCode) { + String message; + try { + message = ZZ_ERROR_MSG[errorCode]; + } + catch (ArrayIndexOutOfBoundsException e) { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; + } + + throw new Error(message); + } + + + /** + * Pushes the specified amount of characters back into the input stream. + * + * They will be read again by then next call of the scanning method + * + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! + */ + public void yypushback(int number) { + if ( number > yylength() ) + zzScanError(ZZ_PUSHBACK_2BIG); + + zzMarkedPos -= number; + } + + + /** + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. + * + * @return the next token + * @exception java.io.IOException if any I/O-Error occurs + */ + public ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { + int zzInput; + int zzAction; + + // cached fields: + int zzCurrentPosL; + int zzMarkedPosL; + int zzEndReadL = zzEndRead; + char [] zzBufferL = zzBuffer; + char [] zzCMapL = ZZ_CMAP; + + int [] zzTransL = ZZ_TRANS; + int [] zzRowMapL = ZZ_ROWMAP; + int [] zzAttrL = ZZ_ATTRIBUTE; + + while (true) { + zzMarkedPosL = zzMarkedPos; + + yychar+= zzMarkedPosL-zzStartRead; + + boolean zzR = false; + int zzCh; + int zzCharCount; + for (zzCurrentPosL = zzStartRead ; + zzCurrentPosL < zzMarkedPosL ; + zzCurrentPosL += zzCharCount ) { + zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); + zzCharCount = Character.charCount(zzCh); + switch (zzCh) { + case '\u000B': + case '\u000C': + case '\u0085': + case '\u2028': + case '\u2029': + yyline++; + yycolumn = 0; + zzR = false; + break; + case '\r': + yyline++; + yycolumn = 0; + zzR = true; + break; + case '\n': + if (zzR) + zzR = false; + else { + yyline++; + yycolumn = 0; + } + break; + default: + zzR = false; + yycolumn += zzCharCount; } + } - /* is the buffer big enough? */ - if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) { - /* if not: blow it up */ - char newBuffer[] = new char[zzBuffer.length * 2]; - System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); - zzBuffer = newBuffer; - zzEndRead += zzFinalHighSurrogate; - zzFinalHighSurrogate = 0; + if (zzR) { + // peek one character ahead if it is \n (if we have counted one line too much) + boolean zzPeek; + if (zzMarkedPosL < zzEndReadL) + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; + else if (zzAtEOF) + zzPeek = false; + else { + boolean eof = zzRefill(); + zzEndReadL = zzEndRead; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + if (eof) + zzPeek = false; + else + zzPeek = zzBufferL[zzMarkedPosL] == '\n'; } + if (zzPeek) yyline--; + } + zzAction = -1; - /* fill the buffer with new input */ - int requested = zzBuffer.length - zzEndRead; - int totalRead = 0; - while (totalRead < requested) { - int numRead = zzReader.read(zzBuffer, zzEndRead + totalRead, requested - totalRead); - if (numRead == -1) { - break; - } - totalRead += numRead; - } + zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + + zzState = ZZ_LEXSTATE[zzLexicalState]; - if (totalRead > 0) { - zzEndRead += totalRead; - if (totalRead == requested) { /* possibly more input available */ + // set up zzAction for empty match case: + int zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + } - if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) { - --zzEndRead; - zzFinalHighSurrogate = 1; - } - } - return false; - } - - // totalRead = 0: End of stream - return true; - } - - /** - * Closes the input stream. - */ - public final void yyclose() throws java.io.IOException { - zzAtEOF = true; /* indicate end of file */ - - zzEndRead = zzStartRead; /* invalidate buffer */ - - if (zzReader != null) { - zzReader.close(); - } - } - - /** - * Resets the scanner to read from a new input stream. - * Does not close the old reader. - * - * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). - * Lexical state is set to ZZ_INITIAL. - * - * Internal scan buffer is resized down to its initial length, if it has - * grown. - * - * @param reader the new input stream - */ - public final void yyreset(java.io.Reader reader) { - zzReader = reader; - zzAtBOL = true; - zzAtEOF = false; - zzEOFDone = false; - zzEndRead = zzStartRead = 0; - zzCurrentPos = zzMarkedPos = 0; - zzFinalHighSurrogate = 0; - yyline = yychar = yycolumn = 0; - zzLexicalState = YYINITIAL; - if (zzBuffer.length > ZZ_BUFFERSIZE) { - zzBuffer = new char[ZZ_BUFFERSIZE]; - } - } - - /** - * Returns the current lexical state. - */ - public final int yystate() { - return zzLexicalState; - } - - /** - * Enters a new lexical state - * - * @param newState the new lexical state - */ - public final void yybegin(int newState) { - zzLexicalState = newState; - } - - /** - * Returns the text matched by the current regular expression. - */ - public final String yytext() { - return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); - } - - /** - * Returns the character at position pos from the - * matched text. - * - * It is equivalent to yytext().charAt(pos), but faster - * - * @param pos the position of the character to fetch. - * A value from 0 to yylength()-1. - * - * @return the character at position pos - */ - public final char yycharat(int pos) { - return zzBuffer[zzStartRead + pos]; - } - - /** - * Returns the length of the matched text region. - */ - public final int yylength() { - return zzMarkedPos - zzStartRead; - } - - /** - * Reports an error that occured while scanning. - * - * In a wellformed scanner (no or only correct usage of - * yypushback(int) and a match-all fallback rule) this method - * will only be called with things that "Can't Possibly Happen". - * If this method is called, something is seriously wrong - * (e.g. a JFlex bug producing a faulty scanner etc.). - * - * Usual syntax/scanner level error handling should be done - * in error fallback rules. - * - * @param errorCode the code of the errormessage to display - */ - private void zzScanError(int errorCode) { - String message; - try { - message = ZZ_ERROR_MSG[errorCode]; - } catch (ArrayIndexOutOfBoundsException e) { - message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; - } - - throw new Error(message); - } - - /** - * Pushes the specified amount of characters back into the input stream. - * - * They will be read again by then next call of the scanning method - * - * @param number the number of characters to be read again. - * This number must not be greater than yylength()! - */ - public void yypushback(int number) { - if (number > yylength()) { - zzScanError(ZZ_PUSHBACK_2BIG); - } - - zzMarkedPos -= number; - } - - /** - * Resumes scanning until the next regular expression is matched, - * the end of input is encountered or an I/O-Error occurs. - * - * @return the next token - * @exception java.io.IOException if any I/O-Error occurs - */ - public ASMParsedSymbol yylex() throws java.io.IOException, ActionParseException { - int zzInput; - int zzAction; - - // cached fields: - int zzCurrentPosL; - int zzMarkedPosL; - int zzEndReadL = zzEndRead; - char[] zzBufferL = zzBuffer; - char[] zzCMapL = ZZ_CMAP; - - int[] zzTransL = ZZ_TRANS; - int[] zzRowMapL = ZZ_ROWMAP; - int[] zzAttrL = ZZ_ATTRIBUTE; + zzForAction: { while (true) { - zzMarkedPosL = zzMarkedPos; - - yychar += zzMarkedPosL - zzStartRead; - - boolean zzR = false; - int zzCh; - int zzCharCount; - for (zzCurrentPosL = zzStartRead; - zzCurrentPosL < zzMarkedPosL; - zzCurrentPosL += zzCharCount) { - zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL); - zzCharCount = Character.charCount(zzCh); - switch (zzCh) { - case '\u000B': - case '\u000C': - case '\u0085': - case '\u2028': - case '\u2029': - yyline++; - yycolumn = 0; - zzR = false; - break; - case '\r': - yyline++; - yycolumn = 0; - zzR = true; - break; - case '\n': - if (zzR) { - zzR = false; - } else { - yyline++; - yycolumn = 0; - } - break; - default: - zzR = false; - yycolumn += zzCharCount; - } + + if (zzCurrentPosL < zzEndReadL) { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); + } + else if (zzAtEOF) { + zzInput = YYEOF; + break zzForAction; + } + else { + // store back cached positions + zzCurrentPos = zzCurrentPosL; + zzMarkedPos = zzMarkedPosL; + boolean eof = zzRefill(); + // get translated positions and possibly new buffer + zzCurrentPosL = zzCurrentPos; + zzMarkedPosL = zzMarkedPos; + zzBufferL = zzBuffer; + zzEndReadL = zzEndRead; + if (eof) { + zzInput = YYEOF; + break zzForAction; } - - if (zzR) { - // peek one character ahead if it is \n (if we have counted one line too much) - boolean zzPeek; - if (zzMarkedPosL < zzEndReadL) { - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - } else if (zzAtEOF) { - zzPeek = false; - } else { - boolean eof = zzRefill(); - zzEndReadL = zzEndRead; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - if (eof) { - zzPeek = false; - } else { - zzPeek = zzBufferL[zzMarkedPosL] == '\n'; - } - } - if (zzPeek) { - yyline--; - } + else { + zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); + zzCurrentPosL += Character.charCount(zzInput); } - zzAction = -1; + } + int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; + if (zzNext == -1) break zzForAction; + zzState = zzNext; - zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; + zzAttributes = zzAttrL[zzState]; + if ( (zzAttributes & 1) == 1 ) { + zzAction = zzState; + zzMarkedPosL = zzCurrentPosL; + if ( (zzAttributes & 8) == 8 ) break zzForAction; + } - zzState = ZZ_LEXSTATE[zzLexicalState]; - - // set up zzAction for empty match case: - int zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - } - - zzForAction: - { - while (true) { - - if (zzCurrentPosL < zzEndReadL) { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } else if (zzAtEOF) { - zzInput = YYEOF; - break zzForAction; - } else { - // store back cached positions - zzCurrentPos = zzCurrentPosL; - zzMarkedPos = zzMarkedPosL; - boolean eof = zzRefill(); - // get translated positions and possibly new buffer - zzCurrentPosL = zzCurrentPos; - zzMarkedPosL = zzMarkedPos; - zzBufferL = zzBuffer; - zzEndReadL = zzEndRead; - if (eof) { - zzInput = YYEOF; - break zzForAction; - } else { - zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL); - zzCurrentPosL += Character.charCount(zzInput); - } - } - int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]]; - if (zzNext == -1) { - break zzForAction; - } - zzState = zzNext; - - zzAttributes = zzAttrL[zzState]; - if ((zzAttributes & 1) == 1) { - zzAction = zzState; - zzMarkedPosL = zzCurrentPosL; - if ((zzAttributes & 8) == 8) { - break zzForAction; - } - } - - } - } - - // store back cached position - zzMarkedPos = zzMarkedPosL; - - switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 1: { - } - case 31: - break; - case 2: { - yybegin(PARAMETERS); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); - } - case 32: - break; - case 3: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); - } - case 33: - break; - case 4: { - string.append(yytext()); - } - case 34: - break; - case 5: { - throw new ActionParseException("Unterminated string at end of line", yyline + 1); - } - case 35: - break; - case 6: { - yybegin(PARAMETERS); - // length also includes the trailing quote - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); - } - case 36: - break; - case 7: { - yybegin(YYINITIAL); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); - } - case 37: - break; - case 8: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); - } - case 38: - break; - case 9: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); - } - case 39: - break; - case 10: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); - } - case 40: - break; - case 11: { - yybegin(YYINITIAL); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); - } - case 41: - break; - case 12: { - yybegin(STRING); - string.setLength(0); - } - case 42: - break; - case 13: { - String s = yytext(); - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); - } - case 43: - break; - case 14: { - throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); - } - case 44: - break; - case 15: { - string.append('\t'); - } - case 45: - break; - case 16: { - string.append('\r'); - } - case 46: - break; - case 17: { - string.append('\f'); - } - case 47: - break; - case 18: { - string.append('\n'); - } - case 48: - break; - case 19: { - string.append('\\'); - } - case 49: - break; - case 20: { - string.append('\"'); - } - case 50: - break; - case 21: { - string.append('\b'); - } - case 51: - break; - case 22: { - string.append('\''); - } - case 52: - break; - case 23: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); - } - case 53: - break; - case 24: { - char val = (char) Integer.parseInt(yytext().substring(2), 16); - string.append(val); - } - case 54: - break; - case 25: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.TRUE); - } - case 55: - break; - case 26: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, new Null()); - } - case 56: - break; - case 27: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN, Boolean.FALSE); - } - case 57: - break; - case 28: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); - } - case 58: - break; - case 29: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, new Undefined()); - } - case 59: - break; - case 30: { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); - } - case 60: - break; - default: - if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { - zzAtEOF = true; - { - return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); - } - } else { - zzScanError(ZZ_NO_MATCH); - } - } } + } + + // store back cached position + zzMarkedPos = zzMarkedPosL; + + switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { + case 1: + { + } + case 31: break; + case 2: + { yybegin(PARAMETERS); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INSTRUCTION_NAME, yytext()); + } + case 32: break; + case 3: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_END); + } + case 33: break; + case 4: + { string.append(yytext()); + } + case 34: break; + case 5: + { throw new ActionParseException("Unterminated string at end of line", yyline + 1); + } + case 35: break; + case 6: + { yybegin(PARAMETERS); + // length also includes the trailing quote + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_STRING, string.toString()); + } + case 36: break; + case 7: + { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOL); + } + case 37: break; + case 8: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_COMMENT, yytext().substring(1)); + } + case 38: break; + case 9: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_IDENTIFIER, yytext()); + } + case 39: break; + case 10: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_INTEGER, Long.parseLong((yytext()))); + } + case 40: break; + case 11: + { yybegin(YYINITIAL); return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BLOCK_START); + } + case 41: break; + case 12: + { yybegin(STRING); + string.setLength(0); + } + case 42: break; + case 13: + { String s=yytext(); + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_LABEL, s.substring(0, s.length() - 1)); + } + case 43: break; + case 14: + { throw new ActionParseException("Illegal escape sequence \"" + yytext() + "\"", yyline + 1); + } + case 44: break; + case 15: + { string.append('\t'); + } + case 45: break; + case 16: + { string.append('\r'); + } + case 46: break; + case 17: + { string.append('\f'); + } + case 47: break; + case 18: + { string.append('\n'); + } + case 48: break; + case 19: + { string.append('\\'); + } + case 49: break; + case 20: + { string.append('\"'); + } + case 50: break; + case 21: + { string.append('\b'); + } + case 51: break; + case 22: + { string.append('\''); + } + case 52: break; + case 23: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_FLOAT, Double.parseDouble((yytext()))); + } + case 53: break; + case 24: + { char val = (char) Integer.parseInt(yytext().substring(2), 16); + string.append(val); + } + case 54: break; + case 25: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.TRUE); + } + case 55: break; + case 26: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_NULL, Null.INSTANCE); + } + case 56: break; + case 27: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_BOOLEAN,Boolean.FALSE); + } + case 57: break; + case 28: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_REGISTER, new RegisterNumber(Integer.parseInt(yytext().substring(8)))); + } + case 58: break; + case 29: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_UNDEFINED, Undefined.INSTANCE); + } + case 59: break; + case 30: + { return new ASMParsedSymbol(ASMParsedSymbol.TYPE_CONSTANT, new ConstantIndex(Integer.parseInt(yytext().substring(8)))); + } + case 60: break; + default: + if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { + zzAtEOF = true; + { + return new ASMParsedSymbol(ASMParsedSymbol.TYPE_EOF); + } + } + else { + zzScanError(ZZ_NO_MATCH); + } + } } + } + + } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java index 7879d386c..bec89845c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScript2Parser.java @@ -947,7 +947,7 @@ public class ActionScript2Parser { List args = call(inFunction, inMethod, variables); VariableActionItem supItem = new VariableActionItem(s.value.toString(), null, false); variables.add(supItem); - ret = new CallMethodActionItem(null, supItem, new DirectValueActionItem(null, 0, new Undefined(), constantPool), args); + ret = new CallMethodActionItem(null, supItem, new DirectValueActionItem(null, 0, Undefined.INSTANCE, constantPool), args); } else {//no costructor call, but it could be calling parent methods... => handle in expression lexer.pushback(ss2); lexer.pushback(s); @@ -1142,7 +1142,7 @@ public class ActionScript2Parser { case RETURN: GraphTargetItem retexpr = expression(inFunction, inMethod, true, variables); if (retexpr == null) { - retexpr = new DirectValueActionItem(null, 0, new Undefined(), new ArrayList<>()); + retexpr = new DirectValueActionItem(null, 0, Undefined.INSTANCE, new ArrayList<>()); } ret = new ReturnActionItem(null, retexpr); break; @@ -1621,11 +1621,11 @@ public class ActionScript2Parser { break; case NULL: - ret = new DirectValueActionItem(null, 0, new Null(), new ArrayList<>()); + ret = new DirectValueActionItem(null, 0, Null.INSTANCE, new ArrayList<>()); break; case UNDEFINED: - ret = new DirectValueActionItem(null, 0, new Undefined(), new ArrayList<>()); + ret = new DirectValueActionItem(null, 0, Undefined.INSTANCE, new ArrayList<>()); break; case FALSE: ret = new DirectValueActionItem(null, 0, Boolean.FALSE, new ArrayList<>()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java index 6479a01e5..e4db5f1d2 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionScriptLexer.java @@ -27,7 +27,7 @@ import java.util.Stack; * This class is a scanner generated by * JFlex 1.6.0 * from the specification file - * C:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/actionscript_script.flex + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/actionscript_script.flex */ public final class ActionScriptLexer { @@ -1268,7 +1268,7 @@ public final class ActionScriptLexer { private int zzFinalHighSurrogate = 0; /* user code: */ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); private static String xmlTagName = ""; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java index d54f73c72..e95a2d396 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/parser/script/ActionSourceGenerator.java @@ -723,7 +723,7 @@ public class ActionSourceGenerator implements SourceGenerator { if (!isInterface) { ifbody.add(new ActionPush((Long) 1L)); - ifbody.add(new ActionPush(new Null())); + ifbody.add(new ActionPush(Null.INSTANCE)); ifbody.addAll(typeToActions(globalClassTypeStr, null)); ifbody.add(pushConst("prototype")); ifbody.add(new ActionGetMember()); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java index 8060af533..c29232c5f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/swf4/ActionPush.java @@ -99,10 +99,10 @@ public class ActionPush extends Action { values.add(sis.readFLOAT("float")); break; case 2: - values.add(new Null()); + values.add(Null.INSTANCE); break; case 3: - values.add(new Undefined()); + values.add(Undefined.INSTANCE); break; case 4: values.add(new RegisterNumber(sis.readUI8("registerNumber"))); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java index 8c84fe5ae..a3abfd024 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/EcmaScript.java @@ -1,18 +1,19 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.ecma; /** @@ -93,11 +94,8 @@ public class EcmaScript { if (type(px) != EcmaType.STRING || type(py) != EcmaType.STRING) { Double nx = toNumber(px); Double ny = toNumber(py); - if (nx.isNaN()) { - return new Undefined(); - } - if (ny.isNaN()) { - return new Undefined(); + if (nx.isNaN() || ny.isNaN()) { + return Undefined.INSTANCE; } if ((nx).compareTo(ny) == 0) { return false; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Null.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Null.java index cdc4ffd42..c0ea6f10d 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Null.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Null.java @@ -1,24 +1,30 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.ecma; import java.io.Serializable; public class Null implements Serializable { + public static Null INSTANCE = new Null(); + + private Null() { + } + @Override public String toString() { return "null"; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Undefined.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Undefined.java index 7644fc27d..3082a190b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Undefined.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ecma/Undefined.java @@ -1,24 +1,30 @@ /* * Copyright (C) 2010-2015 JPEXS, All rights reserved. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3.0 of the License, or (at your option) any later version. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public - * License along with this library. */ + * License along with this library. + */ package com.jpexs.decompiler.flash.ecma; import java.io.Serializable; public class Undefined implements Serializable { + public static Undefined INSTANCE = new Undefined(); + + private Undefined() { + } + @Override public String toString() { return "undefined"; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java index a69cc3a34..ba771f9b5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/tags/text/TextLexer.java @@ -22,7 +22,7 @@ package com.jpexs.decompiler.flash.tags.text; * This class is a scanner generated by * JFlex 1.6.0 * from the specification file - * C:/Projects/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/text.flex + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/text.flex */ public final class TextLexer { @@ -303,7 +303,7 @@ public final class TextLexer { private int zzFinalHighSurrogate = 0; /* user code: */ - StringBuffer string = null; + StringBuilder string = null; boolean finish = false; @@ -696,7 +696,7 @@ public final class TextLexer { switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 1: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append(yytext()); } @@ -716,7 +716,7 @@ public final class TextLexer { case 3: { if (!parameter) { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append(yytext()); } @@ -752,7 +752,7 @@ public final class TextLexer { break; case 9: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append(']'); } @@ -760,7 +760,7 @@ public final class TextLexer { break; case 10: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('['); } @@ -768,7 +768,7 @@ public final class TextLexer { break; case 11: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\\'); } @@ -776,7 +776,7 @@ public final class TextLexer { break; case 12: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\b'); } @@ -784,7 +784,7 @@ public final class TextLexer { break; case 13: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\t'); } @@ -792,7 +792,7 @@ public final class TextLexer { break; case 14: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\n'); } @@ -800,7 +800,7 @@ public final class TextLexer { break; case 15: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\f'); } @@ -808,7 +808,7 @@ public final class TextLexer { break; case 16: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\r'); } @@ -816,7 +816,7 @@ public final class TextLexer { break; case 17: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\"'); } @@ -824,7 +824,7 @@ public final class TextLexer { break; case 18: { if (string == null) { - string = new StringBuffer(); + string = new StringBuilder(); } string.append('\''); } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/parser/ConditionLexer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/parser/ConditionLexer.java index e87cfe188..bc1602bb7 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/parser/ConditionLexer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/types/annotations/parser/ConditionLexer.java @@ -22,8 +22,9 @@ import java.util.Stack; /** * This class is a scanner generated by - * JFlex 1.6.0 from the specification file - * D:/Dropbox/Programovani/JavaSE/FFDec/libsrc/ffdec_lib/lexers/tag_conditions.flex + * JFlex 1.6.0 + * from the specification file + * C:/FFDec/jpexs-decompiler/libsrc/ffdec_lib/lexers/tag_conditions.flex */ public final class ConditionLexer { @@ -44,8 +45,9 @@ public final class ConditionLexer { /** * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l - * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l at the - * beginning of a line l is of the form l = 2*k, k a non negative integer + * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l + * at the beginning of a line + * l is of the form l = 2*k, k a non negative integer */ private static final int ZZ_LEXSTATE[] = { 0, 0 @@ -221,8 +223,8 @@ public final class ConditionLexer { private int zzLexicalState = YYINITIAL; /** - * this buffer contains the current text to be matched and is the source of - * the yytext() string + * this buffer contains the current text to be matched and is + * the source of the yytext() string */ private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; @@ -242,8 +244,8 @@ public final class ConditionLexer { private int zzStartRead; /** - * endRead marks the last character in the buffer, that has been read from - * input + * endRead marks the last character in the buffer, that has been read + * from input */ private int zzEndRead; @@ -279,10 +281,10 @@ public final class ConditionLexer { private boolean zzEOFDone; /** - * The number of occupied positions in zzBuffer beyond zzEndRead. When a - * lead/high surrogate has been read from the input stream into the final - * zzBuffer position, this will have a value of 1; otherwise, it will have a - * value of 0. + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer position, this will have a value of 1; + * otherwise, it will have a value of 0. */ private int zzFinalHighSurrogate = 0; @@ -413,8 +415,6 @@ public final class ConditionLexer { /** * Closes the input stream. - * - * @throws java.io.IOException */ public final void yyclose() throws java.io.IOException { zzAtEOF = true; /* indicate end of file */ @@ -427,12 +427,12 @@ public final class ConditionLexer { } /** - * Resets the scanner to read from a new input stream. Does not close the - * old reader. + * Resets the scanner to read from a new input stream. + * Does not close the old reader. * * All internal variables are reset, the old input stream - * cannot be reused (internal buffer is discarded and lost). Lexical - * state is set to ZZ_INITIAL. + * cannot be reused (internal buffer is discarded and lost). + * Lexical state is set to ZZ_INITIAL. * * Internal scan buffer is resized down to its initial length, if it has * grown. @@ -456,8 +456,6 @@ public final class ConditionLexer { /** * Returns the current lexical state. - * - * @return */ public final int yystate() { return zzLexicalState; @@ -474,20 +472,19 @@ public final class ConditionLexer { /** * Returns the text matched by the current regular expression. - * - * @return */ public final String yytext() { return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead); } /** - * Returns the character at position pos from the matched text. + * Returns the character at position pos from the + * matched text. * * It is equivalent to yytext().charAt(pos), but faster * - * @param pos the position of the character to fetch. A value from 0 to - * yylength()-1. + * @param pos the position of the character to fetch. + * A value from 0 to yylength()-1. * * @return the character at position pos */ @@ -497,8 +494,6 @@ public final class ConditionLexer { /** * Returns the length of the matched text region. - * - * @return */ public final int yylength() { return zzMarkedPos - zzStartRead; @@ -507,13 +502,14 @@ public final class ConditionLexer { /** * Reports an error that occured while scanning. * - * In a wellformed scanner (no or only correct usage of yypushback(int) and - * a match-all fallback rule) this method will only be called with things - * that "Can't Possibly Happen". If this method is called, something is - * seriously wrong (e.g. a JFlex bug producing a faulty scanner etc.). + * In a wellformed scanner (no or only correct usage of + * yypushback(int) and a match-all fallback rule) this method + * will only be called with things that "Can't Possibly Happen". + * If this method is called, something is seriously wrong + * (e.g. a JFlex bug producing a faulty scanner etc.). * - * Usual syntax/scanner level error handling should be done in error - * fallback rules. + * Usual syntax/scanner level error handling should be done + * in error fallback rules. * * @param errorCode the code of the errormessage to display */ @@ -533,8 +529,8 @@ public final class ConditionLexer { * * They will be read again by then next call of the scanning method * - * @param number the number of characters to be read again. This number must - * not be greater than yylength()! + * @param number the number of characters to be read again. + * This number must not be greater than yylength()! */ public void yypushback(int number) { if (number > yylength()) { @@ -545,13 +541,11 @@ public final class ConditionLexer { } /** - * Resumes scanning until the next regular expression is matched, the end of - * input is encountered or an I/O-Error occurs. + * Resumes scanning until the next regular expression is matched, + * the end of input is encountered or an I/O-Error occurs. * * @return the next token * @exception java.io.IOException if any I/O-Error occurs - * @throws - * com.jpexs.decompiler.flash.types.annotations.parser.AnnotationParseException */ public ConditionToken yylex() throws java.io.IOException, AnnotationParseException { int zzInput; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/NotItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/NotItem.java index ec7619b0b..3459e515a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/NotItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/NotItem.java @@ -39,14 +39,12 @@ public class NotItem extends UnaryOpItem implements LogicalOpItem, Inverted { @Override public Object getResult() { - Object ret = EcmaScript.toBoolean(value.getResult()); - if (ret == Boolean.TRUE) { + boolean ret = EcmaScript.toBoolean(value.getResult()); + if (ret) { return Boolean.FALSE; - } - if (ret == Boolean.FALSE) { + } else { return Boolean.TRUE; } - return ret; } @Override diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/PopItem.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/PopItem.java index dd6aad9ac..3dad4cf8a 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/PopItem.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/model/PopItem.java @@ -51,6 +51,6 @@ public class PopItem extends GraphTargetItem { @Override public Object getResult() { - return new Null(); + return Null.INSTANCE; } } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java index 3147e1363..fcc5bed2b 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/SyntaxDocument.java @@ -41,6 +41,7 @@ public class SyntaxDocument extends PlainDocument { Lexer lexer; List tokens; CompoundUndoMan undo; + boolean ignoreUpdate; public SyntaxDocument(Lexer lexer) { super(); @@ -62,12 +63,12 @@ public class SyntaxDocument extends PlainDocument { tokens = null; return; } - List toks = new ArrayList(getLength() / 10); - long ts = System.nanoTime(); int len = getLength(); + List toks = new ArrayList(len / 10); + long ts = System.nanoTime(); try { Segment seg = new Segment(); - getText(0, getLength(), seg); + getText(0, len, seg); lexer.parse(seg, 0, toks); } catch (BadLocationException ex) { log.log(Level.SEVERE, null, ex); @@ -88,6 +89,9 @@ public class SyntaxDocument extends PlainDocument { @Override protected void fireInsertUpdate(DocumentEvent e) { + if (ignoreUpdate) { + return; + } parse(); super.fireInsertUpdate(e); } @@ -98,6 +102,13 @@ public class SyntaxDocument extends PlainDocument { super.fireRemoveUpdate(e); } + public void setIgnoreUpdate(boolean value) { + ignoreUpdate = value; + if (!ignoreUpdate) { + parse(); + } + } + /** * Replace the token with the replacement string * @param token diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java index 81c568760..e7ff36525 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/java/jsyntaxpane/components/LineNumbersRuler.java @@ -21,6 +21,7 @@ import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; +import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -221,9 +222,18 @@ public class LineNumbersRuler extends JPanel int maxLines = ActionUtils.getLineCount(editor); SyntaxView.setRenderingHits((Graphics2D) g); + Rectangle bounds = g.getClipBounds(); + int minY = bounds.y; + int maxY = minY + bounds.height; for (int line = 1; line <= maxLines; line++) { - String lineNumber = String.format(numbersFormat, line); int y = line * lh; + if (y < minY) { + continue; + } + if (y - lh > maxY) { + break; + } + String lineNumber = String.format(numbersFormat, line); if (line == currentLine) { g.setColor(currentLineColor); g.fillRect(0, y - lh + fontMetrics.getDescent() - 1, getWidth(), lh); diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex index a2010d674..05e7c9c0c 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/actionscript.flex @@ -355,6 +355,6 @@ Preprocessor = \u00A7\u00A7 {Identifier} } /* error fallback */ -.|\n { } +[^] { } <> { return null; } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex index d96155438..dd0017c8c 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm.flex @@ -18,7 +18,7 @@ import jsyntaxpane.TokenType; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); /** @@ -150,5 +150,5 @@ Constant= constant{NumberLiteral} } /* error fallback */ -.|\n { } +[^] { } <> { return null; } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex index 8482afaa9..f753135b2 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3.flex @@ -19,7 +19,7 @@ import jsyntaxpane.TokenType; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname=false; @@ -249,5 +249,5 @@ ExceptionTarget = "exceptiontarget "{PositiveNumberLiteral}":" } /* error fallback */ -.|\n { } +[^] { } <> { return null; } diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3_methodinfo.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3_methodinfo.flex index 21d8e4f0c..8d02278db 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3_methodinfo.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/flasm3_methodinfo.flex @@ -18,7 +18,7 @@ import jsyntaxpane.TokenType; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); boolean isMultiname=false; @@ -146,5 +146,5 @@ StringCharacter = [^\r\n\"\\] } /* error fallback */ -.|\n { } +[^] { } <> { return null; } \ No newline at end of file diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/swftext.flex b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/swftext.flex index e642aa865..354d7fec1 100644 --- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/swftext.flex +++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/jflex/jsyntaxpane/lexers/swftext.flex @@ -18,7 +18,7 @@ import jsyntaxpane.TokenType; %{ - StringBuffer string = new StringBuffer(); + StringBuilder string = new StringBuilder(); private int tokenStart = -1; private static final byte BRACKET = 1; @@ -89,5 +89,5 @@ Divider = [ \r\n]+ } /* error fallback */ -.|\n { } +[^] { } <> { return null; } diff --git a/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java b/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java index 7db2c3703..21c4947c6 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/UndoFixedEditorPane.java @@ -123,12 +123,19 @@ public class UndoFixedEditorPane extends JEditorPane { Stopwatch sw = Stopwatch.startNew(); try { - Document doc = getDocument(); - setDocument(new SyntaxDocument(null)); - doc.remove(0, doc.getLength()); Reader r = new StringReader(t); EditorKit kit = createEditorKitForContentType(contentType); + Document doc = kit.createDefaultDocument(); + if (doc instanceof SyntaxDocument) { + ((SyntaxDocument) doc).setIgnoreUpdate(true); + } + kit.read(r, doc, 0); + + if (doc instanceof SyntaxDocument) { + ((SyntaxDocument) doc).setIgnoreUpdate(false); + } + setDocument(doc); } catch (BadLocationException | IOException ex) { Logger.getLogger(UndoFixedEditorPane.class.getName()).log(Level.SEVERE, null, ex);