From 497b5b5018e9ddaa4945146deee8f37d3b87d482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Fri, 8 Nov 2024 09:56:39 +0100 Subject: [PATCH] Fixed: AMF0 - DateType and XMLType can also be referenced. Fixed: Maintain AMF key order --- .../flash/amf/amf0/Amf0OutputStream.java | 9 ++---- .../flash/amf/amf0/types/DateType.java | 10 +++++-- .../flash/amf/amf0/types/XmlDocumentType.java | 8 +++++- .../exporters/amf/amf0/Amf0Exporter.java | 14 +++++++--- .../importers/amf/amf0/Amf0Importer.java | 8 ++---- .../importers/amf/amf3/Amf3Importer.java | 8 +++--- .../testdata/sharedobjects/sharedobjects.swf | Bin 21507 -> 21548 bytes .../sharedobjects/DOMDocument.xml | 26 ++++++++++-------- .../sharedobjects/bin/SymDepend.cache | Bin 64 -> 64 bytes .../decompiler/flash/gui/PreviewPanel.java | 1 + 10 files changed, 51 insertions(+), 33 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0OutputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0OutputStream.java index 7ba27e9b0..53a8879da 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0OutputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/Amf0OutputStream.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.amf.amf0; import com.jpexs.decompiler.flash.amf.amf0.types.ArrayType; import com.jpexs.decompiler.flash.amf.amf0.types.BasicType; +import com.jpexs.decompiler.flash.amf.amf0.types.ComplexObject; import com.jpexs.decompiler.flash.amf.amf0.types.DateType; import com.jpexs.decompiler.flash.amf.amf0.types.EcmaArrayType; import com.jpexs.decompiler.flash.amf.amf0.types.ObjectType; @@ -167,13 +168,9 @@ public class Amf0OutputStream extends OutputStream { public void writeValue(Object value, List complexObjectsList) throws IOException { - if ((value instanceof ObjectType) - || (value instanceof TypedObjectType) - || (value instanceof ArrayType) - || (value instanceof EcmaArrayType) - ) { + if (value instanceof ComplexObject) { int index = complexObjectsList.indexOf(value); - if (index != -1 && index <= 65535 ) { + if (index != -1 && index <= 65535) { write(Marker.REFERENCE); writeU16(index); return; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/DateType.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/DateType.java index 66b92ddac..41e1c6967 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/DateType.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/DateType.java @@ -19,12 +19,14 @@ package com.jpexs.decompiler.flash.amf.amf0.types; import com.jpexs.decompiler.flash.amf.amf3.types.*; import com.jpexs.decompiler.flash.exporters.amf.amf3.Amf3Exporter; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * AMF0 date type. */ -public class DateType implements Amf3ValueType { +public class DateType implements Amf3ValueType, ComplexObject { private int timezone; @@ -77,6 +79,10 @@ public class DateType implements Amf3ValueType { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS"); return sdf.format(toDate()) + " timezone " + timezone; } - + + @Override + public List getSubValues() { + return new ArrayList<>(); + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/XmlDocumentType.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/XmlDocumentType.java index fd152857e..afe73b235 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/XmlDocumentType.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/amf/amf0/types/XmlDocumentType.java @@ -17,11 +17,13 @@ package com.jpexs.decompiler.flash.amf.amf0.types; import com.jpexs.decompiler.flash.amf.amf3.types.*; +import java.util.ArrayList; +import java.util.List; /** * AMF0 XML document type. */ -public class XmlDocumentType implements Amf3ValueType { +public class XmlDocumentType implements Amf3ValueType, ComplexObject { /** * Data @@ -57,4 +59,8 @@ public class XmlDocumentType implements Amf3ValueType { return data; } + @Override + public List getSubValues() { + return new ArrayList<>(); + } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf0/Amf0Exporter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf0/Amf0Exporter.java index 9057ed854..e75d15ab5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf0/Amf0Exporter.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/exporters/amf/amf0/Amf0Exporter.java @@ -31,6 +31,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.jpexs.decompiler.flash.amf.amf0.types.ComplexObject; +import com.jpexs.decompiler.flash.amf.amf0.types.ReferenceType; import com.jpexs.decompiler.flash.ecma.EcmaScript; /** @@ -91,7 +92,10 @@ public class Amf0Exporter { processedObjects.add(value); } - + if (value instanceof ReferenceType) { + ReferenceType rt = (ReferenceType) value; + return "#obj" + rt.referenceIndex; + } if (value instanceof Double) { return EcmaScript.toString(value); @@ -166,6 +170,7 @@ public class Amf0Exporter { StringBuilder sb = new StringBuilder(); sb.append("{").append(newLine); sb.append(indent(level + 1)).append("\"type\": \"Date\",").append(newLine); + sb.append(addId); sb.append(indent(level + 1)).append("\"value\": \"").append(sdf.format(dt.toDate())).append("\",").append(newLine); sb.append(indent(level + 1)).append("\"timezone\": ").append(dt.getTimezone()).append(newLine); sb.append(indent(level)).append("}"); @@ -177,6 +182,7 @@ public class Amf0Exporter { StringBuilder sb = new StringBuilder(); sb.append("{").append(newLine); sb.append(indent(level + 1)).append("\"type\": \"XMLDocument\",").append(newLine); + sb.append(addId); sb.append(indent(level + 1)).append("\"data\": \"").append(Helper.escapeActionScriptString(xdt.getData())).append("\"").append(newLine); sb.append(indent(level)).append("}"); return sb.toString(); @@ -238,13 +244,13 @@ public class Amf0Exporter { referenceCount.put(object, prevRef + 1); if (prevRef == 0) { if (object instanceof ComplexObject) { + objectAlias.put(object, "obj" + objectList.size()); + objectList.add(object); List subvalues = ((ComplexObject) object).getSubValues(); for (Object o : subvalues) { populateObjects(o, referenceCount, objectList, objectAlias); } - } - objectList.add(object); - objectAlias.put(object, "obj" + objectList.size()); + } } } } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java index 96b8d0156..eefc0c520 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf0/Amf0Importer.java @@ -27,13 +27,11 @@ import com.jpexs.decompiler.flash.importers.amf.ParsedSymbol; import com.jpexs.decompiler.flash.importers.amf.AmfLexer; import com.jpexs.decompiler.flash.importers.amf.AmfParseException; import com.jpexs.decompiler.flash.importers.amf.SymbolType; -import com.jpexs.helpers.Helper; import java.io.IOException; import java.io.StringReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -429,7 +427,7 @@ public class Amf0Importer { } private Map map(Map objectTable) throws IOException, AmfParseException { - Map result = new HashMap<>(); + Map result = new LinkedHashMap<>(); expectedType(SymbolType.CURLY_OPEN); ParsedSymbol s; do { @@ -546,7 +544,7 @@ public class Amf0Importer { */ public Object stringToAmf(String val) throws IOException, AmfParseException { lexer = new AmfLexer(new StringReader(val)); - Map objectsTable = new HashMap<>(); + Map objectsTable = new LinkedHashMap<>(); List references = new ArrayList<>(); Object result = value(objectsTable); Object resultResolved = resolveObjects(result, objectsTable, true); @@ -564,7 +562,7 @@ public class Amf0Importer { */ public Map stringToAmfMap(String val) throws IOException, AmfParseException { lexer = new AmfLexer(new StringReader(val)); - Map objectsTable = new HashMap<>(); + Map objectsTable = new LinkedHashMap<>(); List references = new ArrayList<>(); Map result = map(objectsTable); for (String key : result.keySet()) { diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java index efd240bb4..a79d72d80 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/importers/amf/amf3/Amf3Importer.java @@ -40,7 +40,7 @@ import java.io.StringReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -467,7 +467,7 @@ public class Amf3Importer { } private Map map(Map objectTable) throws IOException, AmfParseException { - Map result = new HashMap<>(); + Map result = new LinkedHashMap<>(); expectedType(SymbolType.CURLY_OPEN); ParsedSymbol s; do { @@ -597,7 +597,7 @@ public class Amf3Importer { */ public Object stringToAmf(String val) throws IOException, AmfParseException { lexer = new AmfLexer(new StringReader(val)); - Map objectsTable = new HashMap<>(); + Map objectsTable = new LinkedHashMap<>(); List references = new ArrayList<>(); Object result = value(objectsTable); Object resultResolved = resolveObjects(result, objectsTable, true); @@ -615,7 +615,7 @@ public class Amf3Importer { */ public Map stringToAmfMap(String val) throws IOException, AmfParseException { lexer = new AmfLexer(new StringReader(val)); - Map objectsTable = new HashMap<>(); + Map objectsTable = new LinkedHashMap<>(); List references = new ArrayList<>(); Map result = map(objectsTable); for (String key: result.keySet()) { diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects.swf b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects.swf index 065c94ae0de59aaa5f162aeaf6300b34d77583c9..240b876c954ef6908f0b464ce77e44563ffde99c 100644 GIT binary patch delta 21361 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 E{t=ra3jhEB delta 21338 zcmV(yK!8TVmoj?)V=~{?|zI zYUBSP$^V&bW1{~l+T^s9ghhSDL>tE@#3sfjZA-<(Yq}`jm}t9=TT&7ux2=s#PELrA zjubL9&M-`k+Y-GwJ#u@j;YOjTR~!Fp;QuWoY-Qfw|GmN!6OI2dI&~X8cH@6Pe>#=1 zBRSTX9-F!)EhRb@8?N=Y!FYSyxhJJ=i%g1+b$42eT`-D|kFj&Gu`)NYbaHZZwzYS5 zF*UVyuy=4WH*qnyw6VtiwOo|_zn}UKZcbaG(}Z&Sn_JBP0k?lM^&i~UrNnQF$4vIW z;A(DWYinw2W@2q_Yy01E{V!Pje-mqLO8oZN7?+eSiHllDj!a376-sK2=08Lw6w{)7 z?c)ElnEv+={?pWdaEtlBSZei${p3iOWeOO1zcmBEBYON}5VVNV!VClMa@7AwyiEzr<^a zl5B(AGIWwUcV$>N?9v%d?hSui&ppBZp}q znm(GFHBrqYnin*0Yffw4f7RNoy`bHpW25^}*I4g|UNOaz`i1JJUu@uHc*n5GDBSp+ z@d*=U)03teX1|#IY;IwZZ((d{Z#ie_Yel!(YW2YCrPUu+q1N5jN;bD_@@?1HQC9u2 z+HTF*n$n;6KMnlEqHVI51zG76vit63=YE*Zm8|~mIS$q{WL&?Zf477~jf0(lAkz*_ z#?{rh1yD`{Wb&2elU=*^lq+>=$&A{fxauZfwjPM&(coDSk*U~$EsW%X60#!vLIVW& zcp9>T5`#KSA?y{F5u2clrl10}tZ#5uX*9XCL4Gm77S@=)N`Ajx z=Js^EMa#gBz-1}sZ`bN*l@5>AwdORK_I{FUeZ2Sc%*G=%e-R(1-rI~E+9Yb5tur0B^6ntED@x(Qqu+O(4ER~|g$d)xgpT)cDs?c z{_(=VR-#{i10~R*GHWYJKsgX_<5L3vxpc>omjmw@e}&k>ULVwcvHL+>@`XW-3(W`j zIS)L^%6Pihj!88EG09aPszF2Y_^ojf9%jSf1A2#B&d{i6z4Z zOB%B4vPLDTRzm8eSq=5NwjmoNuSt91jw2xTaXY-wHAlB^2G-eP+L_K2ZE z1g=T|f5fH*?r!r1(3)byULU2~a|Yr>G9WwMz0QudM!=~uMe6*d%EoTrUsNZ6Y)OO1 z!C`4Nv0Lwi3c%kTB?Mg?9euU?XtQG2N$%O zA9l&cO@{HR?A6Rk#O`G84*OF6pr}=^a}4)MIqjrqWlhG${U*>93?hAvyw$3*G4v$; z%4LDB21*-ApMnqi-`fSG8v?}0%sF`dwfm+!Yl0ngBW3R~b41)z1PJ3Ah^ocp1tnGj zf3m3t2#so%+yJY@MxC7Sv8~L7%(G|x$693J^cdiID>trXWF9K4qak#EK+=^goyP-F zK*smu+3dHGd_`&%Em?27xa`d$y;yR<|1 zrhJpB9~n`l0O_)J6o2byY8#5HwE#1Rf2iXtbWo_EfEbslOU>r)7rV0(N&Rt{&kU7& zCkW09L^dkj4z3Ac2ZZ`=8h!9=7c9s8Gp|1;mZ?}#qg@X4BPh;iVwB?}^}RU)li_8h z#mHd8d>Rk~>P>FYj#t>?n;m*f7IDl4oxQOV@=mZ?5uiJLYApS&=46*PicPzbf3Si% z8OE<~6BoR~^AA!&*J#-Nk{M|O%3ZCXFl{`R-C{h3D%ke=C{?zYQA_6BhfecW+P=8L ze|}sZ#5!6*JdEhq$(MDGQPy(fbem7V67alBB);kkFzyqnI#L<2Lk9%C`v(4`2FIQ; zxz^DdS-=GxsRcyDEXZu)N2z0*e+}i#^UHYVoi+o8J&j6d?eoj#^4{A5PN4+|FE1ok z63?q1w_9bx8?GV_t(!~W{6K4jQFr>TeqH?UimM8lMQJexplVl+>=FC*J$wHAeiWB` zA8gC#WMXV!Hzs7sJ!bs$D)K^6L$x=z^r}=7!>6HUm`gvS;|uj3AQOEkeSorNi*Q(#U3IBFRI=L!nVX9B&#l%8%S*d7iI6(HV0pxkZBY!==9Tj`6yJ=Scn z5*qAOklwPLr>m^SiGlp36|)-S{X)Oz`ObF~mvGsL zMsEK)OfwQMQ0*JvF5O!_~h-4lK&fAV6UMir#Tgj}$?;S22>vLtS@GHqyai)tz zDu@BWYZ}B`b89rCy@Z{z z_2GTxZog-xU{$}^g08AVlK}WUR3xvbqtL7sR$_LXF+Zqh+u^JS>~A1z?@+;zs_dgR z87M^Fe^{aymjA3AntlM`ogLrk)f{H@9Pnv#cH;eZz%e#)E@gjmLn!W$PTO%dOtjl1 zdIX)Ti&5e4H!Lc4PT-sg5FmEg4Zhu%E^6)#632|=7#S{#?s^)UAhfF&K4({F2ADV4 zt_uBn$MkUre!khiS+M3{W%q;Oy+^qXcIwH>f5ySl*GkSlNsNov@1qC<>FkN7+|1{V z^zAgq6OJ}BtPm;FoRVOAEfob@thmb?=WHFFE?5>yB3PcHc}Gh#`{XPefe?@ZYMnPm zA4_$CNh}bCQ)5TfA84Kj-)s=2)!XmVvm0XScjHaS2;Ci!3o&^vljQ;=5=+3fo0xBy ze@6nF=%G89zis`<*nO|ENS`(DIWGkBMSCG5klGSKJ}n+YIUuUK*^Iw2ntI`OL)-M4 zHwT&g{W;?Mxj+q=fS;~JaQ~D;F-5R}<@qhJsI{I)CIgj6hRX?YC*^B#K(OY6__QJK zAopx@B*TE(d;vd}+7baHp8Z=Bq)=1ovM z<<7R{*IxMgyedu$Gyrv)#_08&TJ)%x+Rn;1e(t^4@M~=zP5i``=u-3SI;IWae>q&x zkNDG++W7s7=pi81vSA7P34d))Cg8Vmz_@szpZ~;BsYcs~*QH1+D=}+W_(=dRm>Q&qC<3F17A2I ztb!8vKk!dzbHW2jKtm$r)2xt{e;{h;23Xd>)9q#L=j2lCNn$wXH`+{iC#;2RDSxtp-U)^&jKlYuSdK59E!8zgM`#iLzO)9f2P{Em-o{9xR4`*meP~>L4hb({5Uo;@DRw)Za*3 zd0Z+GC?54RUl21xksIwKf4+V!&I0sGK@uluINOG0KNM#{ZzYn54{iX$y4l|E*a{R6 zCJ|Q+wiuq+geJdGJvlbw6bC^{1jWt-aH$5lhMG`ccEGL0dU2}Huz2x4wExL{BoXXB z@zJVHm$ez_;~>|NG!K(zz$N=Yef-J0>;2b*-yo2-R;)4Uv;jX!e^B~#!TG`#kW~b{ z!7mKP0Yj$(AW(gQoV(Zkhbs+vB#ev4T|NaIRLlLkMCfjUZnp=Yxmrn^^f!Ll;=B9! znY^4YwqYxKE~>@bL<)5uPOtOm4Lfb3jGOWM($J6;5dR`@^Zt#(3i!$C zpLUNeXvbfttl?Nqf7HHt5{UB&ntAPOuX9To%b(H%Pc|VFwS4?$(vsF2+|}md0v@p; zs5|1!!y@OVqo71*Lwj4)9V)9|K5wzaG>JUaAhi({%Pxnoy;16%{Ti69>w!{9+_y&6 z)%p>*y~)s`%SuxU15yebx}%2%`TO*BYv)0q76D?_p2T9>e>fnLJdoTRVM6V>FE}-b zr#5Yjdxh(0X)9`cQz=l^jJ(t@>~1LxJtDwMU$Cv|sBunUWBn_pzlb1Gz*sw?>I=>u z%q)kjP^<+I_Cf+fkDaf(-;aHIpt53{eE*s|27tRm1GZZJjA%s{8x)m>foxU9`1z1m zsK2RSqL%>Ne`09}HMrJeY@?#SpYG30$KV(0D6;++6v=hi6qxG}l_asE=Jn(XEXC(V zfa}DcGN=5$+Fd@loVm$lIZhsskO~y?41Ws9E&WMevn_0|{4Z;%BloUyPGH}9U(oMl zgNa-ZabB)F@%o053)eSrLCLoj6x((Cuj=deU#`e%e<$8aJQ?#GaAza|hA)Tlj!C;c zs2ytDxDka^EQSo84!%UaarMV3M+<(x)Cdp79g+nL-Gj&1#A8T#piB#KrE(`PcBtg? z$_G4Jffzpwy#ds=hxY+4457H1vWIJ_b^{BM#rt_HPK!UquB-+bxp2<7qCKs(r-=D5 zEy`G%e=tWsq3rL3;(tVqg>^V>5_!Np>q!IANjLE6XAk(EG`T52Je+_iqD^O;Ih-$J zvXgJ8t{!Z=%a-mp%%m2UCZ7mb zEKR;M+Htbot!qsDss#j$qEZ!gnt@?A^2y<4lA&Tp`lts#oONhhE}<&C^%}EXtRM{o z{Y%x{_hk`4!eZU`R*{C52$`t4{GJQLqLq^Zn6DGbFPr$8$D%=ZxJS-mE{c1)CTW@h ze@c``j}v_|2Nf0|nHFY|o;_Y;PJ`w18I0cS;izk-e#Pp^pkql!egwNP1BR9o8l_B( z?B5#>DQhg9AX4lEJC*?vOHPti9lX#`xE#pxvfK^|-`LREYIVJ+{gIL8JWz75Fd=i*H1t@y3fc8emuU_^5OfAsga zgK25>&?nns0R%O$Axo>QW~j_AaH)tgKRSW2oeaD!Seh$#$S)r^#Io=N3=DJajWv46 z6T+UrV;-4o>{>AwG69ClEcWf|nzwlZkkY(Z zeF)1~TF~`DGvdn#Sd?ADTGIfB$l1J}J53dmZ^kPu=80b~3yw7Ph$4%FP(& zkyqZ9Sk_-Ez0CLWHnRQte?Z*K)V_4WvUQ)2te154tMeP%SnJa;%Zz~S!JGSu9w>rj zi_^JFmo&kd`mWW>K_qK#GVDCX3Dd)JVh9b44~DSkUjdxHy{Lyjc76%f;-@@>Abx<1{E;58`Iq)2;x1hpM_=5rj@JLFAebq34qa?7ay1zcg#F!@7w zO-9^XLTgu`k$6aLE?8*HwOqj(Yz2k>qbwBJ({ukdZ>;R$Mg!Jqlaq!MKqQhVKygZI+gYR*N*Cz)0$z56vs+qA>M2isAo@0g zX~@sve}9Zsryk6!Y4+2Ok^`hqHu=sINsr_cVRB7!zKFK^Xt1-GEZctyD^+$c*HdFG zU7lMRSP}A!FVMYZ>s#Oh1fC7f(x}DnKzw-w(ie+Om*`18!EgtriM4;TNZNuP>9_1e z2gR9ix21C9&)2^lMTHUIWx7pU2G7BI_j%i#f01*~rI!i*q~8N1rAJZpKm-uZXFeX` zf`NX|DqP*C%9Zmlfp%d!`O_wldQ$6;ZZ`{VrLr$Z7x|ZCL}xN`jEGCLo#cEo zW2~SJGzyS`FZ@UpR&G&kTD6rUw}nbB?I0JEgngbdww9NL&5!3wE7{ATdO5vp<7HQ8?TYy^ZD_uF^h2W0Ef zvqQYI%vG!ukL`ilXV(*tTzJt|4wH=-fakuP7n|uQEYaJ|zfIZ=U^Io*IG$3je+wtE zFE1JNxhR-Ya`^8QbFk$#w1f9v1r_nuHxHEj$$;z_aIdLxCByoL#z20w8z41`C~}NY zV*SZ2moNPt6j!ywN=4-W?^0#JC5@ptZ`J0Zn!xw~+53wRYX&TQVqfn}!%AD6iEtIk z0#r;>{2xBQm~M>%9oPe}*l=#&f1=N$=?7x}ZMr?o^sxbP3*#E{aJN#{1xASIN08X- z3+6Mwk@EuMvSqQlX)*%YdST33?QvkztYmpy)l{|iQmJ9H`a@EcWE@8pa0|DH#l4m& zPCx;9M=w9>wtn%pLw1KA)awY~I06y^wy`gIo{^}!g0d{J2Kbxf7 z)h_HE~}zPx_Bw!jB1T@2^Q}wf0=;Wy7ANvW^I8f z)#2;o@Fiy4dD47q{!~MUT5fJxe;n$0>NRm((MQ6)h*y1(Zvn)USdkLJ zrnE@h2QxkmmtcAAf7>Z5$!;yDDc++c^C!g*)x;D?PEB*Vu_QUf2T^<{CxSmJ7eWQx z;TSN!)_gp6*KA@3FYmC(9*~$2NH&C&a`(SEl0;l}^>Gqms2(3`-(|@6zBIh`T6SaZ za=Z-?s|vA>FO(9Z*bc5kAa3>^k+oi(9~z>+(F45{(G#Qx?q`{;#~dIKLXh#Cra>lpeg##fh^?RG6iQZ4_GR2@!v!E zT;^CkJ8k=>f9@JVVw|K<{V`ydP_{+Q!u*GCx54rsu~q zr^vK8PfT{oqfW{=HDY<6=aL3MeJLYcpfRsW+|9`Dsd-#{?qT zxXH%zO4E~J-NyZ96A+)P6PP1O1FhplQ=_P;fzGiRe@)XL%2(3dce#4fx*0*2rn9jM zz7}xOi8F4N=W?X?)#QCBqrv%tQopf(UtuA} z?l@uD+el{}R_f@kSL#zGszc3|tZnID9mlYmWImuOFQu7EXdAZW_Q*saaa<4^PL-`1 zJh`r5e}@@PkyQ}#1Vr|6g?shik8jyRJu=;V>vQ2NY#p);kd=`L3yxf_ICOX%EZcuM z9xC~on@#e+Sde&y&tq)L7mNPwu+46KCsp!2ZCD z#F}q;4j0#nHrt;i#f59%0L=G@zF58{^;^?mOW&mPLIy~U(cq`cxksOP=%wlpI#k3n ztd)F0-5$%-+v?V_>fEhJvpz32E#|O4gnNjyR8!`z{pSms+_z2Q>sFIEj;)gjR)|e{ zf2@>V=Hc|?O7x)5$XzW;6`M;Vk|xA|J!HAAXYPLXk@PO@L#yuAUn4!8-uoio>09hP z(u9R>jjJ`~Y;+-(~o zcWHFEWU2T?Vf4QIg*f9iA@V3A)sLkvf54f#fst!gbh^EWL~j#6d-Ra!z*5^QGduxq zy$x=CVf#AP0hhC+cPG8QemaNE-XBPu@xChZFv8P+hnUq`ld-Mymp4X9r?-3v6Pk9R zPVO%G%*n7W;~`@KPRf>>BNJbH;<&l$OW*hBpKW7**-XdE!YR2dE6y*fE^%O^e^!RY zz=JZ2H7^ze@9d#U-@&eW?{q#<3;2=Y20Qd_!$5hXSz4t}nnGWOL)V-LuE zBID@R#7Muc_#8DLxEF$`iaCQbmEb~ZvX8SAK=b-mT`rI^q;fmZLCxi&?l-SGwd2wN z-t}f} zx*CvWbWqAVv6^(~X=@1(oaaH}RE{v|UR~)l$n$DkngzI~Y{08}@&_!i)Jx{KgRYik z-Uy#ljborVEY#|5e9|15_`-e5n#6PlDBSt7-qbbHD?#n!XUUH=#CaGz^Td{oG`wkf zJ)CS4Zm@uRs=%3kf5&X7`o3Gv6yGGXgtHAOTLnn5eNlE zf&lkLb}khi=-4aVV4bzKwP4LYmp`8~%74Fv+J)kHvsivVLH+#h1XjRN+aa7*AJW64 zQD0obpu2#`Mnht#*;SAtqR6f*ONb`XhunaIg)vr~N9H-Bf3Lp|9ow7GsWf!lFVRzP zaUZnc{a|B^NKs5ur~n39pHjWY!r8I*KoF>T9K0r2Il6|^iR#F^sj?A zuN~h}21IT-7-e7M_ehdJ+=mMqwpO}Docpx}M}b&53sOOXp4dZdIP$jVMbRo^bi{AR z+cz`-5p!$0f1b_TG37L7Qcl*TPxK4EVCJhQ>5MZw&y=g;%9RQT;>j?{8h4r5c_B!A ztWR~@Jz1kIYE^I5VkiqW(X92v?M=g%9yJu2Jt;zoF(~kEgtVsEV?6`5>aWs$GE{54 zks}IC*FdyM9V?ixIQYl5{BdmJo4jV@tXrN75W~pee}6xup?ae4Ql|{%R7Kzc>aSv2 z%pmm=5*ZY|k|8t=4Ls|;6L9lb0sPRZ=boZ_WT=b{D4LLA`MV#Co!6#8+I`Z_#7I+q z`&+y=+2Bb^TnIbz0_(&S;-%yyQJSD*bg{!FSX2PluEpaagead=6_3Qm& z;~3<{M-O6Ss~{uYNp8bqk?(*vO5yojsY_{-f4LrmA#9aD&|JH<_S7fc<173Ghz1{s z?X&~~?w=;7$}#g=4k7|QnS$#26M&D%jES^=I(RLQEpiA&@E`KsyGl+Ja9<%W++eno zUnn>Ohzb=5aOrYci=>QQG>SXa4wQQ~4Q?B(I7OvdDj>C2Ky0FCXQS*4JS#VXD2Ix* zf6yYNa<35h>t(ZD#4lBQm4Ju^7v%U~mSmp)s5Ekww)i0HbO-B@P7V;J>kwIMCyHW- ztwg|(gLU)v;iALuI=a(k8@2mTNh*qKaBJY_Mi-THqvl&Lgi z!Y!|%aaQ+Q6cFpkAe|b;V+8>C6KRA6L0Dzm!h84ce-yn*{O;YjI|vi%QyRx^SBL>m zv30(or=v!ZTkQ)?`IrPZ^ISx`3T%tA7ubOCRt5XHLBb^ywogpPYPsrthzc9Te~5P` zQ#VPQc8y>u8~HTMU3)sKGMBStJ0NRTZ9L@*ek(h-GS%?RfM^EuU@i^(^H9PYa`lrb z30IYKMe9kZSddzQrHICj3KFRz%i!c9$CQ=QrXEp1*jeuzlbX|i$1USA;OLpZ9p%Ex zoo{-g$}Syzcy7*0`rCKVyN-%;f7wra80*L4dt}5+gb%5naqQya0e{M%UegT~twa&d zxym6!r;aetI{=dO(T34ZkVrvsVV;I_^7?)!0Lge=92;&FK?l`|Y;DF8@xG5P^ws#N zB2dR{|L(X&KQ#knlK!y2c~NeElcppKB-TIDVxhR=Uk+F5y=j$hDQsl@e|A!UD`rET zMAE7z)5pPT?1>~Hm}zaxxXq{#jDhFkxfD*PybuiiKY*co8hXfI_v2t--dv9j=OOxl z^XxKl^=OY=wi19+MibHA%+fBp4_qvbX}uI>&-Yccak;YKSV$$-FP%%$%TS%sgCi4= z>aS;eMx%$$RqMtaHuP#7f7U1D|8lsR`=%xFzec(l3qenvu}toFJ>6~W4JE85V)eGc zYE95w2|fnO9+rvx+}~{yWUgIJ=8|p*C_BU~t>aPyV~#v|=$84Wa^@x@b8j6ryT(!Q z(hwi3HEX6TKrWrhSik17m+voou57ZklhlTKtYGoaB|Kr@`SyAPe}Rl#5Z5%N&6lWO z?$M>_tBbNch~{GaW9oW169%Akp@6cL#>{WX~LR6(0-I-22v^^U!Dn zI+t3?+WgX)qO&&Y!jj0|7y^C7ZA}tZWB<@MK$46aV)Z#5nieRRDIv@tBvY*`-^(ZR$8$}xQw~*n&m7?0*B-8i0@4R}-VG=JV!_IKr*I-sLK|X*bxRBLGK9kK9 z9|7!6pIg#4f1G`eCmZSu9&a8{89=i9I9}nJ7Md95tQPRc9w4m;{728N4|!#C1CPZ- z){lG;>f~y=^KM>c{i#I2)r^De^#V;k=c7Ob~=yKJI z3m6<1%A^KBe5C{X+bvNK`EtL9D1PpB(HIShew@`qe|ovO^e2=Ma0ZkH8je!7U~-U6 zQmdBRE4S#m@^Ajh=BZ{)28jLIz{!Y55z$q#TYbSR{qeT`WqGEZTSgPqJ}rRXHmpoC zyvAx?)uOdcT{_)!NO;Bx3~M%H8C&9h)KGc1ABuGH0e|a}_N$hJs*WE;xR!Z6Ng@#6 zj)L^je~or6-*{xGnnQ8@5)X%{y4RQgbhCr|r&awj0OiV|-gxgfpxnjw-yw1KY}8oV zsbat-FklHgMw01QY)CHxg0UW~jPLVXwF$scF#=9s{n{xPa3qTGaB)NH&)|!WGZiHR=Ffr2^untw~=EQl3xL4Ee-5?mv7HGU5e>B(SQr&?8e zQAY8+FwCqqtl8e^Dt6 z)_H+vE$Qh~%fe-winK>j!n|>bC0<^=NvXQJKJM^h%1cbgQr>wW_*eSwP7u*?b~Bs9 zqR{q%A}sPPx$@d$Rf~SWW4*h=$k#9gD;q-h*?Of1?4Pw!6+WeT7KcF!itGzz4p--$ z4Snp*y>N#O{(c}zH)42rVy;aGf4MB08L2AT;&s_3<{1Olv92#DQX}kC`yFvD^2Jk+ zP+V&lNDjRA&`(M=0==uK^jG{uTkpm+K@&rZI3Lwt>ZufT+ZX7qDAIL{bm-L$FtQ}$ zjz>u`10}aI_2csxZO!Vt&s9HtSpwRaqo!P4TCb?0l&hNz^a2pUsgM42f8`VdeAu9L z&VT(NX*(n|iD3MZC*d z`N#d%c*1T1D6g~7v@HB-o)<;^ zq3liC8~lBt#igH6-^DzEfAtObNrZ;1rQy`V!BO$66T%~_k)27}Q5T-@a#<7mdLlbo zVtl2mN&JL*51s&5`yGt(-I||9zj61YzV~(lNqCK7EALJBk#>2J6CV0$Rb!7oC|-8m zZl>S=GZjT>V&X9rYf<}EK=e)qr$T=E7>A8#@y@069|nBfu$>R28r%dJ2XW&J`6KO>KO zJB)SI{js6z)MVp%Iq}IbUNh`u$*|0`Q3yN^W<+UYZCT3F>5LXB-csdqNRSYasEYif zTOXdVel^+Ht5kETn^|Q~xG`Y)oObO@m+qET1$6J{!8&KVfArqkIXFJ>dBSU$gO4=JiTte2$iriX}S+ldGpnrU^5 zei>QVy-DHZe+g84j4VXr+;u3Zp-ugKS@K(Is@3di0R}<1faONm0!~bZozoe06^OdU z_?0RPaL#UE(oYHAq4|J(TN?@5Vb3%Nh1?0^#+Tk}e=q98>)5{UehK#E6QX0yL z=2=rE6B$=X{M{xc6N8U_Q<~mhvqiHu<_^POThZxPAUz@@^_H0f&7$dj&H$+ zeSo-ofcR{Z?|}SeGU5;fhDuDGov})LrAHf%>)(nQ$@1$AW}b<6k@ibacUJke580}| zDD~Nme|9-Lf4FZ5m$ga0yF5^kmD;hFbU6a)#49SX-_`4nzSVm1S$QRXa$IabX+A?F zFXaPG>&voIDV`__8`gy6UH7u(6lLeMBRxO56oo-))~et`26L|I<<*myW~sky-VelP z4)`NC<$3CN0K(^J1d~oBdfUR?df-9tuLjbga%5-MsK@bACpO|P zZ1U_|_Ve&Y!S&~>^1}I#a-(+;afi$**>wrQ@lmyoBc+CJLxk83shOfmi6ciRTcoBOi!M z*$9KovvJ@Z(_{rVsG9*U4`A&{s%!pxxys%wD-OZVNNO+dx589a1(qhKg9_AJY&iRB zqPaiT$o<9f%J?P$Q8z+FHiYutf1#ztLb%&FM?JSvxHmYm#aVy6B@Sd|h)PEWe=C}O z6Jk5xFf-IG+{6gbevuI}7onMOXTamgbR>$CXM?X;c1UVUumRK!Ku8kTu_uZP_2r-t z(~Mv~8+`8LBc2KOf4ipqjm0ve z_~mMw@~-dXkq^mYb_|mGl@E_!2|0mEyr&T(Rg33C#!%u)zzuckb+plNYuS*au(_ei zy}6M#h#imWtKdCz~OiS{5IjQjC7{~sRye`<^gCYT?Sbz`_-8v-0M8$_tP#He~3{WFApx8Vy79DUcl8LOH*G z9z5n~coqMV%7*Ge&Z}n;;kz@}6%fCA$+#VcXa4On5#U`7;(~D(pCp&%pl}$KzM1>_ zW==BVXaTx|u@X^EU^xm)nBr&rj}|)*1L;=*vh#$cbVDpT3JcbMu|EC+-Rp>ry&hT zXG5V1E2{Eqvz!SudHgN$S+HVZJwRvS1O8af#?yUqgqZ=OKa#IkpH0{m*&eI&0RhQa z8se9FnDh1eXEL&8e*w|fTc@hWL`hx(0x#AtHkgKQq9L+IOhujRei{PAgA3wYSJDeG zy|Ngn*qu-{%aALZ_v@Jp;~!^F)V2Jurmta9S)~-+`&(uN)NRKS#4gegobq^ z#p-4=hKEX7MxLTwbK~OM3Siy|o0AGaS3r>&9|Nx53^=7aQzSKv!5&&oo|$ND{WI$Az8=fEmh0@7 zh1$e|Z*JBae=L`0N@5k%L$Bmoow0EMsexG z2xm3N8hIYHk>`n*i^CQD6o2^2b>5dy{nGXPbCm)R38jG2d{cZ8i640b^x}cww~N!H zOoqK&kiXSuaQv1^qSFK3UFpX;4qP~ze)AG??GyRrr^NL*?CLp*uk zW0LUv@Qk6sd_0lp8$u#VIwK!rD1F77D-BrZ%TJ-g1Gr1r@%mJkO0K;Wu`uhdP527Q9!orqmPse_cTs9YwF`^|eRfGTBgD{z^4h{`+Q> z=!HV4Gp>L;;+QieO&&Z!pnUvwXLADILLVn}lxMp?BPNuZ`$!$dP4Gc7=9Sc;XQ^*YGxcr&i3&V|CevPx3;%7BPyA6Iy@TsAcBYjw!EEV==R ze?Aewa;6t7jI7NWlB5mhi*bL~F;=iSKDbFbSc5lnulMs#{+dz~IL`(0m7>vl&5lD8 zxcn|~tfaba)dcZ56tVhHQnZIW@UU3*NcG9JTGaZkh2pnS6}vxF+>>qEwK;kg^kP6{ z_8a@#Y9PEvk^GBG_{Nv#!hq6G!=-Ize~}F~+kD{OTKz(6N*Lyf+a_38<8I_I%{^O; z

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 Sp|K9hHDXx1x^|+nu=yYHur;9o diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/DOMDocument.xml b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/DOMDocument.xml index e9493ef95..561eeeaf4 100644 --- a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/DOMDocument.xml +++ b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/DOMDocument.xml @@ -19,7 +19,13 @@ import flash.net.ObjectEncoding; import flash.xml.XMLDocument; import flash.net.registerClassAlias; +var s:String = ""; +for (var i = 0; i < 70000; i++) { + s += "A"; +} +var dt = new Date(2024,12-1,3,23,16); +var xm = new XMLDocument("

  • item
"); var amf0test:SharedObject = SharedObject.getLocal("amf0test"); amf0test.objectEncoding = ObjectEncoding.AMF0; @@ -33,10 +39,6 @@ var reftest = {a:refobj, b:refobj}; reftest["c"] = reftest; -var s:String = ""; -for (var i = 0; i < 70000; i++) { - s += "A"; -} registerClassAlias("MyClassAlias", MyClass); var data = { @@ -47,10 +49,12 @@ var data = { mynull : null, myundefined : undefined, myarray : ["a","b","c"], - mydate : new Date(2024,12-1,3,23,16), + mydate : dt, + mydate2 : dt, myref: reftest, mylongstring : s, - myxml : new XMLDocument("
  • item
"), + myxml : xm, + myxml2 : xm, mytypedobject : new MyClass() }; @@ -130,6 +134,11 @@ function fonLoad(event:MouseEvent):void { + + + + + @@ -145,10 +154,5 @@ function fonLoad(event:MouseEvent):void { - - - - - \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/sharedobjects/sharedobjects/bin/SymDepend.cache index 9a6c83f8f21e2178dc0246b2a7e1072a95cc4850..59a20af60549748c0cdbae7e5d1d4dbd92bb6a87 100644 GIT binary patch delta 37 kcmZ>85KL!aV0gjK&A`gQ0c5E&XiXGU;$_&k7RZ4D0A!N{jQ{`u delta 37 mcmZ>85KL!aV0gjK&A`aO!obPE#UM6OP>EM$-&&wB6aWBW=>%~A diff --git a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java index 5351c87de..5bb348be2 100644 --- a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java @@ -1828,6 +1828,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel amfVersionLabel.setText("" + solFile.getAmfVersion()); } catch (Exception ex) { cookieEditor.setText("//Error: " + ex.getLocalizedMessage()); + ex.printStackTrace(); } }