{ "name": "FalconVault", "structs": {}, "methods": [ { "name": "create", "args": [ { "type": "uint64", "name": "threshold" }, { "type": "uint64", "name": "num_signers" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "add_signer_init", "args": [ { "type": "uint64", "name": "index" }, { "type": "byte[]", "name": "public_key" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Initialize original signers. Only creator can call.", "events": [], "recommendations": {} }, { "name": "propose_transaction", "args": [ { "type": "uint8", "name": "prop_type" }, { "type": "address", "name": "recipient" }, { "type": "uint64", "name": "amount_or_id" }, { "type": "byte[]", "name": "payload" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "ProposalCreated", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint8", "name": "proposal_type" } ] } ], "recommendations": {} }, { "name": "submit_signature", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" }, { "type": "byte[]", "name": "signature" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "SignatureSubmitted", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" } ] } ], "recommendations": {} }, { "name": "execute_proposal", "args": [ { "type": "uint64", "name": "proposal_id" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "VaultExecuted", "args": [ { "type": "uint64", "name": "proposal_id" } ] } ], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 3, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "threshold": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dGhyZXNob2xk" }, "num_signers": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bnVtX3NpZ25lcnM=" }, "proposal_count": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cHJvcG9zYWxfY291bnQ=" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 399 ], "errorMessage": "Already approved" }, { "pc": [ 373 ], "errorMessage": "Already executed" }, { "pc": [ 772 ], "errorMessage": "Bad index" }, { "pc": [ 548 ], "errorMessage": "Executed" }, { "pc": [ 191 ], "errorMessage": "Index out of bounds" }, { "pc": [ 460 ], "errorMessage": "Invalid signature" }, { "pc": [ 345 ], "errorMessage": "Invalid signer" }, { "pc": [ 532 ], "errorMessage": "No proposal" }, { "pc": [ 563 ], "errorMessage": "No quorum" }, { "pc": [ 183 ], "errorMessage": "Only creator" }, { "pc": [ 356 ], "errorMessage": "Proposal does not exist" }, { "pc": [ 405 ], "errorMessage": "Signer key missing" }, { "pc": [ 138 ], "errorMessage": "Threshold > signer count" }, { "pc": [ 141 ], "errorMessage": "Threshold must be >= 1" }, { "pc": [ 143 ], "errorMessage": "Vault requires at least 1 member" }, { "pc": [ 187, 341, 737, 769, 826 ], "errorMessage": "check self.num_signers exists" }, { "pc": [ 242 ], "errorMessage": "check self.proposal_count exists" }, { "pc": [ 561, 818 ], "errorMessage": "check self.threshold exists" }, { "pc": [ 170, 231, 330 ], "errorMessage": "invalid array length header" }, { "pc": [ 177, 238, 337 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 217 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 125, 134, 163, 225, 312, 322, 516 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 208 ], "errorMessage": "invalid number of bytes for arc4.uint8" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEyCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgOCAyCiAgICBieXRlY2Jsb2NrICJudW1fc2lnbmVycyIgMHg3MDZiNWYgInRocmVzaG9sZCIgInByb3Bvc2FsX2NvdW50IiAweDcwNzI2ZjcwNWYgMHgwMDM0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjQ4CiAgICAvLyBjbGFzcyBGYWxjb25WYXVsdChBUkM0Q29udHJhY3QpOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYnogbWFpbl9jcmVhdGVfTm9PcEAxMAogICAgcHVzaGJ5dGVzcyAweDQxMzc0ZmMwIDB4MzJmYTU2NjYgMHg1MTIwN2IxNiAweDMzOGJlYzIzIC8vIG1ldGhvZCAiYWRkX3NpZ25lcl9pbml0KHVpbnQ2NCxieXRlW10pdm9pZCIsIG1ldGhvZCAicHJvcG9zZV90cmFuc2FjdGlvbih1aW50OCxhZGRyZXNzLHVpbnQ2NCxieXRlW10pdWludDY0IiwgbWV0aG9kICJzdWJtaXRfc2lnbmF0dXJlKHVpbnQ2NCx1aW50NjQsYnl0ZVtdKXZvaWQiLCBtZXRob2QgImV4ZWN1dGVfcHJvcG9zYWwodWludDY0KXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBhZGRfc2lnbmVyX2luaXQgcHJvcG9zZV90cmFuc2FjdGlvbiBzdWJtaXRfc2lnbmF0dXJlIGV4ZWN1dGVfcHJvcG9zYWwKICAgIGVycgoKbWFpbl9jcmVhdGVfTm9PcEAxMDoKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NDgKICAgIC8vIGNsYXNzIEZhbGNvblZhdWx0KEFSQzRDb250cmFjdCk6CiAgICBwdXNoYnl0ZXMgMHg5NDc5ZmY2MyAvLyBtZXRob2QgImNyZWF0ZSh1aW50NjQsdWludDY0KXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjcmVhdGUKICAgIGVycgoKCi8vIGZhbGNvbl92YXVsdC5GYWxjb25WYXVsdC5jcmVhdGVbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGU6CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjU0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoYWxsb3dfYWN0aW9ucz1bIk5vT3AiXSwgY3JlYXRlPSJyZXF1aXJlIikKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NTYKICAgIC8vIGFzc2VydCB0aHJlc2hvbGQgPD0gbnVtX3NpZ25lcnMsICJUaHJlc2hvbGQgPiBzaWduZXIgY291bnQiCiAgICBkdXAyCiAgICA8PQogICAgYXNzZXJ0IC8vIFRocmVzaG9sZCA+IHNpZ25lciBjb3VudAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weTo1NwogICAgLy8gYXNzZXJ0IHRocmVzaG9sZCA+PSBVSW50NjQoMSksICJUaHJlc2hvbGQgbXVzdCBiZSA+PSAxIgogICAgZGlnIDEKICAgIGFzc2VydCAvLyBUaHJlc2hvbGQgbXVzdCBiZSA+PSAxCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjU4CiAgICAvLyBhc3NlcnQgbnVtX3NpZ25lcnMgPj0gVUludDY0KDEpLCAiVmF1bHQgcmVxdWlyZXMgYXQgbGVhc3QgMSBtZW1iZXIiCiAgICBkdXAKICAgIGFzc2VydCAvLyBWYXVsdCByZXF1aXJlcyBhdCBsZWFzdCAxIG1lbWJlcgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weTo2MAogICAgLy8gc2VsZi50aHJlc2hvbGQudmFsdWUgPSB0aHJlc2hvbGQKICAgIGJ5dGVjXzIgLy8gInRocmVzaG9sZCIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NjEKICAgIC8vIHNlbGYubnVtX3NpZ25lcnMudmFsdWUgPSBudW1fc2lnbmVycwogICAgYnl0ZWNfMCAvLyAibnVtX3NpZ25lcnMiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weTo2MgogICAgLy8gc2VsZi5wcm9wb3NhbF9jb3VudC52YWx1ZSA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxfY291bnQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChhbGxvd19hY3Rpb25zPVsiTm9PcCJdLCBjcmVhdGU9InJlcXVpcmUiKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGZhbGNvbl92YXVsdC5GYWxjb25WYXVsdC5hZGRfc2lnbmVyX2luaXRbcm91dGluZ10oKSAtPiB2b2lkOgphZGRfc2lnbmVyX2luaXQ6CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NjcKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IEdsb2JhbC5jcmVhdG9yX2FkZHJlc3MsICJPbmx5IGNyZWF0b3IiCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBjcmVhdG9yCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjY4CiAgICAvLyBhc3NlcnQgaW5kZXggPCBzZWxmLm51bV9zaWduZXJzLnZhbHVlLCAiSW5kZXggb3V0IG9mIGJvdW5kcyIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJudW1fc2lnbmVycyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5udW1fc2lnbmVycyBleGlzdHMKICAgIGRpZyAyCiAgICA+CiAgICBhc3NlcnQgLy8gSW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weTo2OQogICAgLy8gYm94X2tleSA9IGIicGtfIiArIG9wLml0b2IoaW5kZXgpCiAgICBzd2FwCiAgICBpdG9iCiAgICBieXRlY18xIC8vIDB4NzA2YjVmCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NzAKICAgIC8vIG9wLkJveC5wdXQoYm94X2tleSwgcHVibGljX2tleS5ieXRlcykKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGZhbGNvbl92YXVsdC5GYWxjb25WYXVsdC5wcm9wb3NlX3RyYW5zYWN0aW9uW3JvdXRpbmddKCkgLT4gdm9pZDoKcHJvcG9zZV90cmFuc2FjdGlvbjoKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6NzIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ4CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjgwCiAgICAvLyBwcm9wb3NhbF9pZCA9IHNlbGYucHJvcG9zYWxfY291bnQudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJwcm9wb3NhbF9jb3VudCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5wcm9wb3NhbF9jb3VudCBleGlzdHMKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6ODEKICAgIC8vIHNlbGYucHJvcG9zYWxfY291bnQudmFsdWUgPSBwcm9wb3NhbF9pZCArIFVJbnQ2NCgxKQogICAgZHVwCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYnl0ZWNfMyAvLyAicHJvcG9zYWxfY291bnQiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weTo4MwogICAgLy8gYm94X2tleSA9IGIicHJvcF8iICsgb3AuaXRvYihwcm9wb3NhbF9pZCkKICAgIGl0b2IKICAgIGJ5dGVjIDQgLy8gMHg3MDcyNmY3MDVmCiAgICBkaWcgMQogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5Ojg1LTkyCiAgICAvLyBwcm9wID0gUHJvcG9zYWwoCiAgICAvLyAgICAgcHJvcG9zYWxfdHlwZT1wcm9wX3R5cGUsCiAgICAvLyAgICAgcmVjaXBpZW50PXJlY2lwaWVudCwKICAgIC8vICAgICBhbW91bnRfb3JfaWQ9YXJjNC5VSW50NjQoYW1vdW50X29yX2lkKSwKICAgIC8vICAgICBwYXlsb2FkPXBheWxvYWQuY29weSgpLAogICAgLy8gICAgIGFwcHJvdmFsX2NvdW50PWFyYzQuVUludDY0KDApLAogICAgLy8gICAgIGV4ZWN1dGVkPWFyYzQuQm9vbChGYWxzZSkKICAgIC8vICkKICAgIGRpZyA1CiAgICB1bmNvdmVyIDUKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweDAwMzQwMDAwMDAwMDAwMDAwMDAwMDAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6OTMKICAgIC8vIG9wLkJveC5wdXQoYm94X2tleSwgcHJvcC5ieXRlcykKICAgIGJveF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6OTUtOTgKICAgIC8vIGFyYzQuZW1pdChQcm9wb3NhbENyZWF0ZWQoCiAgICAvLyAgICAgcHJvcG9zYWxfaWQ9YXJjNC5VSW50NjQocHJvcG9zYWxfaWQpLAogICAgLy8gICAgIHByb3Bvc2FsX3R5cGU9cHJvcF90eXBlCiAgICAvLyApKQogICAgZHVwCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4NzE0ODJlMDQgLy8gbWV0aG9kICJQcm9wb3NhbENyZWF0ZWQodWludDY0LHVpbnQ4KSIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjcyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGZhbGNvbl92YXVsdC5GYWxjb25WYXVsdC5zdWJtaXRfc2lnbmF0dXJlW3JvdXRpbmddKCkgLT4gdm9pZDoKc3VibWl0X3NpZ25hdHVyZToKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTAxCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGR1cAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgZHVwCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjEwOAogICAgLy8gYXNzZXJ0IHNpZ25lcl9pbmRleCA8IHNlbGYubnVtX3NpZ25lcnMudmFsdWUsICJJbnZhbGlkIHNpZ25lciIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJudW1fc2lnbmVycyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5udW1fc2lnbmVycyBleGlzdHMKICAgIGRpZyAyCiAgICA+CiAgICBhc3NlcnQgLy8gSW52YWxpZCBzaWduZXIKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTEwCiAgICAvLyBwcm9wX2tleSA9IGIicHJvcF8iICsgb3AuaXRvYihwcm9wb3NhbF9pZCkKICAgIHVuY292ZXIgMwogICAgaXRvYgogICAgYnl0ZWMgNCAvLyAweDcwNzI2ZjcwNWYKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTExCiAgICAvLyBwcm9wX2J5dGVzLCBleGlzdHMgPSBvcC5Cb3guZ2V0KHByb3Bfa2V5KQogICAgZHVwCiAgICBib3hfZ2V0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjExMgogICAgLy8gYXNzZXJ0IGV4aXN0cywgIlByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IgogICAgYXNzZXJ0IC8vIFByb3Bvc2FsIGRvZXMgbm90IGV4aXN0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjExNQogICAgLy8gYXNzZXJ0IG5vdCBwcm9wLmV4ZWN1dGVkLm5hdGl2ZSwgIkFscmVhZHkgZXhlY3V0ZWQiCiAgICBkdXAKICAgIHB1c2hpbnQgNDA4CiAgICBnZXRiaXQKICAgIHB1c2hieXRlcyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgIQogICAgYXNzZXJ0IC8vIEFscmVhZHkgZXhlY3V0ZWQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTE3CiAgICAvLyBzaWdfa2V5ID0gYiJzaWdfIiArIG9wLml0b2IocHJvcG9zYWxfaWQpICsgYiJfIiArIG9wLml0b2Ioc2lnbmVyX2luZGV4KQogICAgcHVzaGJ5dGVzIDB4NzM2OTY3NWYKICAgIGRpZyA0CiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweDVmCiAgICBjb25jYXQKICAgIHVuY292ZXIgNgogICAgaXRvYgogICAgc3dhcAogICAgZGlnIDEKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMTgKICAgIC8vIHNpZ19kYXRhLCBzaWdfZXhpc3RzID0gb3AuQm94LmdldChzaWdfa2V5KQogICAgZHVwCiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTE5CiAgICAvLyBhc3NlcnQgbm90IHNpZ19leGlzdHMsICJBbHJlYWR5IGFwcHJvdmVkIgogICAgIQogICAgYXNzZXJ0IC8vIEFscmVhZHkgYXBwcm92ZWQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTIxCiAgICAvLyBwa19rZXkgPSBiInBrXyIgKyBvcC5pdG9iKHNpZ25lcl9pbmRleCkKICAgIGJ5dGVjXzEgLy8gMHg3MDZiNWYKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjEyMgogICAgLy8gcHVia2V5LCBwa19leGlzdHMgPSBvcC5Cb3guZ2V0KHBrX2tleSkKICAgIGJveF9nZXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTIzCiAgICAvLyBhc3NlcnQgcGtfZXhpc3RzLCAiU2lnbmVyIGtleSBtaXNzaW5nIgogICAgYXNzZXJ0IC8vIFNpZ25lciBrZXkgbWlzc2luZwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMjgKICAgIC8vICsgb3AuaXRvYihwcm9wLnByb3Bvc2FsX3R5cGUubmF0aXZlKQogICAgZGlnIDMKICAgIGV4dHJhY3QgMCAxCiAgICBkaWcgNAogICAgaW50Y18wIC8vIDAKICAgIGdldGJ5dGUKICAgIGl0b2IKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTI3LTEyOAogICAgLy8gb3AuaXRvYihwcm9wb3NhbF9pZCkKICAgIC8vICsgb3AuaXRvYihwcm9wLnByb3Bvc2FsX3R5cGUubmF0aXZlKQogICAgdW5jb3ZlciA3CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTI5CiAgICAvLyArIHByb3AucmVjaXBpZW50LmJ5dGVzCiAgICBkaWcgNQogICAgZXh0cmFjdCAxIDMyCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjEyNy0xMjkKICAgIC8vIG9wLml0b2IocHJvcG9zYWxfaWQpCiAgICAvLyArIG9wLml0b2IocHJvcC5wcm9wb3NhbF90eXBlLm5hdGl2ZSkKICAgIC8vICsgcHJvcC5yZWNpcGllbnQuYnl0ZXMKICAgIHN3YXAKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTMwCiAgICAvLyArIG9wLml0b2IocHJvcC5hbW91bnRfb3JfaWQubmF0aXZlKQogICAgZGlnIDYKICAgIGV4dHJhY3QgMzMgOAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMjctMTMwCiAgICAvLyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgLy8gKyBvcC5pdG9iKHByb3AucHJvcG9zYWxfdHlwZS5uYXRpdmUpCiAgICAvLyArIHByb3AucmVjaXBpZW50LmJ5dGVzCiAgICAvLyArIG9wLml0b2IocHJvcC5hbW91bnRfb3JfaWQubmF0aXZlKQogICAgc3dhcAogICAgZGlnIDEKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMzEKICAgIC8vICsgcHJvcC5wYXlsb2FkLmJ5dGVzCiAgICBkaWcgNwogICAgcHVzaGludCA0MQogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyA4CiAgICBsZW4KICAgIGRpZyA5CiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjEyNy0xMzEKICAgIC8vIG9wLml0b2IocHJvcG9zYWxfaWQpCiAgICAvLyArIG9wLml0b2IocHJvcC5wcm9wb3NhbF90eXBlLm5hdGl2ZSkKICAgIC8vICsgcHJvcC5yZWNpcGllbnQuYnl0ZXMKICAgIC8vICsgb3AuaXRvYihwcm9wLmFtb3VudF9vcl9pZC5uYXRpdmUpCiAgICAvLyArIHByb3AucGF5bG9hZC5ieXRlcwogICAgc3dhcAogICAgZGlnIDEKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMzMKICAgIC8vIGFzc2VydCBvcC5mYWxjb25fdmVyaWZ5KG1lc3NhZ2UsIHNpZ25hdHVyZS5ieXRlcywgcHVia2V5KSwgIkludmFsaWQgc2lnbmF0dXJlIgogICAgdW5jb3ZlciAxMAogICAgdW5jb3ZlciA2CiAgICBmYWxjb25fdmVyaWZ5CiAgICBhc3NlcnQgLy8gSW52YWxpZCBzaWduYXR1cmUKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTM1CiAgICAvLyBvcC5Cb3gucHV0KHNpZ19rZXksIEJ5dGVzKGIiMSIpKQogICAgdW5jb3ZlciA0CiAgICBwdXNoYnl0ZXMgMHgzMQogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNDIKICAgIC8vIGFwcHJvdmFsX2NvdW50PWFyYzQuVUludDY0KHByb3AuYXBwcm92YWxfY291bnQubmF0aXZlICsgMSksCiAgICB1bmNvdmVyIDUKICAgIHB1c2hpbnQgNDMKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgaXRvYgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMzctMTQ0CiAgICAvLyBuZXdfcHJvcCA9IFByb3Bvc2FsKAogICAgLy8gICAgIHByb3Bvc2FsX3R5cGU9cHJvcC5wcm9wb3NhbF90eXBlLAogICAgLy8gICAgIHJlY2lwaWVudD1wcm9wLnJlY2lwaWVudCwKICAgIC8vICAgICBhbW91bnRfb3JfaWQ9cHJvcC5hbW91bnRfb3JfaWQsCiAgICAvLyAgICAgcGF5bG9hZD1wcm9wLnBheWxvYWQuY29weSgpLAogICAgLy8gICAgIGFwcHJvdmFsX2NvdW50PWFyYzQuVUludDY0KHByb3AuYXBwcm92YWxfY291bnQubmF0aXZlICsgMSksCiAgICAvLyAgICAgZXhlY3V0ZWQ9cHJvcC5leGVjdXRlZAogICAgLy8gKQogICAgdW5jb3ZlciA0CiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIGJ5dGVjIDUgLy8gMHgwMDM0CiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNDUKICAgIC8vIG9wLkJveC5wdXQocHJvcF9rZXksIG5ld19wcm9wLmJ5dGVzKQogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNDctMTUwCiAgICAvLyBhcmM0LmVtaXQoU2lnbmF0dXJlU3VibWl0dGVkKAogICAgLy8gICAgIHByb3Bvc2FsX2lkPWFyYzQuVUludDY0KHByb3Bvc2FsX2lkKSwKICAgIC8vICAgICBzaWduZXJfaW5kZXg9YXJjNC5VSW50NjQoc2lnbmVyX2luZGV4KQogICAgLy8gKSkKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MDZkYzQxMzQgLy8gbWV0aG9kICJTaWduYXR1cmVTdWJtaXR0ZWQodWludDY0LHVpbnQ2NCkiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxMDEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIGZhbGNvbl92YXVsdC5GYWxjb25WYXVsdC5leGVjdXRlX3Byb3Bvc2FsW3JvdXRpbmddKCkgLT4gdm9pZDoKZXhlY3V0ZV9wcm9wb3NhbDoKICAgIGludGNfMCAvLyAwCiAgICBwdXNoYnl0ZXMgIiIKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTUyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGR1cAogICAgYnRvaQogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNTQKICAgIC8vIHByb3Bfa2V5ID0gYiJwcm9wXyIgKyBvcC5pdG9iKHByb3Bvc2FsX2lkKQogICAgaXRvYgogICAgYnl0ZWMgNCAvLyAweDcwNzI2ZjcwNWYKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNTUKICAgIC8vIHByb3BfYnl0ZXMsIGV4aXN0cyA9IG9wLkJveC5nZXQocHJvcF9rZXkpCiAgICBkdXAKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGR1cAogICAgY292ZXIgMgogICAgY292ZXIgNAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNTYKICAgIC8vIGFzc2VydCBleGlzdHMsICJObyBwcm9wb3NhbCIKICAgIGFzc2VydCAvLyBObyBwcm9wb3NhbAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNTkKICAgIC8vIGFzc2VydCBub3QgcHJvcC5leGVjdXRlZC5uYXRpdmUsICJFeGVjdXRlZCIKICAgIGR1cAogICAgcHVzaGludCA0MDgKICAgIGdldGJpdAogICAgcHVzaGJ5dGVzIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgIQogICAgYXNzZXJ0IC8vIEV4ZWN1dGVkCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE2MAogICAgLy8gYXNzZXJ0IHByb3AuYXBwcm92YWxfY291bnQubmF0aXZlID49IHNlbGYudGhyZXNob2xkLnZhbHVlLCAiTm8gcXVvcnVtIgogICAgZHVwCiAgICBleHRyYWN0IDQzIDgKICAgIGRpZyAxCiAgICBwdXNoaW50IDQzCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gInRocmVzaG9sZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50aHJlc2hvbGQgZXhpc3RzCiAgICA+PQogICAgYXNzZXJ0IC8vIE5vIHF1b3J1bQogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNjQKICAgIC8vIHByb3Bvc2FsX3R5cGU9cHJvcC5wcm9wb3NhbF90eXBlLAogICAgZGlnIDEKICAgIGV4dHJhY3QgMCAxCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE2NQogICAgLy8gcmVjaXBpZW50PXByb3AucmVjaXBpZW50LAogICAgZGlnIDIKICAgIGV4dHJhY3QgMSAzMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBjb3ZlciA2CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE2NgogICAgLy8gYW1vdW50X29yX2lkPXByb3AuYW1vdW50X29yX2lkLAogICAgZGlnIDMKICAgIGV4dHJhY3QgMzMgOAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNjcKICAgIC8vIHBheWxvYWQ9cHJvcC5wYXlsb2FkLmNvcHkoKSwKICAgIGRpZyA0CiAgICBwdXNoaW50IDQxCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDUKICAgIGxlbgogICAgZGlnIDYKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgY292ZXIgNAogICAgY292ZXIgOAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNjItMTcwCiAgICAvLyAjIENFSSBQYXR0ZXJuCiAgICAvLyBuZXdfcHJvcCA9IFByb3Bvc2FsKAogICAgLy8gICAgIHByb3Bvc2FsX3R5cGU9cHJvcC5wcm9wb3NhbF90eXBlLAogICAgLy8gICAgIHJlY2lwaWVudD1wcm9wLnJlY2lwaWVudCwKICAgIC8vICAgICBhbW91bnRfb3JfaWQ9cHJvcC5hbW91bnRfb3JfaWQsCiAgICAvLyAgICAgcGF5bG9hZD1wcm9wLnBheWxvYWQuY29weSgpLAogICAgLy8gICAgIGFwcHJvdmFsX2NvdW50PXByb3AuYXBwcm92YWxfY291bnQsCiAgICAvLyAgICAgZXhlY3V0ZWQ9YXJjNC5Cb29sKFRydWUpCiAgICAvLyApCiAgICBzd2FwCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlYyA1IC8vIDB4MDAzNAogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNjkKICAgIC8vIGV4ZWN1dGVkPWFyYzQuQm9vbChUcnVlKQogICAgcHVzaGJ5dGVzIDB4ODAKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTYyLTE3MAogICAgLy8gIyBDRUkgUGF0dGVybgogICAgLy8gbmV3X3Byb3AgPSBQcm9wb3NhbCgKICAgIC8vICAgICBwcm9wb3NhbF90eXBlPXByb3AucHJvcG9zYWxfdHlwZSwKICAgIC8vICAgICByZWNpcGllbnQ9cHJvcC5yZWNpcGllbnQsCiAgICAvLyAgICAgYW1vdW50X29yX2lkPXByb3AuYW1vdW50X29yX2lkLAogICAgLy8gICAgIHBheWxvYWQ9cHJvcC5wYXlsb2FkLmNvcHkoKSwKICAgIC8vICAgICBhcHByb3ZhbF9jb3VudD1wcm9wLmFwcHJvdmFsX2NvdW50LAogICAgLy8gICAgIGV4ZWN1dGVkPWFyYzQuQm9vbChUcnVlKQogICAgLy8gKQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTcxCiAgICAvLyBvcC5Cb3gucHV0KHByb3Bfa2V5LCBuZXdfcHJvcC5ieXRlcykKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNzMKICAgIC8vIGFyYzQuZW1pdChWYXVsdEV4ZWN1dGVkKHByb3Bvc2FsX2lkPWFyYzQuVUludDY0KHByb3Bvc2FsX2lkKSkpCiAgICBwdXNoYnl0ZXMgMHhjM2Y5OTM2YyAvLyBtZXRob2QgIlZhdWx0RXhlY3V0ZWQodWludDY0KSIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTY0CiAgICAvLyBwcm9wb3NhbF90eXBlPXByb3AucHJvcG9zYWxfdHlwZSwKICAgIGludGNfMCAvLyAwCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE3NQogICAgLy8gcHR5cGUgPSBwcm9wLnByb3Bvc2FsX3R5cGUubmF0aXZlCiAgICBnZXRieXRlCiAgICBkdXAKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTc2CiAgICAvLyBpZiBwdHlwZSA9PSBVSW50NjQoMCk6CiAgICBibnogZXhlY3V0ZV9wcm9wb3NhbF9lbHNlX2JvZHlANAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNzctMTgyCiAgICAvLyAjIFBheW1lbnQKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIC8vICAgICByZWNlaXZlcj1wcm9wLnJlY2lwaWVudC5uYXRpdmUsCiAgICAvLyAgICAgYW1vdW50PXByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODEKICAgIC8vIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICBnbG9iYWwgTWluVHhuRmVlCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE4MAogICAgLy8gYW1vdW50PXByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSwKICAgIGRpZyA0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE2NgogICAgLy8gYW1vdW50X29yX2lkPXByb3AuYW1vdW50X29yX2lkLAogICAgcHVzaGludCAzMwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODAKICAgIC8vIGFtb3VudD1wcm9wLmFtb3VudF9vcl9pZC5uYXRpdmUsCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE3Ny0xNzgKICAgIC8vICMgUGF5bWVudAogICAgLy8gaXR4bi5QYXltZW50KAogICAgaW50Y18xIC8vIHBheQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTc3LTE4MgogICAgLy8gIyBQYXltZW50CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgcmVjZWl2ZXI9cHJvcC5yZWNpcGllbnQubmF0aXZlLAogICAgLy8gICAgIGFtb3VudD1wcm9wLmFtb3VudF9vcl9pZC5uYXRpdmUsCiAgICAvLyAgICAgZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CgpleGVjdXRlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMjI6CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE1MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgpleGVjdXRlX3Byb3Bvc2FsX2Vsc2VfYm9keUA0OgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODMKICAgIC8vIGVsaWYgcHR5cGUgPT0gVUludDY0KDEpOgogICAgZHVwCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGJ6IGV4ZWN1dGVfcHJvcG9zYWxfZWxzZV9ib2R5QDcKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTg0LTE5MAogICAgLy8gIyBBc3NldCBUcmFuc2ZlcgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPXByb3AucmVjaXBpZW50Lm5hdGl2ZSwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9cHJvcC5hbW91bnRfb3JfaWQubmF0aXZlLAogICAgLy8gICAgIHhmZXJfYXNzZXQ9QXNzZXQob3AuYnRvaShwcm9wLnBheWxvYWQuYnl0ZXMpKSwKICAgIC8vICAgICBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODkKICAgIC8vIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICBnbG9iYWwgTWluVHhuRmVlCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE4NwogICAgLy8gYXNzZXRfYW1vdW50PXByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSwKICAgIGRpZyA0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE2NgogICAgLy8gYW1vdW50X29yX2lkPXByb3AuYW1vdW50X29yX2lkLAogICAgcHVzaGludCAzMwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODcKICAgIC8vIGFzc2V0X2Ftb3VudD1wcm9wLmFtb3VudF9vcl9pZC5uYXRpdmUsCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODgKICAgIC8vIHhmZXJfYXNzZXQ9QXNzZXQob3AuYnRvaShwcm9wLnBheWxvYWQuYnl0ZXMpKSwKICAgIGRpZyAzCiAgICBidG9pCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgaXR4bl9maWVsZCBBc3NldEFtb3VudAogICAgZGlnIDMKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxODQtMTg1CiAgICAvLyAjIEFzc2V0IFRyYW5zZmVyCiAgICAvLyBpdHhuLkFzc2V0VHJhbnNmZXIoCiAgICBwdXNoaW50IDQgLy8gYXhmZXIKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE4NC0xOTAKICAgIC8vICMgQXNzZXQgVHJhbnNmZXIKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj1wcm9wLnJlY2lwaWVudC5uYXRpdmUsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50PXByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSwKICAgIC8vICAgICB4ZmVyX2Fzc2V0PUFzc2V0KG9wLmJ0b2kocHJvcC5wYXlsb2FkLmJ5dGVzKSksCiAgICAvLyAgICAgZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBiIGV4ZWN1dGVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAyMgoKZXhlY3V0ZV9wcm9wb3NhbF9lbHNlX2JvZHlANzoKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTkxCiAgICAvLyBlbGlmIHB0eXBlID09IFVJbnQ2NCgyKToKICAgIGR1cAogICAgaW50Y18zIC8vIDIKICAgID09CiAgICBieiBleGVjdXRlX3Byb3Bvc2FsX2Vsc2VfYm9keUAxMAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxOTItMTk3CiAgICAvLyAjIEFwcCBDYWxsCiAgICAvLyBpdHhuLkFwcGxpY2F0aW9uQ2FsbCgKICAgIC8vICAgICBhcHBfaWQ9QXBwbGljYXRpb24ocHJvcC5hbW91bnRfb3JfaWQubmF0aXZlKSwKICAgIC8vICAgICBhcHBfYXJncz0ocHJvcC5wYXlsb2FkLmJ5dGVzLCksCiAgICAvLyAgICAgZmVlPUdsb2JhbC5taW5fdHhuX2ZlZSwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTk2CiAgICAvLyBmZWU9R2xvYmFsLm1pbl90eG5fZmVlLAogICAgZ2xvYmFsIE1pblR4bkZlZQogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxOTQKICAgIC8vIGFwcF9pZD1BcHBsaWNhdGlvbihwcm9wLmFtb3VudF9vcl9pZC5uYXRpdmUpLAogICAgZGlnIDQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTY2CiAgICAvLyBhbW91bnRfb3JfaWQ9cHJvcC5hbW91bnRfb3JfaWQsCiAgICBwdXNoaW50IDMzCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjE5NAogICAgLy8gYXBwX2lkPUFwcGxpY2F0aW9uKHByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSksCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDMKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTkyLTE5MwogICAgLy8gIyBBcHAgQ2FsbAogICAgLy8gaXR4bi5BcHBsaWNhdGlvbkNhbGwoCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MTkyLTE5NwogICAgLy8gIyBBcHAgQ2FsbAogICAgLy8gaXR4bi5BcHBsaWNhdGlvbkNhbGwoCiAgICAvLyAgICAgYXBwX2lkPUFwcGxpY2F0aW9uKHByb3AuYW1vdW50X29yX2lkLm5hdGl2ZSksCiAgICAvLyAgICAgYXBwX2FyZ3M9KHByb3AucGF5bG9hZC5ieXRlcywpLAogICAgLy8gICAgIGZlZT1HbG9iYWwubWluX3R4bl9mZWUsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgYiBleGVjdXRlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMjIKCmV4ZWN1dGVfcHJvcG9zYWxfZWxzZV9ib2R5QDEwOgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxOTgKICAgIC8vIGVsaWYgcHR5cGUgPT0gVUludDY0KDMpOgogICAgZHVwCiAgICBwdXNoaW50IDMKICAgID09CiAgICBieiBleGVjdXRlX3Byb3Bvc2FsX2Vsc2VfYm9keUAxMgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxOTktMjAwCiAgICAvLyAjIEFkZCBTaWduZXIKICAgIC8vIG5ld19pZHggPSBzZWxmLm51bV9zaWduZXJzLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAibnVtX3NpZ25lcnMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubnVtX3NpZ25lcnMgZXhpc3RzCiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIwMQogICAgLy8gc2VsZi5udW1fc2lnbmVycy52YWx1ZSA9IG5ld19pZHggKyBVSW50NjQoMSkKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzAgLy8gIm51bV9zaWduZXJzIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjAyCiAgICAvLyBuZXdfcGtfa2V5ID0gYiJwa18iICsgb3AuaXRvYihuZXdfaWR4KQogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAweDcwNmI1ZgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIwMwogICAgLy8gb3AuQm94LnB1dChuZXdfcGtfa2V5LCBwcm9wLnBheWxvYWQuYnl0ZXMpCiAgICBkaWcgMgogICAgYm94X3B1dAogICAgYiBleGVjdXRlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMjIKCmV4ZWN1dGVfcHJvcG9zYWxfZWxzZV9ib2R5QDEyOgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToyMDQKICAgIC8vIGVsaWYgcHR5cGUgPT0gVUludDY0KDQpOgogICAgZHVwCiAgICBwdXNoaW50IDQKICAgID09CiAgICBieiBleGVjdXRlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMjIKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjA1LTIwNgogICAgLy8gIyBSZW1vdmUgU2lnbmVyCiAgICAvLyBpZHhfdG9fcmVtb3ZlID0gcHJvcC5hbW91bnRfb3JfaWQubmF0aXZlCiAgICBkaWcgMwogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToxNjYKICAgIC8vIGFtb3VudF9vcl9pZD1wcm9wLmFtb3VudF9vcl9pZCwKICAgIHB1c2hpbnQgMzMKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjA1LTIwNgogICAgLy8gIyBSZW1vdmUgU2lnbmVyCiAgICAvLyBpZHhfdG9fcmVtb3ZlID0gcHJvcC5hbW91bnRfb3JfaWQubmF0aXZlCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToyMDcKICAgIC8vIGFzc2VydCBpZHhfdG9fcmVtb3ZlIDwgc2VsZi5udW1fc2lnbmVycy52YWx1ZSwgIkJhZCBpbmRleCIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJudW1fc2lnbmVycyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5udW1fc2lnbmVycyBleGlzdHMKICAgIGR1cDIKICAgIDwKICAgIGFzc2VydCAvLyBCYWQgaW5kZXgKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjA4CiAgICAvLyBwa19rZXkgPSBiInBrXyIgKyBvcC5pdG9iKGlkeF90b19yZW1vdmUpCiAgICBkaWcgMQogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAweDcwNmI1ZgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGJ1cnkgOQogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToyMDkKICAgIC8vIGRlbDEgPSBvcC5Cb3guZGVsZXRlKHBrX2tleSkKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToyMTEKICAgIC8vIGxhc3RfaWR4ID0gc2VsZi5udW1fc2lnbmVycy52YWx1ZSAtIFVJbnQ2NCgxKQogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGR1cAogICAgYnVyeSA3CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIxMgogICAgLy8gaWYgaWR4X3RvX3JlbW92ZSAhPSBsYXN0X2lkeDoKICAgICE9CiAgICBieiBleGVjdXRlX3Byb3Bvc2FsX2FmdGVyX2lmX2Vsc2VAMTUKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjEzCiAgICAvLyBsYXN0X3BrX2tleSA9IGIicGtfIiArIG9wLml0b2IobGFzdF9pZHgpCiAgICBkaWcgNAogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAweDcwNmI1ZgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIxNAogICAgLy8gbGFzdF9waywgbGFzdF9wa19leGlzdHMgPSBvcC5Cb3guZ2V0KGxhc3RfcGtfa2V5KQogICAgZHVwCiAgICBib3hfZ2V0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIxNQogICAgLy8gYXNzZXJ0IGxhc3RfcGtfZXhpc3RzCiAgICBhc3NlcnQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjE2CiAgICAvLyBvcC5Cb3gucHV0KHBrX2tleSwgbGFzdF9waykKICAgIGRpZyA3CiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBjb250cmFjdHMvZmFsY29uX3ZhdWx0LnB5OjIxNwogICAgLy8gZGVsMiA9IG9wLkJveC5kZWxldGUobGFzdF9wa19rZXkpCiAgICBib3hfZGVsCiAgICBwb3AKCmV4ZWN1dGVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjE4CiAgICAvLyBzZWxmLm51bV9zaWduZXJzLnZhbHVlID0gbGFzdF9pZHgKICAgIGJ5dGVjXzAgLy8gIm51bV9zaWduZXJzIgogICAgZGlnIDUKICAgIGR1cAogICAgY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGNvbnRyYWN0cy9mYWxjb25fdmF1bHQucHk6MjIwCiAgICAvLyBpZiBzZWxmLnRocmVzaG9sZC52YWx1ZSA+IHNlbGYubnVtX3NpZ25lcnMudmFsdWU6CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAidGhyZXNob2xkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRocmVzaG9sZCBleGlzdHMKICAgIDwKICAgIGJ6IGV4ZWN1dGVfcHJvcG9zYWxfYWZ0ZXJfaWZfZWxzZUAyMgogICAgLy8gY29udHJhY3RzL2ZhbGNvbl92YXVsdC5weToyMjEKICAgIC8vIHNlbGYudGhyZXNob2xkLnZhbHVlID0gc2VsZi5udW1fc2lnbmVycy52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gIm51bV9zaWduZXJzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm51bV9zaWduZXJzIGV4aXN0cwogICAgYnl0ZWNfMiAvLyAidGhyZXNob2xkIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIGIgZXhlY3V0ZV9wcm9wb3NhbF9hZnRlcl9pZl9lbHNlQDIyCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEyCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "DCAEAAEIAiYGC251bV9zaWduZXJzA3BrXwl0aHJlc2hvbGQOcHJvcG9zYWxfY291bnQFcHJvcF8CADQxGRREMRhBACSCBARBN0/ABDL6VmYEUSB7FgQzi+wjNhoAjgQANQBiAMoBkwCABJR5/2M2GgCOAQABADYaAUkVJBJEFzYaAkkVJBJEF0oOREsBRElEKk8CZyhMZysiZyNDNhoBSRUkEkQXNhoCSSJZJQhLARUSRDEAMgkSRCIoZURLAg1ETBYpTFBMvyNDNhoBSRUjEkQ2GgJJFYEgEkQ2GgNJFSQSRDYaBEkiWSUISwEVEkQiK2VESSMIK0xnFicESwFQSwVPBVBPBFCACwA0AAAAAAAAAAAAUE8DUL9JTwJQgARxSC4ETFCwgAQVH3x1TFCwI0M2GgFJFSQSREkXNhoCSRUkEkRJFzYaA0kiWSUISwEVEkQiKGVESwINRE8DFicESwFQSb5ESYGYA1OAAQAiTwJUSSJTFESABHNpZ19LBFCAAV9QTwYWTEsBUEm9RQEURClPAlC+REsDVwABSwQiVRZPB0xQSwVXASBMSwFQSwZXIQhMSwFQSweBKVlLCBVLCU4CUkxLAVBPCk8GhURPBIABMb9PBYErWyMIFk8ETwRQTwNQJwVQTFBPAlBMUL9QgAQG3EE0TFCwI0MigAA2GgFJFSQSREkXFicETFBJvkxJTgJOBERJgZgDU4ABACJPAlQiUxRESVcrCEsBgStbIiplRA9ESwFXAAFLAlcBIElOAk4GSwNXIQhLBIEpWUsFFUsGTgJSSU4ETghMTwJQTFAnBVBPAlCAAYBQTFBPAky/gATD+ZNsTwJQsCJVSUAAFrEyAEsEgSFbsghLA7IHI7IQsgGzI0NJIxJBAB2xMgBLBIEhW0sDF7IRshJLA7IUgQSyELIBs0L/20klEkEAGLEyAEsEgSFbSwOyGrIYgQayELIBs0L/vUmBAxJBABQiKGVESSMIKExnFilMUEsCv0L/okmBBBJB/5tLA4EhWyIoZURKDERLARYpTFBJRQm8SCMJSUUHE0EAD0sEFilMUEm+REsHTL+8SChLBUlOAmciKmVEDEH/XSIoZUQqTGdC/1M=", "clear": "DIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 1 } }, "events": [ { "name": "ProposalCreated", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint8", "name": "proposal_type" } ] }, { "name": "SignatureSubmitted", "args": [ { "type": "uint64", "name": "proposal_id" }, { "type": "uint64", "name": "signer_index" } ] }, { "name": "VaultExecuted", "args": [ { "type": "uint64", "name": "proposal_id" } ] } ], "templateVariables": {} }