Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
1DD1B160ADC93CF95CD122E37B65DD20B94AAFA23DDD5F67E16BDE9788028D82
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
75,000,000
Requested gas limit
GAS USED
26,244,341
Gas consumed
FEE
75000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf7000000ugnot
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
Cpx9Cgwvdm0ubV9hZGRwa2cSi30KKGcxMzZqMG0wOHBrbTJsd3dkZTlkbWx4OHVlZTI2bGxlbnQ5czVjcGYS0HwKBnRva2VucxImZ25vLmxhbmQvci9zYW1jcmV3L2xhdW5jaHBhZC90b2tlbnMvdjEaTQoLZ25vbW9kLnRvbWwSPm1vZHVsZSA9ICJnbm8ubGFuZC9yL3NhbWNyZXcvbGF1bmNocGFkL3Rva2Vucy92MSIKZ25vID0gIjAuOSIKGsJoCgp0b2tlbnMuZ25vErNoLy8gUGFja2FnZSB0b2tlbnMgY3JlYXRlcyByZWdpc3RlcmVkIExhdW5jaHBhZCBHUkMyMCBsZWRnZXJzIGZvciB0aGUgaXNzdWVyCi8vIHJlYWxtcyBsaXN0ZWQgaW4gY29uZmlnLiBBIHRva2VuIGJlbG9uZ3MgdG8gdGhlIGlzc3VlciB0aGF0IGNyZWF0ZWQgaXQ6IG5vCi8vIG90aGVyIHJlYWxtLCBhbmQgbm8gYWRtaW4sIGNhbiBtaW50IGludG8gaXQuCnBhY2thZ2UgdG9rZW5zCgppbXBvcnQgKAoJImNoYWluIgoJInN0cmNvbnYiCgoJImduby5sYW5kL3AvbnQvYXZsL3YwIgoJImduby5sYW5kL3AvbnQvZ3JjMjAvdjAiCgkiZ25vLmxhbmQvcC9udC9zZXFpZC92MCIKCSJnbm8ubGFuZC9wL3NhbWNyZXcvbGF1bmNocGFkL2N1cnJlbmN5L3YxIgoJImduby5sYW5kL3Avc2FtY3Jldy9sYXVuY2hwYWQvbWV0YS92MSIKCXNtICJnbm8ubGFuZC9wL3NhbWNyZXcvbGF1bmNocGFkL3NhZmVtYXRoL3YxIgoJImduby5sYW5kL3IvbnQvZ3JjMjByZWcvdjAiCgkiZ25vLmxhbmQvci9zYW1jcmV3L2xhdW5jaHBhZC9jb25maWcvdjEiCikKCmNvbnN0ICgKCU1vZGVEaXJlY3RGaXhlZCA9ICJkaXJlY3RfZml4ZWQiCglNb2RlRGlyZWN0Q2FwICAgPSAiZGlyZWN0X2NhcHBlZCIKCU1vZGVGYWlyU2FsZSAgICA9ICJmYWlyc2FsZSIKCW1heFB1YmxpY0lEICAgICA9IDlfOTk5Xzk5OV85OTkgLy8gVCBwbHVzIHRlbiBkZWNpbWFsIGRpZ2l0czogR1JDMjAgTWF4U3ltYm9sTGVuIGlzIDExLgopCgovLyBNZXRhZGF0YSBpcyBlZGl0YWJsZSBvbmx5IGJ5IHRoZSBvcmlnaW5hbCBjcmVhdG9yIHVudGlsIGZyb3plbi4KdHlwZSBNZXRhZGF0YSBzdHJ1Y3QgewoJRGVzY3JpcHRpb24gc3RyaW5nCglJbWFnZSAgICAgICBzdHJpbmcKCVdlYnNpdGUgICAgIHN0cmluZwoJWEhhbmRsZSAgICAgc3RyaW5nCglUZWxlZ3JhbSAgICBzdHJpbmcKfQoKLy8gY3JlYXRlU3BlYyBpcyBhc3NlbWJsZWQgd2l0aGluIHRoaXMgcmVhbG06IGEgZm9yZWlnbiBHbm8gcmVhbG0gY2Fubm90Ci8vIGFsbG9jYXRlIGEgc3RydWN0IGRlY2xhcmVkIGhlcmUsIHNvIHRoZSBjcm9zc2luZyBpbnRlcmZhY2UgdXNlcyBzY2FsYXJzLgp0eXBlIGNyZWF0ZVNwZWMgc3RydWN0IHsKCUNyZWF0b3IgICAgICAgICBhZGRyZXNzCglNb2RlICAgICAgICAgICAgc3RyaW5nCglOYW1lICAgICAgICAgICAgc3RyaW5nCglUaWNrZXIgICAgICAgICAgc3RyaW5nCglEZWNpbWFscyAgICAgICAgaW50CglJbml0aWFsU3VwcGx5ICAgaW50NjQKCU1heFN1cHBseSAgICAgICBpbnQ2NAoJQ3VycmVuY3lLZXkgICAgIHN0cmluZwoJRXhwZWN0ZWRWZXJzaW9uIGludDY0CglNZXRhZGF0YSAgICAgICAgTWV0YWRhdGEKfQoKLy8gSW5mbyBleGNsdWRlcyB0aGUgcHJpdmF0ZSBsZWRnZXIgY2FwYWJpbGl0eSBhbmQgY2FuIGJlIHJldHVybmVkIHNhZmVseS4KdHlwZSBJbmZvIHN0cnVjdCB7CglJRCAgICAgICAgICAgICAgc3RyaW5nCglSZWdpc3RyeUtleSAgICAgc3RyaW5nCglHUkMyMElEICAgICAgICAgc3RyaW5nCglJc3N1ZXIgICAgICAgICAgYWRkcmVzcwoJQ3JlYXRvciAgICAgICAgIGFkZHJlc3MKCU1vZGUgICAgICAgICAgICBzdHJpbmcKCU5hbWUgICAgICAgICAgICBzdHJpbmcKCVRpY2tlciAgICAgICAgICBzdHJpbmcKCURlY2ltYWxzICAgICAgICBpbnQKCUluaXRpYWxTdXBwbHkgICBpbnQ2NAoJTWF4U3VwcGx5ICAgICAgIGludDY0CglDb25maWdWZXJzaW9uICAgaW50NjQKCUN1cnJlbmN5S2V5ICAgICBzdHJpbmcKCU1ldGFkYXRhICAgICAgICBNZXRhZGF0YQoJTWV0YWRhdGFGcm96ZW4gIGJvb2wKCU1pbnRBdXRob3JpdHkgICBhZGRyZXNzCglQZW5kaW5nTWludEF1dGggYWRkcmVzcwoJTWludFJlbm91bmNlZCAgIGJvb2wKfQoKdHlwZSBlbnRyeSBzdHJ1Y3QgewoJaW5mbyAgIEluZm8KCXRva2VuICAqZ3JjMjAuVG9rZW4KCWxlZGdlciAqZ3JjMjAuUHJpdmF0ZUxlZGdlcgp9CgovLyBUb2tlbnMgbGl2ZSBpbiBhbiBBVkwgdHJlZTogY3JlYXRpbmcgb25lIHRvdWNoZXMgaXRzIG93biBlbnRyeSBhbmQgdGhlIHBhdGgKLy8gdG8gaXQsIHdoYXRldmVyIHRoZSBudW1iZXIgb2YgdG9rZW5zLiBBIEdvIG1hcCwgb3IgYSBzbGljZSBvZiB0aGVpciBpZHMsCi8vIHdvdWxkIGJlIHJld3JpdHRlbiB3aG9sZSBvbiBldmVyeSBjcmVhdGlvbi4gSWRzIGFyZSBUMSwgVDIsIC4uLiBpbiBjcmVhdGlvbgovLyBvcmRlciBhbmQgbm8gdG9rZW4gaXMgZXZlciByZW1vdmVkLCBzbyBhIHBhZ2Ugb2YgdGhlIGxpc3QgaXMgYSByYW5nZSBvZiBpZHMuCnZhciAoCgluZXh0SUQgIHNlcWlkLklECgllbnRyaWVzID0gYXZsLk5ld1RyZWUoKSAvLyB0b2tlbiBpZCAtPiAqZW50cnkKKQoKLy8gcmVxdWlyZUlzc3VlciByZXR1cm5zIHRoZSBpbW1lZGlhdGUgY2FsbGVyLCB3aGljaCBjb25maWcgbXVzdCBsaXN0IGFzIGEKLy8gdG9rZW4gaXNzdWVyLiBPbmx5IGEgcmVhbG0ncyBvd24gYWRkcmVzcyBpcyBldmVyIGxpc3RlZCwgc28gYW4gYWNjb3VudCBvciBhCi8vIHNjcmlwdCBuZXZlciBwYXNzZXMuCmZ1bmMgcmVxdWlyZUlzc3VlcihjdXIgcmVhbG0pIGFkZHJlc3MgewoJaWYgIWN1ci5Jc0N1cnJlbnQoKSB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IHN0YWxlIHJlYWxtIGNvbnRleHQiKQoJfQoJaXNzdWVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJaWYgIWNvbmZpZy5Jc0lzc3Vlcihjb25maWcuTGVkZ2VyVG9rZW5zLCBpc3N1ZXIpIHsKCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogdG9rZW4gaXNzdWVyIG9ubHkiKQoJfQoJcmV0dXJuIGlzc3Vlcgp9CgpmdW5jIGNoZWNrKGVyciBlcnJvcikgewoJaWYgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyLkVycm9yKCkpCgl9Cn0KCi8vIGNhbGxlciBpcyB0aGUgaW1tZWRpYXRlIHVzZXIgb3IgcmVhbG0uIENvaW5zIGEgdXNlciBhdHRhY2hlcyB0byBhIGRpcmVjdAovLyBjYWxsIHdvdWxkIGxhbmQgaW4gdGhpcyByZWFsbSwgd2hpY2ggaGFzIG5vIHdheSB0byByZXR1cm4gdGhlbS4KZnVuYyBjYWxsZXIoY3VyIHJlYWxtKSBhZGRyZXNzIHsKCWlmICFjdXIuSXNDdXJyZW50KCkgewoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBzdGFsZSByZWFsbSBjb250ZXh0IikKCX0KCWN1cnJlbmN5LkFzc2VydE5vQ29pbnMoMCwgY3VyKQoJcmV0dXJuIGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQp9CgovLyBUaGUgbGVkZ2VyIGtleXMgYmFsYW5jZXMgYW5kIGFsbG93YW5jZXMgYnkgdGhlIGFkZHJlc3MgdGV4dCwgc28gYW4gYWRkcmVzcwovLyBpbiBhbnkgc3BlbGxpbmcgYnV0IHRoZSBvbmUgdGhlIGNoYWluIGdpdmVzIGEgY2FsbGVyIHdvdWxkIGhvbGQgc29tZXRoaW5nCi8vIG5vIGNhbGxlciBjYW4gcmVhY2guCmZ1bmMgcmVxdWlyZUFkZHJlc3MoYSBhZGRyZXNzKSB7CglpZiAhbWV0YS5WYWxpZEFkZHJlc3MoYSkgewoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBpbnZhbGlkIGFkZHJlc3MiKQoJfQp9CgpmdW5jIHZhbGlkYXRlTWV0YWRhdGEobSBNZXRhZGF0YSkgewoJY2hlY2sobWV0YS5EZXNjcmlwdGlvbihtLkRlc2NyaXB0aW9uKSkKCWNoZWNrKG1ldGEuSW1hZ2UobS5JbWFnZSkpCgljaGVjayhtZXRhLldlYnNpdGUobS5XZWJzaXRlKSkKCWNoZWNrKG1ldGEuSGFuZGxlKG0uWEhhbmRsZSkpCgljaGVjayhtZXRhLkhhbmRsZShtLlRlbGVncmFtKSkKfQoKLy8gVGhlIGZvdW5kaW5nIG5hbWVzIHJlbWFpbiB1bmF2YWlsYWJsZSBldmVuIGlmIGdvdmVybmFuY2UgZ2xvYmFsbHkgY2xlYXJzIGEKLy8gY29uZmlnIHJlc2VydmF0aW9uLiBBIGNyZWF0b3Itc3BlY2lmaWMgZ3JhbnQgbmVlZHMgaXRzIG93biByZXZpZXdlZCBwcm9vZi4KZnVuYyBwcm90ZWN0ZWRUaWNrZXIodGlja2VyIHN0cmluZykgYm9vbCB7Cglzd2l0Y2ggdGlja2VyIHsKCWNhc2UgIk1FTUJBIiwgIkdOT1QiLCAiVUdOT1QiLCAiV1VHTk9UIiwgIkdOUyIsICJVU0RDIiwgIlVTRFQiLCAiQVRPTSIsICJCVEMiLCAiRVRIIiwgIlNBTUNSRVciOgoJCXJldHVybiB0cnVlCgl9CglyZXR1cm4gZmFsc2UKfQoKZnVuYyB2YWxpZGF0ZVNwZWMocyBjcmVhdGVTcGVjKSB7CglyZXF1aXJlQWRkcmVzcyhzLkNyZWF0b3IpCgljaGVjayhtZXRhLk5hbWUocy5OYW1lKSkKCWNoZWNrKG1ldGEuVGlja2VyKHMuVGlja2VyKSkKCXZhbGlkYXRlTWV0YWRhdGEocy5NZXRhZGF0YSkKCWlmIHMuRGVjaW1hbHMgPCAwIHx8IHMuRGVjaW1hbHMgPiBncmMyMC5NYXhEZWNpbWFscyB8fAoJCXMuSW5pdGlhbFN1cHBseSA8PSAwIHx8IHMuTWF4U3VwcGx5IDwgcy5Jbml0aWFsU3VwcGx5IHx8CgkJcHJvdGVjdGVkVGlja2VyKHMuVGlja2VyKSB8fCBjb25maWcuSXNSZXNlcnZlZChzLlRpY2tlcikgewoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBpbnZhbGlkIGxhdW5jaCB0ZXJtcyIpCgl9Cglzd2l0Y2ggcy5Nb2RlIHsKCWNhc2UgTW9kZUZhaXJTYWxlOgoJCWlmIHMuRGVjaW1hbHMgPiAxMiB8fCBzLk1heFN1cHBseSAhPSBzLkluaXRpYWxTdXBwbHkgewoJCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogaW52YWxpZCBmYWlyLXNhbGUgdGVybXMiKQoJCX0KCWNhc2UgTW9kZURpcmVjdEZpeGVkOgoJCWlmIHMuRGVjaW1hbHMgPiAxMiB8fCBzLk1heFN1cHBseSAhPSBzLkluaXRpYWxTdXBwbHkgewoJCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogaW52YWxpZCBkaXJlY3QgdGVybXMiKQoJCX0KCWNhc2UgTW9kZURpcmVjdENhcDoKCQlpZiBzLkRlY2ltYWxzID4gMTIgfHwgcy5NYXhTdXBwbHkgPD0gcy5Jbml0aWFsU3VwcGx5IHsKCQkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IGludmFsaWQgY2FwcGVkIHRlcm1zIikKCQl9CglkZWZhdWx0OgoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBpbnZhbGlkIG1vZGUiKQoJfQp9CgpmdW5jIGxhbmVGb3JNb2RlKG1vZGUgc3RyaW5nKSBzdHJpbmcgewoJc3dpdGNoIG1vZGUgewoJY2FzZSBNb2RlRGlyZWN0Rml4ZWQsIE1vZGVEaXJlY3RDYXA6CgkJcmV0dXJuIGNvbmZpZy5MYW5lRGlyZWN0CgljYXNlIE1vZGVGYWlyU2FsZToKCQlyZXR1cm4gY29uZmlnLkxhbmVGYWlyU2FsZQoJfQoJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IGludmFsaWQgbW9kZSIpCn0KCmZ1bmMgbmV4dFB1YmxpY0lEKCkgKHN0cmluZywgc2VxaWQuSUQpIHsKCWlmIHVpbnQ2NChuZXh0SUQpID49IG1heFB1YmxpY0lEIHsKCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogdG9rZW4gSUQgZXhoYXVzdGVkIikKCX0KCWlkTnVtYmVyIDo9IG5leHRJRC5OZXh0KCkKCXJldHVybiAiVCIgKyBzdHJjb252LkZvcm1hdFVpbnQodWludDY0KGlkTnVtYmVyKSwgMTApLCBpZE51bWJlcgp9CgovLyBDcmVhdGUgcmVnaXN0ZXJzIGV4YWN0bHkgb25lIG5ldyBHUkMyMCBmb3IgYSBsaXN0ZWQgaXNzdWVyLCB3aGljaCBtdXN0Ci8vIGF1dGhlbnRpY2F0ZSB0aGUgY3JlYXRvciwgcmVzZXJ2ZSB0aGUgbGF1bmNoIHRlcm1zIGFuZCBjb2xsZWN0IHBheW1lbnQKLy8gYmVmb3JlIHRoaXMgY3Jvc3NpbmcgY2FsbC4gVGhlIGN1cnJlbmN5IGtleSBuYW1lcyB0aGUgY29uZmlnIGFjdGlvbgovLyBjdXJyZW5jeTogY3JlYXRpb24tZmVlIGN1cnJlbmN5IGZvciBhIGRpcmVjdCB0b2tlbiwgcXVvdGUgY3VycmVuY3kgZm9yIGEKLy8gZmFpciBzYWxlOyB0aGUgaXNzdWVyIGJpbmRzIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHBheW1lbnQgcm91dGUuIFRoZQovLyBwdWJsaWMgc3ltYm9sIFQ8bj4gaXMgZGlzdGluY3QgZnJvbSB0aGUgbm9udW5pcXVlIGNyZWF0b3Itc2VsZWN0ZWQgdGlja2VyLgovLyBUaGUgd2hvbGUgaW5pdGlhbCBtaW50IGxhbmRzIGluIHRoZSBpc3N1ZXIncyBjdXN0b2R5IGZvciBhdG9taWMgYWxsb2NhdGlvbgovLyBhbmQgZXNjcm93IHNldHVwLCBhbmQgdGhlIHRva2VuIHN0YXlzIGJvdW5kIHRvIHRoYXQgaXNzdWVyLgpmdW5jIENyZWF0ZShjdXIgcmVhbG0sIGNyZWF0b3IgYWRkcmVzcywgbW9kZSwgbmFtZSwgdGlja2VyIHN0cmluZywKCWRlY2ltYWxzIGludCwgaW5pdGlhbFN1cHBseSwgbWF4U3VwcGx5IGludDY0LAoJY3VycmVuY3lLZXkgc3RyaW5nLCBleHBlY3RlZFZlcnNpb24gaW50NjQsCglkZXNjcmlwdGlvbiwgaW1hZ2UsIHdlYnNpdGUsIHhIYW5kbGUsIHRlbGVncmFtIHN0cmluZykgc3RyaW5nIHsKCWlzc3VlciA6PSByZXF1aXJlSXNzdWVyKGN1cikKCXMgOj0gY3JlYXRlU3BlY3sKCQlDcmVhdG9yOiBjcmVhdG9yLCBNb2RlOiBtb2RlLCBOYW1lOiBuYW1lLCBUaWNrZXI6IHRpY2tlciwKCQlEZWNpbWFsczogZGVjaW1hbHMsIEluaXRpYWxTdXBwbHk6IGluaXRpYWxTdXBwbHksIE1heFN1cHBseTogbWF4U3VwcGx5LAoJCUN1cnJlbmN5S2V5OiBjdXJyZW5jeUtleSwKCQlFeHBlY3RlZFZlcnNpb246IGV4cGVjdGVkVmVyc2lvbiwKCQlNZXRhZGF0YTogTWV0YWRhdGF7CgkJCURlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgSW1hZ2U6IGltYWdlLCBXZWJzaXRlOiB3ZWJzaXRlLAoJCQlYSGFuZGxlOiB4SGFuZGxlLCBUZWxlZ3JhbTogdGVsZWdyYW0sCgkJfSwKCX0KCXZhbGlkYXRlU3BlYyhzKQoJY29uZmlnLkFzc2VydE5ld0FjdGlvbihsYW5lRm9yTW9kZShzLk1vZGUpLCBzLkN1cnJlbmN5S2V5LCBzLkV4cGVjdGVkVmVyc2lvbikKCWlkLCBpZE51bWJlciA6PSBuZXh0UHVibGljSUQoKQoJdG9rZW4sIGxlZGdlciA6PSBncmMyMC5OZXdUb2tlbihzLk5hbWUsIGlkLCBzLkRlY2ltYWxzLCBpZE51bWJlciwgY3VyKQoJY2hlY2sobGVkZ2VyLk1pbnQoaXNzdWVyLCBzLkluaXRpYWxTdXBwbHkpKQoJcmVnaXN0cnlLZXkgOj0gZ3JjMjByZWcuUmVnaXN0ZXIoY3Jvc3MoY3VyKSwgdG9rZW4sIGlkKQoJaW5mbyA6PSBJbmZvewoJCUlEOiBpZCwgUmVnaXN0cnlLZXk6IHJlZ2lzdHJ5S2V5LCBHUkMyMElEOiB0b2tlbi5JRCgpLAoJCUlzc3VlcjogaXNzdWVyLCBDcmVhdG9yOiBzLkNyZWF0b3IsCgkJTW9kZTogcy5Nb2RlLCBOYW1lOiBzLk5hbWUsIFRpY2tlcjogcy5UaWNrZXIsIERlY2ltYWxzOiBzLkRlY2ltYWxzLAoJCUluaXRpYWxTdXBwbHk6IHMuSW5pdGlhbFN1cHBseSwgTWF4U3VwcGx5OiBzLk1heFN1cHBseSwKCQlDb25maWdWZXJzaW9uOiBzLkV4cGVjdGVkVmVyc2lvbiwgQ3VycmVuY3lLZXk6IHMuQ3VycmVuY3lLZXksCgkJTWV0YWRhdGE6IHMuTWV0YWRhdGEsCgl9CglpZiBzLk1vZGUgPT0gTW9kZURpcmVjdENhcCB7CgkJaW5mby5NaW50QXV0aG9yaXR5ID0gcy5DcmVhdG9yCgl9CgllbnRyaWVzLlNldChpZCwgJmVudHJ5e2luZm86IGluZm8sIHRva2VuOiB0b2tlbiwgbGVkZ2VyOiBsZWRnZXJ9KQoJY2hhaW4uRW1pdCgiTGF1bmNocGFkVG9rZW5DcmVhdGVkIiwgImlkIiwgaWQsICJyZWdpc3RyeV9rZXkiLCByZWdpc3RyeUtleSwKCQkiZ3JjMjBfaWQiLCB0b2tlbi5JRCgpLCAiaXNzdWVyIiwgaXNzdWVyLlN0cmluZygpLAoJCSJjcmVhdG9yIiwgcy5DcmVhdG9yLlN0cmluZygpLAoJCSJtb2RlIiwgcy5Nb2RlLCAidGlja2VyIiwgcy5UaWNrZXIsICJjdXJyZW5jeV9rZXkiLCBzLkN1cnJlbmN5S2V5KQoJcmV0dXJuIGlkCn0KCmZ1bmMgbXVzdEVudHJ5KGlkIHN0cmluZykgKmVudHJ5IHsKCWUsIG9rIDo9IGVudHJpZXMuR2V0KGlkKS4oKmVudHJ5KQoJaWYgIW9rIHx8IGUuaW5mby5JRCAhPSBpZCB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IHVua25vd24gdG9rZW4iKQoJfQoJcmV0dXJuIGUKfQoKZnVuYyBHZXRJbmZvKGlkIHN0cmluZykgSW5mbyB7IHJldHVybiBtdXN0RW50cnkoaWQpLmluZm8gfQoKLy8gQ291bnQgaXMgdGhlIG51bWJlciBvZiB0b2tlbnMgY3JlYXRlZDogaWRzIGFyZSBUMSB0byBUPENvdW50Piwgbm9uZSByZW1vdmVkLgpmdW5jIENvdW50KCkgaW50NjQgeyByZXR1cm4gaW50NjQobmV4dElEKSB9CgpmdW5jIFJlZ2lzdHJ5S2V5T2YoaWQgc3RyaW5nKSBzdHJpbmcgeyByZXR1cm4gbXVzdEVudHJ5KGlkKS5pbmZvLlJlZ2lzdHJ5S2V5IH0KCmZ1bmMgQmFsYW5jZU9mKGlkIHN0cmluZywgb3duZXIgYWRkcmVzcykgaW50NjQgewoJcmVxdWlyZUFkZHJlc3Mob3duZXIpCglyZXR1cm4gbXVzdEVudHJ5KGlkKS50b2tlbi5CYWxhbmNlT2Yob3duZXIpCn0KCmZ1bmMgVG90YWxTdXBwbHkoaWQgc3RyaW5nKSBpbnQ2NCB7IHJldHVybiBtdXN0RW50cnkoaWQpLnRva2VuLlRvdGFsU3VwcGx5KCkgfQoKLy8gTWludENhcHBlZCBjYW4gb25seSBiZSByZWFjaGVkIHRocm91Z2ggdGhlIGlzc3VlciB0aGF0IGNyZWF0ZWQgdGhlIHRva2VuLgovLyBUaGF0IGlzc3VlciBhdXRoZW50aWNhdGVzIHRoZSBsaXZlIGNhbGxlciBhcyB0aGUgY3VycmVudCBtaW50IGF1dGhvcml0eQovLyBhbmQgbXVzdCBwYXJ0aXRpb24gdGhlIG5ld2x5IG1pbnRlZCBiYWxhbmNlIGludG8gcmVjb3JkZWQgYWxsb2NhdGlvbnMgaW4KLy8gdGhpcyBzYW1lIHRyYW5zYWN0aW9uLiBUaGUgbGVkZ2VyIGluZGVwZW5kZW50bHkgcmVjaGVja3MgdGhlIGF1dGhvcml0eSBhbmQKLy8gdGhlIGltbXV0YWJsZSBjYXAsIGFuZCB0YWtlcyBubyBtaW50IHdoaWxlIHRoZSBkaXJlY3QgbGFuZSBpcyBjbG9zZWQ6IHRoZQovLyBwYXVzZXIgc3RvcHMgZXZlcnkgaXNzdWVyIGhlcmUsIHdoYXRldmVyIGVhY2ggb25lIGNoZWNrcyBieSBpdHNlbGYuCmZ1bmMgTWludENhcHBlZChjdXIgcmVhbG0sIGlkIHN0cmluZywgYXV0aG9yaXR5IGFkZHJlc3MsIGFtb3VudCBpbnQ2NCkgewoJaXNzdWVyIDo9IHJlcXVpcmVJc3N1ZXIoY3VyKQoJZSA6PSBtdXN0RW50cnkoaWQpCgljb25maWcuQXNzZXJ0TGFuZU9wZW4oY29uZmlnLkxhbmVEaXJlY3QsIGUuaW5mby5DdXJyZW5jeUtleSkKCWlmIGUuaW5mby5Jc3N1ZXIgIT0gaXNzdWVyIHx8IGUuaW5mby5Nb2RlICE9IE1vZGVEaXJlY3RDYXAgfHwgZS5pbmZvLk1pbnRSZW5vdW5jZWQgfHwKCQllLmluZm8uTWludEF1dGhvcml0eSAhPSBhdXRob3JpdHkgfHwgYW1vdW50IDw9IDAgfHwKCQlzbS5BZGQoZS50b2tlbi5Ub3RhbFN1cHBseSgpLCBhbW91bnQpID4gZS5pbmZvLk1heFN1cHBseSB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IGNhcHBlZCBtaW50IGRlbmllZCIpCgl9CgljaGVjayhlLmxlZGdlci5NaW50KGlzc3VlciwgYW1vdW50KSkKCWNoYWluLkVtaXQoIkxhdW5jaHBhZFRva2VuQ2FwcGVkTWludGVkIiwgImlkIiwgaWQsCgkJImF1dGhvcml0eSIsIGF1dGhvcml0eS5TdHJpbmcoKSwgImFtb3VudCIsIHN0cmNvbnYuRm9ybWF0SW50KGFtb3VudCwgMTApKQp9CgpmdW5jIEFsbG93YW5jZShpZCBzdHJpbmcsIG93bmVyLCBzcGVuZGVyIGFkZHJlc3MpIGludDY0IHsKCXJlcXVpcmVBZGRyZXNzKG93bmVyKQoJcmVxdWlyZUFkZHJlc3Moc3BlbmRlcikKCXJldHVybiBtdXN0RW50cnkoaWQpLnRva2VuLkFsbG93YW5jZShvd25lciwgc3BlbmRlcikKfQoKLy8gU3RhbmRhcmQgd3JhcHBlcnMgb3BlcmF0ZSBvbmx5IG9uIHRoZSBpbW1lZGlhdGUgY2FsbGVyJ3MgYmFsYW5jZSBvcgovLyBhbGxvd2FuY2UsIGFjY2VwdCBubyBjb2lucywgYW5kIHRha2UgYW4gYWRkcmVzcyBvbmx5IGFzIHRoZSBjaGFpbiB3cml0ZXMKLy8gb25lLiBBIHJlYWxtIGNhbiBhbHNvIG1vdmUgaXRzIG93biBiYWxhbmNlLCBvciBhbiBhbGxvd2FuY2UgaXQgaG9sZHMsCi8vIHRocm91Z2ggdGhlIHRva2VuIGluIHRoZSByZWdpc3RyeSwgd2hlcmUgdGhlIEdSQzIwIGxpYnJhcnkgYWxvbmUgY2hlY2tzIHRoZQovLyByZWNlaXZlci4gQSBzY3JpcHQgYW4gYWNjb3VudCBydW5zIGlzIHN1Y2ggYSByZWFsbSB3aXRoIHRoZSBhY2NvdW50J3MKLy8gYWRkcmVzcywgc28gdGhlc2Ugd3JhcHBlcnMgYXJlIGFuIGFjY291bnQncyBvbmx5IHdheSBpbiBvbmx5IHdoaWxlIHRoZQovLyBjaGFpbiBkb2VzIG5vdCBsZXQgdGhhdCBhY2NvdW50IHN1Ym1pdCBzY3JpcHRzLgpmdW5jIFRyYW5zZmVyKGN1ciByZWFsbSwgaWQgc3RyaW5nLCB0byBhZGRyZXNzLCBhbW91bnQgaW50NjQpIHsKCWNhbGxlcihjdXIpCglyZXF1aXJlQWRkcmVzcyh0bykKCWNoZWNrKG11c3RFbnRyeShpZCkubGVkZ2VyLkNhbGxlclRlbGxlcigpLlRyYW5zZmVyKDAsIGN1ciwgdG8sIGFtb3VudCkpCn0KCmZ1bmMgQXBwcm92ZShjdXIgcmVhbG0sIGlkIHN0cmluZywgc3BlbmRlciBhZGRyZXNzLCBhbW91bnQgaW50NjQpIHsKCWNhbGxlcihjdXIpCglyZXF1aXJlQWRkcmVzcyhzcGVuZGVyKQoJY2hlY2sobXVzdEVudHJ5KGlkKS5sZWRnZXIuQ2FsbGVyVGVsbGVyKCkuQXBwcm92ZSgwLCBjdXIsIHNwZW5kZXIsIGFtb3VudCkpCn0KCmZ1bmMgVHJhbnNmZXJGcm9tKGN1ciByZWFsbSwgaWQgc3RyaW5nLCBmcm9tLCB0byBhZGRyZXNzLCBhbW91bnQgaW50NjQpIHsKCWNhbGxlcihjdXIpCglyZXF1aXJlQWRkcmVzcyhmcm9tKQoJcmVxdWlyZUFkZHJlc3ModG8pCgljaGVjayhtdXN0RW50cnkoaWQpLmxlZGdlci5DYWxsZXJUZWxsZXIoKS5UcmFuc2ZlckZyb20oMCwgY3VyLCBmcm9tLCB0bywgYW1vdW50KSkKfQoKZnVuYyBCdXJuKGN1ciByZWFsbSwgaWQgc3RyaW5nLCBhbW91bnQgaW50NjQpIHsKCXdobyA6PSBjYWxsZXIoY3VyKQoJaWYgYW1vdW50IDw9IDAgewoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBpbnZhbGlkIGJ1cm4iKQoJfQoJY2hlY2sobXVzdEVudHJ5KGlkKS5sZWRnZXIuQnVybih3aG8sIGFtb3VudCkpCn0KCmZ1bmMgU2V0TWV0YWRhdGEoY3VyIHJlYWxtLCBpZCwgZGVzY3JpcHRpb24sIGltYWdlLCB3ZWJzaXRlLCB4SGFuZGxlLCB0ZWxlZ3JhbSBzdHJpbmcpIHsKCXdobyA6PSBjYWxsZXIoY3VyKQoJZSA6PSBtdXN0RW50cnkoaWQpCglpZiBlLmluZm8uTWV0YWRhdGFGcm96ZW4gfHwgd2hvICE9IGUuaW5mby5DcmVhdG9yIHsKCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogY3JlYXRvciBtZXRhZGF0YSBvbmx5IikKCX0KCW0gOj0gTWV0YWRhdGF7CgkJRGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBJbWFnZTogaW1hZ2UsIFdlYnNpdGU6IHdlYnNpdGUsCgkJWEhhbmRsZTogeEhhbmRsZSwgVGVsZWdyYW06IHRlbGVncmFtLAoJfQoJdmFsaWRhdGVNZXRhZGF0YShtKQoJZS5pbmZvLk1ldGFkYXRhID0gbQoJY2hhaW4uRW1pdCgiVG9rZW5NZXRhZGF0YUNoYW5nZWQiLCAiaWQiLCBpZCwgImNyZWF0b3IiLCBlLmluZm8uQ3JlYXRvci5TdHJpbmcoKSkKfQoKZnVuYyBGcmVlemVNZXRhZGF0YShjdXIgcmVhbG0sIGlkIHN0cmluZykgewoJd2hvIDo9IGNhbGxlcihjdXIpCgllIDo9IG11c3RFbnRyeShpZCkKCWlmIGUuaW5mby5NZXRhZGF0YUZyb3plbiB8fCB3aG8gIT0gZS5pbmZvLkNyZWF0b3IgewoJCXBhbmljKCJsYXVuY2hwYWQvdG9rZW5zOiBjcmVhdG9yIG1ldGFkYXRhIG9ubHkiKQoJfQoJZS5pbmZvLk1ldGFkYXRhRnJvemVuID0gdHJ1ZQoJY2hhaW4uRW1pdCgiVG9rZW5NZXRhZGF0YUZyb3plbiIsICJpZCIsIGlkLCAiY3JlYXRvciIsIGUuaW5mby5DcmVhdG9yLlN0cmluZygpKQp9CgovLyBBIGNhcHBlZCB0b2tlbidzIGF1dGhvcml0eSBtb3ZlcyBvbmx5IHRocm91Z2ggaXRzIG93biB0d28tc3RlcCBoYW5kb2ZmLgovLyBUaGUgaXNzdWVyIGNoZWNrcyB0aGlzIGxpdmUgYXV0aG9yaXR5IGJlZm9yZSBlYWNoIGxhdGVyIG1pbnQuCmZ1bmMgUHJvcG9zZU1pbnRBdXRob3JpdHkoY3VyIHJlYWxtLCBpZCBzdHJpbmcsIG5leHQgYWRkcmVzcykgewoJd2hvIDo9IGNhbGxlcihjdXIpCgllIDo9IG11c3RFbnRyeShpZCkKCWlmIGUuaW5mby5Nb2RlICE9IE1vZGVEaXJlY3RDYXAgfHwgZS5pbmZvLk1pbnRSZW5vdW5jZWQgfHwKCQl3aG8gIT0gZS5pbmZvLk1pbnRBdXRob3JpdHkgfHwKCQkhbWV0YS5WYWxpZEFkZHJlc3MobmV4dCkgfHwgbmV4dCA9PSBlLmluZm8uTWludEF1dGhvcml0eSB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IG1pbnQgYXV0aG9yaXR5IG9ubHkiKQoJfQoJZS5pbmZvLlBlbmRpbmdNaW50QXV0aCA9IG5leHQKCWNoYWluLkVtaXQoIk1pbnRBdXRob3JpdHlQcm9wb3NlZCIsICJpZCIsIGlkLCAibmV4dCIsIG5leHQuU3RyaW5nKCkpCn0KCmZ1bmMgQ2FuY2VsTWludEF1dGhvcml0eShjdXIgcmVhbG0sIGlkIHN0cmluZykgewoJd2hvIDo9IGNhbGxlcihjdXIpCgllIDo9IG11c3RFbnRyeShpZCkKCWlmIGUuaW5mby5Nb2RlICE9IE1vZGVEaXJlY3RDYXAgfHwgZS5pbmZvLk1pbnRSZW5vdW5jZWQgfHwKCQl3aG8gIT0gZS5pbmZvLk1pbnRBdXRob3JpdHkgfHwgZS5pbmZvLlBlbmRpbmdNaW50QXV0aCA9PSAiIiB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IG5vIG1pbnQgYXV0aG9yaXR5IHByb3Bvc2FsIikKCX0KCWUuaW5mby5QZW5kaW5nTWludEF1dGggPSAiIgoJY2hhaW4uRW1pdCgiTWludEF1dGhvcml0eUNhbmNlbGxlZCIsICJpZCIsIGlkKQp9CgpmdW5jIEFjY2VwdE1pbnRBdXRob3JpdHkoY3VyIHJlYWxtLCBpZCBzdHJpbmcpIHsKCXdobyA6PSBjYWxsZXIoY3VyKQoJZSA6PSBtdXN0RW50cnkoaWQpCglpZiBlLmluZm8uTW9kZSAhPSBNb2RlRGlyZWN0Q2FwIHx8IGUuaW5mby5NaW50UmVub3VuY2VkIHx8CgkJZS5pbmZvLlBlbmRpbmdNaW50QXV0aCA9PSAiIiB8fCB3aG8gIT0gZS5pbmZvLlBlbmRpbmdNaW50QXV0aCB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IHBlbmRpbmcgbWludCBhdXRob3JpdHkgb25seSIpCgl9CgllLmluZm8uTWludEF1dGhvcml0eSA9IHdobwoJZS5pbmZvLlBlbmRpbmdNaW50QXV0aCA9ICIiCgljaGFpbi5FbWl0KCJNaW50QXV0aG9yaXR5QWNjZXB0ZWQiLCAiaWQiLCBpZCwgImF1dGhvcml0eSIsIHdoby5TdHJpbmcoKSkKfQoKZnVuYyBSZW5vdW5jZU1pbnRBdXRob3JpdHkoY3VyIHJlYWxtLCBpZCBzdHJpbmcpIHsKCXdobyA6PSBjYWxsZXIoY3VyKQoJZSA6PSBtdXN0RW50cnkoaWQpCglpZiBlLmluZm8uTW9kZSAhPSBNb2RlRGlyZWN0Q2FwIHx8IGUuaW5mby5NaW50UmVub3VuY2VkIHx8CgkJd2hvICE9IGUuaW5mby5NaW50QXV0aG9yaXR5IHsKCQlwYW5pYygibGF1bmNocGFkL3Rva2VuczogbWludCBhdXRob3JpdHkgb25seSIpCgl9CgllLmluZm8uTWludEF1dGhvcml0eSA9ICIiCgllLmluZm8uUGVuZGluZ01pbnRBdXRoID0gIiIKCWUuaW5mby5NaW50UmVub3VuY2VkID0gdHJ1ZQoJY2hhaW4uRW1pdCgiTWludEF1dGhvcml0eVJlbm91bmNlZCIsICJpZCIsIGlkKQp9CgpmdW5jIFJlbmRlcihwYXRoIHN0cmluZykgc3RyaW5nIHsKCWlmIHBhdGggPT0gIiIgewoJCXJldHVybiAiIyBMYXVuY2hwYWQgdG9rZW5zXG5cblJlZ2lzdGVyZWQgR1JDMjAgbGVkZ2VycyBjcmVhdGVkIGJ5IHRoZSBpc3N1ZXJzIGxpc3RlZCBpbiBjb25maWcuXG4iCgl9CgllIDo9IG11c3RFbnRyeShwYXRoKQoJcmV0dXJuICIjICIgKyBtZXRhLkVzY2FwZU1hcmtkb3duKGUuaW5mby5OYW1lKSArICJcblxuVGlja2VyOiAiICsKCQltZXRhLkVzY2FwZU1hcmtkb3duKGUuaW5mby5UaWNrZXIpICsgIlxuIgp9ChrlEgoJdmlld3MuZ25vEtcScGFja2FnZSB0b2tlbnMKCmltcG9ydCAoCgkic3RyY29udiIKCSJzdHJpbmdzIgoKCSJnbm8ubGFuZC9wL3NhbWNyZXcvbGF1bmNocGFkL21ldGEvdjEiCglzbSAiZ25vLmxhbmQvcC9zYW1jcmV3L2xhdW5jaHBhZC9zYWZlbWF0aC92MSIKKQoKLy8gaW50NjQgYW1vdW50cyBhbmQgdmVyc2lvbnMgYXJlIGRlY2ltYWwgc3RyaW5ncyBzbyBKU09OIGNsaWVudHMgY2Fubm90IHJvdW5kCi8vIGEgdmFsaWQgdmFsdWUgYWJvdmUgSmF2YVNjcmlwdCdzIGV4YWN0IGludGVnZXIgcmFuZ2UuCmZ1bmMgaW5mb0pTT04oZSAqZW50cnkpIHN0cmluZyB7CglpIDo9IGUuaW5mbwoJcmV0dXJuICJ7IiArCgkJYCJpZCI6YCArIG1ldGEuSlNPTlN0cmluZyhpLklEKSArCgkJYCwicmVnaXN0cnlLZXkiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5SZWdpc3RyeUtleSkgKwoJCWAsImdyYzIwSWQiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5HUkMyMElEKSArCgkJYCwiaXNzdWVyIjpgICsgbWV0YS5KU09OU3RyaW5nKGkuSXNzdWVyLlN0cmluZygpKSArCgkJYCwiY3JlYXRvciI6YCArIG1ldGEuSlNPTlN0cmluZyhpLkNyZWF0b3IuU3RyaW5nKCkpICsKCQlgLCJtb2RlIjpgICsgbWV0YS5KU09OU3RyaW5nKGkuTW9kZSkgKwoJCWAsIm5hbWUiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5OYW1lKSArCgkJYCwidGlja2VyIjpgICsgbWV0YS5KU09OU3RyaW5nKGkuVGlja2VyKSArCgkJYCwiZGVjaW1hbHMiOmAgKyBzdHJjb252Lkl0b2EoaS5EZWNpbWFscykgKwoJCWAsImluaXRpYWxTdXBwbHkiOmAgKyBtZXRhLkpTT05TdHJpbmcoc3RyY29udi5Gb3JtYXRJbnQoaS5Jbml0aWFsU3VwcGx5LCAxMCkpICsKCQlgLCJtYXhTdXBwbHkiOmAgKyBtZXRhLkpTT05TdHJpbmcoc3RyY29udi5Gb3JtYXRJbnQoaS5NYXhTdXBwbHksIDEwKSkgKwoJCWAsInRvdGFsU3VwcGx5IjpgICsgbWV0YS5KU09OU3RyaW5nKHN0cmNvbnYuRm9ybWF0SW50KGUudG9rZW4uVG90YWxTdXBwbHkoKSwgMTApKSArCgkJYCwiY29uZmlnVmVyc2lvbiI6YCArIG1ldGEuSlNPTlN0cmluZyhzdHJjb252LkZvcm1hdEludChpLkNvbmZpZ1ZlcnNpb24sIDEwKSkgKwoJCWAsImN1cnJlbmN5S2V5IjpgICsgbWV0YS5KU09OU3RyaW5nKGkuQ3VycmVuY3lLZXkpICsKCQlgLCJkZXNjcmlwdGlvbiI6YCArIG1ldGEuSlNPTlN0cmluZyhpLk1ldGFkYXRhLkRlc2NyaXB0aW9uKSArCgkJYCwiaW1hZ2UiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5NZXRhZGF0YS5JbWFnZSkgKwoJCWAsIndlYnNpdGUiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5NZXRhZGF0YS5XZWJzaXRlKSArCgkJYCwieEhhbmRsZSI6YCArIG1ldGEuSlNPTlN0cmluZyhpLk1ldGFkYXRhLlhIYW5kbGUpICsKCQlgLCJ0ZWxlZ3JhbSI6YCArIG1ldGEuSlNPTlN0cmluZyhpLk1ldGFkYXRhLlRlbGVncmFtKSArCgkJYCwibWV0YWRhdGFGcm96ZW4iOmAgKyBzdHJjb252LkZvcm1hdEJvb2woaS5NZXRhZGF0YUZyb3plbikgKwoJCWAsIm1pbnRBdXRob3JpdHkiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5NaW50QXV0aG9yaXR5LlN0cmluZygpKSArCgkJYCwicGVuZGluZ01pbnRBdXRob3JpdHkiOmAgKyBtZXRhLkpTT05TdHJpbmcoaS5QZW5kaW5nTWludEF1dGguU3RyaW5nKCkpICsKCQlgLCJtaW50UmVub3VuY2VkIjpgICsgc3RyY29udi5Gb3JtYXRCb29sKGkuTWludFJlbm91bmNlZCkgKyAifSIKfQoKZnVuYyBUb2tlbkpTT04oaWQgc3RyaW5nKSBzdHJpbmcgeyByZXR1cm4gaW5mb0pTT04obXVzdEVudHJ5KGlkKSkgfQoKLy8gTGlzdFRva2Vuc0pTT04gcmV0dXJucyBhIHplcm8tYmFzZWQgcGFnZTsgcGFnZSBzaXplIGlzIHN0cmljdGx5IDEuLjEwMC4KZnVuYyBMaXN0VG9rZW5zSlNPTihwYWdlLCBzaXplIGludDY0KSBzdHJpbmcgewoJaWYgcGFnZSA8IDAgfHwgc2l6ZSA8IDEgfHwgc2l6ZSA+IDEwMCB7CgkJcGFuaWMoImxhdW5jaHBhZC90b2tlbnM6IGludmFsaWQgcGFnZSIpCgl9CglvZmZzZXQgOj0gc20uTXVsKHBhZ2UsIHNpemUpCglpZiBvZmZzZXQgPj0gQ291bnQoKSB7CgkJcmV0dXJuICJbXSIKCX0KCWVuZCA6PSBvZmZzZXQgKyBzaXplCglpZiBlbmQgPiBDb3VudCgpIHsKCQllbmQgPSBDb3VudCgpCgl9Cgl2YXIgYiBzdHJpbmdzLkJ1aWxkZXIKCWIuV3JpdGVCeXRlKCdbJykKCWZvciBpIDo9IG9mZnNldDsgaSA8IGVuZDsgaSsrIHsKCQlpZiBpID4gb2Zmc2V0IHsKCQkJYi5Xcml0ZUJ5dGUoJywnKQoJCX0KCQkvLyBFbnRyeSBpIG9mIHRoZSBsaXN0IGlzIHRoZSB0b2tlbiBjcmVhdGVkIChpKzEpdGguCgkJYi5Xcml0ZVN0cmluZyhpbmZvSlNPTihtdXN0RW50cnkoIlQiICsgc3RyY29udi5Gb3JtYXRJbnQoaSsxLCAxMCkpKSkKCX0KCWIuV3JpdGVCeXRlKCddJykKCXJldHVybiBiLlN0cmluZygpCn0KIiIKEy9nbm8uTWVtUGFja2FnZVR5cGUSCwoJTVBVc2VyQWxsIgw3MDAwMDAwdWdub3QSEQiAo8NHEgo3NTAwMHVnbm90GogDCs0BChIvdG0uUHViS2V5TXVsdGlzaWcStgEIAhI6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQNdTsrzjy2oA1bKxxCiASBMVUReZbe8FQo/n1GUQS9f7RI6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQMo44neuGQmEOBJpWfwt5YFd/18PcgdS1Pidavq3ZGmeBI6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQMg5X9eKuwtmgamq/0K8oenVUfVQAsVWVenzmjN1+WBABKLAQoFCAMSAaASQKVknxvZuqFG4hHSRlMbra4Nq6A9pppit4UXPeax25H9HkTeAfdzT+JahRUpAX0GV7rgXhrd6XE0bQdWfWA/ZWsSQBZrVKMtNPf5/nqSrDbnUUaHaO6nBHHPBoIMiE8p6mn3UYfKDGvALoPFG925KupWKvCbUUpVpcdDKJovJcOrC9saKGcxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbHV1eGU=