diff --git a/trunk/.idea/compiler.xml b/trunk/.idea/compiler.xml index 4c35963cb..c33f99162 100644 --- a/trunk/.idea/compiler.xml +++ b/trunk/.idea/compiler.xml @@ -5,6 +5,7 @@ + diff --git a/trunk/libsrc/FlashPlayer/uMain.dcu b/trunk/libsrc/FlashPlayer/uMain.dcu deleted file mode 100644 index 426ce1d08..000000000 Binary files a/trunk/libsrc/FlashPlayer/uMain.dcu and /dev/null differ diff --git a/trunk/libsrc/Swf2Exe/Swf2Exe.cfg b/trunk/libsrc/Swf2Exe/Swf2Exe.cfg new file mode 100644 index 000000000..f2b2beddf --- /dev/null +++ b/trunk/libsrc/Swf2Exe/Swf2Exe.cfg @@ -0,0 +1,39 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"." +-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/trunk/libsrc/Swf2Exe/Swf2Exe.dof b/trunk/libsrc/Swf2Exe/Swf2Exe.dof new file mode 100644 index 000000000..0955e8a7e --- /dev/null +++ b/trunk/libsrc/Swf2Exe/Swf2Exe.dof @@ -0,0 +1,138 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=. +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages=vcl;rtl;vclx;VclSmp;vclshlctrls +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1029 +CodePage=1250 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlOutputDirectorry] +Count=1 +Item0=. diff --git a/trunk/libsrc/Swf2Exe/Swf2Exe.dpr b/trunk/libsrc/Swf2Exe/Swf2Exe.dpr new file mode 100644 index 000000000..d5aeb1d5b --- /dev/null +++ b/trunk/libsrc/Swf2Exe/Swf2Exe.dpr @@ -0,0 +1,16 @@ +program Swf2Exe; + +uses + Forms, + Windows, + Dialogs, + uMain in 'uMain.pas' {frmMain}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'FFDec Flash Player'; + Application.CreateForm(TfrmMain, frmMain); + Application.Run; +end. diff --git a/trunk/libsrc/Swf2Exe/Swf2Exe.res b/trunk/libsrc/Swf2Exe/Swf2Exe.res new file mode 100644 index 000000000..ab5651a32 Binary files /dev/null and b/trunk/libsrc/Swf2Exe/Swf2Exe.res differ diff --git a/trunk/libsrc/Swf2Exe/flashplayer.ico b/trunk/libsrc/Swf2Exe/flashplayer.ico new file mode 100644 index 000000000..139de46be Binary files /dev/null and b/trunk/libsrc/Swf2Exe/flashplayer.ico differ diff --git a/trunk/libsrc/Swf2Exe/uMain.dfm b/trunk/libsrc/Swf2Exe/uMain.dfm new file mode 100644 index 000000000..52a9a92ee --- /dev/null +++ b/trunk/libsrc/Swf2Exe/uMain.dfm @@ -0,0 +1,650 @@ +object frmMain: TfrmMain + Left = 323 + Top = 163 + Width = 1007 + Height = 661 + Caption = 'FFDec Flash Player' + Color = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010004000000000001000800EC310000460000003030000001000800A80E + 0000323200002020000001000800A8080000DA40000010100000010008006805 + 00008249000089504E470D0A1A0A0000000D4948445200000100000001000806 + 0000005C72A866000031B34944415478DAED9D0B7C14D5F5C70F8F3C8090F008 + 041523521031451E159AF8A041FEB4F28F88429428A08912B51A54A80F94FEED + 940AA258F081CADFA841010D1A10458A1695482B49E15F40298280881435BC02 + 84040328F33FBF95B50177E6DED99DDD99D9BDDFCF673EBBB0B39BBBB373CE3D + E7DC73CE6D448AA8E4FD8913F5FA8307E9686DADEF38C2CF8F1C3A4447F9F03D + E2FFF911C4B76C49F149499480473EF0989092E2FB3F1C89FC7CE0E4C98D9CFE + 4E0AFB513FAA078170EFFDEC33DAC7C7DE2D5BE8787DBD23E3689C9848A95DBB + 52DB6EDD28950FA524BC87FAC15CCC5B85853F0A7ADDAE5D4E0FC7122DD2D27E + 540C571417ABFBCCA5A81FC645BC326488BE7DF9729F791E8DC09DE83460005D + B778B1BAEF5C82FA211CA474D8307D7B7939D557573B3D1447486CD3863A6567 + 53DEC285EA3E740875E123C8EB7979BE19DE6BE67CA480DB000BE1EAD252755F + 460875A1C3CCCB8306E9DB962D737A189EA4F3A04174FDB265EA1E0D23EAE286 + 8137F2F3F58D656551EBCB471AC40EBAE7E6D255B367ABFBD566D405B5092CCD + 7D3C670ED5ECD8E1D8185A356942CD1B35A284C68D299E1F7124F21177E27933 + FEFF383E2F911F134E3C07C7F83872FC38D5F381E7DFF2E3515DA7637CD4F371 + F4C481730EF3E381EFBF77EC3B26A7A753CFD1A3D592A34DA88B1822C59999FA + 57959511FB7BCD5890539B36F51D6D59E053F9687BE27924D9C74A60DF77DFD1 + 5E3CF2B117CFF9F8961544A4382333930A2B2BD53D1C02EAE20501D6E7D7CD9E + 4DC78F1D0BDBDFC0ACDD312E8E4E83B043D04F083D667437038BC1AF0CA01CBE + E1C79D7C9D8E85513134E6EBD42B3F5FE51B0481BA601658306A94BE61FEFCB0 + 083E04BE030BF8D9F1F1D4858F347E1EE77261B7C2177CCDBE3C7A94BEE0A38A + 95423814021441C68811347CEEDCE8B97061465D2809E6E7E6FA827A767326DF + B0387E9690401DA34CE0CD80F0EF6425F0F99123B49D15C2D7FCDC6E10341C51 + 56161B173404D40532615E4E8EBE65C912DB3E0FFEFBCF1313A90B0B7C2716FC + 581178115008DBD942D8CA0AE15FF5F5B6C611BAE6E4D0C8254BD48536405D98 + 00CC1E30C097B0630710F27359E07B356B4667C7C585FE813100DC8575DF7E4B + 9B5821D8E52A20C1287FF97275BF9F82BA200D783E2B4BDF595161CB67C197EF + C1829FC133BE9AE98303C2BF812D82F5AC08103BB0838E595934A6A242FD2027 + 501782595450A0AF2B2909F973DAB31FDF8305BE271F498D1B3BFDB5A28ADAE3 + C7E96328033E76DB1033E8555040579694C4FCFD1FF317606A9B367A28C53898 + DD7BB1C0F766131F517C45F8C12AC25A7611D6B13208C5454031D284EAEA9896 + 8198FDF2CFF5EBA77FBD6A55D0EF87E0F765A1CF6CDE5CCDF60E01ABA0F2F061 + 5ACDCA201445707ABF7E74F3AA5531290B31F7A5971415E9AB67CE0CFAFD88E4 + F765A187E0BB3D29275640F2914F11F011CA0A42DFA222CA993933A67ED498FA + B2D3D2D2F4604B7121F817B568E19BF55550CF9DC00A8035F0515D5DD08AA045 + 870E744F5555CCFCC031F1454BB2B3F52FCBCB837A2F0A6CFAF36CAFA2F9DE01 + 8A00F1810AB608822D5C3A2B3B9B0ACACBA3FE078FFA2F382931510FA669A65F + F0B17EAFF02EC8275811A42240D3D307EBEBA35A46A2F6CB059BBE8B593E8B05 + FF223ED48C1F1DC022F88895002C82608285D19C561C955FEA892E5DF4FD5BB7 + 5A7E1F9277FEBB65CB8897D62A2203CA96FF72E850504945ADBB74A13BB76E8D + 3A7989BA2F34292E4EB75AAD87001F041F7EBE22FA4176211481D54021AA0D1F + 3C762CAA64266ABE0C3AEC6E5AB8D0F2FB10D51F80DD6F94B91F53C01578AFB6 + D6B76A609573870D8B9A4EC651F1251EEFDC593FB06D9BA5F7A00C7730CFFA2A + 7B2FB64156E1DB3535964B925B75EE4C776DDBE679F9F1FC17B06AF223B03798 + 677C15DD573404AB054BD922B012248C0697C0B3830F26CA7F3ACFF6D7A4A450 + B20AF2290250F3FDF7F4DAC18396AD012FAF127872D0C1D4EBC3D787C9AF5088 + 587AE890E5D88057FB0D786EC0B37AF7D6ABD6AE953E1F11FEA1C9C9744E4282 + D343577888CD478ED09B353596560A3AF4EE4DB7AE5DEB2999F2D460ADAEEF2B + 935F110AC1B8045ECB17F0CC40A775E8A0D75555499F7F61F3E6F45F49494E0F + 5B110560B970E5E1C3D2E77BA9A0C813839C9294A4CB6EB3A54C7E4538B0EA12 + 603BB3076A6B5D2F5FAE1FA095621EB4E41AD5AA956AD0A138097F1BF24DFCB8 + 95CDFAADFCFCE77CAF145A5C0A864BF00ABB04B22DC9BC504CE4EAC15959E347 + 1EFFD5ECEFAB8CBED8E4C0F1E3B48D8FCF5948716CE763CB89E7DFF071EA5D74 + 330BFFAC205685A04C4A5909C8D613B83D57C0B503D388A4C3AFDDD9DC87F02B + 6283AF58D03F64015C81F6E13C1B6346AFB698D7FF5B56004F07B92C0C25B088 + DD818DEC16C8A2B954D65C3928CD82F0ABF5FDE807FB047CC8B378F909A1DF6E + C3EEC4C15A000DB19A2FA0B950DE5C37202B667F768B16D49F0F4574B19167F4 + 0F21F438B09720CFF876138A05D09015757554CE870C6E74075C35182B01BF2B + F8C753F9FCD10384FE25FEED4BD9ACDE61C30C2FC20E0BC00FEA08DE626B4006 + B705065D3310D9A53E14F3E4B2BFDF353EDEE9212B42640FCFEC10F812F4F80F + C306A166D86501F8C132E1829A1AA96222372D11BA6210B2493E58E3BFB6552B + EAA8F6D8F32C68E1BD98CDFAB93CDBBF83BDFF1C1A879D16809F9DECB2BC7AE0 + 8054AE805B92851C1F806C7A2F847F74EBD6AA7EDFA354B070C0C47F958F4336 + EEFEDB90389E183A75EAE43BBA76ED4AEBD6ADA3952B57063CD76E0BC00FFA0B + CCD9BF5F4A09B8216DD8D13F2E5BD803B37FB49AF93DC7376CE2CF62F37E0E0B + BD1D91FB86B464E1CDCCCCA45FFDEA57949595455D5898CE3CF34C6AD4200F64 + C28409F4C8238F047C7F382C003FB004E6B02520E30E385D40E4D81FB652D29B + C73EBF4AEDF50E58A79F525747B359F043D9A9A721EDDAB5F3097A7676365D7C + F1C5D4B3674F8A17C481CC1440B82C003F880920614806274B891DF9A3569A79 + A868BF77B053F021F003070EA44B2EB9C427F4DDBB773F697697C1290BC08F95 + D501A79A8A38A20034C9441FB5CEEF0DFC82FF3C36E90CE173E0C30F1932846E + B8E106BAECB2CB8433BC08272D003F56F2043407E431E27F5036D14765F8B91F + 44F435BEB96760C38D103EA75FBF7E3EA1CFCBCBA3366DDAD8363EA72D003FB2 + 19834EE40844F48FC976EF55B9FDEE6711FBB877D5D6069DB4939E9E4E23478E + A4FCFC7C3AE79C73C232463758007E5E3F7850AA7620D2DD8623F68764FBF6A3 + AA0F413FB52D973B415E7E11CFFA4B83D85D0791FB2BAFBCD227F403060CB0EC + D35BC52D16801FAC0CC854114672DF8188499926E1F7A39EFFA6D6AD95F0BB10 + 98FBD3D9D49FCC87D5001F027877DF7DB7CFC46FDEBC79C4C6EC260B00E01ACE + DEBF5FAA9F801621D98CC81F91F1FB91E8730BFB7FAA7F9FFB409EFE556CC26E + B668EE43F0274E9C48D75D775DD867FB40B8CD0200682AF2BFD5D542251AA9C2 + A1B0FF01D94C3FA4F8AAFC7EF7F14A7D3D155ADC47CF69C1F7E3360BC0CF1676 + 0390322C2212998261FD70D9F57ED5C0D37D208B6D6C6D2D3D67A1DEFDB4D34E + A369D3A6392EF87EDC6801F8916D341AEEFC80B0FE4A9A84DF8F3DFA0AD8EF57 + B80704FA86F3AC2F5BA187F5FB5B6FBD951E7AE8214A4E4E767AF83FE2560BC0 + CFF3EC0AC8B41CD7C228A761FB6099DA7EE5F7BB0F2CEFDD5053235DB08335FC + 679F7D96FAF4E9E3F4D07F829B2D00201D0F08637E40583EB4243B5BFFB2BC5C + 789ECAF17717C8E6FBBD64D65A6BB6DA205C63C68C7185B91F08B75B0040B666 + E0ACEC6C2A282FB7FD4287E597D3244C7FE5F7BB8B89EC933E2CB9F945FFFEFD + A9B4B4D4E7F3BB19B75B007E64E3015A18E4D5F60F9C9696A6D7EDDA657A0EB6 + EC1A6363CAA722347EC737E00C49E1BFEFBEFBE8E1871F76EDACDF102F58007E + 64E2012DD2D2E89E5DBB6CBDF0B67ED892A2227DF5CC99A6E720C9E776E5F7BB + 863B0F1DA2A72422FD30F9E7CD9B4783070F767AC8D278C5020088073CCD4A40 + D443A06F5111E5CC9C699BDCDAAA003409D35F95F7BA87DB59F89F95107E04FA + 5E7FFD755FFEBE97F092050064CB87351BE5D6B60F7AAE5F3FFDEB55AB4CCF51 + A6BF7BB8956F349935FEC2C2429AC9565DA8A5B94EE0250BC04FC9FEFDF46F41 + D6ECE9AC906F5EB5CA16D9B54D016812B3FFCD2CFCAAA79FF3C8CEFCE3C68DA3 + E9D3A73B3DDCA0F19A0500D053F0397605446836C9AE2D1F32B54D1BBD5E3068 + 55DFEF0ED09F0FEBFC22EEBFFF7E9A32658AD3C30D092F5A0040A67F40224FA6 + 13AAAB4396DF903F60514181BEAEA4C4F41C24FCDC959AAAAAFC1C660DCF2E97 + 4874AC45461F72F9BD8E172D008040E0E37BF70A7FA75E050574654949484215 + B2446A12A6FFF0E464CA484CB4FB3A292C80DD73FBB0F08BBAF3C2E487E91F0D + 78D502009B8E1CA1D7241284B4106538A4373F9F95A5EFACA8303D070D3ED0D2 + 5BE12C39070E089B783CF1C41374C71D77383D54DBF0AA05E047A68148C7AC2C + 1A535111B41C87A40034C1EC0F931F81BFB66ACDDF51FE5057477F12A4F8DE76 + DB6DF4F4D34F3B3D545BF1B20500F6B3B5364B2237400B418E837EA34C5F7F74 + F4CD565D7D1DE56D3625AF109892175E78212DE7DFD28B4B7D6678DD0200E828 + BC42A0BC43D957206805A00966FF563CEBFF96677F15F8730EF8FDDD7806D963 + B2BD36F2F9FFF9CF7FBA3EAF3F18BC6E0100CCFECFF26F784010BBD18294E5A0 + DE342F2747DFB26489E9392AE3CF794439FEA8E3FFF0C30F7D3BEE4423D16001 + 00990CC1AE39393472C912CBF21C9402D02466FF3BDAB68DE435529C02FAF85D + 2058F283CF0FDF3F1A387AF428FDFDEF7FA7F2F272DAB06103AD5FBF9EB66CD9 + 6278BE572C003F4FEEDB17162BC0F21B64DA7C21E1A7AF9AFD1D4514F52F2828 + A0175F7CD1E96186C461B66EDE7BEF3D5AB46891EFD8CF0A4F162F5900008941 + 4B05564030EDC32C2B004D30FB23E9E79E76ED9CB8468A132C63C1FF8D49D349 + F8FB5BB76E8D688B6EBBD0D9A259BC7831BDF4D24BB46CD9323A24B9F7DEA978 + CD0200D3F6EC112607691665DAD2C90B468DD2D7CF9D6B7A0E9A7C5CE8C11B2B + 9AF87975357D6A525B3E977F43ECCAE32520F8A848449622CCFB50F19A0500D0 + 3404CD43CCE8316A140D9F3B575AAE2D2900517F7F95F2EB3CA8EDBFD36456C4 + 921F7C652F34F40010FC3973E6D0D4A95369E3C68DB67DAE172D00991461ABFB + 09489FF85661A1BEA6B8D8F41CB5EEEF2C58F6EBB26F1F551BDC20717C7CB46A + 15F5EDDBD7E9A14AF1C1071FF8BA0D9B05F382C58B160090C90BE85358485714 + 174BC9B6B40210CDFE98F5C7F1EC9FE89199251A1165FC7925F0575353E3AB46 + 7CE6996742FE2C28BDB39B34A1F39B36A55E7C9CC74737FE77778F96A5637BB1 + 196C051CB3C90A9096564D10FC534D3E9DA713CFFE46BBF562634E04FEDAB76F + EFF4304DF9EB5FFF4AB7DC720B6DDFBE3DA8F7A7B3700F8D8FA70B58083220F0 + FCEF689B94649A886A92B22D75527166A6FE5565A5E1EB98FDC7B66D4B498D1B + 3B7D6D62162CF9E59844FE911073EFBDF73A3D4C43E0EB1715150535EB63561F + 9E904043F9E8E3D199DD0A3256C019999954585929946F2905A009667FD5ECC3 + 79AE397890CA0CF69FC7ECBF73E74E57EDDAD31098FCB9B9B9BE653D5960DA8F + 4A4CA4BBD9F2F4AA391F0A324D433409F9169EF0FEC489FADF264F363D47B5FA + 7216E4FA77C48C60F0BA9B7DFF6DDBB6D1E5975F2E1DE187E08FE109E76E16FE + B3E3E29C1EBE63C8B40EBB64E2441A3879B2A98C0B15C0F4F474BD66C70EC3D7 + DBB3E0DFAA1A7D3ACA34F607EF33591F5EB972A52BF3FD57AF5E4D393939B467 + CF1EA9F30B58E8272525D119CAD5F48152E1DD26F91EC9E9E9347EC78ED01480 + 2630FF07F20F72914AFC719473F7EDA3CD06C1BF1E3D7AD0279F7CE2F4107F02 + 847FE0C08152997C1D58E05F60F7657094952B878A4C6290269071D317DFC8CF + D73F9E3DDBF40F8C4F4D55C13F07A938768C2E32C9817763971F28A4ECEC6CA9 + DC7DCCFA7FE649A695BAC77E422DBB7ED3D9F533A3677E3E5D357BB6A19C9B2A + 80294949FA51130DA3DA7D39CF4D35355462B00B7333F69511FC6BE322170D3E + FFC5175F4CDF7CF38DE979C82A9DCDB3FED56AF35853446DC3E259793E505B1B + 9C02D004E6BFAAF9779E54F69F8D32FFF2F2F2E8D5575F757A883F02A1472AB2 + 688DBF1DCFF66FA7A450DF180EF2C922D32B40339173C3175E1E3448DF66B22C + 83B5FFBB55DEBFA3A0E63FC32412FCFEFBEFD3A5975EEAF4307D609D1F3EFF72 + 411BB99F376D4A4BD9AA54813E39900BF0982027A0F3A04174FDB2650105D550 + 7A35C1ECDF837DB3AB5CBAAE1C2B14B3F6BFC540FBB76BD78E76EFDEEDF4107F + 64C68C19347EFC78D37390D0F321CFFCAA89AC35DE603770BD811BE8473390F5 + A015C0B5ACA5BBAAA8ACA398F9FF575C7105BDF9E69B4E0FD107827E175C7001 + 1D33A925410A6F45EBD6749A9AF92DF3055FD7398280AA664501BC9E97A76F28 + 2D35FC30D5F4C31D982DFFB925F517ADBA20FC6635FCF0F92B79E68FE5C49E50 + 11350BC9C8CBA3AB4B4B7F22EF0115C0B4B434BD6ED72EC30F53A9BFCE83D2DF + 36264B4068F6D9BF7F7FA787E933FB61FE1B81C6A4157C2FC5420E7F38111508 + B5E8D081EEA9AA9253009AC0FC1FCDA69AD2D6CE6256FC03A13AC0AF39DDF20B + F5FC08FC998135FE712A912C64B6F0FDF0AA493118D002C87B500AE07E36FF55 + F4DF59CC6AFFFBF4E9E3EBF5EF24D5D5D5D4BB776FDA6192463E283E9EDE5579 + 24B620B31AA0C92880D261C3F44D0B171A7EC8993CBB14B005A0709681ACED97 + 1B24808C1D3B969E7CF24947C777EDB5D752A9491C097EFFBA366D54D0CF464A + F6EFA77F9B045ACF1D368CF2162E3C49E67FA200A6B669A3D79BAC2DABC61FEE + A08549D0C7E9A69F6BD6ACA15FFCE217A6E7CC4F4951597E36236A1796C80A77 + 4275B5B902D094FFEF7A4409405F7EF925A5A7A73B36BEA14387D25B6FBD65F8 + 3AF2FB5F503924B613CC72A02505A0B2FFDCC12BF5F534AAA626E06BE8F9FFF5 + D75F3B3636ACF9F7ECD9D3F0F54E4D9AD0273C89A80232FB09260E70D23F5E19 + 3244DFBC78B1E19B95FFEF0E26D4D6D2A3064B3EC3D8CF5BB0608163631B3E7C + 382D3489217DC8F7CF25CA820C1BA238C0394386D0758B17FF28F727290051F5 + 9F6AFBED0ECC0280D83863E2C4898E8CEBD34F3FA58C8C0CC3D755D43FFC88E2 + 00A756079EA4003481FF7F236BEF8E4A7B3B8E5905E05FFEF2171A3C78B023E3 + 1245FED5EC1F7EACC601A41580F2FFDD017EE09F99FCC0F0FF1107883498FD7B + F5EA6598EF0FC1FF50B98F11E1619E2064E3003F3E11EDFCA39A7FB88345478E + D0B0830703BEE66405E0F5D75FEFDBC2CB88F7F9DE19A08AC72282A84948C39D + 837E54002FF6EFAFEF58B1C2F04D6AFDDF1D986500C2F4870B1069D0D63B95AD + 43A3D93F8B67FF8FD4EC1F31447180F4FEFDE9C6152B4E5600D33A74D0EBAAAA + 0CDFA4BAFFB803E4FF2F35D0EED84E6BCA9429111F135A8EDF74D34D86AF2FE1 + D95F35F48C1CA22E412DD2D2E89E5DBB4E56009A0A007A82D3F7EEA5AAE3C703 + BE367FFE7CBAE69A6B223E26741D32EAF483FDF8D6B8A827612C20B367807642 + F6A515C0BDEC5F46DB1E6B5E031B80A49994007FFEF9E7D4B973E7888E09C53E + 679D7596E1EB4FB0E53856598E11055B873D2AD86B41B3A20054031077605602 + 8CEDBF0E1E3C488D22ACA41F7DF451BAEFBEFB02BE067B717B6AAA2AF8710051 + 8310ADA102106DFFA53200DDC1D4C38791C411F03534FF4013904873FEF9E71B + 76FB51893FCE21CA08F46F1BE65300F37373F58D65658627F766136E88EA00E4 + 38B93CC32F34D80074DCB871347DFAF4888E4794F9F7627232E5272646744C8A + 1F587CE810AD35D93CB47B6E2E8D282BFB41013CD3A387BEDBA4671B96FF2E54 + 5D5B1CA7F3BE7DB4DDA007E04B2FBDE45B8B8F24D8CAFBF6DB6F0FF81ADCC65D + 6ACB78C7106D1BD6BE470FBA6DFDFA1F14C0A4C444FDB8495B61D501D879443D + 003FFEF8639F391E49468C1841AFBDF65AC0D786252450594A4A44C7A3F80FA2 + 16618DD9327BB0BEFE0705A00956006E674DAE7AB53BCBDFD89FFB95410A30B6 + 00430FC0F8082BE9D34F3FDD708BAF67D865BCD562F41FD1EB437CF8B31C603B + A0552882895881C21DA852D1E5D8C796E2D36C319AA111C9298007DBB777FAFB + C43C33D8A4FB9D8149E7440FC0CD9B3753B76EDD0C5F47F61F76F769CEB7D861 + 16EA3A3E0EF081C834FE5DC3079C995A7EFC8E8F63F27F9AFCD9284DF9B3FD2A + 269E9FE380D2883FF1EFF1ECB6C6720C6292202D5C935100AD78E6BF832D0085 + B3E4D7D4D0CB066E5A6161213DF7DC73111D4F717131DD7CF3CD4E5F1653A624 + 25D184188E5D3DC916C001839811D06414C0E94D9BD21895C9E5384800DA6390 + 01F8F4D34FD36DB7DD16D1F1888A7FDC40AC2B80E7ABABE9EBEFBE337C5D9351 + 00AA0AD0792AD8FFBFC8A40418E63FDC804872F6D9670B77F9759A585700A2AA + 400D0A409404D42D218146A868AEA34C64DFFF618316604EF40044E00F0140B7 + 13EB0A60FEC183F49941DE08403250A3254545FAEA99330D4F524940CE733E9B + 72FF3230E59CF0FFE7CD9B47A3468D72FAB20889750520DA35B86F5111357A23 + 3F5FFF78F66CE393D43E808E22EA00841D80B113702441F20F9280DC4EAC2B80 + A5870ED16A936CC09EF9F9D4489406AC1A813ACB53FC03DE6950DB8D02A0AAAA + AA88EF01880620C83BA8E7D9A596DD131C757575F42D8F15C7617657F088D771 + 24262652120B63C303FF87FC85047631F11CDFA5499326BED7F0FF286AC2CEC2 + DFB1E5E33F8EB0398BA623FE7FE3B3274C98404B972E0D38CE585700A20D4391 + 0EDCE8E54183F46DCB96199E04E1EFAF148063987500C6CC0F0B2096316B441A + EB0AE02316FEF74DD2813B0F1A448D9ECFCAD2775654189E04F3BFAFAAE77684 + 0327EAFF8D92645E78E105BAF1C61B9D1EA6A398A523C7BA0280F9BFD4A433D0 + 199999D4E8E98C0C7DCF860D8627A95660CE61B6031070AA03B09B501680311B + F8FE596072FFB4CBC8A046D3D3D3F51A932D9CAF4949A173D5268E8E702DFF78 + F30DA2B8FDFAF5A37FFCE31F4E0FD17194023066D39123F49A410769909C9E4E + 8D44BB01ABCD409D017DDD53D9FC3F64D0D5C5C91D80DC845200C6883609C16E + C18D26C5C5E9C74D3A87DCCC277568DAD4E9EF127320F037D0A49CD389F25F37 + A21480313B59AE5F3451008D7962172A00D50DD819B0F4F794C11A6EA74E9DE8 + 8B2FBE707A88AE4029006344DD817D0A40B900EEC4ACFBCFD8B163E9C9279F74 + 7A88AE40AD021823E502A820A0FB40DAEFF9264AF9DD77DFA55FFFFAD74E0FD3 + 15280BC018A920A068197078723265C47053052740E38F1906195CC898DBBB77 + 6FC4BBFFB815A5008C11ED10E45B062CCECCD4BFAAAC343C4925024516B4C54A + 3389FE63E71FEC00A4F801A5008C914A0412A5020FE48B78510C5FC44853CC3F + DA2D263F1A36FFC426A08A1F50310063A4528145C5406A57E0C8D2877DFF7506 + A5BF88FE6FDBB62DE2BBFFB81965011823550CA4CA81DD83A8F3CF238F3C42F7 + DE7BAFD3C374154A011823550EAC1A82B887913535F4AA41EA6F5C5C9CAFF4B7 + 8DEACF78124A011823D51044B50473071BD9ECEFC5E6BF514AD6E8D1A3E9E597 + 5F767A98AE43C5008C916A0986279A6A0AEA3866B33F58B97225656565393D4C + D7A12C0063A49A829E78A2DA823B8868F67762E30FAFA0148031B6B405571B83 + 841FD1EC8F757FACFF2B7E8A5200C6D8B23108505B83850FCCFE192669BF3D7A + F4F055FEA9A5BFC0280560CCC37BF6F8CACA8DD0641580DA1C347CE4B09FB6D4 + C44F5BB060010D1B36CCE961BA16A5000263697350D1F6E0792929748E2A08B2 + 9D45478ED03093620DE5FB8B510A20309BF9DE2A35B9B74EDA1EFC991E3DF4DD + EBD71B9E8C4CC00B63F442860BE4FC9FCBA6FF0E131FCD899EFF5E432980C020 + 03F03D9334E0F6EC5ADEB67EFD0F0A40940EAC9281EC6702FF388F9AA469AA9E + 7F7228051098C5870ED15A932C40A4018F282BFB4101889281CE8C8BA382D6AD + 9DFE4E518368D90F38B1E1A717510A203025FBF7D3BF4D3A7D210968E0E4C9FF + 092D6B2681C0667CDA3DEDDA39FD9DA20244652F3970805699FC38D8EA1B5B7E + 2BC4A84CC0C04CDBB387BE15AC00E0514A01807B590124AAA5A890316BF601D0 + E77FD3A64D949C9CECF4503D81B2007E0AE24B8FB2023043B3AA005477E0D079 + FBC811BAC224320BE6CE9D4B23478E74749C2B56ACF0EDBBF7FDF7DFFBF6EB6B + F8084EFDBF501EC1A99FDFF06F3424D0FB27B3EB8AF10622561580A81B30D04E + 5500D3D2D2F4BA5DBB0CDFA076080A8DAF8E1FA79EFBF651B589593660C000FA + E0830F1C1D2736FE4C4D4DF56DC2E975625501885A81B5484BA37B76ED3A5901 + BCD8BFBFBEC3409302B54B70F0608FBF4BD9EF5F6792978D5E7FEBD6ADA3CE9D + 3B3B3A56F8D3F0ABA381585500E57575B4820F23D2FBF7A71B57AC385901BC55 + 58A8AF292E367C93AA0A0C8E5A16FEFE02E1076EC9F7C766A32525254E0FC316 + 62550188AA00FB1416D215C5C5272B00A099C401E21A35A2FBD54A802520FCFF + C53EFF2A81395DC83FC873CF3DE7F4707DB46FDF9EF60802485E211615005699 + 1EC38ED2122B00405A0100B54B903C88C4FE8635F1DF04C28F629FCACA4A6AEE + 821B75F5EAD5BE04A468211615809500203849018876095271003920FC393CF3 + 2F3731C300FC7E08FF79E79DE7F4907D4C9A3489FEF0873F383D0CDB88450520 + F2FFB11BD084EAEAC00AE0952143F4CD8B171BBE5965048A81E975250BFF5281 + F0376BD68CDE79E71DEADFBFBFD343FE915FFEF297B46AD5AA80AFB5611730B5 + 7163A7876889DFB1F017C6D8CA952803F09C2143E8BAC58B032B00A009E20077 + A7A6FA1E153F05C29F5B53438B4DFAB00108FFDB6FBF4D975E7AA9D343FE91DD + BB7753C78E1D0D97FFE6A7A4D0D5AA22D4D558F5FF81250500D466A181C152DF + 0D870E4909FFA2458B5CB7B71F1A8EDE70C30D015FC3AFBD8B157F2B8F5900B1 + 86683350A08914808A035807FDFCAFE599DFACB417A0B5775959992B4B7CCD52 + 6A07C4C7D3FB6A09D8F588360239D5FF073F5100A5C386E99B162E34FC101507 + 3899297575F4473E447973107E08981BBBFB1CE69B06E6FF7E83D9E391A424BA + 27C682695E44E4FF9FCBF75EDEC285E60A0068023700F900B11E07406AEFF53C + EB8B22FD00C28F1C7F3724FA04E2C9279FA43BEFBCD3F0F50D3C7374577520AE + 067EFFC39205400D094A015CCBE660D718DE9E1A453D37B1BFBF87958008083F + 32EB9C2EF031E2282BB06EDDBAD1F6EDDB03BEDEA94913DAA6BA42BB9E60FC7F + 1050014CEBD041AFABAA32FCA058DD3014EBFBF7B19FF59449A7958640F867CD + 9AE54BAF752B66C13FF03F2D5AD01F55CCC7F588F6016C5800D490800AE0F5BC + 3C7D83414008C46283106CDBFD07F6F5AB24667D809D7C5F79E51557EFE6A3B3 + 42CBC8C8A08D1B37067C1DBFF30E36FF554768F723DA0320232F8FAE2E2D9553 + 004053CB813ED0B917FDFB360B22FC0D81AF5F5C5CECFAA61E6FBDF5160D1D3A + D4F0F5716CE9FD39062D3DAF11ACF90F0C15C0A4B838FDB84944B14762225DE5 + F21B3C1490C30FC1AFB050178F35FE993367BADAE46F8859E61F54FBB6D4543A + 43ADFDBB1ED12EC040B3AA005E1E3448DFB66C99E107466B56E0BFBEFBCEE7E7 + 8B52794F05453D58E6734B5EBF08341E193870A0E1EB05ACE05F8862051F2DC8 + 64FF751E3488AE5FB6CC9A02009AC00D88A62E4130A3FEC87E3EF6E8B3DA0B67 + ECD8B1F4D8638F51BC47564610F9EFD5AB97A1EF0FD4D29F371075FF019A899C + 9B2A80294949FA5193CD05A2A14908D6F11FE78B284AE10D44EBD6AD69F6ECD9 + AECCEC33E381071EA0871F7ED8F0F5DC84047A2D25C5E9612A241035FF884F4A + A2076A6B8353006FE4E7EB1FF30D6EC6787603923CE62762396F0ECFF458CEFB + 97A0534F20B0BC57545444BFFFFDEFA98DC7B64E5FB3660D6566669AF6FCFB3F + FE4E7DD4ECEF7AD070663A9BFF66F42A28A02B4B4A8253004013B8015EDA360C + D97B4F1D3E4C252CFC32493CA702C1CFCBCB234DD31CEFDD170C30FD2FB8E002 + 5A6FB20DDC109EFDDF54B3BF27106DFF0534818C0B15C0F4F474BD66C70EC3D7 + DBF34C71ABCB674144F2D18BFF4D36F383ED753B78F0609A3A752A9D7FFEF94E + 7F9DA079F0C107E94F7FFA93E1EB2D1B35A24D6DDBD2691EB3E8629559D5D5B4 + DBC4824D4E4FA7F13B7684A60044DB8601B7EE198035FC497575C2869C66A045 + 16FC6537D5EE07838CE9FF627232E527263A3D548504557C4F3F6752B50BFCDB + 7F999D23B586A709DC80BECD9AD160176E1E3AF4E0C1A0827BA06BD7AEBE19DF + 8DD57B5641B51F84DFCCF41F141F4FEF7A3CA01B4B88527F812621DF520AA038 + 3353FFAAB2D2F075E4028C4B4D75DDD661B9AC00165A540068D185CAB8ABAEBA + 8A1AB9ECFB0403D27D73727268E9D2A586E7C0F4FF944D7F95F4E30D10C49E21 + 58FB3F83157E6165A53D0A0068022BC08D0542B2160032F810DCBBEBAEBB3CED + E307E28E3BEEA0A79E7ACAF49C67D87ABB354AF239620151E30FA049CAB6B402 + 989498A81F37493774A315205200D888F3F6DB6FF7F5E5473FFC6863C68C1934 + 7EFC78D37354B71F6F2133FB378E8BA3078F1DB3570188760E026815D6DF45A5 + A3660A005B704340BC92BD671551A10F80E9BF8E853F168ABAA205B4FC2E3769 + FB0D1AEEFC23C2D2742D2A1042F9E85D2EAA0F3053004F3CF184CF3C8E4610F1 + CFCECEA6432629A210F97758F80744A9028C4630EB3FCEB3FFB736CDFEC092A4 + 2E18354A5F3F77AEE9396E4A0C325300D3A74FA771E3C6393D44DBD9BC79B34F + F8BFF9E61BD3F3D4929FF79049FCE9316A140D9F3B373C0A00C858016E691662 + B60A108D0A0033FF65975D26DCDB4F75F9F126D3F877359BFD816651A62D2B80 + F9B9B9FAC6B232D373DC5225184B2EC08A152BE8F2CB2F3735FBC1F53CEBCF56 + 65BE9E036BFE4B05BF6DF7DC5C1A5156165E050034C19260AB264DE80E173492 + 8C150580801F9631BF1524865CC2FEE17BECF7BB2546A39047D4F20B6841C873 + 5077C2BC9C1C7DCB9225A6E7B8C10A888518C0BC79F3A8A0A0C034C5179CC34A + B9B2756BB5BB8F0791A9F93F75CF3F59829E0A34092BE0B76DDA383ADB44BB02 + 78F4D147E9BEFBEE139E87D6DEEFB3D9AF96FBBC0722FFCF56578765F607414B + E7EC0103F4EDCB979B9EE3F43662D1EA02D4D4D4F866FD85263B38F939AF6953 + 5F8EBF4AF3F526A2EDBE41A70103287FF9F2C82A00A009AC00CCFEBF6DDBD631 + B3D36C15C0AB0AE0934F3EA1DCDC5CDAB2658BF0DC7E3CE3BF9392A2CC7E8FB2 + 8F677D54FC1DB339F2DF909014C0F35959FACE8A0AD3739C6C1B166D2EC08B2F + BEE8EB44240AF60124F8BCC966BFD7BA3529FE83A8DD17E8989545632A2A9C51 + 00401358016038DF88190E249D448B0B80725E083EB61893015D7DCAF89AAB68 + BF77D9505F4F0BD8D513A18528C321DF218B0A0AF475821B130141340D8974A1 + 503458009F7EFAA96F89CFAC96BF21AA9DB7F79149F905A27E7F32D8229153DB + B4D1EB05DD499C2817F6B20580FE7D0F3DF490AF298968890F20BEFF47BEBE13 + 5C9286AD081E9972DF449E50275457872CBFB64DC99A842B10E9D6615EB5002A + 2A2AE8A69B6E32EDDBDF900EECE7CF4F49F125FA28BC8D4CAB2FA0D924BBB629 + 0051D7207026DFA005AD5BDBF5278578AD1600CB7B68352E6AE0D11004FB4AD9 + E46FA7827D5141C9FEFDF46F81C527DBED47065B9D7251A110886486A0975C00 + A4F36287A11D261D984F4515F5441732197F40B3516E6D55004B8A8AF4D53367 + 9A9E83C8F4EDEC0A244760CB692FB800AB57AFF665F32D1724553504B33D0A7A + 06AB5AFEA8A1E6FBEFE9698935FFBE4545943373A63B1500989696A6D7EDDA65 + 7A4EA45C01375B00DBB66DA3FBEFBF9F5E7BED354BEF43F75ED4F2ABCCBEE8E2 + 7916FEAF05EDEB5BA4A5D13DBB76D92AB3615997D3240282915815709B024087 + DEFDECE36167A159B3664945F7FD60D67F8CAFD768D5C423EA9089FA032D0CF2 + 1A160550929DAD7F595E2E3CEFDA56ADA86B18CD5837B900E8D083E0DE4C7691 + 4435FB3FB94E2CF48FB3F0AB405FF4B199EFCF52BE4F458492EF6F46D8327344 + 5D8441B313B502E14A5775C32A0072F7B175786969A9A5191FA4376942CFB66C + A97CFD28057EFFFFB2E92F4AF869CC13C083F5F56191D5B0A6E66912AEC0E94D + 9BD29830ED2DE8940B0053FF9D77DEA169D3A6590AEEF9C16AFE9866CDE8CF3C + EBBBA9CDBAC25E64FC7EA085514EC37A77C9B40F03E18A07445A0120671F0D3A + D06E5C3689E75490C73FB5450BEAEEC2BD1615F621EBF767E4E5D1D5A5A5DE54 + 00E0892E5DF4FD5BB70ACF0B473C20523180DDBB77FB7C7B04F6440D398DE8C5 + 02FF049BFB2A9B2FFAD972F428BD7AE080F0BCD65DBAD09D5BB786554623625F + CAC6036EB1393F20DC0A00FEFDE38F3FEEF3EF654A7403816E3D0FF18C7F9D8A + EEC704D27EBFC5FEFEC112310753938807B4E759F0A6D6AD6D2B630D870B80F5 + FB575F7D95E6CF9F2F5DA11708E4EF8F63D7E72EF6F555D96E6C80249F17F6EF + A7DD0EFBFD0D89D89D573A6C98BE49A285959D0D44ECEA088425BC3973E6D082 + 050B68D5AA55218DE9E7ACE4C6B3E08F645F5F097EEC00E1C7729FA8C1073877 + D830CA5BB830BA140078BC7367FD00CFA022BAB3705C9D9212F2DF0BC50580D0 + BFF1C61BBEA0DECA952B431E0B32F8EE66C11FA496F46292D7F95EDC28B15375 + ABCE9DE9AE6DDB222697119F8264E201A02F9BC6835BB60CE96F59550028C479 + F7DD777D267E30CB77A782705E017F8F3BF95051FDD8051B7AAC9688118573BD + DF08476C504D221E0042DD6D58140340A79DF2F2727AEFBDF768D9B265B47DFB + 765BBE1F32F66E65A12FE24365EFC53632BBF9FAD11C90474714C0EB7979FA86 + D252A97343291F365300AD5BB7F6E5E5DB095A7063B647BEBE4AE051C896F782 + 70AFF71BE1D85D2AB3AF809FBC94143A2721C1F2DF3053007681E5CB1CF6EB61 + EAAB945D851FD91C7F10AE3C7F191C9DA666F5EEAD57AD5D2B3C0FD172AC0C74 + B49824132E0580515CC60A69041F57B0D0ABD6DB8A86EC3C76CCD7D25B54DB0F + 3AF4EE4DB7AE5DEB981C3A6EA7CA660A62A61DCD66BB959E82762A0008FDC52C + EC7958A1E0436DB6A108047AFACD61D75294E8032291E927C2710500A675E8A0 + D7555509CF8312B8D68225609607200B76D719C93E3D045F05F4146660E6478A + AF8CF0B7E8D081EEA9AA725CFE1C1F809F294949FAD1DA5AE1797007B0D1884C + 4C20180BA0257F7E36CFF4D92CF8D7B0E0ABCE3B0A1990DF5FC6F79B8CD96F57 + 4B6F3B70C520FCC8E6080099D5011905005B229385FD372CF4E8B09BA58A7114 + 16B112ED7762ADDF0CD70CC48F4C67613FA23C01230580CABB5FB3B00FE403D5 + 776AC94E112C56D6F92355E06305570DC68F26992804CC3206FD3100E4DF0FE0 + 8B3FE08469AF02780A3B90CDF0F3A3B950DE5C37203F9A052560543BB0E6BBEF + E84C167615BC53D88D6C6EBF1FCDA5B2E6CA41F9B1E20EA08A100943AAC24E11 + 4EEA75DD27FC32557DC08D667F435C3B303F560283E827701D2B81486C3AA288 + 3D6A8F1FA7B9070E48D5F303B705FC02E1EAC1F991D97DD80F7205AE642510CE + 76E38AD803A9BD6FD6D448ADF103372DF599E1FA01FA914D16F2E3C476E48AE8 + 44B681A71FB724F9C8E08941FA914D1BF6832DC89034A45C024530A07FDF029E + F545BBF536C40DE9BD56F0CC40FDC81610F9814B3054327350A1F083CCBE4507 + 0F4A9BFCC0E9C29E60F0D460FD582925F663478721456C60D5E4074E96F48682 + E706ECC74A53113F7009AE4A495189408A80C0E47F8D677D99DD7A1AE254330F + 3BF0E4A01B62255700204F60705252D05D8614D109F2F997F2CC2F53CCE3C7ED + 6BFC32787AF07E64BB0D3704D6005C022BFD0514D107EAF791D26B25D00722DD + BD375C78FE0BF891DD77E054101BC072A1CA208C2D30D3C3D7B792CBEF27927D + FBC34D547C898658750900560AFE9BAD810CB53D574CB0A1BE9EFEC2B3BE9508 + 3FF042669F55A2EACBF8B19A2FE007F5044392935590304AD9F7FDF7BE59FFB3 + 20BA44796D7D5F96A8FB427E64B7263F15B80259CD9BD3457C28B7203A80B9FF + D1E1C354C18795209F9FEEB9B934A2AC2C2A6F86A8FC520DB1524CD490564D9A + D0C0162D945BE07110DD5FC1827F80677FAB44A3C97F2A51FDE5FC946467EB5F + 969707F55E280258047DD5B2A1A74070AF2248C1075E4DECB14AD47FC1864C4B + 4BD3EB76ED0AEABD500417B012E8ABB6F3762D30EF21F8FFC747B082EFA5421E + 3B88992FEA67495191BE7AE6CCA0DF8F1583BE6C1164F2A17A09BA0334E958C5 + B3FD3FF8B01AD96F48DFA222CA993933A67ED498FAB20D29CECCD4BFAAAC0CFA + FDB002600D5CDCA28552040E01C1FF7B5D9D6FD60F26B8E7E7F47EFDE8E655AB + 62F2478CC92FDD102BCD46020145D02B31917AB3325059859101D97B6B59E8D7 + D5D78724F85E69DA114E62FACBFB595450A0AF2B2909F973D092EC7C560638D4 + 7E81F682765C9FB0C0E3906DC96546AF8202BAB2A424E6EFFF98BF000D793E2B + 4BDF595161CB6721A9A84742826F1951050D8303B33B5A71AD61A1976DC229A2 + 6356168DA9A8503FC809D485084030FD068C80F09FCB8A00D58767AB5D87A440 + 338E7FB1D06F62E10FC5C46F48AC2CEB59455D10135E193244DFBC78B16D9F87 + 1504C40ACE62EBA0132B036519FC00847CFBB163B495051EC21FEC125E20BAE6 + E4D0C8254BD48536405D18099056FCD99B6F92D52223112849C6F133B6103A36 + 6D1A330A0102BF93FDF8CF59E0B7B3C0EF6181B76BA607A8D3EF367468D4A6EF + DA89BA401658306A94BE61FE7CDB150180F0631501B1832E7CA4459942F882AF + D9972CECF0E511C5B753E0FD40F033468CA0E173E746CF850B33EA4205C15B85 + 85FABA397328981A035920FC1DF9863E8D15018E56AC14DAF2FFB93DE7006BF3 + 30E1AB58E0F7F2E3372CEC3BF9793804DE0F04BF577E3E5D515CECEE8BE342D4 + 050B9150138AAC8238422A2B041C6D9B34A176FC8823D225CC28ADDDC7C20D21 + C7F3BD78CE4728997856392333930A2B2BD53D1C02EAE2D9C4FB1327EA1FB355 + 50B36387237F1F16430B5602CDF931811FE3F9B1393F363DF15AB313FF877588 + 447E8E73A04CBE6381854373E4F871AAE703CF8FF2FF7D8BE7FC8815F7C3FC1C + FF87730E9F98E19D22393D9D7A8E1E4D03274F56F7AE0DA88B1806DEC8CFF7F5 + 22385A5BEBF450A282F8A4243AEFEAAB55E24E18501734CCBC3C6890BEBDBC3C + 2C81C368067E7DA7EC6CBA7ED932758F861175712308F6328032B0B2C7612C81 + 525C08BD577BEC7B1175A11D04F9055F7CF00185528CE465508C03818F960EBB + 5E445D781781CCC31D1F7D14B50A01029F7ED14574DDE2C5EABE7309EA877031 + C837D8B7650BEDDDB4C9736E438BB4344AEDDE9DDA76EDAAD6E75D8CFA613C08 + 961CF77EF619EDE3632F2B887026249981A699A92CE06DBB75A3543ED4D29CF7 + 503F58940225517FF0201DABABA323870ED1117E8E65C9233535BE7FE3F9517E + 04F12D5BFA96DA12F8312139F987E72929BE7FC7A1E3113F57C21D9DFC3FB05B + 459D4B95757A0000000049454E44AE4260822800000030000000600000000100 + 0800000000000000000000000000000000000000000000000000000000000202 + 04000505070004040B0003030E0004040D0008080B000A0A0E000C0C0E000404 + 1200050514000C0C100006061A0006061D001111160015151A00060621000707 + 280007072C001B1B20001D1D22000808350008083B0022222800242429002828 + 2E002E2E2F0036363A0039393D003C3C3C000808470008084B0008084D000707 + 50000808530008085A0008085F003E3E42000909660009096A000A0A71000A0A + 76000B0B79000B0B7D004343470044444700464649004A4A4C00535354005757 + 57005B5B5D00666667007171710077777700787878007D7D7D00000080000606 + 83000B0B8100090984000C0C85000404890005058F000C0C890016168B001717 + 8C00070790000D0D91000D0D96000606990006069D000D0D9900222291003434 + 9A003E3E9E000707A3000E0EA0000E0EA6000707A9000909B1000F0FB2000909 + B5001010B4001010BA005050A7005757AB007272B8000E0ECE001111C2001111 + C9001212D1001212D6001010DA001010DE001313E1001414E3001212E6001414 + E7001414E9001515EE001414F3001515F5001616FA001515FE00808080008A8A + 8A008D8D8D00929292009A9A9A009E9E9E00A1A1A100A7A7A700AAAAAA00B0B0 + B000BDBDBD00C9C9C900D0D0D000D7D7D700D9D9D900DDDDDD00E2E2E200E5E5 + E500EBEBEB00EDEDED00F1F1F100F5F5F500F9F9F900FEFEFE00000000002F26 + 000050410000705B000090740000B08E0000CFA90000F0C30000FFD21100FFD8 + 3100FFDD5100FFE47100FFEA9100FFF0B100FFF6D100FFFFFF00000000002F14 + 00005022000070300000903E0000B04D0000CF5B0000F0690000FF791100FF8A + 3100FF9D5100FFAF7100FFC19100FFD2B100FFE5D100FFFFFF00000000002F03 + 0000500400007006000090090000B00A0000CF0C0000F00E0000FF201200FF3E + 3100FF5C5100FF7A7100FF979100FFB6B100FFD4D100FFFFFF00000000002F00 + 0E00500017007000210090002B00B0003600CF004000F0004900FF115A00FF31 + 7000FF518600FF719C00FF91B200FFB1C800FFD1DF00FFFFFF00000000002F00 + 20005000360070004C0090006200B0007800CF008E00F000A400FF11B300FF31 + BE00FF51C700FF71D100FF91DC00FFB1E500FFD1F000FFFFFF00000000002C00 + 2F004B0050006900700087009000A500B000C400CF00E100F000F011FF00F231 + FF00F451FF00F671FF00F791FF00F9B1FF00FBD1FF00FFFFFF00000000001B00 + 2F002D0050003F007000520090006300B0007600CF008800F0009911FF00A631 + FF00B451FF00C271FF00CF91FF00DCB1FF00EBD1FF00FFFFFF00000000000800 + 2F000E005000150070001B0090002100B0002600CF002C00F0003E11FF005831 + FF007151FF008C71FF00A691FF00BFB1FF00DAD1FF00FFFFFF00000000000000 + 0000000000000000000000000056554A483B3B484A5556000000000000000000 + 0000000000000000000000000000000000000000000000000000543B383D4246 + 4F52534E4B4339383B5400000000000000000000000000000000000000000000 + 00000000000000003B393D505E676666666666666667665E513D383C00000000 + 0000000000000000000000000000000000000000000040384B5E676766666666 + 666666666666666666665F4D3841000000000000000000000000000000000000 + 000000004938475F66666666666666666666666666666666666667675E453849 + 0000000000000000000000000000000000000041395767676767666666666666 + 66666666666666666666666666665A3941000000000000000000000000000000 + 0000394261676767676767676666666666666666666666666666666666676761 + 423B0000000000000000000000000000003846652923475F6767676767676766 + 6666666666666666666666666666666666463800000000000000000000000000 + 394C6667240807011F5266676767676666666666666666666666666666666667 + 6766463900000000000000000000004142656767242E7E6F25000C2B63676767 + 6766666666666666666666666666666666666642410000000000000000004939 + 62666767242E8F8F8F77360E0A47666766666666666666666666666666666666 + 6667676139490000000000000000385767676666262E8F8F8F8F8F7C34011662 + 67676766666666666666666666666666666666665A3800000000000000414766 + 66666767242E8F8F8F8F8F8F8F7414105B676666666666666666666666666666 + 66666667674541000000000000385D6767666666262E8F8F8F8F8F8F8F8F7A1C + 055B676767666666666666666666666666666666665F3800000000003B4D6666 + 66666667241A7B8F8F8F8F8F8F8F8F7E1B126567676767666666666666666666 + 6666666767674B3C00000000385E6767666666664D0C08347A7F8F8F8F8F8F8F + 790B26676767676767676766666666666666666666665F380000005442666666 + 666666666666430C026D8F8F8F8F8F8F8F70005E676767676767676766666666 + 666666666767673D5400003B4F67676666666666666666663C02688F8F8F8F8F + 8F7F0F2A67676767676767676767676666666666666666503B0000385E666666 + 6666666666666666674C01327F8F8F8F8F8F360C44444444444444475B666666 + 666666666667675C38005638676767666666666666666666666658026D8F8F8F + 8F8F75080B0707080B0808004467676666666666666666673956554366666666 + 6666666666666666666767270F7D8F8F8F8F8F8F8F8F8F8F8F8F8F0B47666666 + 666666666666676742554A466767666666666666666666666666666306688F8F + 8F8F8F8F8F8F8F8F8F8F8F0B446767666666666666666667464A484E67666666 + 6666666666666666666667673C06798F8F8F8F8F8F8F8F8F8F8F8F0B47666666 + 66666666666767674E483B5167676766666666666666666666666666660B698F + 8F8F8F8F8F8F8F8F8F8F8F08446767666666666666666666533B3B5366666666 + 66666666666666666666666767222F8F8F8F8F8F8F8F8F8F8F8F8F0847666666 + 6666666666666767513B484E6767676666666666666666666666666666440B8F + 8F8F8F8F712D2C2D2D2E2E024467666666666666666666674E484A4667676666 + 666666666666666666666667675A00748F8F8F8F730022262627272759666666 + 6666666666676767464A5542676767666666666666666666666666666667076B + 8F8F8F8F7F0E2A67676766666666666666666666666666674355563966676666 + 666666666666666666666667676720308F8F8F8F8F370A656766666666666666 + 6666666666676767385600385C6767676766666666666666666666666666400E + 8F8F8F8F8F79023F6767676766666666666666666666675B3800003B4F676767 + 66666666666666666666666666675A00738F8F8F8F8F69015267676666666666 + 666666666767674F3B0000543D67676767666666666666666666666666666610 + 687F8F8F8F8F8F330359676767676666666666666667663D54000000385E6767 + 66666666666666666666666666676727198F8F8F8F8F8F7F2E01285F67666666 + 6666666767675D38000000003C4B67676767666666666666666666666666665A + 026E8F8F8F8F8F8F7F6C0E000C3C66666666666667674B3C0000000000385E67 + 67666666666666666666666666666767280B798F8F8F8F8F8F8F7E721D1F6666 + 66676767675D3800000000000040456767676767666666666666666666666666 + 66111D7C8F8F8F8F8F8F8F8F331E67666667676767454100000000000000385A + 67676766666666666666666666666666675B0D18778F8F8F8F8F8F8F331E6767 + 6767676757380000000000000000493861676767676766666666666666666666 + 666663150E6A7E8F8F8F8F8F331E676767676761384900000000000000000041 + 3E656767676666666666666666666666666667662A021469768F8F8F331E6767 + 6767643E41000000000000000000000039466767676767676666666666666666 + 666666666661260C02183672311E676767674639000000000000000000000000 + 00384665676767676766666666666666666666666666666658281100001E6767 + 644638000000000000000000000000000000393E606767676767676767666666 + 6666666666666666666667635958676142390000000000000000000000000000 + 0000004138576767676767676767676767676767676767676767676767675738 + 41000000000000000000000000000000000000004938455D6767676767676767 + 6767676767676767676767675D45384900000000000000000000000000000000 + 00000000000040384B5D676767676767676767676767676767675D4B38400000 + 0000000000000000000000000000000000000000000000003B383D4F5C676767 + 676767676767675C4F3D383B0000000000000000000000000000000000000000 + 00000000000000000000543B38383E464E51514E464238383B54000000000000 + 000000000000000000000000000000000000000000000000000000000056554A + 483B3B484A555600000000000000000000000000000000000000FFFFE007FFFF + 0000FFFF0000FFFF0000FFFC00003FFF0000FFF000000FFF0000FFC0000003FF + 0000FF80000001FF0000FF00000000FF0000FE000000007F0000FC000000003F + 0000F8000000001F0000F0000000000F0000F0000000000F0000E00000000007 + 0000E000000000070000C000000000030000C000000000030000800000000001 + 0000800000000001000080000000000100000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000800000000001000080000000000100008000000000010000C00000000003 + 0000C000000000030000E000000000070000E000000000070000F0000000000F + 0000F0000000000F0000F8000000001F0000FC000000003F0000FE000000007F + 0000FF00000000FF0000FF80000001FF0000FFC0000003FF0000FFF000000FFF + 0000FFFC00003FFF0000FFFF0000FFFF0000FFFFE007FFFF0000280000002000 + 0000400000000100080000000000000000000000000000000000000000000000 + 000000000000030305000B0B14000C0C16000E0E1D0012121F000F0F22001313 + 220017172300101024001919270012122D0014142F00191928001D1D29001E1E + 2F001313340014143A0012123C0015153F00222231002A2A3A002C2C39003131 + 3D001212450010104B001616480012124E0013135200323243003A3A46001717 + 660012126A001414690012126E000F0F7D001111700013137E00454554004B4B + 570050505E005E5E6A0063636F00676772006D6D77007373780078787F000606 + 8400090987000A0A88000E0E8E0012128E0015158E000D0D95000E0E9D001010 + 92001919910010109A0010109C002E2E9B0031319F000E0EA8001010A3001010 + A6000F0FB7001010BA001010BF006262B4007A7ABE000D0DC2001212CE000F0F + D0001212D1001010DA001212E7001414E7001414E9001313EE001414EC001414 + F1001414F5001616FB001616FE00808085008C8C8F00969699009E9E9F00A0A0 + A100AEAEAE00B7B7B700BEBEBE00D6D6D600DADADA00E2E2E200E4E4E400E9E9 + E900EEEEEE00F0F0F000F6F6F600F8F8F800FEFEFE004CB0000059CF000067F0 + 000078FF11008AFF31009CFF5100AEFF7100C0FF9100D2FFB100E4FFD100FFFF + FF0000000000262F0000405000005A700000749000008EB00000A9CF0000C2F0 + 0000D1FF1100D8FF3100DEFF5100E3FF7100E9FF9100EFFFB100F6FFD100FFFF + FF00000000002F26000050410000705B000090740000B08E0000CFA90000F0C3 + 0000FFD21100FFD83100FFDD5100FFE47100FFEA9100FFF0B100FFF6D100FFFF + FF00000000002F1400005022000070300000903E0000B04D0000CF5B0000F069 + 0000FF791100FF8A3100FF9D5100FFAF7100FFC19100FFD2B100FFE5D100FFFF + FF00000000002F030000500400007006000090090000B00A0000CF0C0000F00E + 0000FF201200FF3E3100FF5C5100FF7A7100FF979100FFB6B100FFD4D100FFFF + FF00000000002F000E00500017007000210090002B00B0003600CF004000F000 + 4900FF115A00FF317000FF518600FF719C00FF91B200FFB1C800FFD1DF00FFFF + FF00000000002F0020005000360070004C0090006200B0007800CF008E00F000 + A400FF11B300FF31BE00FF51C700FF71D100FF91DC00FFB1E500FFD1F000FFFF + FF00000000002C002F004B0050006900700087009000A500B000C400CF00E100 + F000F011FF00F231FF00F451FF00F671FF00F791FF00F9B1FF00FBD1FF00FFFF + FF00000000001B002F002D0050003F007000520090006300B0007600CF008800 + F0009911FF00A631FF00B451FF00C271FF00CF91FF00DCB1FF00EBD1FF00FFFF + FF000000000008002F000E005000150070001B0090002100B0002600CF002C00 + F0003E11FF005831FF007151FF008C71FF00A691FF00BFB1FF00DAD1FF00FFFF + FF00000000000000000000000000433C382F2F383C4300000000000000000000 + 000000000000000000000043313945494A50504A494539314300000000000000 + 0000000000000000004431404F525252525252525252524F4031440000000000 + 00000000000000003B3F4F52525252525252525252525252524D3F3B00000000 + 0000000000000034414952525252525252525252525252525252524234000000 + 00000000000034474B0110324B52525252525252525252525252525247340000 + 00000000003B42524B0F5C2E0A1A485252525252525252525252525252423B00 + 00000000443F52524B0F6F6F6F5A0A3352525252525252525252525252523F44 + 00000000314D52524B0F6F6F6F6F6127184B5252525252525252525252524D31 + 00000043405252524B08626F6F6F6F6F55125252525252525252525252525240 + 430000314F52525250220553636F6F6F6F2B255252525252525252525252524F + 300000395252525252524E2017606F6F6F610451525252525252525252525252 + 390043455252525252525252370E616F6F6F281B1F1F1F1F2452525252525252 + 45433C49525252525252525252232C6F6F6F5E59595959590352525252525252 + 493C384A52525252525252525250065D6F6F6F6F6F6F6F6F0352525252525252 + 4A382F505252525252525252525236296F6F6F6F6F6F6F6F0352525252525252 + 502F2F50525252525252525252524E0D6F6F6F615B5C5B5B0352525252525252 + 502F384A52525252525252525252520B5F6F6F5B011313131952525252525252 + 4A383C49525252525252525252525221586F6F6F144952525252525252525252 + 493C434552525252525252525252523D2A6F6F6F542452525252525252525252 + 4543003952525252525252525252524E0D6F6F6F63163E525252525252525252 + 390000304F5252525252525252525252115C6F6F6F5F0E21465252525252524F + 300000434052525252525252525252523E266F6F6F6F6257151C525252525240 + 43000000314D52525252525252525252521B53646F6F6F6F610C525252524D31 + 00000000443F52525252525252525252524E1C1E5F6F6F6F610C525252523F44 + 00000000003B425252525252525252525252523A0756616F610C525252423B00 + 00000000000034475252525252525252525252524922091D2D0C525247340000 + 0000000000000034425252525252525252525252525252483532524234000000 + 00000000000000003B3F4D52525252525252525252525252524D3F3B00000000 + 0000000000000000004431404F525252525252525252524F4031440000000000 + 000000000000000000000043303945494A50504A494539304300000000000000 + 0000000000000000000000000000433C382F2F383C4300000000000000000000 + 0000FFF00FFFFF8001FFFE00007FFC00003FF800001FF000000FE0000007C000 + 0003C00000038000000180000001800000010000000000000000000000000000 + 000000000000000000000000000000000000800000018000000180000001C000 + 0003C0000003E0000007F000000FF800001FFC00003FFE00007FFF8001FFFFF0 + 0FFF280000001000000020000000010008000000000000000000000000000000 + 00000000000000000000000000003F3F69002A2A720044447700272784002323 + 8F002C2C8F003535870033338C0035358E002A2A91002D2D910023239A001F1F + A1001F1FB1001C1CBF002323A0002525A4003333BE0040408700515181005555 + 86005F5F80006363870062628E0066668E00696989004747B4004A4ABC001515 + C3001515D4001919D6002828C5001717E5001515F3001515FA001616FE006969 + C1007E7EC8009797AA00AFAFBB00BABAC700C2C2C800CDCDD400D1D1D300D5D5 + D800DDDDE000E4E4E500F1F1F100F9F9F900FFFFFF0000704C000090630000B0 + 790000CF8F0000F0A60011FFB40031FFBE0051FFC80071FFD30091FFDC00B1FF + E500D1FFF000FFFFFF0000000000002F0E00005018000070220000902C0000B0 + 360000CF400000F04A0011FF5B0031FF710051FF870071FF9D0091FFB200B1FF + C900D1FFDF00FFFFFF0000000000022F00000450000006700000089000000AB0 + 00000BCF00000EF0000020FF12003DFF31005BFF510079FF710098FF9100B5FF + B100D4FFD100FFFFFF0000000000142F000022500000307000003D9000004CB0 + 000059CF000067F0000078FF11008AFF31009CFF5100AEFF7100C0FF9100D2FF + B100E4FFD100FFFFFF0000000000262F0000405000005A700000749000008EB0 + 0000A9CF0000C2F00000D1FF1100D8FF3100DEFF5100E3FF7100E9FF9100EFFF + B100F6FFD100FFFFFF00000000002F26000050410000705B000090740000B08E + 0000CFA90000F0C30000FFD21100FFD83100FFDD5100FFE47100FFEA9100FFF0 + B100FFF6D100FFFFFF00000000002F1400005022000070300000903E0000B04D + 0000CF5B0000F0690000FF791100FF8A3100FF9D5100FFAF7100FFC19100FFD2 + B100FFE5D100FFFFFF00000000002F030000500400007006000090090000B00A + 0000CF0C0000F00E0000FF201200FF3E3100FF5C5100FF7A7100FF979100FFB6 + B100FFD4D100FFFFFF00000000002F000E00500017007000210090002B00B000 + 3600CF004000F0004900FF115A00FF317000FF518600FF719C00FF91B200FFB1 + C800FFD1DF00FFFFFF00000000002F0020005000360070004C0090006200B000 + 7800CF008E00F000A400FF11B300FF31BE00FF51C700FF71D100FF91DC00FFB1 + E500FFD1F000FFFFFF00000000002C002F004B0050006900700087009000A500 + B000C400CF00E100F000F011FF00F231FF00F451FF00F671FF00F791FF00F9B1 + FF00FBD1FF00FFFFFF00000000001B002F002D0050003F007000520090006300 + B0007600CF008800F0009911FF00A631FF00B451FF00C271FF00CF91FF00DCB1 + FF00EBD1FF00FFFFFF000000000008002F000E005000150070001B0090002100 + B0002600CF002C00F0003E11FF005831FF007151FF008C71FF00A691FF00BFB1 + FF00DAD1FF00FFFFFF000000000000251C12121C250000000000000000262023 + 2424242423202600000000001B0D0E23242424242424211B0000002621092C17 + 112424242424242126000020240832322B0724242424242420002523241F032E + 32280F242424242423251C24242424042D321A1515102424241C122424242424 + 143232323206242424121224242424240B313016180C242424121C2424242424 + 1D2A321324242424241C25232424242424153229052224242325002024242424 + 240C2E322F012424200000262124242424240A2731192421260000001B212424 + 2424241E0A02211B000000000026202324242424232026000000000000000025 + 1C12121C250000000000F81F0000E0070000C003000080010000800100000000 + 000000000000000000000000000000000000000000008001000080010000C003 + 0000E0070000F81F0000} + OldCreateOrder = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/trunk/libsrc/Swf2Exe/uMain.pas b/trunk/libsrc/Swf2Exe/uMain.pas new file mode 100644 index 000000000..d9b1190c9 --- /dev/null +++ b/trunk/libsrc/Swf2Exe/uMain.pas @@ -0,0 +1,62 @@ +unit uMain; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, OleCtrls, ShockwaveFlashObjects_TLB, StdCtrls, ExtCtrls; + +type + TfrmMain = class(TForm) + + procedure FormCreate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frmMain: TfrmMain; + flaPreview: TShockwaveFlash; +implementation + +{$R *.dfm} + +procedure TfrmMain.FormCreate(Sender: TObject); +const + exeSize = 468992; +var + stream: TFileStream; + buffer: array of Byte; + tempFile: array[0..MAX_PATH - 1] of Char; + tempPath: array[0..MAX_PATH - 1] of Char; +begin + flaPreview := TShockwaveFlash.Create(frmMain); + flaPreview.Parent := frmMain; + flaPreview.Align := alClient; + GetTempPath(MAX_PATH, TempPath); + if GetTempFileName(TempPath, PAnsiChar('ffd'), 0, TempFile) = 0 then + raise Exception.Create( + 'GetTempFileName API failed. ' + SysErrorMessage(GetLastError) + ); + stream := TFileStream.Create(ParamStr(0), fmOpenRead); + stream.Seek(exeSize, soBeginning); + SetLength(buffer, stream.Size - exeSize); + try + stream.Read(buffer[0], Length(buffer)); + finally + stream.Free; + end; + stream := TFileStream.Create(ParamStr(0), fmOpenRead); + stream.Seek(exeSize, soBeginning); + stream := TFileStream.Create(tempFile, fmOpenWrite); + try + stream.Write(buffer[0], Length(buffer)); + finally + stream.Free; + end; + flaPreview.Movie := tempFile; +end; + +end. diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/Main.java b/trunk/src/com/jpexs/decompiler/flash/gui/Main.java index 2f51024ab..346e0b1c1 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/Main.java @@ -246,10 +246,25 @@ public class Main { } public static void saveFile(SWF swf, String outfile) throws IOException { - swf.file = outfile; + saveFile(swf, outfile, ".swf"); + } + + public static void saveFile(SWF swf, String outfile, String extension) throws IOException { + if (extension.equals(".swf")) { + swf.file = outfile; + } File outfileF = new File(outfile); File tmpFile = new File(outfile + ".tmp"); - swf.saveTo(new FileOutputStream(tmpFile)); + FileOutputStream fos = new FileOutputStream(tmpFile); + if (extension.equals(".exe")) { + InputStream exeStream = View.class.getClassLoader().getResourceAsStream("com/jpexs/helpers/resource/Swf2Exe.bin"); + byte [] buffer = new byte[4096]; + int bytesRead = 0; + while((bytesRead = exeStream.read(buffer)) != -1) { + fos.write(buffer, 0, bytesRead); + } + } + swf.saveTo(fos); if (tmpFile.exists()) { if (tmpFile.length() > 0) { outfileF.delete(); @@ -427,17 +442,21 @@ public class Main { } public static boolean saveFileDialog(SWF swf) { + return saveFileDialog(swf, ".swf"); + } + + public static boolean saveFileDialog(SWF swf, final String extension) { JFileChooser fc = new JFileChooser(); fc.setCurrentDirectory(new File(Configuration.lastSaveDir.get())); FileFilter swfFilter = new FileFilter() { @Override public boolean accept(File f) { - return (f.getName().toLowerCase().endsWith(".swf")) || (f.isDirectory()); + return (f.getName().toLowerCase().endsWith(extension)) || (f.isDirectory()); } @Override public String getDescription() { - return AppStrings.translate("filter.swf"); + return AppStrings.translate("filter" + extension); } }; if (!swf.gfx) { @@ -471,8 +490,8 @@ public class Main { try { String fileName = file.getAbsolutePath(); if (selFilter == swfFilter) { - if (!fileName.toLowerCase().endsWith(".swf")) { - fileName += ".swf"; + if (!fileName.toLowerCase().endsWith(extension)) { + fileName += extension; } swf.gfx = false; } @@ -482,7 +501,7 @@ public class Main { } swf.gfx = true; } - Main.saveFile(swf, fileName); + Main.saveFile(swf, fileName, extension); Configuration.lastSaveDir.set(file.getParentFile().getAbsolutePath()); return true; } catch (IOException ex) { diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java index 62e884b20..eebd75621 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/MainFrameRibbon.java @@ -89,6 +89,7 @@ public class MainFrameRibbon implements ActionListener { static final String ACTION_SUB_LIMITER = "SUBLIMITER"; static final String ACTION_SAVE = "SAVE"; static final String ACTION_SAVE_AS = "SAVEAS"; + static final String ACTION_SAVE_AS_EXE = "SAVEASEXE"; static final String ACTION_OPEN = "OPEN"; static final String ACTION_EXPORT_FLA = "EXPORTFLA"; public static final String ACTION_EXPORT_SEL = "EXPORTSEL"; @@ -116,6 +117,7 @@ public class MainFrameRibbon implements ActionListener { private JCheckBox miAutoRenameIdentifiers; private JCommandButton saveCommandButton; private JCommandButton saveasCommandButton; + private JCommandButton saveasexeCommandButton; private JCommandButton exportAllCommandButton; private JCommandButton exportFlaCommandButton; private JCommandButton exportSelectionCommandButton; @@ -191,6 +193,10 @@ public class MainFrameRibbon implements ActionListener { miSaveAs.setIcon(View.getIcon("saveas16")); miSaveAs.setActionCommand(ACTION_SAVE_AS); miSaveAs.addActionListener(this); + JMenuItem miSaveAsExe = new JMenuItem(translate("menu.file.saveasexe")); + miSaveAsExe.setIcon(View.getIcon("saveas16")); + miSaveAsExe.setActionCommand(ACTION_SAVE_AS_EXE); + miSaveAsExe.addActionListener(this); JMenuItem menuExportFla = new JMenuItem(translate("menu.file.export.fla")); menuExportFla.setActionCommand(ACTION_EXPORT_FLA); @@ -211,6 +217,7 @@ public class MainFrameRibbon implements ActionListener { menuFile.add(miOpen); menuFile.add(miSave); menuFile.add(miSaveAs); + menuFile.add(miSaveAsExe); menuFile.add(menuExportFla); menuFile.add(menuExportAll); menuFile.add(menuExportSel); @@ -430,6 +437,8 @@ public class MainFrameRibbon implements ActionListener { assignListener(saveCommandButton, ACTION_SAVE); saveasCommandButton = new JCommandButton(fixCommandTitle(translate("menu.file.saveas")), View.getResizableIcon("saveas16")); assignListener(saveasCommandButton, ACTION_SAVE_AS); + saveasexeCommandButton = new JCommandButton(fixCommandTitle(translate("menu.file.saveasexe")), View.getResizableIcon("saveas16")); + assignListener(saveasexeCommandButton, ACTION_SAVE_AS_EXE); reloadCommandButton = new JCommandButton(fixCommandTitle(translate("menu.file.reload")), View.getResizableIcon("reload16")); assignListener(reloadCommandButton, ACTION_RELOAD); @@ -437,6 +446,7 @@ public class MainFrameRibbon implements ActionListener { editBand.addCommandButton(openCommandButton, RibbonElementPriority.TOP); editBand.addCommandButton(saveCommandButton, RibbonElementPriority.TOP); editBand.addCommandButton(saveasCommandButton, RibbonElementPriority.MEDIUM); + editBand.addCommandButton(saveasexeCommandButton, RibbonElementPriority.MEDIUM); editBand.addCommandButton(reloadCommandButton, RibbonElementPriority.MEDIUM); JRibbonBand exportBand = new JRibbonBand(translate("menu.export"), null); @@ -604,6 +614,7 @@ public class MainFrameRibbon implements ActionListener { saveCommandButton.setEnabled(swfLoaded); saveasCommandButton.setEnabled(swfLoaded); + saveasexeCommandButton.setEnabled(swfLoaded); exportAllCommandButton.setEnabled(swfLoaded); exportFlaCommandButton.setEnabled(swfLoaded); exportSelectionCommandButton.setEnabled(swfLoaded); @@ -741,10 +752,21 @@ public class MainFrameRibbon implements ActionListener { } break; case ACTION_SAVE_AS: - SWF swf = mainFrame.getCurrentSwf(); - if (Main.saveFileDialog(swf)) { - mainFrame.setTitle(ApplicationInfo.applicationVerName + (Configuration.displayFileName.get() ? " - " + swf.getFileTitle() : "")); - saveCommandButton.setEnabled(mainFrame.getCurrentSwf() != null); + { + SWF swf = mainFrame.getCurrentSwf(); + if (Main.saveFileDialog(swf)) { + mainFrame.setTitle(ApplicationInfo.applicationVerName + (Configuration.displayFileName.get() ? " - " + swf.getFileTitle() : "")); + saveCommandButton.setEnabled(mainFrame.getCurrentSwf() != null); + } + } + break; + case ACTION_SAVE_AS_EXE: + { + SWF swf = mainFrame.getCurrentSwf(); + if (Main.saveFileDialog(swf, ".exe")) { + mainFrame.setTitle(ApplicationInfo.applicationVerName + (Configuration.displayFileName.get() ? " - " + swf.getFileTitle() : "")); + saveCommandButton.setEnabled(mainFrame.getCurrentSwf() != null); + } } break; case ACTION_OPEN: diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 4ccec8af5..939018122 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -381,3 +381,5 @@ work.restoringControlFlow.complete = Control flow restored message.confirm.recentFileNotFound = File not found. Do you want to remove it from the recent file list? contextmenu.closeSwf = Close SWF menu.settings.autoRenameIdentifiers = Auto rename identifiers +menu.file.saveasexe = Save as Exe... +filter.exe = Executable files (*.exe) diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties b/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties index 567dc4c44..c57fd3433 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties +++ b/trunk/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_hu.properties @@ -381,3 +381,5 @@ work.restoringControlFlow.complete = Vez\u00e9rl\u00e9si-folyam helyre\u00e1ll\u message.confirm.recentFileNotFound = F\u00e1jl nem tal\u00e1lhat\u00f3. Szeretn\u00e9 elt\u00e1vol\u00edtani az el\u0151zm\u00e9nyek k\u00f6z\u00fcl? contextmenu.closeSwf = SWF bez\u00e1r\u00e1sa menu.settings.autoRenameIdentifiers = Azonos\u00edt\u00f3k automatikus \u00e1tnevez\u00e9se +menu.file.saveasexe = Ment\u00e9s Exe-k\u00e9nt... +filter.exe = Futtathat\u00f3 f\u00e1jlok (*.exe) diff --git a/trunk/src/com/jpexs/helpers/resource/Swf2Exe.bin b/trunk/src/com/jpexs/helpers/resource/Swf2Exe.bin new file mode 100644 index 000000000..2ee64a074 Binary files /dev/null and b/trunk/src/com/jpexs/helpers/resource/Swf2Exe.bin differ