Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von ts-soft »

Lösung befindet sich hier: http://www.realsource.de/downloads/doc_ ... packer-sdk

Nur die zBin_Common.pbi, zBin_Pack.pbi und zBin_Unpack.pbi benötigst Du für Deine Zwecke und diese sind
kompatibel zu PB4.51 und allen folgenden Versionen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von Kurzer »

Das Problem ist, dass diese Includes dann auch der Empfänger benötigt, um den Bin2Post-Text wieder dekodieren zu können.

Merke: Der Empfänger muss nicht zwingend im Besitz der Bin2Post.exe sein. Der von Bin2Post generierte Code sollte mit (so gut wie) allen PB-Versionen compilierbar sein, sonst wäre der Sinn des Programms infrage gestellt.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von NicTheQuick »

Muss es denn unbedingt gepackt werden? Reicht es nicht die binären Daten einfach aneinander zu klatschen? Natürlich mit der entsprechenden Information über Dateiname und Dateigröße. Dann ist zwar nichts gepackt, aber man kann immerhin mehrere Datei auf einmal in den Code packen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von ts-soft »

Der Code ist so gut wie mit allen PB Versionen ab 4.51 bis nächstes Jahr compilierbar, ascii, unicode, 32- oder 64-Bit,
Linux, MacOS und sogar auf Windows.

Zum entpacken sind nur 2 der Dateien nötig, die Du entweder mitlieferst oder in Deinem Source integrierst.

Ansonsten kannst Du auch diesen Source nutzen:

Code: Alles auswählen

; Autor: Thomas (ts-soft) Schulz
; PB-Version: 4.xx
; OS: windows/linux/MacOS

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Linux
    ImportC #PB_Compiler_Home + "purelibraries/linux/libraries/zlib.a"
CompilerCase #PB_OS_MacOS
  ImportC "/usr/lib/libz.dylib"
  CompilerCase #PB_OS_Windows
    ImportC "zlib.lib"
CompilerEndSelect
  compress2(*dest, *destLen, *source, sourceLen, level)
  uncompress(*dest, *destLen, *source, sourceLen)
EndImport

