{ "name": "CampusVotingDapp", "structs": {}, "methods": [ { "name": "create_poll", "args": [ { "type": "string", "name": "question" }, { "type": "string", "name": "option_a" }, { "type": "string", "name": "option_b" }, { "type": "string", "name": "option_c" }, { "type": "string", "name": "option_d" }, { "type": "uint64", "name": "num_options" }, { "type": "uint64", "name": "duration_secs" }, { "type": "uint64", "name": "token_id" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Create a new poll. Only callable by the app creator.\nReturns the poll end timestamp.", "events": [], "recommendations": {} }, { "name": "vote", "args": [ { "type": "uint64", "name": "option" } ], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Cast a vote. Enforces:\n- Poll must be active - Voter must have opted in (has local state) - Voter must not have already voted - Option must be valid - If token_id > 0, sender must hold that ASA", "events": [], "recommendations": {} }, { "name": "get_results", "args": [], "returns": { "type": "(uint64,uint64,uint64,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "desc": "Return vote counts for all 4 options.", "events": [], "recommendations": {} }, { "name": "get_poll_info", "args": [], "returns": { "type": "(string,string,string,string,string,uint64,uint64,uint64,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "desc": "Return full poll info:\n(question, opt_a, opt_b, opt_c, opt_d, num_options, end_time, token_id, total_votes)", "events": [], "recommendations": {} }, { "name": "get_voter_status", "args": [ { "type": "address", "name": "voter" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "desc": "Return the option a voter chose (0 = hasn't voted).", "events": [], "recommendations": {} }, { "name": "close_poll", "args": [], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Creator can manually close the poll before the deadline.", "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "\n Campus Voting DApp Smart Contract\n \n Supports:\n - Poll creation with up to 4 options and a deadline\n - One-person-one-vote enforcement via local state\n - Optional token-gating (require holding a specific ASA)\n - Transparent, tamper-proof vote counting\n - Public read methods for results & poll info\n ", "networks": {}, "state": { "schema": { "global": { "ints": 9, "bytes": 6 }, "local": { "ints": 1, "bytes": 0 } }, "keys": { "global": { "question": { "keyType": "AVMString", "valueType": "AVMString", "key": "cXVlc3Rpb24=" }, "option_a": { "keyType": "AVMString", "valueType": "AVMString", "key": "b3B0aW9uX2E=" }, "option_b": { "keyType": "AVMString", "valueType": "AVMString", "key": "b3B0aW9uX2I=" }, "option_c": { "keyType": "AVMString", "valueType": "AVMString", "key": "b3B0aW9uX2M=" }, "option_d": { "keyType": "AVMString", "valueType": "AVMString", "key": "b3B0aW9uX2Q=" }, "num_options": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bnVtX29wdGlvbnM=" }, "votes_a": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXNfYQ==" }, "votes_b": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXNfYg==" }, "votes_c": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXNfYw==" }, "votes_d": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dm90ZXNfZA==" }, "end_time": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZW5kX3RpbWU=" }, "creator": { "keyType": "AVMString", "valueType": "address", "key": "Y3JlYXRvcg==" }, "token_id": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG9rZW5faWQ=" }, "total_votes": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxfdm90ZXM=" }, "poll_active": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cG9sbF9hY3RpdmU=" } }, "local": { "has_voted": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "aHY=", "desc": "Option voted (0=none)" } }, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [ "OptIn" ] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 559 ], "errorMessage": "Already voted" }, { "pc": [ 432 ], "errorMessage": "Duration must be positive" }, { "pc": [ 578 ], "errorMessage": "Insufficient campus token balance" }, { "pc": [ 550 ], "errorMessage": "Invalid option number" }, { "pc": [ 429 ], "errorMessage": "Maximum 4 options allowed" }, { "pc": [ 577 ], "errorMessage": "Must hold campus token to vote" }, { "pc": [ 423 ], "errorMessage": "Need at least 2 options" }, { "pc": [ 532 ], "errorMessage": "No active poll" }, { "pc": [ 949 ], "errorMessage": "Only creator can close poll" }, { "pc": [ 418 ], "errorMessage": "Only creator can create polls" }, { "pc": [ 543 ], "errorMessage": "Option must be 1-4" }, { "pc": [ 541 ], "errorMessage": "Poll has ended" }, { "pc": [ 506, 539, 815 ], "errorMessage": "check self.end_time exists" }, { "pc": [ 557 ], "errorMessage": "check self.has_voted exists for account" }, { "pc": [ 548, 809 ], "errorMessage": "check self.num_options exists" }, { "pc": [ 757 ], "errorMessage": "check self.option_a exists" }, { "pc": [ 770 ], "errorMessage": "check self.option_b exists" }, { "pc": [ 783 ], "errorMessage": "check self.option_c exists" }, { "pc": [ 796 ], "errorMessage": "check self.option_d exists" }, { "pc": [ 529 ], "errorMessage": "check self.poll_active exists" }, { "pc": [ 744 ], "errorMessage": "check self.question exists" }, { "pc": [ 564, 574, 821 ], "errorMessage": "check self.token_id exists" }, { "pc": [ 607, 827 ], "errorMessage": "check self.total_votes exists" }, { "pc": [ 597, 705 ], "errorMessage": "check self.votes_a exists" }, { "pc": [ 660, 710 ], "errorMessage": "check self.votes_b exists" }, { "pc": [ 679, 715 ], "errorMessage": "check self.votes_c exists" }, { "pc": [ 692, 721 ], "errorMessage": "check self.votes_d exists" }, { "pc": [ 311, 327, 343, 359, 375 ], "errorMessage": "invalid array length header" }, { "pc": [ 318, 334, 350, 366, 382 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 927 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 393, 402, 411, 522 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMiA4CiAgICBieXRlY2Jsb2NrICIiICJ2b3Rlc19hIiAidm90ZXNfYiIgInZvdGVzX2MiICJ2b3Rlc19kIiAiZW5kX3RpbWUiICJ0b2tlbl9pZCIgInRvdGFsX3ZvdGVzIiAibnVtX29wdGlvbnMiICJwb2xsX2FjdGl2ZSIgImh2IiAweDE1MWY3Yzc1ICJxdWVzdGlvbiIgIm9wdGlvbl9hIiAib3B0aW9uX2IiICJvcHRpb25fYyIgIm9wdGlvbl9kIiAiY3JlYXRvciIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6NTEKICAgIC8vIHNlbGYucXVlc3Rpb24gPSBTdHJpbmcoIiIpCiAgICBieXRlYyAxMiAvLyAicXVlc3Rpb24iCiAgICBieXRlY18wIC8vICIiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo1MgogICAgLy8gc2VsZi5vcHRpb25fYSA9IFN0cmluZygiIikKICAgIGJ5dGVjIDEzIC8vICJvcHRpb25fYSIKICAgIGJ5dGVjXzAgLy8gIiIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjUzCiAgICAvLyBzZWxmLm9wdGlvbl9iID0gU3RyaW5nKCIiKQogICAgYnl0ZWMgMTQgLy8gIm9wdGlvbl9iIgogICAgYnl0ZWNfMCAvLyAiIgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6NTQKICAgIC8vIHNlbGYub3B0aW9uX2MgPSBTdHJpbmcoIiIpCiAgICBieXRlYyAxNSAvLyAib3B0aW9uX2MiCiAgICBieXRlY18wIC8vICIiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5vcHRpb25fZCA9IFN0cmluZygiIikKICAgIGJ5dGVjIDE2IC8vICJvcHRpb25fZCIKICAgIGJ5dGVjXzAgLy8gIiIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjU2CiAgICAvLyBzZWxmLm51bV9vcHRpb25zID0gVUludDY0KDApCiAgICBieXRlYyA4IC8vICJudW1fb3B0aW9ucyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo1NwogICAgLy8gc2VsZi52b3Rlc19hID0gVUludDY0KDApCiAgICBieXRlY18xIC8vICJ2b3Rlc19hIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjU4CiAgICAvLyBzZWxmLnZvdGVzX2IgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzIgLy8gInZvdGVzX2IiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6NTkKICAgIC8vIHNlbGYudm90ZXNfYyA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMyAvLyAidm90ZXNfYyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo2MAogICAgLy8gc2VsZi52b3Rlc19kID0gVUludDY0KDApCiAgICBieXRlYyA0IC8vICJ2b3Rlc19kIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjYxCiAgICAvLyBzZWxmLmVuZF90aW1lID0gVUludDY0KDApCiAgICBieXRlYyA1IC8vICJlbmRfdGltZSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo2MgogICAgLy8gc2VsZi5jcmVhdG9yID0gYXJjNC5BZGRyZXNzKEdsb2JhbC56ZXJvX2FkZHJlc3MpCiAgICBieXRlYyAxNyAvLyAiY3JlYXRvciIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6NjMKICAgIC8vIHNlbGYudG9rZW5faWQgPSBVSW50NjQoMCkKICAgIGJ5dGVjIDYgLy8gInRva2VuX2lkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjY0CiAgICAvLyBzZWxmLnRvdGFsX3ZvdGVzID0gVUludDY0KDApCiAgICBieXRlYyA3IC8vICJ0b3RhbF92b3RlcyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo2NQogICAgLy8gc2VsZi5wb2xsX2FjdGl2ZSA9IFVJbnQ2NCgwKQogICAgYnl0ZWMgOSAvLyAicG9sbF9hY3RpdmUiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxOAogICAgLy8gY2xhc3MgQ2FtcHVzVm90aW5nRGFwcChBUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDE1CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhlZjQ5YWY0YSAweGYxNDliMjk3IDB4ZDFlMjNlZjYgMHg2MjA5MTQzMSAweGY0YjQxYWY4IDB4YmMxZDRhNWMgLy8gbWV0aG9kICJjcmVhdGVfcG9sbChzdHJpbmcsc3RyaW5nLHN0cmluZyxzdHJpbmcsc3RyaW5nLHVpbnQ2NCx1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidm90ZSh1aW50NjQpc3RyaW5nIiwgbWV0aG9kICJnZXRfcmVzdWx0cygpKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiLCBtZXRob2QgImdldF9wb2xsX2luZm8oKShzdHJpbmcsc3RyaW5nLHN0cmluZyxzdHJpbmcsc3RyaW5nLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiLCBtZXRob2QgImdldF92b3Rlcl9zdGF0dXMoYWRkcmVzcyl1aW50NjQiLCBtZXRob2QgImNsb3NlX3BvbGwoKXN0cmluZyIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGNyZWF0ZV9wb2xsIHZvdGUgZ2V0X3Jlc3VsdHMgZ2V0X3BvbGxfaW5mbyBnZXRfdm90ZXJfc3RhdHVzIGNsb3NlX3BvbGwKICAgIGVycgoKbWFpbl9iYXJlX3JvdXRpbmdAMTU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE4CiAgICAvLyBjbGFzcyBDYW1wdXNWb3RpbmdEYXBwKEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBzd2l0Y2ggbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNiBtYWluX29wdF9pbkAxNwogICAgZXJyCgptYWluX29wdF9pbkAxNzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6NjgKICAgIC8vIEBiYXJlbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJPcHRJbiJdKQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo3MQogICAgLy8gc2VsZi5oYXNfdm90ZWRbVHhuLnNlbmRlcl0gPSBVSW50NjQoMCkKICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjIDEwIC8vICJodiIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjY4CiAgICAvLyBAYmFyZW1ldGhvZChhbGxvd19hY3Rpb25zPVsiT3B0SW4iXSkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fX19hbGdvcHlfZGVmYXVsdF9jcmVhdGVAMTY6CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNhbXB1c192b3RpbmdfZGFwcC5jb250cmFjdC5DYW1wdXNWb3RpbmdEYXBwLmNyZWF0ZV9wb2xsW3JvdXRpbmddKCkgLT4gdm9pZDoKY3JlYXRlX3BvbGw6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjczCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBkdXAKICAgIGludGNfMCAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo4OQogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywgIk9ubHkgY3JlYXRvciBjYW4gY3JlYXRlIHBvbGxzIgogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgY3JlYXRvciBjYW4gY3JlYXRlIHBvbGxzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjkwCiAgICAvLyBhc3NlcnQgbnVtX29wdGlvbnMgPj0gVUludDY0KDIpLCAiTmVlZCBhdCBsZWFzdCAyIG9wdGlvbnMiCiAgICBkaWcgMgogICAgaW50Y18yIC8vIDIKICAgID49CiAgICBhc3NlcnQgLy8gTmVlZCBhdCBsZWFzdCAyIG9wdGlvbnMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6OTEKICAgIC8vIGFzc2VydCBudW1fb3B0aW9ucyA8PSBVSW50NjQoNCksICJNYXhpbXVtIDQgb3B0aW9ucyBhbGxvd2VkIgogICAgZGlnIDIKICAgIHB1c2hpbnQgNAogICAgPD0KICAgIGFzc2VydCAvLyBNYXhpbXVtIDQgb3B0aW9ucyBhbGxvd2VkCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NlcnQgZHVyYXRpb25fc2VjcyA+IFVJbnQ2NCgwKSwgIkR1cmF0aW9uIG11c3QgYmUgcG9zaXRpdmUiCiAgICBkaWcgMQogICAgYXNzZXJ0IC8vIER1cmF0aW9uIG11c3QgYmUgcG9zaXRpdmUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6OTQKICAgIC8vIHNlbGYucXVlc3Rpb24gPSBxdWVzdGlvbgogICAgYnl0ZWMgMTIgLy8gInF1ZXN0aW9uIgogICAgdW5jb3ZlciA4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo5NQogICAgLy8gc2VsZi5vcHRpb25fYSA9IG9wdGlvbl9hCiAgICBieXRlYyAxMyAvLyAib3B0aW9uX2EiCiAgICB1bmNvdmVyIDcKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBzZWxmLm9wdGlvbl9iID0gb3B0aW9uX2IKICAgIGJ5dGVjIDE0IC8vICJvcHRpb25fYiIKICAgIHVuY292ZXIgNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6OTcKICAgIC8vIHNlbGYub3B0aW9uX2MgPSBvcHRpb25fYwogICAgYnl0ZWMgMTUgLy8gIm9wdGlvbl9jIgogICAgdW5jb3ZlciA1CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weTo5OAogICAgLy8gc2VsZi5vcHRpb25fZCA9IG9wdGlvbl9kCiAgICBieXRlYyAxNiAvLyAib3B0aW9uX2QiCiAgICB1bmNvdmVyIDQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5Ojk5CiAgICAvLyBzZWxmLm51bV9vcHRpb25zID0gbnVtX29wdGlvbnMKICAgIGJ5dGVjIDggLy8gIm51bV9vcHRpb25zIgogICAgdW5jb3ZlciAzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDAKICAgIC8vIHNlbGYudm90ZXNfYSA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMSAvLyAidm90ZXNfYSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDEKICAgIC8vIHNlbGYudm90ZXNfYiA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMiAvLyAidm90ZXNfYiIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDIKICAgIC8vIHNlbGYudm90ZXNfYyA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMyAvLyAidm90ZXNfYyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDMKICAgIC8vIHNlbGYudm90ZXNfZCA9IFVJbnQ2NCgwKQogICAgYnl0ZWMgNCAvLyAidm90ZXNfZCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDQKICAgIC8vIHNlbGYuZW5kX3RpbWUgPSBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCArIGR1cmF0aW9uX3NlY3MKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgIHVuY292ZXIgMgogICAgKwogICAgYnl0ZWMgNSAvLyAiZW5kX3RpbWUiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMDUKICAgIC8vIHNlbGYuY3JlYXRvciA9IGFyYzQuQWRkcmVzcyhHbG9iYWwuY3JlYXRvcl9hZGRyZXNzKQogICAgYnl0ZWMgMTcgLy8gImNyZWF0b3IiCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjEwNgogICAgLy8gc2VsZi50b2tlbl9pZCA9IHRva2VuX2lkCiAgICBieXRlYyA2IC8vICJ0b2tlbl9pZCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjEwNwogICAgLy8gc2VsZi50b3RhbF92b3RlcyA9IFVJbnQ2NCgwKQogICAgYnl0ZWMgNyAvLyAidG90YWxfdm90ZXMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTA4CiAgICAvLyBzZWxmLnBvbGxfYWN0aXZlID0gVUludDY0KDEpCiAgICBieXRlYyA5IC8vICJwb2xsX2FjdGl2ZSIKICAgIGludGNfMSAvLyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMTAKICAgIC8vIHJldHVybiBzZWxmLmVuZF90aW1lCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAiZW5kX3RpbWUiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZW5kX3RpbWUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjczCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjIDExIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNhbXB1c192b3RpbmdfZGFwcC5jb250cmFjdC5DYW1wdXNWb3RpbmdEYXBwLnZvdGVbcm91dGluZ10oKSAtPiB2b2lkOgp2b3RlOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMTIKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMyAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjEyMgogICAgLy8gYXNzZXJ0IHNlbGYucG9sbF9hY3RpdmUgPT0gVUludDY0KDEpLCAiTm8gYWN0aXZlIHBvbGwiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgOSAvLyAicG9sbF9hY3RpdmUiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucG9sbF9hY3RpdmUgZXhpc3RzCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBObyBhY3RpdmUgcG9sbAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMjMKICAgIC8vIGFzc2VydCBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCA8IHNlbGYuZW5kX3RpbWUsICJQb2xsIGhhcyBlbmRlZCIKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJlbmRfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5lbmRfdGltZSBleGlzdHMKICAgIDwKICAgIGFzc2VydCAvLyBQb2xsIGhhcyBlbmRlZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMjQKICAgIC8vIGFzc2VydCBvcHRpb24gPj0gVUludDY0KDEpLCAiT3B0aW9uIG11c3QgYmUgMS00IgogICAgZHVwCiAgICBhc3NlcnQgLy8gT3B0aW9uIG11c3QgYmUgMS00CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjEyNQogICAgLy8gYXNzZXJ0IG9wdGlvbiA8PSBzZWxmLm51bV9vcHRpb25zLCAiSW52YWxpZCBvcHRpb24gbnVtYmVyIgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDggLy8gIm51bV9vcHRpb25zIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm51bV9vcHRpb25zIGV4aXN0cwogICAgPD0KICAgIGFzc2VydCAvLyBJbnZhbGlkIG9wdGlvbiBudW1iZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTI3LTEyOAogICAgLy8gIyBDaGVjayB2b3RlciBoYXNuJ3QgYWxyZWFkeSB2b3RlZCAobG9jYWwgc3RhdGUpCiAgICAvLyBjdXJyZW50X3ZvdGUgPSBzZWxmLmhhc192b3RlZFtUeG4uc2VuZGVyXQogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEwIC8vICJodiIKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmhhc192b3RlZCBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTI5CiAgICAvLyBhc3NlcnQgY3VycmVudF92b3RlID09IFVJbnQ2NCgwKSwgIkFscmVhZHkgdm90ZWQiCiAgICAhCiAgICBhc3NlcnQgLy8gQWxyZWFkeSB2b3RlZAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMzEtMTMyCiAgICAvLyAjIFRva2VuLWdhdGluZyBjaGVjazogaWYgdG9rZW5faWQgPiAwLCByZXF1aXJlIEFTQSBiYWxhbmNlID49IDEKICAgIC8vIGlmIHNlbGYudG9rZW5faWQgPiBVSW50NjQoMCk6CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNiAvLyAidG9rZW5faWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG9rZW5faWQgZXhpc3RzCiAgICBieiB2b3RlX2FmdGVyX2lmX2Vsc2VAMwogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMzQKICAgIC8vIFR4bi5zZW5kZXIsIHNlbGYudG9rZW5faWQKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJ0b2tlbl9pZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b2tlbl9pZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTMzLTEzNQogICAgLy8gYXNzZXRfYmFsYW5jZSwgYXNzZXRfZXhpc3RzID0gb3AuQXNzZXRIb2xkaW5nR2V0LmFzc2V0X2JhbGFuY2UoCiAgICAvLyAgICAgVHhuLnNlbmRlciwgc2VsZi50b2tlbl9pZAogICAgLy8gKQogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjEzNgogICAgLy8gYXNzZXJ0IGFzc2V0X2V4aXN0cywgIk11c3QgaG9sZCBjYW1wdXMgdG9rZW4gdG8gdm90ZSIKICAgIGFzc2VydCAvLyBNdXN0IGhvbGQgY2FtcHVzIHRva2VuIHRvIHZvdGUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTM3CiAgICAvLyBhc3NlcnQgYXNzZXRfYmFsYW5jZSA+PSBVSW50NjQoMSksICJJbnN1ZmZpY2llbnQgY2FtcHVzIHRva2VuIGJhbGFuY2UiCiAgICBhc3NlcnQgLy8gSW5zdWZmaWNpZW50IGNhbXB1cyB0b2tlbiBiYWxhbmNlCgp2b3RlX2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTM5LTE0MAogICAgLy8gIyBSZWNvcmQgdm90ZSBpbiBsb2NhbCBzdGF0ZQogICAgLy8gc2VsZi5oYXNfdm90ZWRbVHhuLnNlbmRlcl0gPSBvcHRpb24KICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjIDEwIC8vICJodiIKICAgIGRpZyAyCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTQyLTE0MwogICAgLy8gIyBUYWxseSB2b3RlCiAgICAvLyBpZiBvcHRpb24gPT0gVUludDY0KDEpOgogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBieiB2b3RlX2Vsc2VfYm9keUA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE0NAogICAgLy8gc2VsZi52b3Rlc19hID0gc2VsZi52b3Rlc19hICsgVUludDY0KDEpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAidm90ZXNfYSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlc19hIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzEgLy8gInZvdGVzX2EiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAoKdm90ZV9hZnRlcl9pZl9lbHNlQDEyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxNTIKICAgIC8vIHNlbGYudG90YWxfdm90ZXMgPSBzZWxmLnRvdGFsX3ZvdGVzICsgVUludDY0KDEpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNyAvLyAidG90YWxfdm90ZXMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG90YWxfdm90ZXMgZXhpc3RzCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYnl0ZWMgNyAvLyAidG90YWxfdm90ZXMiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxMTIKICAgIC8vIEBhYmltZXRob2QoKQogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDFhNTY2Zjc0NjUyMDcyNjU2MzZmNzI2NDY1NjQyMDczNzU2MzYzNjU3MzczNjY3NTZjNmM3OQogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgp2b3RlX2Vsc2VfYm9keUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxNDUKICAgIC8vIGVsaWYgb3B0aW9uID09IFVJbnQ2NCgyKToKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgID09CiAgICBieiB2b3RlX2Vsc2VfYm9keUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE0NgogICAgLy8gc2VsZi52b3Rlc19iID0gc2VsZi52b3Rlc19iICsgVUludDY0KDEpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAidm90ZXNfYiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlc19iIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzIgLy8gInZvdGVzX2IiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiB2b3RlX2FmdGVyX2lmX2Vsc2VAMTIKCnZvdGVfZWxzZV9ib2R5QDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE0NwogICAgLy8gZWxpZiBvcHRpb24gPT0gVUludDY0KDMpOgogICAgZHVwCiAgICBwdXNoaW50IDMKICAgID09CiAgICBieiB2b3RlX2Vsc2VfYm9keUA5CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE0OAogICAgLy8gc2VsZi52b3Rlc19jID0gc2VsZi52b3Rlc19jICsgVUludDY0KDEpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAidm90ZXNfYyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlc19jIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzMgLy8gInZvdGVzX2MiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiB2b3RlX2FmdGVyX2lmX2Vsc2VAMTIKCnZvdGVfZWxzZV9ib2R5QDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE1MAogICAgLy8gc2VsZi52b3Rlc19kID0gc2VsZi52b3Rlc19kICsgVUludDY0KDEpCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNCAvLyAidm90ZXNfZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi52b3Rlc19kIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjIDQgLy8gInZvdGVzX2QiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgYiB2b3RlX2FmdGVyX2lmX2Vsc2VAMTIKCgovLyBzbWFydF9jb250cmFjdHMuY2FtcHVzX3ZvdGluZ19kYXBwLmNvbnRyYWN0LkNhbXB1c1ZvdGluZ0RhcHAuZ2V0X3Jlc3VsdHNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfcmVzdWx0czoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTYwCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnZvdGVzX2EpLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gInZvdGVzX2EiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZXNfYSBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTYxCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnZvdGVzX2IpLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gInZvdGVzX2IiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZXNfYiBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTYyCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnZvdGVzX2MpLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gInZvdGVzX2MiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZXNfYyBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTYzCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnZvdGVzX2QpLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInZvdGVzX2QiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudm90ZXNfZCBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTU5LTE2NAogICAgLy8gcmV0dXJuIGFyYzQuVHVwbGUoKAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYudm90ZXNfYSksCiAgICAvLyAgICAgYXJjNC5VSW50NjQoc2VsZi52b3Rlc19iKSwKICAgIC8vICAgICBhcmM0LlVJbnQ2NChzZWxmLnZvdGVzX2MpLAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYudm90ZXNfZCksCiAgICAvLyApKQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxNTYKICAgIC8vIEBhYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGJ5dGVjIDExIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmNhbXB1c192b3RpbmdfZGFwcC5jb250cmFjdC5DYW1wdXNWb3RpbmdEYXBwLmdldF9wb2xsX2luZm9bcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfcG9sbF9pbmZvOgogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxODMKICAgIC8vIGFyYzQuU3RyaW5nKHNlbGYucXVlc3Rpb24pLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDEyIC8vICJxdWVzdGlvbiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5xdWVzdGlvbiBleGlzdHMKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE4NAogICAgLy8gYXJjNC5TdHJpbmcoc2VsZi5vcHRpb25fYSksCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTMgLy8gIm9wdGlvbl9hIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm9wdGlvbl9hIGV4aXN0cwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTg1CiAgICAvLyBhcmM0LlN0cmluZyhzZWxmLm9wdGlvbl9iKSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyAxNCAvLyAib3B0aW9uX2IiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3B0aW9uX2IgZXhpc3RzCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxODYKICAgIC8vIGFyYzQuU3RyaW5nKHNlbGYub3B0aW9uX2MpLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDE1IC8vICJvcHRpb25fYyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5vcHRpb25fYyBleGlzdHMKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE4NwogICAgLy8gYXJjNC5TdHJpbmcoc2VsZi5vcHRpb25fZCksCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTYgLy8gIm9wdGlvbl9kIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm9wdGlvbl9kIGV4aXN0cwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTg4CiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLm51bV9vcHRpb25zKSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA4IC8vICJudW1fb3B0aW9ucyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5udW1fb3B0aW9ucyBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTg5CiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLmVuZF90aW1lKSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJlbmRfdGltZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5lbmRfdGltZSBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTkwCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnRva2VuX2lkKSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJ0b2tlbl9pZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b2tlbl9pZCBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTkxCiAgICAvLyBhcmM0LlVJbnQ2NChzZWxmLnRvdGFsX3ZvdGVzKSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA3IC8vICJ0b3RhbF92b3RlcyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF92b3RlcyBleGlzdHMKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTgyLTE5MgogICAgLy8gcmV0dXJuIGFyYzQuVHVwbGUoKAogICAgLy8gICAgIGFyYzQuU3RyaW5nKHNlbGYucXVlc3Rpb24pLAogICAgLy8gICAgIGFyYzQuU3RyaW5nKHNlbGYub3B0aW9uX2EpLAogICAgLy8gICAgIGFyYzQuU3RyaW5nKHNlbGYub3B0aW9uX2IpLAogICAgLy8gICAgIGFyYzQuU3RyaW5nKHNlbGYub3B0aW9uX2MpLAogICAgLy8gICAgIGFyYzQuU3RyaW5nKHNlbGYub3B0aW9uX2QpLAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYubnVtX29wdGlvbnMpLAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYuZW5kX3RpbWUpLAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYudG9rZW5faWQpLAogICAgLy8gICAgIGFyYzQuVUludDY0KHNlbGYudG90YWxfdm90ZXMpLAogICAgLy8gKSkKICAgIGRpZyA4CiAgICBsZW4KICAgIHB1c2hpbnQgNDIKICAgICsKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHB1c2hieXRlcyAweDAwMmEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDkKICAgIGxlbgogICAgdW5jb3ZlciAyCiAgICArCiAgICBkdXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDgKICAgIGxlbgogICAgdW5jb3ZlciAyCiAgICArCiAgICBkdXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDcKICAgIGxlbgogICAgdW5jb3ZlciAyCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgNQogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTY2CiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBieXRlYyAxMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5jYW1wdXNfdm90aW5nX2RhcHAuY29udHJhY3QuQ2FtcHVzVm90aW5nRGFwcC5nZXRfdm90ZXJfc3RhdHVzW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3ZvdGVyX3N0YXR1czoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MTk0CiAgICAvLyBAYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE5NwogICAgLy8gcmV0dXJuIGFyYzQuVUludDY0KHNlbGYuaGFzX3ZvdGVkLmdldCh2b3Rlci5uYXRpdmUsIGRlZmF1bHQ9VUludDY0KDApKSkKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyAxMCAvLyAiaHYiCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBpbnRjXzAgLy8gMAogICAgY292ZXIgMgogICAgc2VsZWN0CiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjE5NAogICAgLy8gQGFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgYnl0ZWMgMTEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuY2FtcHVzX3ZvdGluZ19kYXBwLmNvbnRyYWN0LkNhbXB1c1ZvdGluZ0RhcHAuY2xvc2VfcG9sbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNsb3NlX3BvbGw6CiAgICAvLyBzbWFydF9jb250cmFjdHMvY2FtcHVzX3ZvdGluZ19kYXBwL2NvbnRyYWN0LnB5OjIwMgogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywgIk9ubHkgY3JlYXRvciBjYW4gY2xvc2UgcG9sbCIKICAgIHR4biBTZW5kZXIKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGNyZWF0b3IgY2FuIGNsb3NlIHBvbGwKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9jYW1wdXNfdm90aW5nX2RhcHAvY29udHJhY3QucHk6MjAzCiAgICAvLyBzZWxmLnBvbGxfYWN0aXZlID0gVUludDY0KDApCiAgICBieXRlYyA5IC8vICJwb2xsX2FjdGl2ZSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2NhbXB1c192b3RpbmdfZGFwcC9jb250cmFjdC5weToxOTkKICAgIC8vIEBhYmltZXRob2QoKQogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDBiNTA2ZjZjNmMyMDYzNmM2ZjczNjU2NAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAECCCYSAAd2b3Rlc19hB3ZvdGVzX2IHdm90ZXNfYwd2b3Rlc19kCGVuZF90aW1lCHRva2VuX2lkC3RvdGFsX3ZvdGVzC251bV9vcHRpb25zC3BvbGxfYWN0aXZlAmh2BBUffHUIcXVlc3Rpb24Ib3B0aW9uX2EIb3B0aW9uX2IIb3B0aW9uX2MIb3B0aW9uX2QHY3JlYXRvcjEYQAA6JwwoZycNKGcnDihnJw8oZycQKGcnCCJnKSJnKiJnKyJnJwQiZycFImcnETIDZycGImcnByJnJwkiZzEbQQA5MRkURDEYRIIGBO9Jr0oE8UmylwTR4j72BGIJFDEE9LQa+AS8HUpcNhoAjgYAGQDqAaUBywJ+ApcAMRmNAgAMAAEAMRhEMQAnCiJmI0MxGBRDNhoBSSJZJAhLARUSRFcCADYaAkkiWSQISwEVEkRXAgA2GgNJIlkkCEsBFRJEVwIANhoESSJZJAhLARUSRFcCADYaBUkiWSQISwEVEkRXAgA2GgZJFSUSRBc2GgdJFSUSRBc2GghJFSUSRBcxADIJEkRLAiQPREsCgQQOREsBRCcMTwhnJw1PB2cnDk8GZycPTwVnJxBPBGcnCE8DZykiZyoiZysiZycEImcyB08CCCcFTGcnETIJZycGTGcnByJnJwkjZyInBWVEFicLTFCwI0M2GgFJFSUSRBdJIicJZUQjEkQyByInBWVEDERJRCInCGVEDkQxACInCmNEFEQiJwZlREEACzEAIicGZURwAEREMQAnCksCSU4DZiMSQQA5IillRCMIKUxnIicHZUQjCCcHTGeAIBUffHUAGlZvdGUgcmVjb3JkZWQgc3VjY2Vzc2Z1bGx5sCNDSSQSQQAMIiplRCMIKkxnQv++SYEDEkEADCIrZUQjCCtMZ0L/qyInBGVEIwgnBExnQv+dIillRBYiKmVEFiIrZUQWIicEZUQWTwNPA1BPAlBMUCcLTFCwI0MiJwxlREkVFlcGAkxQIicNZURJFRZXBgJMUCInDmVESRUWVwYCTFAiJw9lREkVFlcGAkxQIicQZURJFRZXBgJMUCInCGVEFiInBWVEFiInBmVEFiInB2VEFksIFYEqCEkWVwYCgAIAKkxQSwkVTwIISRZXBgJPAkxQSwgVTwIISRZXBgJPAkxQSwcVTwIIFlcGAlBPBFBPA1BPAlBMUE8FUE8EUE8DUE8CUExQJwtMULAjQzYaAUkVgSASRCInCmMiTgJNFicLTFCwI0MxADIJEkQnCSJngBEVH3x1AAtQb2xsIGNsb3NlZLAjQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 7, "patch": 1 } }, "events": [], "templateVariables": {} }