Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
49328A5723B74F06525479733E5E8E03EE11CDAF585D9315323B0C04238766EC
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
10,000,000
Requested gas limit
GAS USED
9,953,208
Gas consumed
FEE
10000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g17khqpukees4237dtn3astzapmp462vjhsz6st4
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CrBOCgwvdm0ubV9hZGRwa2cSn04KKGcxN2tocXB1a2VlczQyMzdkdG4zYXN0emFwbXA0NjJ2amhzejZzdDQS8k0KCmRhdGFzb3VyY2USPmduby5sYW5kL3AvZzE3a2hxcHVrZWVzNDIzN2R0bjNhc3R6YXBtcDQ2MnZqaHN6NnN0NC9kYXRhc291cmNlGvIeCglSRUFETUUubWQS5B4jIERhdGFzb3VyY2UgUGFja2FnZQoKUGFja2FnZSBkZWZpbmVzIGdlbmVyaWMgaW50ZXJmYWNlcyBmb3IgZGF0YXNvdXJjZXMuIEEgZGF0YXNvdXJjZSBpcyBhIHNldCBvZgpyZWNvcmRzIHRoYXQgY2FuIGJlIHJlYWQgb25lIGF0IGEgdGltZSBvciBpdGVyYXRlZCwgYW5kIHRoYXQgY2FuIG9wdGlvbmFsbHkgYmUKdGFnZ2FibGUgc28gdGhleSBjYW4gYmUgZmlsdGVyZWQgYnkgY2F0ZWdvcnkuCgpEYXRhc291cmNlcyBhcmUgdXNlZnVsIHdoZW4gdGhlIGRhdGEgZXhjaGFuZ2VkIGJldHdlZW4gZGlmZmVyZW50IHJlYWxtcyBoYXMgdG8Kc3RheSBnZW5lcmljLCBhdm9pZGluZyBkaXJlY3QgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlbS4gQSByZWFsbSB0aGF0IGNvbnN1bWVzCnJlY29yZHMgb25seSBuZWVkcyB0byBrbm93IHRoZSBgRGF0YXNvdXJjZWAgaW50ZXJmYWNlLCBub3QgdGhlIHJlYWxtIHRoYXQKcHJvdmlkZXMgdGhlbS4KClRoZSBwYWNrYWdlIGRvZXNuJ3Qgc2hpcCBhIGRhdGFzb3VyY2UgaW1wbGVtZW50YXRpb24uIEl0IHByb3ZpZGVzIHRoZSBjb250cmFjdHMsIGEKYFF1ZXJ5YCB0eXBlIGNvbmZpZ3VyZWQgd2l0aCB0aGUgYFdpdGhPZmZzZXRgLCBgV2l0aENvdW50YCwgYEJ5VGFnYCBhbmQgYFdpdGhGaWx0ZXJgCm9wdGlvbnMsIGFuZCB0aGUgYE5ld0l0ZXJhdG9yYCBhbmQgYFF1ZXJ5UmVjb3Jkc2AgaGVscGVycy4gSG93IGVhY2ggcXVlcnkgb3B0aW9uCmlzIGhvbm91cmVkIGlzIHVwIHRvIHRoZSBkYXRhc291cmNlLiBgUXVlcnlSZWNvcmRzYCBlbmZvcmNlcyB0aGUgcmVjb3JkIGNvdW50Cml0c2VsZiwgc28gZGF0YXNvdXJjZXMgb25seSBoYXZlIHRvIGFwcGx5IHRoZSB0YWcsIGZpbHRlcnMgYW5kIG9mZnNldC4KCkRhdGFzb3VyY2VzIHRoYXQga2VlcCB0aGVpciByZWNvcmRzIGluIG1lbW9yeSBjYW4gdXNlIGBOZXdSZWNvcmRJdGVyYXRvcmAgdG8KcmV0dXJuIHRoZSBpdGVyYXRvciB0aGF0IHF1ZXJpZXMgZXhwZWN0LCBhbmQgYE5ld0ZpZWxkc0Zyb21NYXBgIHRvIGV4cG9zZSBhIG1hcAphcyByZWFkLW9ubHkgcmVjb3JkIGZpZWxkcywgaW5zdGVhZCBvZiB3cml0aW5nIHRoZWlyIG93bi4KCj4gWyFXQVJOSU5HXQo+IEZvciBzZWN1cml0eSwgYW55IHB1YmxpYyBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBEYXRhc291cmNlIGFzIGEgcGFyYW1ldGVyIGZyb20KPiBleHRlcm5hbCBjYWxsZXJzIE1VU1QgdmVyaWZ5IHRoYXQgdGhlIHJlY2VpdmVkIGRhdGFzb3VyY2UgaXMgYW4gZXhwZWN0ZWQgY2Fub25pY2FsCj4gb25lLgoKUmVwb3NpdG9yeSBjYW4gYmUgZm91bmQgYXQgW2plcm9uaW1vYWxiaS9nbm9tZV0oaHR0cHM6Ly9naXRodWIuY29tL2plcm9uaW1vYWxiaS9nbm9tZSksCmFzIHBhcnQgb2YgYGplcm9uaW1vYWxiaWAncyBHbm8gc21hcnQgY29udHJhY3RzIG1vbm9yZXBvLgoKIyMgVXNhZ2UKCltlbWJlZG1kXTojIChmaWxldGVzdHMvcmVhZG1lX2ZpbGV0ZXN0LmdubyBnbykKYGBgZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJImVycm9ycyIKCSJzdHJpbmdzIgoKCSJnbm8ubGFuZC9wL2cxN2tocXB1a2VlczQyMzdkdG4zYXN0emFwbXA0NjJ2amhzejZzdDQvZGF0YXNvdXJjZSIKKQoKZnVuYyBtYWluKCkgewoJdmFyIGRzIGRhdGFzb3VyY2UuRGF0YXNvdXJjZSA9IHBvc3RzewoJCXsiMSIsICJIZWxsbyBHbm8iLCBbXXN0cmluZ3siZ25vIn19LAoJCXsiMiIsICJSZWFsbXMgMTAxIiwgW11zdHJpbmd7ImdubyIsICJyZWFsbXMifX0sCgkJeyIzIiwgIkNvb2tpbmcgcGFzdGEiLCBbXXN0cmluZ3siZm9vZCJ9fSwKCQl7IjQiLCAiVGVzdGluZyBpbiBHbm8iLCBbXXN0cmluZ3siZ25vIiwgInRlc3RpbmcifX0sCgl9CgoJLy8gR2V0IHRoZSBmaXJzdCB0d28gcmVjb3JkcyB0YWdnZWQgd2l0aCAiZ25vIgoJcmVjb3JkcywgZXJyIDo9IGRhdGFzb3VyY2UuUXVlcnlSZWNvcmRzKAoJCWRzLAoJCWRhdGFzb3VyY2UuQnlUYWcoImdubyIpLAoJCWRhdGFzb3VyY2UuV2l0aENvdW50KDIpLAoJKQoJaWYgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQoKCWZvciBfLCByIDo9IHJhbmdlIHJlY29yZHMgewoJCXByaW50bG4oci5JRCgpLCByLlN0cmluZygpKQoJfQoKCS8vIEdldCB0aGUgbmV4dCBwYWdlIG9mIHJlY29yZHMgdGFnZ2VkIHdpdGggImdubyIKCXJlY29yZHMsIGVyciA9IGRhdGFzb3VyY2UuUXVlcnlSZWNvcmRzKAoJCWRzLAoJCWRhdGFzb3VyY2UuQnlUYWcoImdubyIpLAoJCWRhdGFzb3VyY2UuV2l0aE9mZnNldCgyKSwKCQlkYXRhc291cmNlLldpdGhDb3VudCgyKSwKCSkKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCglmb3IgXywgciA6PSByYW5nZSByZWNvcmRzIHsKCQlwcmludGxuKHIuSUQoKSwgci5TdHJpbmcoKSkKCX0KCgkvLyBHZXQgYSBzaW5nbGUgcmVjb3JkLCBhbmQgdXNlIGl0cyBvcHRpb25hbCBpbnRlcmZhY2VzCglyLCBlcnIgOj0gZHMuUmVjb3JkKCIyIikKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCglpZiB0LCBvayA6PSByLihkYXRhc291cmNlLlRhZ2dhYmxlUmVjb3JkKTsgb2sgewoJCXByaW50bG4oIlRhZ3M6Iiwgc3RyaW5ncy5Kb2luKHQuVGFncygpLCAiLCAiKSkKCX0KCglmaWVsZHMsIGVyciA6PSByLkZpZWxkcygpCglpZiBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9CgoJdGl0bGUsIF8gOj0gZmllbGRzLkdldCgidGl0bGUiKQoJcHJpbnRsbigiVGl0bGU6IiwgdGl0bGUuKHN0cmluZykpCn0KCi8vIERhdGFzb3VyY2U6IEEgbGlzdCBvZiBwb3N0cwp0eXBlIHBvc3RzIFtdcG9zdAoKZnVuYyAocHMgcG9zdHMpIFNpemUoKSBpbnQgeyByZXR1cm4gbGVuKHBzKSB9CgpmdW5jIChwcyBwb3N0cykgUmVjb3JkKGlkIHN0cmluZykgKGRhdGFzb3VyY2UuUmVjb3JkLCBlcnJvcikgewoJZm9yIF8sIHAgOj0gcmFuZ2UgcHMgewoJCWlmIHAuaWQgPT0gaWQgewoJCQlyZXR1cm4gcCwgbmlsCgkJfQoJfQoJcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygicmVjb3JkIG5vdCBmb3VuZCIpCn0KCmZ1bmMgKHBzIHBvc3RzKSBSZWNvcmRzKHEgZGF0YXNvdXJjZS5RdWVyeSkgZGF0YXNvdXJjZS5JdGVyYXRvciB7Cgl2YXIgcmVjb3JkcyBbXWRhdGFzb3VyY2UuUmVjb3JkCglmb3IgXywgcCA6PSByYW5nZSBwcyB7CgkJaWYgcS5UYWcgPT0gIiIgfHwgcC5oYXNUYWcocS5UYWcpIHsKCQkJcmVjb3JkcyA9IGFwcGVuZChyZWNvcmRzLCBwKQoJCX0KCX0KCglpZiBxLk9mZnNldCA+PSBsZW4ocmVjb3JkcykgewoJCXJldHVybiBkYXRhc291cmNlLk5ld1JlY29yZEl0ZXJhdG9yKG5pbCkKCX0KCXJldHVybiBkYXRhc291cmNlLk5ld1JlY29yZEl0ZXJhdG9yKHJlY29yZHNbcS5PZmZzZXQ6XSkKfQoKLy8gVGFnZ2FibGVSZWNvcmQ6IEEgcG9zdAp0eXBlIHBvc3Qgc3RydWN0IHsKCWlkICAgIHN0cmluZwoJdGl0bGUgc3RyaW5nCgl0YWdzICBbXXN0cmluZwp9CgpmdW5jIChwIHBvc3QpIElEKCkgc3RyaW5nICAgICB7IHJldHVybiBwLmlkIH0KZnVuYyAocCBwb3N0KSBTdHJpbmcoKSBzdHJpbmcgeyByZXR1cm4gcC50aXRsZSB9CmZ1bmMgKHAgcG9zdCkgVGFncygpIFtdc3RyaW5nIHsgcmV0dXJuIHAudGFncyB9CgpmdW5jIChwIHBvc3QpIEZpZWxkcygpIChkYXRhc291cmNlLkZpZWxkcywgZXJyb3IpIHsKCXJldHVybiBkYXRhc291cmNlLk5ld0ZpZWxkc0Zyb21NYXAobWFwW3N0cmluZ11hbnl7CgkJInRpdGxlIjogcC50aXRsZSwKCX0pLCBuaWwKfQoKZnVuYyAocCBwb3N0KSBoYXNUYWcodGFnIHN0cmluZykgYm9vbCB7Cglmb3IgXywgdCA6PSByYW5nZSBwLnRhZ3MgewoJCWlmIHQgPT0gdGFnIHsKCQkJcmV0dXJuIHRydWUKCQl9Cgl9CglyZXR1cm4gZmFsc2UKfQoKLy8gT3V0cHV0OgovLyAxIEhlbGxvIEdubwovLyAyIFJlYWxtcyAxMDEKLy8gNCBUZXN0aW5nIGluIEdubwovLyBUYWdzOiBnbm8sIHJlYWxtcwovLyBUaXRsZTogUmVhbG1zIDEwMQpgYGAKGo4WCg5kYXRhc291cmNlLmdubxL7FS8vIFBhY2thZ2UgZGF0YXNvdXJjZSBkZWZpbmVzIGdlbmVyaWMgaW50ZXJmYWNlcyBmb3IgZGF0YXNvdXJjZXMuCi8vCi8vIERhdGFzb3VyY2VzIGNvbnRhaW4gYSBzZXQgb2YgcmVjb3JkcyB3aGljaCBjYW4gb3B0aW9uYWxseSBiZQovLyB0YWdnYWJsZS4gVGFncyBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIGZpbHRlciByZWNvcmRzIGJ5IHRheG9ub215LgovLwovLyBEYXRhc291cmNlcyBjYW4gaGVscCBpbiBjYXNlcyB3aGVyZSB0aGUgZGF0YSBzZW50IGR1cmluZwovLyBjb21tdW5pY2F0aW9uIGJldHdlZW4gZGlmZmVyZW50IHJlYWxtcyBuZWVkcyB0byBiZSBnZW5lcmljCi8vIHRvIGF2b2lkIGRpcmVjdCBkZXBlbmRlbmNpZXMuCnBhY2thZ2UgZGF0YXNvdXJjZQoKaW1wb3J0ICJlcnJvcnMiCgovLyBFcnJJbnZhbGlkUmVjb3JkIGluZGljYXRlcyB0aGF0IGEgZGF0YXNvdXJjZSBjb250YWlucyBpbnZhbGlkIHJlY29yZHMuCnZhciBFcnJJbnZhbGlkUmVjb3JkID0gZXJyb3JzLk5ldygiZGF0YXNvdXJjZSByZWNvcmRzIGlzIG5vdCB2YWxpZCIpCgp0eXBlICgKCS8vIEZpZWxkcyBkZWZpbmVzIGFuIGludGVyZmFjZSBmb3IgcmVhZC1vbmx5IGZpZWxkcy4KCUZpZWxkcyBpbnRlcmZhY2UgewoJCS8vIEhhcyBjaGVja3Mgd2hldGhlciBhIGZpZWxkIGV4aXN0cy4KCQlIYXMobmFtZSBzdHJpbmcpIGJvb2wKCgkJLy8gR2V0IHJldHJpZXZlcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBmaWVsZC4KCQlHZXQobmFtZSBzdHJpbmcpICh2YWx1ZSBhbnksIGZvdW5kIGJvb2wpCgl9CgoJLy8gUmVjb3JkIGRlZmluZXMgYSBkYXRhc291cmNlIHJlY29yZC4KCVJlY29yZCBpbnRlcmZhY2UgewoJCS8vIElEIHJldHVybnMgdGhlIHVuaXF1ZSByZWNvcmQncyBpZGVudGlmaWVyLgoJCUlEKCkgc3RyaW5nCgoJCS8vIFN0cmluZyByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQuCgkJU3RyaW5nKCkgc3RyaW5nCgoJCS8vIEZpZWxkcyByZXR1cm5zIHJlY29yZCBmaWVsZHMgYW5kIHZhbHVlcy4KCQlGaWVsZHMoKSAoRmllbGRzLCBlcnJvcikKCX0KCgkvLyBUYWdnYWJsZVJlY29yZCBkZWZpbmVzIGEgZGF0YXNvdXJjZSByZWNvcmQgdGhhdCBzdXBwb3J0cyB0YWdzLgoJLy8gVGFncyBjYW4gYmUgdXNlZCB0byBidWlsZCBhIHRheG9ub215IHRvIGZpbHRlciByZWNvcmRzIGJ5IGNhdGVnb3J5LgoJVGFnZ2FibGVSZWNvcmQgaW50ZXJmYWNlIHsKCQkvLyBUYWdzIHJldHVybnMgYSBsaXN0IG9mIHRhZ3MgZm9yIHRoZSByZWNvcmQuCgkJVGFncygpIFtdc3RyaW5nCgl9CgoJLy8gQ29udGVudFJlY29yZCBkZWZpbmVzIGEgZGF0YXNvdXJjZSByZWNvcmQgdGhhdCBjYW4gcmV0dXJuIGNvbnRlbnQuCglDb250ZW50UmVjb3JkIGludGVyZmFjZSB7CgkJLy8gQ29udGVudCByZXR1cm5zIHRoZSByZWNvcmQgY29udGVudC4KCQlDb250ZW50KCkgKHN0cmluZywgZXJyb3IpCgl9CgoJLy8gSXRlcmF0b3IgZGVmaW5lcyBhbiBpdGVyYXRvciBvZiBkYXRhc291cmNlIHJlY29yZHMuCglJdGVyYXRvciBpbnRlcmZhY2UgewoJCS8vIE5leHQgcmV0dXJucyB0cnVlIHdoZW4gYSBuZXcgcmVjb3JkIGlzIGF2YWlsYWJsZS4KCQlOZXh0KCkgYm9vbAoKCQkvLyBFcnIgcmV0dXJucyBhbnkgZXJyb3IgcmFpc2VkIHdoZW4gcmVhZGluZyByZWNvcmRzLgoJCUVycigpIGVycm9yCgoJCS8vIFJlY29yZCByZXR1cm5zIHRoZSBjdXJyZW50IHJlY29yZC4KCQlSZWNvcmQoKSBSZWNvcmQKCX0KCgkvLyBEYXRhc291cmNlIGRlZmluZXMgYSBnZW5lcmljIGRhdGFzb3VyY2UuCglEYXRhc291cmNlIGludGVyZmFjZSB7CgkJLy8gUmVjb3JkcyByZXR1cm5zIGEgbmV3IGRhdGFzb3VyY2UgcmVjb3JkcyBpdGVyYXRvci4KCQlSZWNvcmRzKFF1ZXJ5KSBJdGVyYXRvcgoKCQkvLyBTaXplIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiByZWNvcmRzIGluIHRoZSBkYXRhc291cmNlLgoJCS8vIFdoZW4gLTEgaXMgcmV0dXJuZWQgaXQgbWVhbnMgZGF0YXNvdXJjZSBkb2Vzbid0IHN1cHBvcnQgc2l6ZS4KCQlTaXplKCkgaW50CgoJCS8vIFJlY29yZCByZXR1cm5zIGEgc2luZ2xlIGRhdGFzb3VyY2UgcmVjb3JkLgoJCVJlY29yZChpZCBzdHJpbmcpIChSZWNvcmQsIGVycm9yKQoJfQopCgovLyBOZXdJdGVyYXRvciByZXR1cm5zIGEgbmV3IHJlY29yZCBpdGVyYXRvciBmb3IgYSBkYXRhc291cmNlIHF1ZXJ5LgpmdW5jIE5ld0l0ZXJhdG9yKGRzIERhdGFzb3VyY2UsIG9wdGlvbnMgLi4uUXVlcnlPcHRpb24pIEl0ZXJhdG9yIHsKCXJldHVybiBkcy5SZWNvcmRzKE5ld1F1ZXJ5KG9wdGlvbnMuLi4pKQp9CgovLyBRdWVyeVJlY29yZHMgcmV0dXJuIGEgc2xpY2Ugb2YgcmVjb3JkcyBmb3IgYSBkYXRhc291cmNlIHF1ZXJ5LgpmdW5jIFF1ZXJ5UmVjb3JkcyhkcyBEYXRhc291cmNlLCBvcHRpb25zIC4uLlF1ZXJ5T3B0aW9uKSAoW11SZWNvcmQsIGVycm9yKSB7Cgl2YXIgKAoJCXJlY29yZHMgW11SZWNvcmQKCQlxdWVyeSAgID0gTmV3UXVlcnkob3B0aW9ucy4uLikKCQlpdGVyICAgID0gZHMuUmVjb3JkcyhxdWVyeSkKCSkKCglmb3IgaSA6PSAwOyBpIDwgcXVlcnkuQ291bnQgJiYgaXRlci5OZXh0KCk7IGkrKyB7CgkJciA6PSBpdGVyLlJlY29yZCgpCgkJaWYgciA9PSBuaWwgewoJCQlyZXR1cm4gbmlsLCBFcnJJbnZhbGlkUmVjb3JkCgkJfQoKCQlyZWNvcmRzID0gYXBwZW5kKHJlY29yZHMsIHIpCgl9CgoJaWYgZXJyIDo9IGl0ZXIuRXJyKCk7IGVyciAhPSBuaWwgewoJCXJldHVybiBuaWwsIGVycgoJfQoJcmV0dXJuIHJlY29yZHMsIG5pbAp9Chq8BAoKZmllbGRzLmdubxKtBHBhY2thZ2UgZGF0YXNvdXJjZQoKLy8gTmV3RmllbGRzRnJvbU1hcCByZXR1cm5zIHJlYWQtb25seSBmaWVsZHMgZm9yIGEgbWFwIG9mIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMuCi8vCi8vIFRoZSBtYXAgaXMgd3JhcHBlZCBhcyBpcyBhbmQgbm90IGNvcGllZCwgc28gY2hhbmdlcyBtYWRlIHRvIGl0IGJ5IHRoZSBjYWxsZXIKLy8gYXJlIGFsc28gdmlzaWJsZSB0aHJvdWdoIHRoZSByZXR1cm5lZCBmaWVsZHMuCmZ1bmMgTmV3RmllbGRzRnJvbU1hcChtIG1hcFtzdHJpbmddYW55KSBGaWVsZHMgewoJcmV0dXJuIGZpZWxkc3t2YWx1ZXM6IG19Cn0KCnR5cGUgZmllbGRzIHN0cnVjdCB7Cgl2YWx1ZXMgbWFwW3N0cmluZ11hbnkKfQoKZnVuYyAoZiBmaWVsZHMpIEhhcyhuYW1lIHN0cmluZykgYm9vbCB7CglfLCBmb3VuZCA6PSBmLnZhbHVlc1tuYW1lXQoJcmV0dXJuIGZvdW5kCn0KCmZ1bmMgKGYgZmllbGRzKSBHZXQobmFtZSBzdHJpbmcpICh2YWx1ZSBhbnksIGZvdW5kIGJvb2wpIHsKCXZhbHVlLCBmb3VuZCA9IGYudmFsdWVzW25hbWVdCglyZXR1cm4gdmFsdWUsIGZvdW5kCn0KGmUKC2dub21vZC50b21sElZtb2R1bGUgPSAiZ25vLmxhbmQvcC9nMTdraHFwdWtlZXM0MjM3ZHRuM2FzdHphcG1wNDYydmpoc3o2c3Q0L2RhdGFzb3VyY2UiCmdubyA9ICIwLjkiChrnBAoMaXRlcmF0b3IuZ25vEtYEcGFja2FnZSBkYXRhc291cmNlCgovLyBOZXdSZWNvcmRJdGVyYXRvciByZXR1cm5zIGFuIGl0ZXJhdG9yIGZvciBhIGxpc3Qgb2YgcmVjb3Jkcy4KLy8gVGhlIGl0ZXJhdG9yIG5ldmVyIHJldHVybnMgYW4gZXJyb3IgYW5kIGl0IGRvZXNuJ3QgbW9kaWZ5IHRoZSBzbGljZS4KZnVuYyBOZXdSZWNvcmRJdGVyYXRvcihyZWNvcmRzIFtdUmVjb3JkKSBJdGVyYXRvciB7CglyZXR1cm4gJnJlY29yZEl0ZXJhdG9ye3JlY29yZHM6IHJlY29yZHN9Cn0KCnR5cGUgcmVjb3JkSXRlcmF0b3Igc3RydWN0IHsKCXJlY29yZHMgW11SZWNvcmQKCWN1cnJlbnQgUmVjb3JkCn0KCmZ1bmMgKGl0ICpyZWNvcmRJdGVyYXRvcikgRXJyKCkgZXJyb3IgICAgIHsgcmV0dXJuIG5pbCB9CmZ1bmMgKGl0ICpyZWNvcmRJdGVyYXRvcikgUmVjb3JkKCkgUmVjb3JkIHsgcmV0dXJuIGl0LmN1cnJlbnQgfQoKZnVuYyAoaXQgKnJlY29yZEl0ZXJhdG9yKSBOZXh0KCkgYm9vbCB7CglpZiBsZW4oaXQucmVjb3JkcykgPT0gMCB7CgkJcmV0dXJuIGZhbHNlCgl9CgoJaXQuY3VycmVudCwgaXQucmVjb3JkcyA9IGl0LnJlY29yZHNbMF0sIGl0LnJlY29yZHNbMTpdCglyZXR1cm4gdHJ1ZQp9ChrpDQoJcXVlcnkuZ25vEtsNcGFja2FnZSBkYXRhc291cmNlCgppbXBvcnQgImduby5sYW5kL3AvbnQvYXZsL3YwIgoKLy8gRGVmYXVsdFF1ZXJ5UmVjb3JkcyBkZWZpbmVzIHRoZSBkZWZhdWx0IG51bWJlciBvZiByZWNvcmRzIHJldHVybmVkIGJ5IHF1ZXJpZXMuCmNvbnN0IERlZmF1bHRRdWVyeVJlY29yZHMgPSA1MAoKdHlwZSAoCgkvLyBRdWVyeU9wdGlvbiBjb25maWd1cmVzIGRhdGFzb3VyY2UgcXVlcmllcy4KCVF1ZXJ5T3B0aW9uIGZ1bmMoKlF1ZXJ5KQoKCS8vIFF1ZXJ5IGNvbnRhaW5zIGRhdGFzb3VyY2UgcXVlcnkgb3B0aW9ucy4KCVF1ZXJ5IHN0cnVjdCB7CgkJLy8gT2Zmc2V0IG9mIHRoZSBmaXJzdCByZWNvcmQgdG8gcmV0dXJuIGR1cmluZyBpdGVyYXRpb24uCgkJT2Zmc2V0IGludAoKCQkvLyBDb3VudCBjb250YWlucyB0aGUgbnVtYmVyIHRvIHJlY29yZHMgdGhhdCBxdWVyeSBzaG91bGQgcmV0dXJuLgoJCUNvdW50IGludAoKCQkvLyBUYWcgY29udGFpbnMgYSB0YWcgdG8gdXNlIGFzIGZpbHRlciBmb3IgdGhlIHJlY29yZHMuCgkJVGFnIHN0cmluZwoKCQkvLyBGaWx0ZXJzIGNvbnRhaW5zIG9wdGlvbmFsIHF1ZXJ5IGZpbHRlcnMgYnkgZmllbGQgdmFsdWUuCgkJRmlsdGVycyBhdmwuVHJlZQoJfQopCgovLyBXaXRoT2Zmc2V0IGNvbmZpZ3VyZXMgcXVlcnkgdG8gcmV0dXJuIHJlY29yZHMgc3RhcnRpbmcgZnJvbSBhbiBvZmZzZXQuCmZ1bmMgV2l0aE9mZnNldChvZmZzZXQgaW50KSBRdWVyeU9wdGlvbiB7CglyZXR1cm4gZnVuYyhxICpRdWVyeSkgewoJCXEuT2Zmc2V0ID0gb2Zmc2V0Cgl9Cn0KCi8vIFdpdGhDb3VudCBjb25maWd1cmVzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyB0aGF0IHF1ZXJ5IHJldHVybnMuCmZ1bmMgV2l0aENvdW50KGNvdW50IGludCkgUXVlcnlPcHRpb24gewoJcmV0dXJuIGZ1bmMocSAqUXVlcnkpIHsKCQlpZiBjb3VudCA8IDEgewoJCQljb3VudCA9IERlZmF1bHRRdWVyeVJlY29yZHMKCQl9CgkJcS5Db3VudCA9IGNvdW50Cgl9Cn0KCi8vIEJ5VGFnIGNvbmZpZ3VyZXMgcXVlcnkgdG8gZmlsdGVyIGJ5IHRhZy4KZnVuYyBCeVRhZyh0YWcgc3RyaW5nKSBRdWVyeU9wdGlvbiB7CglyZXR1cm4gZnVuYyhxICpRdWVyeSkgewoJCXEuVGFnID0gdGFnCgl9Cn0KCi8vIFdpdGhGaWx0ZXIgYXNzaWducyBhIG5ldyBmaWx0ZXIgYXJndW1lbnQgdG8gYSBxdWVyeS4KLy8gVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgaWYgbW9yZSB0aGFuIG9uZQovLyBmaWx0ZXIgaGFzIHRvIGJlIGdpdmVuIHRvIHRoZSBxdWVyeS4KZnVuYyBXaXRoRmlsdGVyKGZpZWxkIHN0cmluZywgdmFsdWUgYW55KSBRdWVyeU9wdGlvbiB7CglyZXR1cm4gZnVuYyhxICpRdWVyeSkgewoJCXEuRmlsdGVycy5TZXQoZmllbGQsIHZhbHVlKQoJfQp9CgovLyBOZXdRdWVyeSBjcmVhdGVzIGEgbmV3IGRhdGFzb3VyY2UgcXVlcnkuCmZ1bmMgTmV3UXVlcnkob3B0aW9ucyAuLi5RdWVyeU9wdGlvbikgUXVlcnkgewoJLy8gQ29uc3RydWN0IGEgZnJlc2ggUXVlcnkgaW4gdGhlIGNhbGxlcidzIHJlYWxtOyBjb3B5aW5nIGZyb20gYQoJLy8gcGFja2FnZS1sZXZlbCBkZWZhdWx0IHdvdWxkIHByb3BhZ2F0ZSB0aGUgL3AvLXJlYWRvbmx5IHRhaW50CgkvLyBhbmQgYnJlYWsgdGhlIGFwcGx5KCZxKSBvcHRpb25zIGJlbG93LgoJcSA6PSBRdWVyeXtDb3VudDogRGVmYXVsdFF1ZXJ5UmVjb3Jkc30KCWZvciBfLCBhcHBseSA6PSByYW5nZSBvcHRpb25zIHsKCQlhcHBseSgmcSkKCX0KCXJldHVybiBxCn0KIiIKEy9nbm8uTWVtUGFja2FnZVR5cGUSCwoJTVBVc2VyQWxsEhEIgNrECRIKMTAwMDB1Z25vdBqoAQo6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQLg/HIt+xiL9BCyqzFswoh/47e7ozrWoMlW2tsQ5FheyBJAENdZTSrXFJh7MVy1630qQDP+OECa/noePIM5muqsNHJUczPzM+edhUUg3tce/i5HgCjvSzgGR1f0r8tf6VYn3BooZzFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFsdXV4ZQ==