Procedure zipPackMemory(*source, sourceLen = #PB_Default, level = #PB_Default)
  Protected *dest, destLen
  
  If level < #PB_Default Or level > 9 : level = #PB_Default : EndIf
  If *source
    If sourceLen = #PB_Default : sourceLen = MemorySize(*source) : EndIf
    destLen = sourceLen + 13 + (Int(sourceLen / 100))
    *dest = AllocateMemory(destLen)
    If *dest
      If Not compress2(*dest, @destLen, *source, sourceLen, level)
        *dest = ReAllocateMemory(*dest, destLen)
        ProcedureReturn *dest
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure zipUnpackMemory(*source, *dest)
  Protected sourceLen = MemorySize(*source)
  Protected destLen = MemorySize(*dest)

  If Not uncompress(*dest, @destLen, *source, sourceLen)
    ProcedureReturn destLen
  EndIf
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von NicTheQuick »

ts-soft: Es geht ja darum, dass jeder hier ohne irgendwelche extra Libraries oder Zusatzcodes das Zeugs entpacken kann.
Ein Beispiel: Günther surft im Forum und findet ein nettes Programm einer anderer Person, die es mittels Bin2Post direkt hier im Forum veröffentlicht hat.
Dann kopiert Günther diesen Code, fügt ihn in sein PB ein und drückt F5. Alles, was er dann noch tun muss ist ein Zielverzeichnis auszuwählen und alle Dateien werden dort hin entpackt. Günther muss den Code also mit einer Standardinstallation von PB starten können, sonst wäre es nicht im Sinne des Erfinders.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von ts-soft »

@NicTheQuick

Und warum sollte das mit meiner Include nicht gehen??? /:->
Verstehe ich jetzt wirklich nicht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von NicTheQuick »

Vielleicht hab ich dich auch falsch verstanden, aber ich wette, dass Kurzer das ganze möglichst knapp haben will und es mit deinem Include zu sehr aufgebläht werden würde.
Bild
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von Kurzer »

Ts-soft, wenn Günter deine Includes nicht besitzt, kann er den Bin2Post Text nicht dekodieren.
Wenn ich die Includes mitliefern müsste, dann würde sich der Bin2Post - Post um ca. 18 KB vergrößern.

Statt...

Code: Alles auswählen

;************************************************************************************************
;* Bin2Post by Kurzer - A file generator/converter for sharing binary files in textbased forums.
;* (see here for more information http://www.purebasic.fr/german/viewtopic.php?f=11&t=26298)
;* Filename: Test.txt - Filesize: 45
;* Copy & paste this code into your PureBasic IDE and run it (PB Version 4.31+ is needed).
;* You'll be asked for a filename. After choosing the filename the binary file will be generated.
;************************************************************************************************
Macro D:Data.s:EndMacro:*PR=?S:*PW=*PR:Repeat:SL.i=MemoryStringLength(*PR):PokeS(*PW,PeekS(*PR)):
*PW+SL:*PR+SL+1:Until *PR>=?E:IS.i=MemoryStringLength(?S):*PR=AllocateMemory(IS):If *PR>0:
OS.i=Base64Decoder(?S,IS,*PR,IS):F.s=SaveFileRequester("Datei speichern","Test.txt","Alle Dateien (*.*)|*.*",0)
If F<>"":If CreateFile(0,F):WriteData(0,*PR,OS):CloseFile(0):EndIf:EndIf:FreeMemory(*PR):EndIf:End
DataSection
S:
D "RGllcyBpc3QgbnVyIGVpbmUgdW5iZWRldXRlbmRlIFRlc3RkYXRlaS4gOy0p"
E:
EndDataSection

müsste ich dann folgendes posten, um 20-30 Bytes Sourcecode zu posten:

Code: Alles auswählen

;************************************************************************************************
;* Bin2Post by Kurzer - A file generator/converter for sharing binary files in textbased forums.
;* (see here for more information http://www.purebasic.fr/german/viewtopic.php?f=11&t=26298)
;* Filename: Test.txt - Filesize: 19403
;* Copy & paste this code into your PureBasic IDE and run it (PB Version 4.31+ is needed).
;* You'll be asked for a filename. After choosing the filename the binary file will be generated.
;************************************************************************************************
Macro D:Data.s:EndMacro:*PR=?S:*PW=*PR:Repeat:SL.i=MemoryStringLength(*PR):PokeS(*PW,PeekS(*PR)):
*PW+SL:*PR+SL+1:Until *PR>=?E:IS.i=MemoryStringLength(?S):*PR=AllocateMemory(IS):If *PR>0:
OS.i=Base64Decoder(?S,IS,*PR,IS):F.s=SaveFileRequester("Datei speichern","Test.txt","Alle Dateien (*.*)|*.*",0)
If F<>"":If CreateFile(0,F):WriteData(0,*PR,OS):CloseFile(0):EndIf:EndIf:FreeMemory(*PR):EndIf:End
DataSection
S:
D "RGllcyBpc3QgbnVyIGVpbmUgdW5iZWRldXRlbmRlIFRlc3RkYXRlaS4gOy0pDQoNCmFiZXIgamV0enQgZm9sZ3QgdHMtU29mdHMgaW5jbHVkZToNCg0K77u/DQo7PT09PT"
D "09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo7DQo7IExpYnJhcnk6ICAgICAgICAgICB6QmluDQo7IEF1"
D "dGhvcjogICAgICAgICAgICBUaG9tYXMgPHRzLXNvZnQ+IFNjaHVseg0KOyBEYXRlOiAgICAgICAgICAgICAgSnVuIDA0LCAyMDEyDQo7IFZlcnNpb246ICAgICAgICAgIC"
D "AxLjYuMw0KOyBUYXJnZXQgT1M6ICAgICAgICAgQWxsDQo7IFRhcmdldCBDb21waWxlcjogICBQdXJlQmFzaWMgNC41MSBhbmQgbGF0ZXINCjsNCjs9PT09PT09PT09PT09"
D "PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCjsgSGlzdG9yeQ0KOyBWIDEuNi4zIDEyLzExLzI1DQo7IHVzaW5nIGNvbX"
D "ByZXNzQm91bmQoc291cmNlTGVuKQ0KOyBjaGFuZ2VkIHN0cmluZ2NvbXBhcmUgd2l0aCBub3QgdG8gPSAwIGZvciBjb21wYXRpYmlsaXR5IHRvIFBCIDUuMDANCg0KOyBW"
D "IDEuNi4yIDEyLzA2LzIzDQo7IGFkZGVkIFRhc2tiYXJwcm9ncmVzcyAoV2luNykgdG8gUGFja2VyLSBhbmQgVW5wYWNrZXJHVUkNCg0KOyBWIDEuNi4xIDEyLzA2LzE1DQ"
D "o7IGZpeGVkIGJ1ZyBpbiB6QmluUGFja0dVSSwgc2hvd3MgYmlnIGZpbGVzaXplIGZhbHNlDQoNCjsgViAxLjYgIDEyLzA2LzE0DQo7IGFkZGVkIGNhbmNlbCBzdXBwb3J0"
D "IGZvciB6QmluUGFja0dVSSBvbiBhbGwgT1MNCjsgZml4ZWQgYnVnIHdpdGggcGF0aCBpbiBhcmNoaXZlLCBpZiB5b3UgZHJvcCBtb3JlIGFzIG9uZSBkaXIgdG8gekJpbl"
D "9QYWNrZXJHVUkNCg0KOyBWIDEuNSAgMTIvMDYvMTMNCjsgYWRkZWQgb3B0aW9uYWwgQ2FsbGJhY2sgZm9yIHpCaW5VbnBhY2soKQ0KOyBmaXhlZCBidWcgd2l0aCBudW1i"
D "ZXJpbmcgaW4gekJpblBhY2tHVUkgYW5kIHpCaW5VbnBhY2tHVUkNCjsgcmVzaXppbmcgc3VwcG9ydCBmb3IgekJpblBhY2tHVUkgYW5kIHpCaW5VbnBhY2tHVUkNCjsgc2"
D "hvdyBwcm9ncmVzcyBpbiB0aXRsZWJhciBmb3IgZm9yIHpCaW5QYWNrR1VJIGFuZCB6QmluVW5wYWNrR1VJDQo7IGNhbmNlbC1zdXBwb3J0IGZvciBwYWNraW5nIGluIHpC"
D "aW5QYWNrR1VJICh3aW5kb3dzIG9ubHkpDQo7IGFkZGVkIFByb2dyZXNzYmFyIGZvciB6QmluVW5wYWNrR1VJDQo7IGNhbmNlbC1zdXBwb3J0IGZvciB1bnBhY2tpbmcgaW"
D "4gekJpblVucGFja0dVSQ0KDQo7IFYgMS40ICAxMi8wNi8xMQ0KOyBhZGRlZCBpbmNsdWRlIGZpbGVzIGZvciB6QmluVW5wYWNrLmRsbCBzdXBwb3J0aW5nOiBBdXRvSXQz"
D "LCBQdXJlQmFzaWMsIFhQcm9mYW4NCjsgYWRkZWQgUHJvZ3Jlc3NiYXIgZm9yIHpCaW5QYWNrR1VJDQo7IHNvbWUgc21hbGwgYnVnZml4ZXMNCg0KOyBWIDEuMyAgMTIvMD"
D "YvMTANCjsgYWRkZWQgVW5wYWNrLURMTCAoU291cmNlKSBhbmQgaW5jbHVkZWZpbGUNCjsgYWRkZWQgVW5wYWNrLURMTCBiaW5hcnkgZm9yIExpbnV4IHg4NiBhbmQgV2lu"
D "ZG93cyB4ODYsIHg2NC4NCjsgTGludXggeDY0IGRvZXNuJ3QgY29tcGlsZSBzZWUgYnVncmVwb3J0IGhlcmU6IGh0dHA6Ly93d3cucHVyZWJhc2ljLmZyL2VuZ2xpc2gvdm"
D "lld3RvcGljLnBocD9wPTM4MjY5MSNwMzgyNjkxDQo7IHNtYWxsIGJ1Z2ZpeGVzDQoNCjsgViAxLjIgIDEyLzA2LzA2DQo7IGFkZGVkIG1ldGhvZCBHZXRQYWNrZWRTaXpl"
D "KCkNCjsgYWRkZWQgbWV0aG9kIEdldERhdGUoKQ0KOyBlbmhhbmNlZCB6QmluX1VucGFja2VyR1VJDQo7IGFkZGVkIENhbGxiYWNrIGZvciBBZGRQYWNrRGlyKCkgYW5kIE"
D "V4dHJhY3RBcmNoaXYoKQ0KDQo7IFYgMS4xICAxMi8wNi8wNA0KOyBhZGRlZCAjekJpbl9EZWZhdWx0TGV2ZWwgY29uc3RhbnQgdG8gekJpbl9Db21tb24ucGJpDQo7IENo"
D "YW5nZWQgRGVmYXVsdGNvbXByZXNzbGV2ZWwgdG8gNg0KOyBhZGRlZCB6QmluX1VucGFja0dVSQ0KOyBzb21lIGJ1Z2ZpeGVzDQoNCjsgViAxLjAgMTIvMDYvMDMNCjsgaW"
D "5pdGlhbCByZWxlYXNlDQoNClByb3RvdHlwZSB6QmluX0NhbGxiYWNrKHBlcmNlbnQuaSkNCg0KQ29tcGlsZXJTZWxlY3QgI1BCX0NvbXBpbGVyX09TDQogIENvbXBpbGVy"
D "Q2FzZSAjUEJfT1NfTGludXgNCiAgICAjWkxJQl9MSUIkID0gI1BCX0NvbXBpbGVyX0hvbWUgKyAicHVyZWxpYnJhcmllcy9saW51eC9saWJyYXJpZXMvemxpYi5hIg0KIC"
D "BDb21waWxlckNhc2UgI1BCX09TX01hY09TDQogICAgI1pMSUJfTElCJCA9ICIvdXNyL2xpYi9saWJ6LmR5bGliIg0KICBDb21waWxlckNhc2UgI1BCX09TX1dpbmRvd3MN"
D "CiAgICAjWkxJQl9MSUIkID0gInpsaWIubGliIg0KICBDb21waWxlckRlZmF1bHQNCiAgICBDb21waWxlckVycm9yICJPUyBpcyBub3Qgc3VwcG9ydGVkISINCiAgICBFbm"
D "QNCkNvbXBpbGVyRW5kU2VsZWN0DQoNCiN6QmluX0dVSURfU2l6ZSA9IDM4DQojekJpbl9IQVNIX1NpemUgPSAzMg0KDQpTdHJ1Y3R1cmUgekJpbl9IZWFkZXINCiAgR1VJ"
D "RC5hWyN6QmluX0dVSURfU2l6ZSArIDFdDQogIEhBU0guYVsjekJpbl9IQVNIX1NpemUgKyAxXQ0KICBWZXJzaW9uTWFqb3IuYg0KICBWZXJzaW9uTWlub3IuYg0KICBPUy"
D "5sDQogIENvdW50LncNCkVuZFN0cnVjdHVyZQ0KDQojekJpbl9OQU1FX1NpemUgPSA4MA0KI3pCaW5fUEFUSF9TaXplID0gMTIwDQoNClN0cnVjdHVyZSB6QmluX0ZpbGVI"
D "ZWFkZXINCiAgcG9zLnENCiAgcGFja2Vkc2l6ZS5sDQogIHVucGFja2Vkc2l6ZS5sDQogIGNyYy5sDQogIEZpbGVBdHRyaWJ1dGUubA0KICBDcmVhdGVEYXRlLmwNCiAgTG"
D "FzdE1vZGlmaWVkRGF0ZS5sDQogIExhc3RBY2Nlc3NEYXRlLmwNCiAgRmlsZS5hWyN6QmluX05BTUVfU2l6ZSArIDFdDQogIFBhdGhJbkFyY2hpdi5hWyN6QmluX1BBVEhf"
D "U2l6ZSArIDFdDQpFbmRTdHJ1Y3R1cmUNCg0KRW51bWVyYXRpb24gMCBTdGVwIC0gMTsgRXJyb3JDb2Rlcw0KICAjekJpbl9FcnJvcl9Obw0KICAjekJpbl9FcnJvcl9Dcm"
D "VhdGVGaWxlDQogICN6QmluX0Vycm9yX0NyeXB0SGVhZGVyDQogICN6QmluX0Vycm9yX0FsbG9jYXRlTWVtb3J5DQogICN6QmluX0Vycm9yX0NSQw0KICAjekJpbl9FcnJv"
D "cl9VbnBhY2tpbmcNCiAgI3pCaW5fRXJyb3JfT2JqZWN0DQpFbmRFbnVtZXJhdGlvbg0KDQojekJpbl9EZWZhdWx0TGV2ZWwgPSA2DQoNCkRhdGFTZWN0aW9uDQogIHpCaW"
D "5fR1VJRDoNCiAgRGF0YS5zICJDN0REOEM4NS00ODI4LTQ1RkMtODQ4QS1GMEQ0QzIzNzI2MTgiDQogIHpCaW5fU0FMVDoNCiAgRGF0YS5zICJfI341N0B3dElPKj9hYmN8"
D "PDw+Plt9e11hYmNkZWZnaCINCiAgekJpbl9Jbml0aWFsaXphdGlvblZlY3RvcjoNCiAgRGF0YS5iICQyRiwgJDM2LCAkNzQsICQ1QywgJEUyLCAkN0MsICQ1NCwgJDMwLC"
D "AkNTQsICRBMSwgJDlCLCAkOUMsICQxRSwgJEUzLCAkQzYsICQ1Qg0KRW5kRGF0YVNlY3Rpb24NCg0KDQrvu78NClhJbmNsdWRlRmlsZSAiekJpbl9Db21tb24ucGJpIg0K"
D "DQpJbXBvcnRDICNaTElCX0xJQiQNCiAgdW5jb21wcmVzcygqZGVzdCwgKmRlc3RMZW4sICpzb3VyY2UsIHNvdXJjZUxlbikNCkVuZEltcG9ydA0KDQpJbnRlcmZhY2Ugek"
D "JpblVuUGFja09iamVjdA0KICBDb3VudEZpbGVzLmkoKQ0KICA7IFJldHVybnMgdGhlIG51bWJlciBvZiBmaWxlcyB0aGF0IHJlc2lkZXMgaW4gYSBwYWNrLg0KICANCiAg"
D "R2V0RmlsZU51bWJlci5pKE5hbWUucykNCiAgOyBSZXR1cm5zIHRoZSBwYWNrIG51bWJlciB3aXRoIHNwZWNpZmllZCBuYW1lLiBXYXJuaW5nOiBJdCBmaW5kcyBvbmx5IH"
D "RoZSBmaXJzdCBmaWxlIG1hdGNoaW5nIHRoZSBuYW1lIQ0KICANCiAgR2V0RmlsZU5hbWUucyhOdW1iZXIpDQogIDsgUmV0dXJucyB0aGUgZmlsZSBuYW1lIG9mIHBhY2sg"
D "bnVtYmVyLg0KICANCiAgR2V0RmlsZVBhdGgucyhOdW1iZXIpDQogIDsgUmV0dXJucyB0aGUgcGF0aCBvZiBwYWNrIG51bWJlci4NCiAgDQogIEdldFVucGFja2VkU2l6ZS"
D "5sKE51bWJlcikNCiAgOyBSZXR1cm5zIHRoZSBmaWxlIHNpemUgb2YgcGFjayBudW1iZXIuDQogIA0KICBHZXRQYWNrZWRTaXplLmwoTnVtYmVyKQ0KICA7IFJldHVybnMg"
D "dGhlIHBhY2tlZCBzaXplIG9mIHBhY2sgbnVtYmVyLg0KICANCiAgR2V0RGF0ZS5sKE51bWJlciwgVHlwZSA9ICNQQl9EYXRlX01vZGlmaWVkKSA7ICNQQl9EYXRlX0NyZW"
D "F0ZWQsICNQQl9EYXRlX0FjY2Vzc2VkIG9yICNQQl9EYXRlX01vZGlmaWVkDQogIDsgUmV0dXJuIHRoZSBEYXRlIG9mIHBhY2sgbnVtYmVyIGluIFBCLUZvcm1hdC4NCiAg"
D "DQogIENhdGNoRmlsZS5pKE51bWJlcikNCiAgOyBVbnBhY2tzIHRoZSBwYWNrIG9mIG51bWJlciBhbmQgcmV0dXJucyBtZW1vcnkgYWRkcmVzcy4NCiAgOyBGcmVlTWVtb3"
D "J5KCkgZnJlZXMgdGhlIG1lbW9yeS4NCiAgICANCiAgRXh0cmFjdEZpbGUuaShOdW1iZXIsIFBhdGgucyA9ICIiKQ0KICA7IFJlc3RvcmVzIHNwZWNpZmllZCBwYWNrIGZp"
D "bGUgaW4gZGlyZWN0b3J5IHBhdGguDQogIDsgU3ViZGlyZWN0b3JpZXMgYXJlIGFsc28gcmVzdG9yZWQuDQogICAgDQogIEV4dHJhY3RBcmNoaXYuaShQYXRoLnMgPSAiIi"
D "wgY2FsbGJhY2suekJpbl9DYWxsYmFjayA9IDApDQogIDsgUmVzdG9yZXMgY29tcGxldGUgcGFjayB3aXRoIHN1YmRpcmVjdG9yaWVzIGluIGRpcmVjdG9yeSBwYXRoLg0K"
D "DQogIEdldEVycm9yLmkoKQ0KICA7IFJldHVybnMgRXJyb3Jjb2RlIGZvciBzb21lIE1ldGhvZGUNCiAgICAgIA0KICBDbG9zZVBhY2suaSgpDQogIDsgQ2xvc2VzIHRoZS"
D "B6QmluIGZpbGUgYW5kIGRlc3Ryb3lzIHRoZSBvYmplY3QuDQpFbmRJbnRlcmZhY2UNCg0KU3RydWN0dXJlIHpCaW5VblBhY2tfQ2xhc3NUZW1wbGF0ZQ0KICAqdlRhYmxl"
D "DQogIEZpbGVJRC5pDQogIEhlYWRlclBvcy5xDQogIEhlYWRlci56QmluX0hlYWRlcg0KICBBcnJheSBGaWxlSW5mby56QmluX0ZpbGVIZWFkZXIoMCkNCiAgZXJyb3IubA"
D "0KRW5kU3RydWN0dXJlDQoNCiN6QmluX1NlYXJjaF9CdWZmZXIgPSAxMDI0ICogMzINCg0KOyBIZWxwIGZ1bmN0aW9ucw0KUHJvY2VkdXJlLmkgekJpbl9EZWNyeXB0SGVh"
D "ZGVyKCpzb3VyY2UsIHNpemUuaSwga2V5LnMpDQogIFByb3RlY3RlZCAqbWVtID0gQWxsb2NhdGVNZW1vcnkoc2l6ZSkNCiAgUHJvdGVjdGVkICprZXlieXRlcyA9IEFsbG"
D "9jYXRlTWVtb3J5KDMzKQ0KICANCiAgSWYgTm90ICprZXlieXRlcw0KICAgIERlYnVnICJUaGUgYXZhaWxhYmxlIG1lbW9yeSBpcyBub3Qgc3VmZmljaWVudCEiDQogICAg"
D "SWYgKm1lbSA6IEZyZWVNZW1vcnkoKm1lbSkgOiBFbmRJZg0KICAgIFByb2NlZHVyZVJldHVybiAwDQogIEVuZElmICAgIA0KICBJZiAqbWVtDQogICAgUG9rZVMoKmtleW"
D "J5dGVzLCBrZXksIDMyLCAjUEJfQXNjaWkpDQogICAgSWYgQUVTRGVjb2Rlcigqc291cmNlLCAqbWVtLCBzaXplLCAqa2V5Ynl0ZXMsIDI1NiwgP3pCaW5fSW5pdGlhbGl6"
D "YXRpb25WZWN0b3IpDQogICAgICBDb3B5TWVtb3J5KCptZW0sICpzb3VyY2UsIHNpemUpDQogICAgICBGcmVlTWVtb3J5KCptZW0pDQogICAgICBQcm9jZWR1cmVSZXR1cm"
D "4gKnNvdXJjZQ0KICAgIEVuZElmDQogIEVsc2UNCiAgICBEZWJ1ZyAiVGhlIGF2YWlsYWJsZSBtZW1vcnkgaXMgbm90IHN1ZmZpY2llbnQhIg0KICAgIEZyZWVNZW1vcnko"
D "KmtleWJ5dGVzKQ0KICAgIFByb2NlZHVyZVJldHVybiAwDQogIEVuZElmDQpFbmRQcm9jZWR1cmUNCg0KUHJvY2VkdXJlIHpCSU5fVW5wYWNrTWVtb3J5KCpzb3VyY2UsIC"
D "pkZXN0KQ0KICBQcm90ZWN0ZWQgc291cmNlTGVuID0gTWVtb3J5U2l6ZSgqc291cmNlKQ0KICBQcm90ZWN0ZWQgZGVzdExlbiA9IE1lbW9yeVNpemUoKmRlc3QpDQogIA0K"
D "ICBJZiBOb3QgdW5jb21wcmVzcygqZGVzdCwgQGRlc3RMZW4sICpzb3VyY2UsIHNvdXJjZUxlbikNCiAgICBQcm9jZWR1cmVSZXR1cm4gZGVzdExlbg0KICBFbmRJZg0KRW"
D "5kUHJvY2VkdXJlDQoNClByb2NlZHVyZSB6QmluVW5wYWNrKEZpbGVOYW1lLnMsIFBhc3N3b3JkLnMgPSAiIiwgY2FsbGJhY2suekJpbl9DYWxsYmFjayA9IDApDQogIFBy"
D "b3RlY3RlZCAqb2JqZWN0LnpCaW5VblBhY2tfQ2xhc3NUZW1wbGF0ZQ0KICBQcm90ZWN0ZWQgR1VJRC5zID0gInsiICsgUGVla1MoP3pCaW5fR1VJRCkgKyAifSINCiAgUH"
D "JvdGVjdGVkIEZGLCBzaXplLnEsICpidWZmZXIgPSBBbGxvY2F0ZU1lbW9yeSgjekJpbl9HVUlEX1NpemUgKyAxKQ0KICBQcm90ZWN0ZWQgKm1lbSwgcG9zLnEsIGksIGtl"
D "eS5zLCAqa2V5YnVmZmVyID0gQWxsb2NhdGVNZW1vcnkoI3pCaW5fSEFTSF9TaXplICsgMSkNCiAgUHJvdGVjdGVkIEZpbGVJbmZvLnpCaW5fRmlsZUhlYWRlcg0KICBQcm"
D "90ZWN0ZWQgc3Vic2l6ZS5xDQogIA0KICBJZiBQYXNzd29yZA0KICAgIGtleSA9IExlZnQoUGFzc3dvcmQgKyBQZWVrUyg/ekJpbl9TQUxUKSwgMzIpDQogIEVuZElmDQog"
D "ICANCiAgSWYgRmlsZVNpemUoRmlsZU5hbWUpIDwgMA0KICAgIElmICpidWZmZXIgOiBGcmVlTWVtb3J5KCpidWZmZXIpIDogRW5kSWYNCiAgICBJZiAqa2V5YnVmZmVyID"
D "ogRnJlZU1lbW9yeSgqa2V5YnVmZmVyKSA6IEVuZElmDQogICAgRGVidWcgR2V0UGF0aFBhcnQoRmlsZU5hbWUpICsgIiBjb3VsZCBub3QgYmUgZm91bmQiDQogICAgUHJv"
D "Y2VkdXJlUmV0dXJuIDANCiAgRW5kSWYNCiAgDQogICpvYmplY3QgPSBBbGxvY2F0ZU1lbW9yeShTaXplT2YoekJpblVuUGFja19DbGFzc1RlbXBsYXRlKSkNCiAgSWYgKm"
D "9iamVjdA0KICAgIEluaXRpYWxpemVTdHJ1Y3R1cmUoKm9iamVjdCwgekJpblVuUGFja19DbGFzc1RlbXBsYXRlKQ0KICAgIFdpdGggKm9iamVjdA0KICAgICAgXHZUYWJs"
D "ZSA9ID92VGFibGVfekJpblVuUGFja0NsYXNzDQogICAgICBGRiA9IFJlYWRGaWxlKCNQQl9BbnksIEZpbGVOYW1lKQ0KICAgICAgIElmIElzRmlsZShGRikNCiAgICAgIC"
D "AgRmlsZUJ1ZmZlcnNTaXplKEZGLCAjekJpbl9TZWFyY2hfQnVmZmVyKQ0KICAgICAgICBcRmlsZUlEID0gRkYNCiAgICAgICAgc2l6ZSA9IExvZihGRikNCiAgICAgICAg"
D "UmVhZERhdGEoRkYsICpidWZmZXIsICN6QmluX0dVSURfU2l6ZSArIDEpDQogICAgICAgIElmIFBlZWtTKCpidWZmZXIsIC0xLCAjUEJfQXNjaWkpID0gR1VJRCA7IHN0YW"
D "5kYWxvbmUgekJpblBhY2sNCiAgICAgICAgICBcSGVhZGVyUG9zID0gMA0KICAgICAgICAgIEZyZWVNZW1vcnkoKmJ1ZmZlcikNCiAgICAgICAgICBGaWxlU2VlayhGRiwg"
D "MCkNCiAgICAgICAgICBSZWFkRGF0YShGRiwgXEhlYWRlciwgU2l6ZU9mKHpCaW5fSGVhZGVyKSkNCiAgICAgICAgRWxzZSA7IHNlYXJjaCBmb3IgdGhlIGJlZ2lubmluZy"
D "BvZiBwYWNrDQogICAgICAgICAgKk1lbSA9IEFsbG9jYXRlTWVtb3J5KCN6QmluX1NlYXJjaF9CdWZmZXIpDQogICAgICAgICAgSWYgKm1lbQ0KICAgICAgICAgICAgUmVw"
D "ZWF0DQogICAgICAgICAgICAgIHBvcyA9IExvYyhGRikNCiAgICAgICAgICAgICAgUmVhZERhdGEoRkYsICpNZW0sICN6QmluX1NlYXJjaF9CdWZmZXIpDQogICAgICAgIC"
D "AgICAgIEZvciBpID0gMCBUbyAjekJpbl9TZWFyY2hfQnVmZmVyDQogICAgICAgICAgICAgICAgSWYgUGVla1MoKk1lbSArIGksIC0xLCAjUEJfQXNjaWkpID0gR1VJRA0K"
D "ICAgICAgICAgICAgICAgICAgUG9zICsgaQ0KICAgICAgICAgICAgICAgICAgXEhlYWRlclBvcyA9IHBvcw0KICAgICAgICAgICAgICAgICAgRmlsZVNlZWsoRkYsIHBvcy"
D "kNCiAgICAgICAgICAgICAgICAgIFJlYWREYXRhKEZGLCBcSGVhZGVyLCBTaXplT2YoekJpbl9IZWFkZXIpKQ0KICAgICAgICAgICAgICAgICAgQnJlYWsgMg0KICAgICAg"
D "ICAgICAgICAgIEVuZElmDQogICAgICAgICAgICAgIE5leHQNCiAgICAgICAgICAgICAgSWYgY2FsbGJhY2sNCiAgICAgICAgICAgICAgICBzdWJzaXplICsgI3pCaW5fU2"
D "VhcmNoX0J1ZmZlcg0KICAgICAgICAgICAgICAgIElmIGNhbGxiYWNrKHN1YnNpemUgLyAoc2l6ZSAvIDEwMCkpDQogICAgICAgICAgICAgICAgICBCcmVhaw0KICAgICAg"
D "ICAgICAgICAgIEVuZElmDQogICAgICAgICAgICAgIEVuZElmIA0KICAgICAgICAgICAgVW50aWwgRW9mKEZGKQ0KICAgICAgICAgIEVuZElmDQogICAgICAgICAgRnJlZU"
D "1lbW9yeSgqYnVmZmVyKQ0KICAgICAgICAgIEZyZWVNZW1vcnkoKk1lbSkNCiAgICAgICAgRW5kSWYNCiAgICAgICAgOyByZWFkaW5nIGluZm9zIGZvciBmYXN0ZXIgYWNj"
D "ZXNzDQogICAgICAgIElmIFxIZWFkZXJcQ291bnQNCiAgICAgICAgICBJZiBQZWVrUyhAXEhlYWRlclxIQVNIWzBdLCAtMSwgI1BCX0FzY2lpKSBBbmQga2V5ID0gIiINCi"
D "AgICAgICAgICAgIFBhc3N3b3JkID0gSW5wdXRSZXF1ZXN0ZXIoInpCaW5VbnBhY2siLCAiUGxlYXNlIGVudGVyIHBhc3N3b3JkIiwgIiIpDQogICAgICAgICAgICBJZiBQ"
D "YXNzd29yZA0KICAgICAgICAgICAgICBrZXkgPSBMZWZ0KFBhc3N3b3JkICsgUGVla1MoP3pCaW5fU0FMVCksIDMyKQ0KICAgICAgICAgICAgRWxzZQ0KICAgICAgICAgIC"
D "AgICBEZWJ1ZyAiV3JvbmcgcGFzc3dvcmQhIg0KICAgICAgICAgICAgICBDbGVhclN0cnVjdHVyZSgqb2JqZWN0LCB6QmluVW5QYWNrX0NsYXNzVGVtcGxhdGUpDQogICAg"
D "ICAgICAgICAgIEZyZWVNZW1vcnkoKmtleWJ1ZmZlcikNCiAgICAgICAgICAgICAgRnJlZU1lbW9yeSgqb2JqZWN0KQ0KICAgICAgICAgICAgICBQcm9jZWR1cmVSZXR1cm"
D "4gMA0KICAgICAgICAgICAgRW5kSWYNCiAgICAgICAgICBFbmRJZg0KICAgICAgICAgIElmIGtleQ0KICAgICAgICAgICAgUG9rZVMoKmtleWJ1ZmZlciwga2V5LCAjekJp"
D "bl9IQVNIX1NpemUsICNQQl9Bc2NpaSkNCiAgICAgICAgICAgIElmIE1ENUZpbmdlcnByaW50KCprZXlidWZmZXIsICN6QmluX0hBU0hfU2l6ZSkgPD4gUGVla1MoQFxIZW"
D "FkZXJcSEFTSFswXSwgLTEsICNQQl9Bc2NpaSkNCiAgICAgICAgICAgICAgRGVidWcgIldyb25nIHBhc3N3b3JkISINCiAgICAgICAgICAgICAgQ2xlYXJTdHJ1Y3R1cmUo"
D "Km9iamVjdCwgekJpblVuUGFja19DbGFzc1RlbXBsYXRlKQ0KICAgICAgICAgICAgICBGcmVlTWVtb3J5KCprZXlidWZmZXIpDQogICAgICAgICAgICAgIEZyZWVNZW1vcn"
D "koKm9iamVjdCkNCiAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDAgICAgICAgICAgICAgDQogICAgICAgICAgICBFbmRJZg0KICAgICAgICAgIEVuZElmDQogICAg"
D "ICAgICAgRGltIFxGaWxlSW5mbyhcSGVhZGVyXENvdW50IC0gMSkNCiAgICAgICAgICBGaWxlU2VlayhGRiwgXEhlYWRlclBvcyArIFNpemVPZih6QmluX0hlYWRlcikpDQ"
D "ogICAgICAgICAgRm9yIGkgPSAwIFRvIFxIZWFkZXJcQ291bnQgLSAxDQogICAgICAgICAgICBSZWFkRGF0YShGRiwgQFxGaWxlSW5mbyhpKSwgU2l6ZU9mKHpCaW5fRmls"
D "ZUhlYWRlcikpDQogICAgICAgICAgICBJZiBrZXkNCiAgICAgICAgICAgICAgekJpbl9EZWNyeXB0SGVhZGVyKEBcRmlsZUluZm8oaSksIFNpemVPZih6QmluX0ZpbGVIZW"
D "FkZXIpLCBrZXkpDQogICAgICAgICAgICBFbmRJZg0KICAgICAgICAgICAgXEZpbGVJbmZvKGkpXHBvcyA9IExvYyhGRikNCiAgICAgICAgICAgIEZpbGVTZWVrKEZGLCBM"
D "b2MoRkYpICsgXEZpbGVJbmZvKGkpXHBhY2tlZHNpemUpDQogICAgICAgICAgTmV4dA0KICAgICAgICAgIEZyZWVNZW1vcnkoKmtleWJ1ZmZlcikNCiAgICAgICAgICBQcm"
D "9jZWR1cmVSZXR1cm4gKm9iamVjdA0KICAgICAgICBFbHNlDQogICAgICAgICAgRGVidWcgInpCaW4gYXJjaGl2ZSBjb3VsZCBub3QgYmUgZm91bmQhIg0KICAgICAgICAg"
D "IENsZWFyU3RydWN0dXJlKCpvYmplY3QsIHpCaW5VblBhY2tfQ2xhc3NUZW1wbGF0ZSkNCiAgICAgICAgICBGcmVlTWVtb3J5KCprZXlidWZmZXIpDQogICAgICAgICAgRn"
D "JlZU1lbW9yeSgqb2JqZWN0KQ0KICAgICAgICAgIFByb2NlZHVyZVJldHVybiAwICANCiAgICAgICAgRW5kSWYNCiAgICAgIEVsc2UNCiAgICAgICAgRGVidWcgRmlsZU5h"
D "bWUgKyAiIGNvdWxkIG5vdCBiZSBjcmVhdGVkIg0KICAgICAgICBDbGVhclN0cnVjdHVyZSgqb2JqZWN0LCB6QmluVW5QYWNrX0NsYXNzVGVtcGxhdGUpDQogICAgICAgIE"
D "ZyZWVNZW1vcnkoKmJ1ZmZlcikNCiAgICAgICAgRnJlZU1lbW9yeSgqa2V5YnVmZmVyKQ0KICAgICAgICBGcmVlTWVtb3J5KCpvYmplY3QpDQogICAgICAgIFByb2NlZHVy"
D "ZVJldHVybiAwICAgICAgICANCiAgICAgIEVuZElmDQogICAgRW5kV2l0aA0KICBFbHNlDQogICAgRGVidWcgIk1lbW9yeSBmb3Igb2JqZWN0IGNvdWxkIG5vdCBiZSBjcm"
D "VhdGVkIg0KICAgIEZyZWVNZW1vcnkoKmJ1ZmZlcikNCiAgICBGcmVlTWVtb3J5KCprZXlidWZmZXIpDQogICAgUHJvY2VkdXJlUmV0dXJuIDAgDQogIEVuZElmDQpFbmRQ"
D "cm9jZWR1cmUNCg0KOyBNZXRob2RzIG9mIHpCaW5QYWNrDQpQcm9jZWR1cmUuaSB6QmluVW5wYWNrX0NvdW50RmlsZXMoKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBsYX"
D "RlKQ0KICBJZiAqdGhpcw0KICAgIFByb2NlZHVyZVJldHVybiAqdGhpc1xIZWFkZXJcQ291bnQNCiAgRW5kSWYNCkVuZFByb2NlZHVyZQ0KDQpQcm9jZWR1cmUuaSB6Qmlu"
D "VW5wYWNrX0dldEZpbGVOdW1iZXIoKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBsYXRlLCBOYW1lLnMpDQogIFByb3RlY3RlZCBpLCB0bXAucw0KICANCiAgSWYgKnRoaX"
D "MNCiAgICBGb3IgaSA9IDEgVG8gKnRoaXNcSGVhZGVyXENvdW50DQogICAgICBJZiBQZWVrUyhAKnRoaXNcRmlsZUluZm8oaSAtIDEpXEZpbGVbMF0sIC0xLCAjUEJfVVRG"
D "OCkgPSBOYW1lDQogICAgICAgIFByb2NlZHVyZVJldHVybiBpDQogICAgICBFbmRJZg0KICAgIE5leHQNCiAgRW5kSWYNCkVuZFByb2NlZHVyZQ0KDQpQcm9jZWR1cmUucy"
D "B6QmluVW5wYWNrX0dldEZpbGVOYW1lKCp0aGlzLnpCaW5VblBhY2tfQ2xhc3NUZW1wbGF0ZSwgTnVtYmVyKQ0KICBJZiAqdGhpcw0KICAgIElmIE51bWJlciA+IDAgQW5k"
D "IE51bWJlciA8PSAqdGhpc1xIZWFkZXJcQ291bnQNCiAgICAgIFByb2NlZHVyZVJldHVybiBQZWVrUyhAKnRoaXNcRmlsZUluZm8oTnVtYmVyIC0gMSlcRmlsZVswXSwgLT"
D "EsICNQQl9VVEY4KQ0KICAgIEVuZElmDQogIEVuZElmDQpFbmRQcm9jZWR1cmUNCg0KUHJvY2VkdXJlLnMgekJpblVucGFja19HZXRGaWxlUGF0aCgqdGhpcy56QmluVW5Q"
D "YWNrX0NsYXNzVGVtcGxhdGUsIE51bWJlcikNCiAgSWYgKnRoaXMNCiAgICBJZiBOdW1iZXIgPiAwIEFuZCBOdW1iZXIgPD0gKnRoaXNcSGVhZGVyXENvdW50DQogICAgIC"
D "BQcm9jZWR1cmVSZXR1cm4gUGVla1MoQCp0aGlzXEZpbGVJbmZvKE51bWJlciAtIDEpXFBhdGhJbkFyY2hpdlswXSwgLTEsICNQQl9VVEY4KQ0KICAgIEVuZElmDQogIEVu"
D "ZElmDQpFbmRQcm9jZWR1cmUNCg0KUHJvY2VkdXJlLmwgekJpblVucGFja19HZXRVbnBhY2tlZFNpemUoKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBsYXRlLCBOdW1iZX"
D "IpDQogIElmICp0aGlzDQogICAgSWYgTnVtYmVyID4gMCBBbmQgTnVtYmVyIDw9ICp0aGlzXEhlYWRlclxDb3VudA0KICAgICAgUHJvY2VkdXJlUmV0dXJuICp0aGlzXEZp"
D "bGVJbmZvKE51bWJlciAtIDEpXHVucGFja2Vkc2l6ZQ0KICAgIEVuZElmDQogIEVuZElmDQpFbmRQcm9jZWR1cmUNCg0KUHJvY2VkdXJlLmwgekJpblVucGFja19HZXRQYW"
D "NrZWRTaXplKCp0aGlzLnpCaW5VblBhY2tfQ2xhc3NUZW1wbGF0ZSwgTnVtYmVyKQ0KICBJZiAqdGhpcw0KICAgIElmIE51bWJlciA+IDAgQW5kIE51bWJlciA8PSAqdGhp"
D "c1xIZWFkZXJcQ291bnQNCiAgICAgIFByb2NlZHVyZVJldHVybiAqdGhpc1xGaWxlSW5mbyhOdW1iZXIgLSAxKVxwYWNrZWRzaXplDQogICAgRW5kSWYNCiAgRW5kSWYNCk"
D "VuZFByb2NlZHVyZQ0KDQpQcm9jZWR1cmUubCB6QmluVW5wYWNrX0dldERhdGUoKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBsYXRlLCBOdW1iZXIsIFR5cGUgPSAjUEJf"
D "RGF0ZV9Nb2RpZmllZCkNCiAgSWYgKnRoaXMNCiAgICBJZiBOdW1iZXIgPiAwIEFuZCBOdW1iZXIgPD0gKnRoaXNcSGVhZGVyXENvdW50DQogICAgICBTZWxlY3QgVHlwZQ"
D "0KICAgICAgICBDYXNlICNQQl9EYXRlX0NyZWF0ZWQNCiAgICAgICAgICBQcm9jZWR1cmVSZXR1cm4gKnRoaXNcRmlsZUluZm8oTnVtYmVyIC0gMSlcQ3JlYXRlRGF0ZQ0K"
D "ICAgICAgICBDYXNlICNQQl9EYXRlX0FjY2Vzc2VkDQogICAgICAgICAgUHJvY2VkdXJlUmV0dXJuICp0aGlzXEZpbGVJbmZvKE51bWJlciAtIDEpXExhc3RBY2Nlc3NEYX"
D "RlDQogICAgICAgIENhc2UgI1BCX0RhdGVfTW9kaWZpZWQNCiAgICAgICAgICBQcm9jZWR1cmVSZXR1cm4gKnRoaXNcRmlsZUluZm8oTnVtYmVyIC0gMSlcTGFzdE1vZGlm"
D "aWVkRGF0ZQ0KICAgICAgRW5kU2VsZWN0DQogICAgRW5kSWYNCiAgRW5kSWYNCkVuZFByb2NlZHVyZQ0KDQpQcm9jZWR1cmUuaSB6QmluVW5wYWNrX0NhdGNoRmlsZSgqdG"
D "hpcy56QmluVW5QYWNrX0NsYXNzVGVtcGxhdGUsIE51bWJlcikNCiAgUHJvdGVjdGVkICpzb3VyY2UsICpkZXN0DQogIA0KICBJZiAqdGhpcw0KICAgIFdpdGggKnRoaXMN"
D "CiAgICAgIFxlcnJvciA9IDANCiAgICAgIElmIE51bWJlciA+IDAgQW5kIE51bWJlciA8PSBcSGVhZGVyXENvdW50DQogICAgICAgICpzb3VyY2UgPSBBbGxvY2F0ZU1lbW"
D "9yeShcRmlsZUluZm8oTnVtYmVyIC0gMSlccGFja2Vkc2l6ZSkNCiAgICAgICAgSWYgKnNvdXJjZQ0KICAgICAgICAgICpkZXN0ID0gQWxsb2NhdGVNZW1vcnkoXEZpbGVJ"
D "bmZvKE51bWJlciAtIDEpXHVucGFja2Vkc2l6ZSkNCiAgICAgICAgICBJZiAqZGVzdA0KICAgICAgICAgICAgRmlsZVNlZWsoXEZpbGVJRCwgXEZpbGVJbmZvKE51bWJlci"
D "AtMSlccG9zKQ0KICAgICAgICAgICAgUmVhZERhdGEoXEZpbGVJRCwgKnNvdXJjZSwgXEZpbGVJbmZvKE51bWJlciAtIDEpXHBhY2tlZHNpemUpDQogICAgICAgICAgICBJ"
D "ZiB6QklOX1VucGFja01lbW9yeSgqc291cmNlLCAqZGVzdCkNCiAgICAgICAgICAgICAgSWYgQ1JDMzJGaW5nZXJwcmludCgqZGVzdCwgTWVtb3J5U2l6ZSgqZGVzdCkpID"
D "0gXEZpbGVJbmZvKE51bWJlciAtIDEpXGNyYw0KICAgICAgICAgICAgICAgIEZyZWVNZW1vcnkoKnNvdXJjZSkNCiAgICAgICAgICAgICAgICBQcm9jZWR1cmVSZXR1cm4g"
D "KmRlc3QNCiAgICAgICAgICAgICAgRWxzZQ0KICAgICAgICAgICAgICAgIERlYnVnICJDUkMtRXJyb3IhIg0KICAgICAgICAgICAgICAgIEZyZWVNZW1vcnkoKmRlc3QpDQ"
D "ogICAgICAgICAgICAgICAgRnJlZU1lbW9yeSgqc291cmNlKQ0KICAgICAgICAgICAgICAgIFxlcnJvciA9ICN6QmluX0Vycm9yX0NSQw0KICAgICAgICAgICAgICAgIFBy"
D "b2NlZHVyZVJldHVybiAwICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgIEVuZElmDQogICAgICAgICAgICBFbHNlDQogICAgICAgICAgICAgIERlYnVnICJVbn"
D "BhY2tpbmcgaXMgZmFpbGVkISINCiAgICAgICAgICAgICAgRnJlZU1lbW9yeSgqZGVzdCkNCiAgICAgICAgICAgICAgRnJlZU1lbW9yeSgqc291cmNlKQ0KICAgICAgICAg"
D "ICAgICBcZXJyb3IgPSAjekJpbl9FcnJvcl9VbnBhY2tpbmcNCiAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDANCiAgICAgICAgICAgIEVuZElmDQogICAgICAgIC"
D "AgRWxzZQ0KICAgICAgICAgICAgRnJlZU1lbW9yeSgqc291cmNlKQ0KICAgICAgICAgICAgRGVidWcgIlRoZSBhdmFpbGFibGUgbWVtb3J5IGlzIG5vdCBzdWZmaWNpZW50"
D "ISINCiAgICAgICAgICAgIFxlcnJvciA9ICN6QmluX0Vycm9yX0FsbG9jYXRlTWVtb3J5DQogICAgICAgICAgICBQcm9jZWR1cmVSZXR1cm4gMCAgICAgICAgICAgIA0KIC"
D "AgICAgICAgIEVuZElmDQogICAgICAgIEVsc2UNCiAgICAgICAgICBEZWJ1ZyAiVGhlIGF2YWlsYWJsZSBtZW1vcnkgaXMgbm90IHN1ZmZpY2llbnQhIg0KICAgICAgICAg"
D "IFxlcnJvciA9ICN6QmluX0Vycm9yX0FsbG9jYXRlTWVtb3J5DQogICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDANCiAgICAgICAgRW5kSWYNCiAgICAgIEVuZElmDQogIC"
D "AgRW5kV2l0aA0KICBFbmRJZg0KRW5kUHJvY2VkdXJlDQoNClByb2NlZHVyZS5pIHpCaW5VbnBhY2tfRXh0cmFjdEZpbGUoKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBs"
D "YXRlLCBOdW1iZXIsIFBhdGgucyA9ICIiKQ0KICBQcm90ZWN0ZWQgRmlsZS5zLCBTZXAucywgdG1wcGF0aC5zLCB0bXBmaWxlLnMsICpzb3VyY2UsICpkZXN0LCBGRiwgaS"
D "wgYywgZGlyLnMNCiAgDQogIElmIFBhdGggPSAiIg0KICAgIFBhdGggPSBHZXRQYXRoUGFydChQcm9ncmFtRmlsZW5hbWUoKSkNCiAgRW5kSWYNCiAgQ29tcGlsZXJJZiAj"
D "UEJfQ29tcGlsZXJfT1MgPSAjUEJfT1NfV2luZG93cw0KICAgIFNlcCA9ICJcIg0KICAgIFBhdGggPSBSZXBsYWNlU3RyaW5nKFBhdGgsICIvIiwgU2VwKQ0KICBDb21waW"
D "xlckVsc2UNCiAgICBTZXAgPSAiLyINCiAgICBQYXRoID0gUmVwbGFjZVN0cmluZyhQYXRoLCAiXCIsIFNlcCkNCiAgQ29tcGlsZXJFbmRJZg0KICANCiAgSWYgUmlnaHQo"
D "UGF0aCwgMSkgPD4gU2VwIDogUGF0aCArIFNlcCA6IEVuZElmDQoNCiAgSWYgKnRoaXMNCiAgICBXaXRoICp0aGlzDQogICAgICBcZXJyb3IgPSAwDQogICAgICBJZiBOdW"
D "1iZXIgPiAwIEFuZCBOdW1iZXIgPD0gXEhlYWRlclxDb3VudA0KICAgICAgICB0bXBwYXRoID0gUGVla1MoQFxGaWxlSW5mbyhOdW1iZXIgLSAxKVxQYXRoSW5BcmNoaXZb"
D "MF0sIC0xLCAjUEJfVVRGOCkNCiAgICAgICAgQ29tcGlsZXJJZiAjUEJfQ29tcGlsZXJfT1MgPSAjUEJfT1NfV2luZG93cw0KICAgICAgICAgIHRtcHBhdGggPSBSZXBsYW"
D "NlU3RyaW5nKHRtcHBhdGgsICIvIiwgIlwiKQ0KICAgICAgICBDb21waWxlckVuZElmDQogICAgICAgIHRtcGZpbGUgPSBQZWVrUyhAXEZpbGVJbmZvKE51bWJlciAtIDEp"
D "XEZpbGVbMF0sIC0xLCAjUEJfVVRGOCkNCiAgICAgICAgSWYgdG1wZmlsZQ0KICAgICAgICAgIEZpbGUgPSBQYXRoICsgdG1wcGF0aCArIHRtcGZpbGUNCiAgICAgICAgIC"
D "Aqc291cmNlID0gQWxsb2NhdGVNZW1vcnkoXEZpbGVJbmZvKE51bWJlciAtIDEpXHBhY2tlZHNpemUpDQogICAgICAgICAgSWYgKnNvdXJjZQ0KICAgICAgICAgICAgKmRl"
D "c3QgPSBBbGxvY2F0ZU1lbW9yeShcRmlsZUluZm8oTnVtYmVyIC0gMSlcdW5wYWNrZWRzaXplKQ0KICAgICAgICAgICAgSWYgKmRlc3QNCiAgICAgICAgICAgICAgRmlsZV"
D "NlZWsoXEZpbGVJRCwgXEZpbGVJbmZvKE51bWJlciAtMSlccG9zKQ0KICAgICAgICAgICAgICBSZWFkRGF0YShcRmlsZUlELCAqc291cmNlLCBcRmlsZUluZm8oTnVtYmVy"
D "IC0gMSlccGFja2Vkc2l6ZSkNCiAgICAgICAgICAgICAgSWYgekJJTl9VbnBhY2tNZW1vcnkoKnNvdXJjZSwgKmRlc3QpDQogICAgICAgICAgICAgICAgSWYgQ1JDMzJGaW"
D "5nZXJwcmludCgqZGVzdCwgTWVtb3J5U2l6ZSgqZGVzdCkpID0gXEZpbGVJbmZvKE51bWJlciAtIDEpXGNyYw0KICAgICAgICAgICAgICAgICAgYyA9IENvdW50U3RyaW5n"
D "KEZpbGUsIFNlcCkNCiAgICAgICAgICAgICAgICAgIEZvciBpID0gMSBUbyBjDQogICAgICAgICAgICAgICAgICAgIERpciArIFN0cmluZ0ZpZWxkKGZpbGUsIGksIFNlcC"
D "kgKyBTZXANCiAgICAgICAgICAgICAgICAgICAgSWYgRmlsZVNpemUoRGlyKSA8PiAtIDINCiAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVEaXJlY3RvcnkoRGlyKQ0K"
D "ICAgICAgICAgICAgICAgICAgICBFbmRJZg0KICAgICAgICAgICAgICAgICAgTmV4dA0KICAgICAgICAgICAgICAgICAgRkYgPSBDcmVhdGVGaWxlKCNQQl9BbnksIEZpbG"
D "UpDQogICAgICAgICAgICAgICAgICBJZiBGRg0KICAgICAgICAgICAgICAgICAgICBXcml0ZURhdGEoRkYsICpkZXN0LCBNZW1vcnlTaXplKCpkZXN0KSkNCiAgICAgICAg"
D "ICAgICAgICAgICAgQ2xvc2VGaWxlKEZGKQ0KICAgICAgICAgICAgICAgICAgICBJZiBcRmlsZUluZm8oTnVtYmVyIC0gMSlcQ3JlYXRlRGF0ZQ0KICAgICAgICAgICAgIC"
D "AgICAgICAgIFNldEZpbGVEYXRlKEZpbGUsICNQQl9EYXRlX0NyZWF0ZWQsIFxGaWxlSW5mbyhOdW1iZXIgLSAxKVxDcmVhdGVEYXRlKQ0KICAgICAgICAgICAgICAgICAg"
D "ICBFbmRJZg0KICAgICAgICAgICAgICAgICAgICBJZiBcRmlsZUluZm8oTnVtYmVyIC0gMSlcTGFzdE1vZGlmaWVkRGF0ZQ0KICAgICAgICAgICAgICAgICAgICAgIFNldE"
D "ZpbGVEYXRlKEZpbGUsICNQQl9EYXRlX01vZGlmaWVkLCBcRmlsZUluZm8oTnVtYmVyIC0gMSlcTGFzdE1vZGlmaWVkRGF0ZSkNCiAgICAgICAgICAgICAgICAgICAgRW5k"
D "SWYNCiAgICAgICAgICAgICAgICAgICAgSWYgXEZpbGVJbmZvKE51bWJlciAtIDEpXExhc3RBY2Nlc3NEYXRlDQogICAgICAgICAgICAgICAgICAgICAgU2V0RmlsZURhdG"
D "UoRmlsZSwgI1BCX0RhdGVfQWNjZXNzZWQsIFxGaWxlSW5mbyhOdW1iZXIgLSAxKVxMYXN0QWNjZXNzRGF0ZSkNCiAgICAgICAgICAgICAgICAgICAgRW5kSWYNCiAgICAg"
D "ICAgICAgICAgICAgICAgSWYgXEhlYWRlclxPUyA9ICNQQl9Db21waWxlcl9PUw0KICAgICAgICAgICAgICAgICAgICAgIElmIFxGaWxlSW5mbyhOdW1iZXIgLSAxKVxGaW"
D "xlQXR0cmlidXRlDQogICAgICAgICAgICAgICAgICAgICAgICBTZXRGaWxlQXR0cmlidXRlcyhGaWxlLCBcRmlsZUluZm8oTnVtYmVyIC0gMSlcRmlsZUF0dHJpYnV0ZSkN"
D "CiAgICAgICAgICAgICAgICAgICAgICBFbmRJZg0KICAgICAgICAgICAgICAgICAgICBFbmRJZg0KICAgICAgICAgICAgICAgICAgICBGcmVlTWVtb3J5KCpkZXN0KSA6IE"
D "ZyZWVNZW1vcnkoKnNvdXJjZSkNCiAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDENCiAgICAgICAgICAgICAgICAgIEVsc2UNCiAgICAgICAgICAgICAg"
D "ICAgICAgRGVidWcgIkNSQy1FcnJvciEiDQogICAgICAgICAgICAgICAgICAgIEZyZWVNZW1vcnkoKmRlc3QpIDogRnJlZU1lbW9yeSgqc291cmNlKQ0KICAgICAgICAgIC"
D "AgICAgICAgICBcZXJyb3IgPSAjekJpbl9FcnJvcl9DUkMNCiAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDANCiAgICAgICAgICAgICAgICAgIEVuZElm"
D "DQogICAgICAgICAgICAgICAgRWxzZQ0KICAgICAgICAgICAgICAgICAgRGVidWcgR2V0RmlsZVBhcnQoRmlsZSkgKyAiIGNvdWxkIG5vdCBiZSBjcmVhdGVkISINCiAgIC"
D "AgICAgICAgICAgICAgIEZyZWVNZW1vcnkoKmRlc3QpIDogRnJlZU1lbW9yeSgqc291cmNlKQ0KICAgICAgICAgICAgICAgICAgXGVycm9yID0gI3pCaW5fRXJyb3JfQ3Jl"
D "YXRlRmlsZQ0KICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDANCiAgICAgICAgICAgICAgICBFbmRJZg0KICAgICAgICAgICAgICBFbmRJZg0KICAgICAgIC"
D "AgICAgRWxzZQ0KICAgICAgICAgICAgICBGcmVlTWVtb3J5KCpzb3VyY2UpDQogICAgICAgICAgICAgIERlYnVnICJNZW1vcnkgY291bGQgbm90IGJlIGFsbG9jYXRlZCIN"
D "CiAgICAgICAgICAgICAgXGVycm9yID0gI3pCaW5fRXJyb3JfQWxsb2NhdGVNZW1vcnkNCiAgICAgICAgICAgICAgUHJvY2VkdXJlUmV0dXJuIDANCiAgICAgICAgICAgIE"
D "VuZElmDQogICAgICAgICAgRWxzZQ0KICAgICAgICAgICAgRGVidWcgIk1lbW9yeSBjb3VsZCBub3QgYmUgYWxsb2NhdGVkIg0KICAgICAgICAgICAgXGVycm9yID0gI3pC"
D "aW5fRXJyb3JfQWxsb2NhdGVNZW1vcnkNCiAgICAgICAgICAgIFByb2NlZHVyZVJldHVybiAwDQogICAgICAgICAgRW5kSWYNCiAgICAgICAgRW5kSWYNCiAgICAgIEVuZE"
D "lmDQogICAgRW5kV2l0aA0KICBFbmRJZg0KRW5kUHJvY2VkdXJlDQoNClByb2NlZHVyZS5pIHpCaW5VbnBhY2tfRXh0cmFjdEFyY2hpdigqdGhpcy56QmluVW5QYWNrX0Ns"
D "YXNzVGVtcGxhdGUsIFBhdGgucyA9ICIiLCBjYWxsYmFjay56QmluX0NhbGxiYWNrID0gMCkNCiAgUHJvdGVjdGVkIGksIGMsIGYsIGFsbHNpemUucSwgc3Vic2l6ZS5xDQ"
D "ogIA0KICBJZiAqdGhpcw0KICAgIGMgPSAqdGhpc1xIZWFkZXJcQ291bnQNCiAgICBJZiBjDQogICAgICBJZiBjYWxsYmFjaw0KICAgICAgICBGb3IgaSA9IDEgVG8gYw0K"
D "ICAgICAgICAgIGFsbHNpemUgKyAqdGhpc1xGaWxlSW5mbyhpIC0gMSlcdW5wYWNrZWRzaXplDQogICAgICAgIE5leHQNCiAgICAgIEVuZElmDQogICAgICBGb3IgaSA9ID"
D "EgVG8gYw0KICAgICAgICBJZiB6QmluVW5wYWNrX0V4dHJhY3RGaWxlKCp0aGlzLCBpLCBQYXRoKQ0KICAgICAgICAgIGYgKyAxDQogICAgICAgICAgSWYgY2FsbGJhY2sN"
D "CiAgICAgICAgICAgIHN1YnNpemUgKyAqdGhpc1xGaWxlSW5mbyhpIC0gMSlcdW5wYWNrZWRzaXplDQogICAgICAgICAgICBJZiBjYWxsYmFjayhzdWJzaXplIC8gKGFsbH"
D "NpemUgLyAxMDApKQ0KICAgICAgICAgICAgICBCcmVhaw0KICAgICAgICAgICAgRW5kSWYNCiAgICAgICAgICBFbmRJZg0KICAgICAgICBFbmRJZg0KICAgICAgTmV4dA0K"
D "ICAgIEVuZElmDQogIEVuZElmDQogIFByb2NlZHVyZVJldHVybiBmDQpFbmRQcm9jZWR1cmUNCg0KUHJvY2VkdXJlLmkgekJpblVucGFja19HZXRFcnJvcigqdGhpcy56Qm"
D "luVW5QYWNrX0NsYXNzVGVtcGxhdGUpDQogIFByb3RlY3RlZCByZXN1bHQNCiAgDQogIElmICp0aGlzDQogICAgcmVzdWx0ID0gKnRoaXNcZXJyb3INCiAgICAqdGhpc1xl"
D "cnJvciA9IDANCiAgICBQcm9jZWR1cmVSZXR1cm4gcmVzdWx0DQogIEVsc2UNCiAgICBQcm9jZWR1cmVSZXR1cm4gI3pCaW5fRXJyb3JfT2JqZWN0DQogIEVuZElmDQpFbm"
D "RQcm9jZWR1cmUNCg0KUHJvY2VkdXJlLmkgekJpblVuUGFja19DbG9zZVBhY2soKnRoaXMuekJpblVuUGFja19DbGFzc1RlbXBsYXRlKQ0KICBJZiAqdGhpcw0KICAgIElm"
D "IElzRmlsZSgqdGhpc1xGaWxlSUQpDQogICAgICBDbG9zZUZpbGUoKnRoaXNcRmlsZUlEKQ0KICAgIEVuZElmDQogICAgQ2xlYXJTdHJ1Y3R1cmUoKnRoaXMsIHpCaW5Vbl"
D "BhY2tfQ2xhc3NUZW1wbGF0ZSkNCiAgICBGcmVlTWVtb3J5KCp0aGlzKQ0KICAgIFByb2NlZHVyZVJldHVybiAjVHJ1ZQ0KICBFbmRJZg0KRW5kUHJvY2VkdXJlDQoNCkRh"
D "dGFTZWN0aW9uIA0KICB2VGFibGVfekJpblVuUGFja0NsYXNzOg0KICBEYXRhLmkgQHpCaW5VbnBhY2tfQ291bnRGaWxlcygpDQogIERhdGEuaSBAekJpblVucGFja19HZX"
D "RGaWxlTnVtYmVyKCkNCiAgRGF0YS5pIEB6QmluVW5wYWNrX0dldEZpbGVOYW1lKCkNCiAgRGF0YS5pIEB6QmluVW5wYWNrX0dldEZpbGVQYXRoKCkNCiAgRGF0YS5pIEB6"
D "QmluVW5wYWNrX0dldFVucGFja2VkU2l6ZSgpDQogIERhdGEuaSBAekJpblVucGFja19HZXRQYWNrZWRTaXplKCkNCiAgRGF0YS5pIEB6QmluVW5wYWNrX0dldERhdGUoKQ"
D "0KICBEYXRhLmkgQHpCaW5VbnBhY2tfQ2F0Y2hGaWxlKCkNCiAgRGF0YS5pIEB6QmluVW5wYWNrX0V4dHJhY3RGaWxlKCkNCiAgRGF0YS5pIEB6QmluVW5wYWNrX0V4dHJh"
D "Y3RBcmNoaXYoKQ0KICBEYXRhLmkgQHpCaW5VbnBhY2tfR2V0RXJyb3IoKQ0KICBEYXRhLmkgQHpCaW5VblBhY2tfQ2xvc2VQYWNrKCkNCkVuZERhdGFTZWN0aW9uIA0KDQ"
D "o="
E:
EndDataSection
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von ts-soft »

Die zuletzt geposteten Proceduren haben auf meiner HD knapp 4 KB, wobei man ja nur die Unpackroutine einbauen muß,
somit wird es nochmals weniger.

Mit nativen PB-Funktionen wird es auch nicht viel weniger und es wird weder Crossplattform noch 32-/64-Bit unabhängig sein.
Also entweder meins oder keins :mrgreen:

Macht wie Ihr denkt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Bin2Post / Binäre Daten gleich im Forumspost mitliefern

Beitrag von NicTheQuick »

Okay, ich geb's zu. Ich hab's nicht überprüft, weill ich's gerade nicht kann. Das heißt diese 'zlib' ist überall schon vorhanden, also bei jeder PB-Installation von Haus aus dabei? Und die Lib hat sich nicht mehr geändert seit älteren PB-Versionen?
Bild
Antworten