{
  "jsonrpc": "2.0",
  "id": "",
  "result": {
    "hash": "pZsTUJGG/SRLx8JjFr7Xs6zLXt0TRc/yEGpv+b7nTNM=",
    "height": "662737",
    "index": 0,
    "tx_result": {
      "ResponseBase": {
        "Error": null,
        "Data": null,
        "Events": [
          {
            "@type": "/tm.StorageDepositEvent",
            "bytes_delta": "32207",
            "fee_delta": "3220700ugnot",
            "pkg_path": "gno.land/r/g1ut6uspuh73e02yauxpmyt8g3wwddaq8utagvm3/revshare"
          }
        ],
        "Log": "msg:0,success:true,log:,events:[]",
        "Info": ""
      },
      "GasWanted": "50223561",
      "GasUsed": "33482374"
    },
    "tx": "CqyFAQoML3ZtLm1fYWRkcGtnEpqFAQooZzF1dDZ1c3B1aDczZTAyeWF1eHBteXQ4ZzN3d2RkYXE4dXRhZ3ZtMxLdhAEKCHJldnNoYXJlEjxnbm8ubGFuZC9yL2cxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMvcmV2c2hhcmUaYwoLZ25vbW9kLnRvbWwSVG1vZHVsZSA9ICJnbm8ubGFuZC9yL2cxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMvcmV2c2hhcmUiCmdubyA9ICIwLjkiChqsgwEKDHJldnNoYXJlLmdubxKagwEvLyBQYWNrYWdlIHJldnNoYXJlIGlzIGEgdGVhbSByZXZlbnVlIHJlYWxtIHRoYXQgSVMgYSBzdWJzY3JpcHRpb24KLy8gcHJvdmlkZXIuIFRoZSBsaXZlIHN1YnNjcmlwdGlvbnMgcmVhbG0gc3VwcG9ydHMgcmVhbG0gcHJvdmlkZXJzIGJ1dAovLyB3YXJucywgaW4gaXRzIG93biBmcm96ZW4gaGVhZGVyLCB0aGF0IGEgcmVhbG0gcHJvdmlkZXIgIm11c3QgZXhwb3NlCi8vIGl0cyBvd24gY3Jvc3NpbmcgcGF0aCB0byBDbGFpbSwgb3Igd2hhdCBpdCBlYXJucyBpcyBzdHJhbmRlZC4iCi8vIHJldnNoYXJlIGlzIHRoYXQgY3Jvc3NpbmcgcGF0aCwgcGx1cyB0aGUgb25lIHRoaW5nIGEgdGVhbSBuZWVkcyBvbgovLyB0b3Agb2YgaXQ6IHB1bGxlZCByZXZlbnVlIGlzIHNwbGl0IGFtb25nIHdlaWdodGVkIG1lbWJlcnMgaW50bwovLyBwdWxsLWNsYWltYWJsZSBiYWxhbmNlcy4KLy8KLy8gVEhFIEVDT05PTUlDIENPTVBPU0lUSU9OLCBQUkVDSVNFTFk6Ci8vCi8vCWNvbXBvbmVudHMgICAgICAgICAgICA6IHN1YnNjcmlwdGlvbnMgKGxpdmUgcmVhbG0g4oCUIHRoZSByZXZlbnVlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZSB1cHN0cmVhbSBjdXN0b2RpYW4pLAovLwkgICAgICAgICAgICAgICAgICAgICAgICBmZWVsZWRnZXIgKG1lbWJlciBiYWxhbmNlIGFjY291bnRpbmcsCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIGZlZSBjYXAgMCksIGNvaW5pbyAocGF5b3V0cywgaGVsZC1iYWxhbmNlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRzLCByZXNlcnZlLXByb3RlY3RlZCBzd2VlcCkuCi8vCXZhbHVlIGJvdW5kYXJpZXMgICAgICA6IEIxIHN1YnNjcmliZXIgRU9BIC0+IHN1YnNjcmlwdGlvbnMgKHBsYW4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2UsIG9yaWdpbiBlbnZlbG9wZTsgZ292ZXJuZWQgYnkKLy8JICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9ucycgb3duIEggPT0gVSArIEYpLiBCMgovLwkgICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zIC0+IHJldnNoYXJlIChiYW5rZXIgc2VuZDoKLy8JICAgICAgICAgICAgICAgICAgICAgICAgQ2xhaW1BbGwgcGF5cyB0aGUgY2FsbGVyLCBhbmQgdGhlIGNhbGxlcgovLwkgICAgICAgICAgICAgICAgICAgICAgICBpcyB0aGlzIHJlYWxtKS4gQjMgcmV2c2hhcmUgLT4gbWVtYmVyIEVPQQovLwkgICAgICAgICAgICAgICAgICAgICAgICAoY29pbmlvLlBheW91dCBvbiBDbGFpbS9DbGFpbUFsbCkuCi8vCXdobyBvd25zIHdoaWNoIHN0YXRlICA6IHN1YnNjcmlwdGlvbnMgb3ducyBwbGFucywgc3VicyBhbmQgdGhlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyJ3MgY2xhaW1hYmxlIGJhbGFuY2UgKHJldnNoYXJlJ3MKLy8JICAgICAgICAgICAgICAgICAgICAgICAgUkVDRUlWQUJMRSk7IHJldnNoYXJlIG93bnMgdGhlIG1lbWJlcgovLwkgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSwgd2VpZ2h0cywgYW5kIHRoZSBtZW1iZXIgYmFsYW5jZXMgaW4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgaXRzIG93biBsZWRnZXIuIE5vIHN0YXRlIGlzIHNoYXJlZDsgdGhlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgY291cGxpbmcgaXMgdGhlIGNyb3NzaW5nIGNhbGxzIGFuZAovLwkgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29pbnMgdGhhdCBtb3ZlIG92ZXIgQjIuCi8vCXdobyBjb250cm9scyBmdW5kcyAgICA6IHVwc3RyZWFtLCBvbmx5IGEgY2xhaW0gYnkgdGhpcyByZWFsbSBjYW4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgbW92ZSBpdHMgcmVjZWl2YWJsZSAocHJvdmlkZXIta2V5ZWQKLy8JICAgICAgICAgICAgICAgICAgICAgICAgbGVkZ2VyKS4gSGVyZSwgbWVtYmVyIGJhbGFuY2VzIG1vdmUgb25seQovLwkgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGVpciBvd25lciAocHVsbCBjbGFpbXMpOyB0aGUgYWRtaW4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgY2FuIE5FVkVSIHRvdWNoIGVhcm5lZCBiYWxhbmNlcyDigJQgc3dlZXAKLy8JICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZXMgdGhlbSwgd2VpZ2h0IGNoYW5nZXMgYWZmZWN0IG9ubHkKLy8JICAgICAgICAgICAgICAgICAgICAgICAgRlVUVVJFIGRpc3RyaWJ1dGlvbnMuCi8vCWlkZW50aXR5IHByb3BhZ2F0aW9uICA6IGRvd25zdHJlYW0gc2VlcyBjdXIuUHJldmlvdXMoKSA9IFRISVMKLy8JICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0gb24gZXZlcnkgY3Jvc3NpbmcgY2FsbCwgc28gdGhlIHBsYW4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIgYW5kIHRoZSBjbGFpbSBiZW5lZmljaWFyeSBhcmUgdGhlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtIGFkZHJlc3MgYnkgY29uc3RydWN0aW9uIOKAlCBubyBhZG1pbgovLwkgICAgICAgICAgICAgICAgICAgICAgICBvciBtZW1iZXIgaWRlbnRpdHkgZXZlciByZWFjaGVzIHRoZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBkb3duc3RyZWFtIHJlYWxtLgovLwljb25zZXJ2YXRpb24gICAgICAgICAgOiBIZWxkID09IFVzZXJzVG90YWwgKyBTIChzdXJwbHVzIGFib3ZlIHRoZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBMaWFiaWxpdGllcygpIHJlc2VydmUsIHJlY292ZXJhYmxlIG9ubHkgYnkKLy8JICAgICAgICAgICAgICAgICAgICAgICAgU3dlZXBEZW5vbSkuIERpc3RyaWJ1dGlvbiBpcyBleGFjdDogc2hhcmVzCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBmbG9vcihhbW91bnQqdy9XKSB2aWEgdGhlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LWZyZWUgc3BsaXQgKEEvVykqdyArICgoQSVXKSp3KS9XLAovLwkgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhlIHJlbWFpbmRlciBnb2VzIHRvIHRoZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBoaWdoZXN0LXdlaWdodCBtZW1iZXIgKHRpZXM6IGxvd2VzdAovLwkgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKSDigJQgZmVlX3NwbGl0J3MgZGV0ZXJtaW5pc3RpYyBkdXN0Ci8vCSAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeSwgc28gbm8gcmVzaWR1YWwgcG9vbCBleGlzdHMuCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLWJvdW5kYXJ5OiBsaWZldGltZSBQdWxsZWQgZXF1YWxzIHRoZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBzdW0gb2YgYWxsIGRpc3RyaWJ1dGlvbnMsIGFuZCB0aGUKLy8JICAgICAgICAgICAgICAgICAgICAgICAgZG93bnN0cmVhbSByZWNlaXZhYmxlIGlzIE5PVCBwYXJ0IG9mIEhlbGQuCi8vCW9yZGVyaW5nICAgICAgICAgICAgICA6IFB1bGwgcmVmdXNlcyBCRUZPUkUgdGhlIGRvd25zdHJlYW0gY2FsbAovLwkgICAgICAgICAgICAgICAgICAgICAgICAobm8gbWVtYmVycyBjb25maWd1cmVkID0gcmVmdXNlKSwgY2xhaW1zCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIGRvd25zdHJlYW0sIE1FQVNVUkVTIHRoZSBhcnJpdmFsIGFzIGEKLy8JICAgICAgICAgICAgICAgICAgICAgICAgaGVsZC1iYWxhbmNlIGRlbHRhLCB0aGVuIGRpc3RyaWJ1dGVzCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0bHkgd2hhdCBhcnJpdmVkLiBTdGF0ZS1hZnRlci1jYWxsOgovLwkgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb25seSBsb2NhbCBtdXRhdGlvbnMgaGFwcGVuIGFmdGVyIHRoZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeSwgb24gbWVhc3VyZWQgY29pbnMuCi8vCWRvd25zdHJlYW0gYWJvcnQgICAgICA6ICJub3RoaW5nIHRvIGNsYWltIiAob3IgYW55IGRvd25zdHJlYW0KLy8JICAgICAgICAgICAgICAgICAgICAgICAgcGFuaWMpIGFib3J0cyB0aGUgd2hvbGUgUHVsbCDigJQgbm8gbG9jYWwKLy8JICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgZXhpc3RzIHlldCB0byBjb3JydXB0LCBieSBvcmRlcmluZwovLwkgICAgICAgICAgICAgICAgICAgICAgICBBTkQgYnkgVk0gYXRvbWljaXR5LiBUaGVyZSBpcyBubyByZWNvdmVyCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIGFueXdoZXJlIGluIHRoaXMgcmVhbG0sIGFuZCBub25lIG1heSBiZQovLwkgICAgICAgICAgICAgICAgICAgICAgICBhZGRlZC4KLy8JcmVwbGF5ICAgICAgICAgICAgICAgIDogYSBzZWNvbmQgUHVsbCBmaW5kcyBhIHplcm8gZG93bnN0cmVhbQovLwkgICAgICAgICAgICAgICAgICAgICAgICBiYWxhbmNlIGFuZCBhYm9ydHMgdGhlcmUuIERpc3RyaWJ1dGlvbgovLwkgICAgICAgICAgICAgICAgICAgICAgICBjcmVkaXRzIGFyZSBkcml2ZW4gYnkgdGhlIG1lYXN1cmVkIGRlbHRhLAovLwkgICAgICAgICAgICAgICAgICAgICAgICBzbyBhIHJlcGxheWVkIFB1bGwgY2Fubm90IGRvdWJsZS1jb3VudAovLwkgICAgICAgICAgICAgICAgICAgICAgICBldmVuIGluIHByaW5jaXBsZS4KLy8JdHJ1c3QgICAgICAgICAgICAgICAgIDogcmV2c2hhcmUgZG9lcyBub3QgdHJ1c3QgdGhlIGRvd25zdHJlYW0KLy8JICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHkgYmV5b25kICJpdCBkaWQgbm90IGFib3J0IiDigJQgaXQKLy8JICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0ZXMgdGhlIG1lYXN1cmVkIGJhbGFuY2UgZGVsdGEsCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhIHJlcG9ydGVkIGFtb3VudC4gRG93bnN0cmVhbQovLwkgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZXMgbm90aGluZyBhYm91dCB0aGlzIGNhbGxlcjsgdGhlCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyIGxlZGdlciBpcyBrZXllZCBieSBhZGRyZXNzLgovLwl0ZXJtaW5hbCBzdGF0ZXMgICAgICAgOiBwbGFucyByZXRpcmUgZG93bnN0cmVhbSAocHJvdmlkZXItb25seSwKLy8JICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3NlZCBoZXJlIGFkbWluLWdhdGVkKTsgbWVtYmVycyBjYW4gYmUKLy8JICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCAoZWFybmVkIGJhbGFuY2VzIHN1cnZpdmUgcmVtb3ZhbAovLwkgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RheSBjbGFpbWFibGUpOyB0aGUgcmVhbG0gaXRzZWxmIGhhcwovLwkgICAgICAgICAgICAgICAgICAgICAgICBubyB0ZXJtaW5hbCBzdGF0ZSDigJQgYSB0ZWFtIHRoYXQgd2Fsa3MgYXdheQovLwkgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZXMgb25seSBwdWxsLWNsYWltYWJsZSBiYWxhbmNlcy4KLy8JYWR2ZXJzYXJpYWwgY2FsbGVycyAgIDogUHVsbCBpcyBwZXJtaXNzaW9ubGVzcyDigJQgaXQgY2FuIG9ubHkgbW92ZQovLwkgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjZWl2YWJsZSBpbnRvIG1lbWJlciBiYWxhbmNlcyBhdCB0aGUKLy8JICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgd2VpZ2h0cywgc28gYSBzdHJhbmdlcidzIFB1bGwgaXMgYQovLwkgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIGZhdm9yLiBQbGFuIGNyZWF0aW9uL3JldGlyZW1lbnQgaXMKLy8JICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW4tZ2F0ZWQgKHRoZSBkb3duc3RyZWFtIHBlci1wcm92aWRlcgovLwkgICAgICAgICAgICAgICAgICAgICAgICBwbGFuIHF1b3RhIGlzIGEgZ3JpZWZhYmxlIHJlc291cmNlKS4KLy8JICAgICAgICAgICAgICAgICAgICAgICAgTWVtYmVycyB0cnVzdCB0aGUgYWRtaW4gZm9yIEZVVFVSRSB3ZWlnaHRzCi8vCSAgICAgICAgICAgICAgICAgICAgICAgIG9ubHksIG5ldmVyIGZvciBlYXJuZWQgYmFsYW5jZXMuIEFsbAovLwkgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cyByZWZ1c2UgY29pbi1jYXJyeWluZwovLwkgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbnMgKHRoZSBkb3duc3RyZWFtIGFzc2VydE5vU2VuZAovLwkgICAgICAgICAgICAgICAgICAgICAgICByZWFkcyB0aGUgb3JpZ2luIGVudmVsb3BlOyBvdXJzIG1hdGNoZXMpLgovLwovLyBPbmUgdGVhbSBwZXIgZGVwbG95OiBzdWJzY3JpcHRpb25zIGtlZXBzIE9ORSBjbGFpbWFibGUgYmFsYW5jZSBwZXIKLy8gcHJvdmlkZXIgYWRkcmVzcywgc28gYSBtdWx0aS10ZWFtIHJvdXRlciBiZWhpbmQgb25lIHJlYWxtIGFkZHJlc3MKLy8gY291bGQgbm90IGF0dHJpYnV0ZSByZXZlbnVlIGF0IHRoZSBib3VuZGFyeS4gVGhpcyBpcyBhIG1lYXN1cmVkCi8vIGNvbnN0cmFpbnQgb2YgdGhlIGRvd25zdHJlYW0gQVBJLCBub3QgYSBjaG9pY2UuCnBhY2thZ2UgcmV2c2hhcmUKCmltcG9ydCAoCgkiY2hhaW4iCgkiY2hhaW4vcnVudGltZS91bnNhZmUiCgkic3RyY29udiIKCgkiZ25vLmxhbmQvcC9nMXV0NnVzcHVoNzNlMDJ5YXV4cG15dDhnM3d3ZGRhcTh1dGFndm0zL2NvaW5pbyIKCSJnbm8ubGFuZC9wL2cxdXQ2dXNwdWg3M2UwMnlhdXhwbXl0OGczd3dkZGFxOHV0YWd2bTMvZmVlbGVkZ2VyIgoKCXN1YnMgImduby5sYW5kL3IvZzF1dDZ1c3B1aDczZTAyeWF1eHBteXQ4ZzN3d2RkYXE4dXRhZ3ZtMy9zdWJzY3JpcHRpb25zIgopCgovLyBEZW5vbSBpcyB0aGUgb25seSBhc3NldCB0aGlzIHJlYWxtIGFjY291bnRzLgpjb25zdCBEZW5vbSA9ICJ1Z25vdCIKCi8vIE1heE1lbWJlcnMgYm91bmRzIHRoZSBkaXN0cmlidXRpb24gbG9vcDsgTWF4V2VpZ2h0IGJvdW5kcyBhIHNpbmdsZQovLyB3ZWlnaHQuIFRvZ2V0aGVyIHRoZXkgY2FwIHRvdGFsV2VpZ2h0IGF0IDIwMCwwMDAsIHdoaWNoIG1ha2VzIHRoZQovLyByZW1haW5kZXIgc3RlcCBvZiB0aGUgc3BsaXQgKChBJVcpKncpIHByb3ZhYmx5IG92ZXJmbG93LWZyZWUgZm9yCi8vIGFueSBpbnQ2NCBjb2luIGFtb3VudCDigJQgdGhlIGNvbnNlcnZhdGlvbiBtYXRoIGNhbm5vdCB0cmFwLgpjb25zdCAoCglNYXhNZW1iZXJzID0gMjAKCU1heFdlaWdodCAgPSBpbnQ2NCgxMDAwMCkKKQoKdHlwZSBtZW1iZXIgc3RydWN0IHsKCWFkZHIgICBhZGRyZXNzCgl3ZWlnaHQgaW50NjQKfQoKdmFyICgKCWFkbWluICAgICAgICBhZGRyZXNzIC8vIG1hbmFnZXMgbWVtYmVycywgcGxhbnM7IHN0YWdlcyBhIHN1Y2Nlc3NvcgoJcGVuZGluZ0FkbWluIGFkZHJlc3MgLy8gc3RhZ2VkIGJ5IFRyYW5zZmVyQWRtaW4sIGNvbXBsZXRlcyB2aWEgQWNjZXB0QWRtaW4KCXN3ZWVwZXIgICAgICBhZGRyZXNzIC8vIG1heSBzd2VlcCBvdXQtb2YtYmFuZCBzdXJwbHVzCgoJc2VsZiBhZGRyZXNzIC8vIHRoaXMgcmVhbG0ncyBhZGRyZXNzLCBjYXB0dXJlZCBhdCBkZXBsb3kKCgltZW1iZXJzICAgICBbXW1lbWJlciAvLyBpbnNlcnRpb24tb3JkZXJlZDsgYm91bmRlZCBieSBNYXhNZW1iZXJzCgl0b3RhbFdlaWdodCBpbnQ2NAoKCWxlZGdlciA9IGZlZWxlZGdlci5NdXN0TmV3KDApCgoJcGxhbklEcyBbXWludDY0IC8vIHBsYW5zIGNyZWF0ZWQgdGhyb3VnaCB0aGlzIHJlYWxtIChvcHMvUmVuZGVyKQoJcHVsbGVkICBpbnQ2NCAgIC8vIGxpZmV0aW1lIHJldmVudWUgcHVsbGVkIG92ZXIgYm91bmRhcnkgQjIKKQoKZnVuYyBpbml0KCkgewoJYWRtaW4gPSB1bnNhZmUuT3JpZ2luQ2FsbGVyKCkKCXN3ZWVwZXIgPSBhZG1pbgoJc2VsZiA9IHVuc2FmZS5DdXJyZW50UmVhbG0oKS5BZGRyZXNzKCkKfQoKLy8gLS0tIG1lbWJlcnNoaXAgKGFkbWluLWdhdGVkOyBmdXR1cmUgZGlzdHJpYnV0aW9ucyBvbmx5KSAtLS0KCi8vIEFkZE1lbWJlciBhZGRzIGEgd2VpZ2h0ZWQgbWVtYmVyLiBXZWlnaHQgY2hhbmdlcyBuZXZlciB0b3VjaCBlYXJuZWQKLy8gYmFsYW5jZXM7IHRoZXkgc2hhcGUgZnV0dXJlIHB1bGxzIG9ubHkuCmZ1bmMgQWRkTWVtYmVyKGN1ciByZWFsbSwgYSBhZGRyZXNzLCB3ZWlnaHQgaW50NjQpIHsKCWFzc2VydE5vU2VuZCgpCglhc3NlcnRBZG1pbihjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkpCgl2YXIgemVybyBhZGRyZXNzCglpZiBhID09IHplcm8gewoJCXBhbmljKCJtZW1iZXIgbXVzdCBub3QgYmUgdGhlIHplcm8gYWRkcmVzcyIpCgl9CglpZiB3ZWlnaHQgPCAxIHx8IHdlaWdodCA+IE1heFdlaWdodCB7CgkJcGFuaWMoIndlaWdodCBtdXN0IGJlIGluIFsxLCAiICsgaXRvYShNYXhXZWlnaHQpICsgIl0iKQoJfQoJaWYgbGVuKG1lbWJlcnMpID49IE1heE1lbWJlcnMgewoJCXBhbmljKCJtZW1iZXIgdGFibGUgaXMgZnVsbCAoIiArIGl0b2EoaW50NjQoTWF4TWVtYmVycykpICsgIikiKQoJfQoJaWYgaW5kZXhPZihhKSA+PSAwIHsKCQlwYW5pYygiYWxyZWFkeSBhIG1lbWJlciIpCgl9CgltZW1iZXJzID0gYXBwZW5kKG1lbWJlcnMsIG1lbWJlcnthZGRyOiBhLCB3ZWlnaHQ6IHdlaWdodH0pCgl0b3RhbFdlaWdodCArPSB3ZWlnaHQKCWNoYWluLkVtaXQoIk1lbWJlckFkZGVkIiwgImFkZHIiLCBhLlN0cmluZygpLCAid2VpZ2h0IiwgaXRvYSh3ZWlnaHQpKQp9CgovLyBTZXRXZWlnaHQgY2hhbmdlcyBhIG1lbWJlcidzIHdlaWdodCBmb3IgZnV0dXJlIGRpc3RyaWJ1dGlvbnMuCmZ1bmMgU2V0V2VpZ2h0KGN1ciByZWFsbSwgYSBhZGRyZXNzLCB3ZWlnaHQgaW50NjQpIHsKCWFzc2VydE5vU2VuZCgpCglhc3NlcnRBZG1pbihjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkpCglpZiB3ZWlnaHQgPCAxIHx8IHdlaWdodCA+IE1heFdlaWdodCB7CgkJcGFuaWMoIndlaWdodCBtdXN0IGJlIGluIFsxLCAiICsgaXRvYShNYXhXZWlnaHQpICsgIl0iKQoJfQoJaSA6PSBpbmRleE9mKGEpCglpZiBpIDwgMCB7CgkJcGFuaWMoIm5vdCBhIG1lbWJlciIpCgl9CglvbGQgOj0gbWVtYmVyc1tpXS53ZWlnaHQKCXRvdGFsV2VpZ2h0ICs9IHdlaWdodCAtIG9sZAoJbWVtYmVyc1tpXS53ZWlnaHQgPSB3ZWlnaHQKCWNoYWluLkVtaXQoIldlaWdodFNldCIsICJhZGRyIiwgYS5TdHJpbmcoKSwgIm9sZCIsIGl0b2Eob2xkKSwgIm5ldyIsIGl0b2Eod2VpZ2h0KSkKfQoKLy8gUmVtb3ZlTWVtYmVyIHJlbW92ZXMgYSBtZW1iZXIgZnJvbSBmdXR1cmUgZGlzdHJpYnV0aW9ucy4gVGhlCi8vIG1lbWJlcidzIGVhcm5lZCBiYWxhbmNlIGlzIHVudG91Y2hlZCBhbmQgc3RheXMgY2xhaW1hYmxlIGZvcmV2ZXIuCmZ1bmMgUmVtb3ZlTWVtYmVyKGN1ciByZWFsbSwgYSBhZGRyZXNzKSB7Cglhc3NlcnROb1NlbmQoKQoJYXNzZXJ0QWRtaW4oY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpKQoJaSA6PSBpbmRleE9mKGEpCglpZiBpIDwgMCB7CgkJcGFuaWMoIm5vdCBhIG1lbWJlciIpCgl9Cgl0b3RhbFdlaWdodCAtPSBtZW1iZXJzW2ldLndlaWdodAoJbWVtYmVycyA9IGFwcGVuZChtZW1iZXJzWzppXSwgbWVtYmVyc1tpKzE6XS4uLikKCWNoYWluLkVtaXQoIk1lbWJlclJlbW92ZWQiLCAiYWRkciIsIGEuU3RyaW5nKCkpCn0KCi8vIC0tLSB0aGUgcHJvdmlkZXIgc3VyZmFjZTogY3Jvc3NpbmcgcGF0aHMgaW50byBzdWJzY3JpcHRpb25zIC0tLQoKLy8gQ3JlYXRlUGxhbiBjcmVhdGVzIGEgc3Vic2NyaXB0aW9uIHBsYW4gVEhST1VHSCB0aGlzIHJlYWxtLCBtYWtpbmcKLy8gdGhlIHJlYWxtIHRoZSBwbGFuJ3MgcHJvdmlkZXIgZG93bnN0cmVhbS4gQWRtaW4gb25seTogdGhlCi8vIHBlci1wcm92aWRlciBwbGFuIHF1b3RhIGRvd25zdHJlYW0gaXMgYSBncmllZmFibGUgcmVzb3VyY2UuCmZ1bmMgQ3JlYXRlUGxhbihjdXIgcmVhbG0sIHRpdGxlLCBkZXNjcmlwdGlvbiBzdHJpbmcsIHByaWNlLCBwZXJpb2RCbG9ja3MsIG1heEZlZUJwcyBpbnQ2NCkgaW50NjQgewoJYXNzZXJ0Tm9TZW5kKCkKCWFzc2VydEFkbWluKGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKSkKCWlkIDo9IHN1YnMuQ3JlYXRlUGxhbihjcm9zcyhjdXIpLCB0aXRsZSwgZGVzY3JpcHRpb24sIHByaWNlLCBwZXJpb2RCbG9ja3MsIG1heEZlZUJwcykKCXBsYW5JRHMgPSBhcHBlbmQocGxhbklEcywgaWQpCgljaGFpbi5FbWl0KCJQbGFuQ3JlYXRlZCIsICJwbGFuSWQiLCBpdG9hKGlkKSwgInByaWNlIiwgaXRvYShwcmljZSksCgkJInBlcmlvZEJsb2NrcyIsIGl0b2EocGVyaW9kQmxvY2tzKSkKCXJldHVybiBpZAp9CgovLyBSZXRpcmVQbGFuIHJldGlyZXMgb25lIG9mIHRoaXMgcmVhbG0ncyBwbGFucyBkb3duc3RyZWFtLiBBZG1pbiBvbmx5LgpmdW5jIFJldGlyZVBsYW4oY3VyIHJlYWxtLCBwbGFuSUQgaW50NjQpIHsKCWFzc2VydE5vU2VuZCgpCglhc3NlcnRBZG1pbihjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkpCglzdWJzLlJldGlyZVBsYW4oY3Jvc3MoY3VyKSwgcGxhbklEKQoJY2hhaW4uRW1pdCgiUGxhblJldGlyZWQiLCAicGxhbklkIiwgaXRvYShwbGFuSUQpKQp9CgovLyBQdWxsIGNsYWltcyB0aGlzIHJlYWxtJ3MgZW50aXJlIGFjY3J1ZWQgcHJvdmlkZXIgYmFsYW5jZSBmcm9tIHRoZQovLyBzdWJzY3JpcHRpb25zIHJlYWxtIGFuZCBkaXN0cmlidXRlcyBpdCB0byB0aGUgbWVtYmVycyBieSB3ZWlnaHQuCi8vIFBlcm1pc3Npb25sZXNzOiBwdWxsaW5nIGNhbiBvbmx5IG1vdmUgdGhlIHJlY2VpdmFibGUgaW50byBtZW1iZXIKLy8gYmFsYW5jZXMgYXQgdGhlIGZpeGVkIHdlaWdodHMsIHNvIGFueW9uZSBtYXkgY3JhbmsgaXQuIFJlZnVzZXMKLy8gQkVGT1JFIHRoZSBkb3duc3RyZWFtIGNhbGwgd2hlbiBubyBtZW1iZXIgY291bGQgcmVjZWl2ZSB0aGUgZnVuZHMuCmZ1bmMgUHVsbChjdXIgcmVhbG0pIGludDY0IHsKCWFzc2VydE5vU2VuZCgpCglpZiB0b3RhbFdlaWdodCA9PSAwIHsKCQlwYW5pYygibm8gbWVtYmVycyBjb25maWd1cmVkIHRvIHJlY2VpdmUgcmV2ZW51ZSIpCgl9CgoJYmVmb3JlIDo9IGNvaW5pby5IZWxkQXQoc2VsZiwgRGVub20pCglzdWJzLkNsYWltQWxsKGNyb3NzKGN1cikpCglhbW91bnQgOj0gY29pbmlvLkhlbGRBdChzZWxmLCBEZW5vbSkgLSBiZWZvcmUKCWlmIGFtb3VudCA8PSAwIHsKCQlwYW5pYygiZG93bnN0cmVhbSBjbGFpbSBkZWxpdmVyZWQgbm90aGluZyIpCgl9CgoJZGlzdHJpYnV0ZShhbW91bnQpCglwdWxsZWQgKz0gYW1vdW50CgljaGFpbi5FbWl0KCJQdWxsZWQiLCAiYW1vdW50IiwgaXRvYShhbW91bnQpLCAicHVsbGVkVG90YWwiLCBpdG9hKHB1bGxlZCkpCglyZXR1cm4gYW1vdW50Cn0KCi8vIGRpc3RyaWJ1dGUgc3BsaXRzIGFtb3VudCBieSBtZW1iZXIgd2VpZ2h0LiBTaGFyZXMgYXJlIGNvbXB1dGVkIGFzCi8vIChBL1cpKncgKyAoKEElVykqdykvVyDigJQgZmxvb3IoQSp3L1cpIHdpdGhvdXQgYW55IG11bHRpcGxpY2F0aW9uCi8vIHRoYXQgY2FuIG92ZXJmbG93LiBUaGUgcmVtYWluZGVyICg8IG51bWJlciBvZiBtZW1iZXJzKSBnb2VzIHRvIHRoZQovLyBoaWdoZXN0LXdlaWdodCBtZW1iZXIsIGxvd2VzdCBhZGRyZXNzIG9uIHRpZXM6IGRldGVybWluaXN0aWMsIGFuZAovLyBpdCBsZWF2ZXMgdGhlIHJlYWxtIHdpdGggbm8gdW5kaXN0cmlidXRlZCBwb29sIGF0IHJlc3QuCmZ1bmMgZGlzdHJpYnV0ZShhbW91bnQgaW50NjQpIHsKCXEgOj0gYW1vdW50IC8gdG90YWxXZWlnaHQKCXIgOj0gYW1vdW50ICUgdG90YWxXZWlnaHQKCglkaXN0cmlidXRlZCA6PSBpbnQ2NCgwKQoJZm9yIF8sIG0gOj0gcmFuZ2UgbWVtYmVycyB7CgkJc2hhcmUgOj0gcSptLndlaWdodCArIChyKm0ud2VpZ2h0KS90b3RhbFdlaWdodAoJCWlmIHNoYXJlID4gMCB7CgkJCWxlZGdlci5NdXN0RGVwb3NpdChtLmFkZHIuU3RyaW5nKCksIHNoYXJlLCAwKQoJCQlkaXN0cmlidXRlZCArPSBzaGFyZQoJCX0KCX0KCWlmIGR1c3QgOj0gYW1vdW50IC0gZGlzdHJpYnV0ZWQ7IGR1c3QgPiAwIHsKCQlsZWRnZXIuTXVzdERlcG9zaXQoZHVzdFJlY2lwaWVudCgpLlN0cmluZygpLCBkdXN0LCAwKQoJfQp9CgpmdW5jIGR1c3RSZWNpcGllbnQoKSBhZGRyZXNzIHsKCWJlc3QgOj0gbWVtYmVyc1swXQoJZm9yIF8sIG0gOj0gcmFuZ2UgbWVtYmVyc1sxOl0gewoJCWlmIG0ud2VpZ2h0ID4gYmVzdC53ZWlnaHQgfHwKCQkJKG0ud2VpZ2h0ID09IGJlc3Qud2VpZ2h0ICYmIG0uYWRkci5TdHJpbmcoKSA8IGJlc3QuYWRkci5TdHJpbmcoKSkgewoJCQliZXN0ID0gbQoJCX0KCX0KCXJldHVybiBiZXN0LmFkZHIKfQoKLy8gLS0tIG1lbWJlciBjbGFpbXMgLS0tCgovLyBDbGFpbSBzZW5kcyBhbW91bnQgdWdub3Qgb2YgdGhlIGNhbGxlcidzIGVhcm5lZCBiYWxhbmNlIHRvIHRoZQovLyBjYWxsZXIuCmZ1bmMgQ2xhaW0oY3VyIHJlYWxtLCBhbW91bnQgaW50NjQpIHsKCWFzc2VydE5vU2VuZCgpCgljYWxsZXIgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpCglpZiBlcnIgOj0gbGVkZ2VyLldpdGhkcmF3KGNhbGxlci5TdHJpbmcoKSwgYW1vdW50KTsgZXJyICE9IG5pbCB7CgkJcGFuaWMoZXJyKQoJfQoJY29pbmlvLlBheW91dCgwLCBjdXIsIGNhbGxlciwgRGVub20sIGFtb3VudCkKCWNoYWluLkVtaXQoIkNsYWltIiwgInRvIiwgY2FsbGVyLlN0cmluZygpLCAiYW1vdW50IiwgaXRvYShhbW91bnQpKQp9CgovLyBDbGFpbUFsbCBzZW5kcyB0aGUgY2FsbGVyJ3MgZW50aXJlIGVhcm5lZCBiYWxhbmNlIHRvIHRoZSBjYWxsZXIuCmZ1bmMgQ2xhaW1BbGwoY3VyIHJlYWxtKSB7Cglhc3NlcnROb1NlbmQoKQoJY2FsbGVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJYW1vdW50LCBlcnIgOj0gbGVkZ2VyLldpdGhkcmF3QWxsKGNhbGxlci5TdHJpbmcoKSkKCWlmIGVyciAhPSBuaWwgewoJCXBhbmljKGVycikKCX0KCWlmIGFtb3VudCA9PSAwIHsKCQlwYW5pYygibm90aGluZyB0byBjbGFpbSIpCgl9Cgljb2luaW8uUGF5b3V0KDAsIGN1ciwgY2FsbGVyLCBEZW5vbSwgYW1vdW50KQoJY2hhaW4uRW1pdCgiQ2xhaW0iLCAidG8iLCBjYWxsZXIuU3RyaW5nKCksICJhbW91bnQiLCBpdG9hKGFtb3VudCkpCn0KCi8vIC0tLSBhZG1pbmlzdHJhdGlvbiAtLS0KCi8vIFN3ZWVwRGVub20gcmVjb3ZlcnMgb3V0LW9mLWJhbmQgY29pbnMgdG8gdGhlIHN3ZWVwZXIuIEZvciB0aGUKLy8gYWNjb3VudGluZyBkZW5vbSB0aGUgcmVzZXJ2ZSBpcyB0aGUgZnVsbCBsZWRnZXIgbGlhYmlsaXR5IOKAlCBtZW1iZXIKLy8gYmFsYW5jZXMgYXJlIHN0cnVjdHVyYWxseSB1bnN3ZWVwYWJsZS4gU3dlZXBlciBvbmx5LgpmdW5jIFN3ZWVwRGVub20oY3VyIHJlYWxtLCBkZW5vbSBzdHJpbmcpIHsKCWFzc2VydE5vU2VuZCgpCglpZiBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkgIT0gc3dlZXBlciB7CgkJcGFuaWMoInN3ZWVwZXIgb25seSIpCgl9CglyZXNlcnZlIDo9IGludDY0KDApCglpZiBkZW5vbSA9PSBEZW5vbSB7CgkJcmVzZXJ2ZSA9IGxlZGdlci5MaWFiaWxpdGllcygpCgl9Cglzd2VwdCA6PSBjb2luaW8uU3dlZXAoMCwgY3VyLCBzd2VlcGVyLCBkZW5vbSwgcmVzZXJ2ZSkKCWNoYWluLkVtaXQoIlN1cnBsdXNTd2VwdCIsICJ0byIsIHN3ZWVwZXIuU3RyaW5nKCksICJjb2lucyIsIGl0b2Eoc3dlcHQpK2Rlbm9tKQp9CgovLyBUcmFuc2ZlckFkbWluIHN0YWdlcyBhIHR3by1zdGVwIGFkbWluIGhhbmRvdmVyLgpmdW5jIFRyYW5zZmVyQWRtaW4oY3VyIHJlYWxtLCBzdWNjZXNzb3IgYWRkcmVzcykgewoJYXNzZXJ0Tm9TZW5kKCkKCWFzc2VydEFkbWluKGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKSkKCXZhciB6ZXJvIGFkZHJlc3MKCWlmIHN1Y2Nlc3NvciA9PSB6ZXJvIHsKCQlwYW5pYygic3VjY2Vzc29yIG11c3Qgbm90IGJlIHRoZSB6ZXJvIGFkZHJlc3MiKQoJfQoJcGVuZGluZ0FkbWluID0gc3VjY2Vzc29yCgljaGFpbi5FbWl0KCJBZG1pblRyYW5zZmVyU3RhZ2VkIiwgImZyb20iLCBhZG1pbi5TdHJpbmcoKSwgInRvIiwgc3VjY2Vzc29yLlN0cmluZygpKQp9CgovLyBBY2NlcHRBZG1pbiBjb21wbGV0ZXMgdGhlIGhhbmRvdmVyOyBvbmx5IHRoZSBzdGFnZWQgc3VjY2Vzc29yIG1heS4KLy8gVGhlIHN3ZWVwZXIgcm9sZSBtb3ZlcyB3aXRoIHRoZSBhZG1pbi4KZnVuYyBBY2NlcHRBZG1pbihjdXIgcmVhbG0pIHsKCWFzc2VydE5vU2VuZCgpCgljYWxsZXIgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpCglpZiBjYWxsZXIgIT0gcGVuZGluZ0FkbWluIHsKCQlwYW5pYygib25seSB0aGUgc3RhZ2VkIHN1Y2Nlc3NvciBtYXkgYWNjZXB0IikKCX0KCW9sZCA6PSBhZG1pbgoJYWRtaW4gPSBjYWxsZXIKCXN3ZWVwZXIgPSBjYWxsZXIKCXZhciB6ZXJvIGFkZHJlc3MKCXBlbmRpbmdBZG1pbiA9IHplcm8KCWNoYWluLkVtaXQoIkFkbWluVHJhbnNmZXJyZWQiLCAiZnJvbSIsIG9sZC5TdHJpbmcoKSwgInRvIiwgYWRtaW4uU3RyaW5nKCkpCn0KCi8vIC0tLSB2aWV3cyAtLS0KCmZ1bmMgQWRtaW4oKSBhZGRyZXNzICAgICAgICB7IHJldHVybiBhZG1pbiB9CmZ1bmMgUGVuZGluZ0FkbWluKCkgYWRkcmVzcyB7IHJldHVybiBwZW5kaW5nQWRtaW4gfQpmdW5jIE1lbWJlckNvdW50KCkgaW50NjQgICAgeyByZXR1cm4gaW50NjQobGVuKG1lbWJlcnMpKSB9CmZ1bmMgVG90YWxXZWlnaHQoKSBpbnQ2NCAgICB7IHJldHVybiB0b3RhbFdlaWdodCB9CmZ1bmMgTWVtYmVyV2VpZ2h0KGEgYWRkcmVzcykgaW50NjQgewoJaSA6PSBpbmRleE9mKGEpCglpZiBpIDwgMCB7CgkJcGFuaWMoIm5vdCBhIG1lbWJlciIpCgl9CglyZXR1cm4gbWVtYmVyc1tpXS53ZWlnaHQKfQpmdW5jIEJhbGFuY2VPZihhIGFkZHJlc3MpIGludDY0IHsgcmV0dXJuIGxlZGdlci5CYWxhbmNlT2YoYS5TdHJpbmcoKSkgfQpmdW5jIFVzZXJzVG90YWwoKSBpbnQ2NCAgICAgICAgIHsgcmV0dXJuIGxlZGdlci5Vc2Vyc1RvdGFsKCkgfQpmdW5jIFB1bGxlZCgpIGludDY0ICAgICAgICAgICAgIHsgcmV0dXJuIHB1bGxlZCB9CmZ1bmMgTnVtUGxhbnMoKSBpbnQ2NCAgICAgICAgICAgeyByZXR1cm4gaW50NjQobGVuKHBsYW5JRHMpKSB9CmZ1bmMgUGxhbklEKGkgaW50NjQpIGludDY0IHsKCWlmIGkgPCAwIHx8IGkgPj0gaW50NjQobGVuKHBsYW5JRHMpKSB7CgkJcGFuaWMoInBsYW4gaW5kZXggb3V0IG9mIHJhbmdlIikKCX0KCXJldHVybiBwbGFuSURzW2ldCn0KZnVuYyBBZGRyZXNzKCkgYWRkcmVzcyB7IHJldHVybiBzZWxmIH0KZnVuYyBIZWxkKCkgaW50NjQgICAgICB7IHJldHVybiBjb2luaW8uSGVsZEF0KHNlbGYsIERlbm9tKSB9CgovLyBSZWNlaXZhYmxlIHJlYWRzIHRoaXMgcmVhbG0ncyBhY2NydWVkLCBub3QteWV0LXB1bGxlZCBwcm92aWRlcgovLyBiYWxhbmNlIGluc2lkZSB0aGUgc3Vic2NyaXB0aW9ucyByZWFsbSDigJQgdGhlIG90aGVyIHNpZGUgb2YgdmFsdWUKLy8gYm91bmRhcnkgQjIuIEl0IGlzIGRlbGliZXJhdGVseSBOT1QgcGFydCBvZiBIZWxkIG9yIG9mIHRoZSBsb2NhbAovLyBjb25zZXJ2YXRpb24gZXF1YXRpb24uCmZ1bmMgUmVjZWl2YWJsZSgpIGludDY0IHsgcmV0dXJuIHN1YnMuQmFsYW5jZU9mKHNlbGYpIH0KCi8vIC0tLSByZW5kZXIgLS0tCgpmdW5jIFJlbmRlcihwYXRoIHN0cmluZykgc3RyaW5nIHsKCWlmIHBhdGggIT0gIiIgewoJCXJldHVybiAidW5rbm93biBwYWdlOyB0cnkgdGhlIHJlYWxtIHJvb3QiCgl9CglvdXQgOj0gIiMgcmV2c2hhcmVcblxuIgoJb3V0ICs9ICJBIHRlYW0gcmV2ZW51ZSByZWFsbTogaXQgaXMgdGhlIFBST1ZJREVSIG9mIGl0cyAiICsKCQkic3Vic2NyaXB0aW9uIHBsYW5zLCBwdWxscyBhY2NydWVkIHJldmVudWUgYWNyb3NzIHRoZSByZWFsbSAiICsKCQkiYm91bmRhcnksIGFuZCBzcGxpdHMgaXQgYW1vbmcgd2VpZ2h0ZWQgbWVtYmVycyBpbnRvICIgKwoJCSJwdWxsLWNsYWltYWJsZSBiYWxhbmNlcy5cblxuIgoJb3V0ICs9ICItIHJlY2VpdmFibGUgKGluIHN1YnNjcmlwdGlvbnMpOiAiICsgaXRvYShSZWNlaXZhYmxlKCkpICsgRGVub20gKyAiXG4iCglvdXQgKz0gIi0gaGVsZCBoZXJlOiAiICsgaXRvYShIZWxkKCkpICsgRGVub20gKyAiXG4iCglvdXQgKz0gIi0gZWFybmVkLCB1bmNsYWltZWQ6ICIgKyBpdG9hKGxlZGdlci5Vc2Vyc1RvdGFsKCkpICsgRGVub20gKyAiXG4iCglvdXQgKz0gIi0gbGlmZXRpbWUgcHVsbGVkOiAiICsgaXRvYShwdWxsZWQpICsgRGVub20gKyAiXG4iCglvdXQgKz0gIi0gcGxhbnMgY3JlYXRlZCBoZXJlOiAiICsgaXRvYShpbnQ2NChsZW4ocGxhbklEcykpKSArICJcblxuIgoJb3V0ICs9ICIjIyBtZW1iZXJzXG5cbiIKCWlmIGxlbihtZW1iZXJzKSA9PSAwIHsKCQlvdXQgKz0gIihub25lIGNvbmZpZ3VyZWQpXG4iCgkJcmV0dXJuIG91dAoJfQoJb3V0ICs9ICJ8IG1lbWJlciB8IHdlaWdodCB8IHVuY2xhaW1lZCB8XG58LS0tfC0tLXwtLS18XG4iCglmb3IgXywgbSA6PSByYW5nZSBtZW1iZXJzIHsKCQlvdXQgKz0gInwgIiArIG0uYWRkci5TdHJpbmcoKSArICIgfCAiICsgaXRvYShtLndlaWdodCkgKyAiIHwgIiArCgkJCWl0b2EobGVkZ2VyLkJhbGFuY2VPZihtLmFkZHIuU3RyaW5nKCkpKSArIERlbm9tICsgIiB8XG4iCgl9CglvdXQgKz0gIlxuKHRvdGFsIHdlaWdodCAiICsgaXRvYSh0b3RhbFdlaWdodCkgKyAiOyByb3VuZGluZyBkdXN0ICIgKwoJCSJnb2VzIHRvIHRoZSBoaWdoZXN0LXdlaWdodCBtZW1iZXIpXG4iCglyZXR1cm4gb3V0Cn0KCi8vIC0tLSBpbnRlcm5hbHMgLS0tCgpmdW5jIGluZGV4T2YoYSBhZGRyZXNzKSBpbnQgewoJZm9yIGksIG0gOj0gcmFuZ2UgbWVtYmVycyB7CgkJaWYgbS5hZGRyID09IGEgewoJCQlyZXR1cm4gaQoJCX0KCX0KCXJldHVybiAtMQp9CgpmdW5jIGFzc2VydE5vU2VuZCgpIHsKCWlmIGxlbih1bnNhZmUuT3JpZ2luU2VuZCgpKSAhPSAwIHsKCQlwYW5pYygidGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY2NlcHQgY29pbnMiKQoJfQp9CgpmdW5jIGFzc2VydEFkbWluKGNhbGxlciBhZGRyZXNzKSB7CglpZiBjYWxsZXIgIT0gYWRtaW4gewoJCXBhbmljKCJhZG1pbiBvbmx5IikKCX0KfQoKZnVuYyBpdG9hKG4gaW50NjQpIHN0cmluZyB7IHJldHVybiBzdHJjb252LkZvcm1hdEludChuLCAxMCkgfQoiDTEwMDAwMDAwdWdub3QSEgiS5/IvEgsxMDA0NDh1Z25vdBqoAQo6ChMvdG0uUHViS2V5U2VjcDI1NmsxEiMKIQIW9DF2ySV4zjQumeJvrSn3/nxG7XBDVv+rkxV/YrsOmBJATJpom29ZpkAbYGAeNFY5IKZ5SCUArY5J3qSUSr9susQ3zhsdc+SkKSHzGesLP95UAPO4wFz10HajQkIqMa4zkxooZzFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFsdXV4ZQ=="
  }
}