{ "name": "NFTRevoke", "structs": {}, "methods": [ { "name": "create_application", "args": [ { "type": "asset", "name": "asset_id" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "asset_config_clawback", "args": [ { "type": "asset", "name": "asset" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "opt_in_to_asset", "args": [ { "type": "pay", "name": "mbrpay" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "grant_access", "args": [ { "type": "account", "name": "holder" }, { "type": "uint64", "name": "ends_at" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "revoke_access", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "emergency_revoke", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Allow immediate revocation before expiry (e.g., if the prescription was misused)", "events": [], "recommendations": {} }, { "name": "get_status", "args": [], "returns": { "type": "(address,uint64,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Returns (current holder, expiry time, active flag)", "events": [], "recommendations": {} }, { "name": "asset_transfer_from_app", "args": [ { "type": "asset", "name": "asset" }, { "type": "account", "name": "receiver" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 3, "bytes": 1 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "assetid": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YXNzZXRpZA==" }, "access_holder": { "keyType": "AVMString", "valueType": "address", "key": "YWNjZXNzX2hvbGRlcg==" }, "access_expires_at": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YWNjZXNzX2V4cGlyZXNfYXQ=" }, "access_active": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YWNjZXNzX2FjdGl2ZQ==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 412 ], "errorMessage": "Access already active" }, { "pc": [ 460 ], "errorMessage": "Access not yet expired" }, { "pc": [ 452, 505 ], "errorMessage": "No active access" }, { "pc": [ 135, 159, 189, 201, 213, 235, 257, 275 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 316, 564 ], "errorMessage": "asset exists" }, { "pc": [ 279 ], "errorMessage": "can only call when creating" }, { "pc": [ 138, 162, 192, 204, 216, 238, 260 ], "errorMessage": "can only call when not creating" }, { "pc": [ 410, 449, 502, 555 ], "errorMessage": "check self.access_active exists" }, { "pc": [ 458, 551 ], "errorMessage": "check self.access_expires_at exists" }, { "pc": [ 471, 516, 547 ], "errorMessage": "check self.access_holder exists" }, { "pc": [ 357, 428, 467, 512 ], "errorMessage": "check self.assetid exists" }, { "pc": [ 248 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgNAogICAgYnl0ZWNibG9jayAiYWNjZXNzX2FjdGl2ZSIgImFjY2Vzc19ob2xkZXIiICJhY2Nlc3NfZXhwaXJlc19hdCIgImFzc2V0aWQiCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjEzMQogICAgLy8gY2xhc3MgTkZUUmV2b2tlKEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9hZnRlcl9pZl9lbHNlQDE0CiAgICBwdXNoYnl0ZXNzIDB4M2NmMzFiMzEgMHg1NWQ0YzRjMyAweDE1NzQ1MzVhIDB4NmFmZTc5YTggMHhmNGMzMmFlYSAweGViMGZjMzVjIDB4MzZkZjM2MWEgMHhlYjdjNjNmZiAvLyBtZXRob2QgImNyZWF0ZV9hcHBsaWNhdGlvbihhc3NldCl2b2lkIiwgbWV0aG9kICJhc3NldF9jb25maWdfY2xhd2JhY2soYXNzZXQpdm9pZCIsIG1ldGhvZCAib3B0X2luX3RvX2Fzc2V0KHBheSl2b2lkIiwgbWV0aG9kICJncmFudF9hY2Nlc3MoYWNjb3VudCx1aW50NjQpdm9pZCIsIG1ldGhvZCAicmV2b2tlX2FjY2Vzcygpdm9pZCIsIG1ldGhvZCAiZW1lcmdlbmN5X3Jldm9rZSgpdm9pZCIsIG1ldGhvZCAiZ2V0X3N0YXR1cygpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCkiLCBtZXRob2QgImFzc2V0X3RyYW5zZmVyX2Zyb21fYXBwKGFzc2V0LGFjY291bnQpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fY3JlYXRlX2FwcGxpY2F0aW9uX3JvdXRlQDMgbWFpbl9hc3NldF9jb25maWdfY2xhd2JhY2tfcm91dGVANCBtYWluX29wdF9pbl90b19hc3NldF9yb3V0ZUA1IG1haW5fZ3JhbnRfYWNjZXNzX3JvdXRlQDYgbWFpbl9yZXZva2VfYWNjZXNzX3JvdXRlQDcgbWFpbl9lbWVyZ2VuY3lfcmV2b2tlX3JvdXRlQDggbWFpbl9nZXRfc3RhdHVzX3JvdXRlQDkgbWFpbl9hc3NldF90cmFuc2Zlcl9mcm9tX2FwcF9yb3V0ZUAxMAoKbWFpbl9hZnRlcl9pZl9lbHNlQDE0OgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxMzEKICAgIC8vIGNsYXNzIE5GVFJldm9rZShBUkM0Q29udHJhY3QpOgogICAgaW50Y18wIC8vIDAKICAgIHJldHVybgoKbWFpbl9hc3NldF90cmFuc2Zlcl9mcm9tX2FwcF9yb3V0ZUAxMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjI1CiAgICAvLyBAYWJpbWV0aG9kCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTMxCiAgICAvLyBjbGFzcyBORlRSZXZva2UoQVJDNENvbnRyYWN0KToKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGJ0b2kKICAgIHR4bmFzIEFzc2V0cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYXMgQWNjb3VudHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjI1CiAgICAvLyBAYWJpbWV0aG9kCiAgICBjYWxsc3ViIGFzc2V0X3RyYW5zZmVyX2Zyb21fYXBwCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2dldF9zdGF0dXNfcm91dGVAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjIxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiBnZXRfc3RhdHVzCiAgICBzd2FwCiAgICBpdG9iCiAgICBzd2FwCiAgICBpdG9iCiAgICBjb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2VtZXJnZW5jeV9yZXZva2Vfcm91dGVAODoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjA0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiBlbWVyZ2VuY3lfcmV2b2tlCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Jldm9rZV9hY2Nlc3Nfcm91dGVANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTg2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiByZXZva2VfYWNjZXNzCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2dyYW50X2FjY2Vzc19yb3V0ZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNzAKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjEzMQogICAgLy8gY2xhc3MgTkZUUmV2b2tlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hcyBBY2NvdW50cwogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNzAKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBncmFudF9hY2Nlc3MKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fb3B0X2luX3RvX2Fzc2V0X3JvdXRlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE1NAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTMxCiAgICAvLyBjbGFzcyBORlRSZXZva2UoQVJDNENvbnRyYWN0KToKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18xIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNTQKICAgIC8vIEBhYmltZXRob2QoKQogICAgY2FsbHN1YiBvcHRfaW5fdG9fYXNzZXQKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fYXNzZXRfY29uZmlnX2NsYXdiYWNrX3JvdXRlQDQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0NAogICAgLy8gQGFiaW1ldGhvZAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjEzMQogICAgLy8gY2xhc3MgTkZUUmV2b2tlKEFSQzRDb250cmFjdCk6CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBidG9pCiAgICB0eG5hcyBBc3NldHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTQ0CiAgICAvLyBAYWJpbWV0aG9kCiAgICBjYWxsc3ViIGFzc2V0X2NvbmZpZ19jbGF3YmFjawogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9jcmVhdGVfYXBwbGljYXRpb25fcm91dGVAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTM3CiAgICAvLyBAYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJOb09wIl0sIGNyZWF0ZT0icmVxdWlyZSIpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxMzEKICAgIC8vIGNsYXNzIE5GVFJldm9rZShBUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgdHhuYXMgQXNzZXRzCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjEzNwogICAgLy8gQGFiaW1ldGhvZChhbGxvd19hY3Rpb25zPVsiTm9PcCJdLCBjcmVhdGU9InJlcXVpcmUiKQogICAgY2FsbHN1YiBjcmVhdGVfYXBwbGljYXRpb24KICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMubmZ0LmNvbnRyYWN0Lk5GVFJldm9rZS5jcmVhdGVfYXBwbGljYXRpb24oYXNzZXRfaWQ6IHVpbnQ2NCkgLT4gdm9pZDoKY3JlYXRlX2FwcGxpY2F0aW9uOgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxMzctMTM4CiAgICAvLyBAYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJOb09wIl0sIGNyZWF0ZT0icmVxdWlyZSIpCiAgICAvLyBkZWYgY3JlYXRlX2FwcGxpY2F0aW9uKHNlbGYsIGFzc2V0X2lkOiBBc3NldCkgLT4gTm9uZToKICAgIHByb3RvIDEgMAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxMzkKICAgIC8vIHNlbGYuYXNzZXRpZCA9IGFzc2V0X2lkLmlkCiAgICBieXRlY18zIC8vICJhc3NldGlkIgogICAgZnJhbWVfZGlnIC0xCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNDAKICAgIC8vIHNlbGYuYWNjZXNzX2hvbGRlciA9IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGJ5dGVjXzEgLy8gImFjY2Vzc19ob2xkZXIiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0MQogICAgLy8gc2VsZi5hY2Nlc3NfZXhwaXJlc19hdCA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMiAvLyAiYWNjZXNzX2V4cGlyZXNfYXQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTQyCiAgICAvLyBzZWxmLmFjY2Vzc19hY3RpdmUgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzAgLy8gImFjY2Vzc19hY3RpdmUiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5uZnQuY29udHJhY3QuTkZUUmV2b2tlLmFzc2V0X2NvbmZpZ19jbGF3YmFjayhhc3NldDogdWludDY0KSAtPiB2b2lkOgphc3NldF9jb25maWdfY2xhd2JhY2s6CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0NC0xNDUKICAgIC8vIEBhYmltZXRob2QKICAgIC8vIGRlZiBhc3NldF9jb25maWdfY2xhd2JhY2soc2VsZiwgYXNzZXQ6IEFzc2V0KSAtPiBOb25lOgogICAgcHJvdG8gMSAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0NgogICAgLy8gYXNzZXJ0IGFzc2V0Lm1hbmFnZXIgPT0gVHhuLnNlbmRlcgogICAgZnJhbWVfZGlnIC0xCiAgICBhc3NldF9wYXJhbXNfZ2V0IEFzc2V0TWFuYWdlcgogICAgYXNzZXJ0IC8vIGFzc2V0IGV4aXN0cwogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNDctMTUyCiAgICAvLyBpdHhuLkFzc2V0Q29uZmlnKAogICAgLy8gICAgIGNvbmZpZ19hc3NldD1hc3NldCwKICAgIC8vICAgICBtYW5hZ2VyPSBUeG4uc2VuZGVyLAogICAgLy8gICAgIGNsYXdiYWNrPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsICMgU2V0IGNsYXdiYWNrIHRvIGFwcCBhZGRyZXNzCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0OQogICAgLy8gbWFuYWdlcj0gVHhuLnNlbmRlciwKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTUwCiAgICAvLyBjbGF3YmFjaz1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLCAjIFNldCBjbGF3YmFjayB0byBhcHAgYWRkcmVzcwogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRDbGF3YmFjawogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE1hbmFnZXIKICAgIGZyYW1lX2RpZyAtMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNDcKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICBwdXNoaW50IDMgLy8gYWNmZwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNTEKICAgIC8vIGZlZT0wLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE0Ny0xNTIKICAgIC8vIGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgY29uZmlnX2Fzc2V0PWFzc2V0LAogICAgLy8gICAgIG1hbmFnZXI9IFR4bi5zZW5kZXIsCiAgICAvLyAgICAgY2xhd2JhY2s9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywgIyBTZXQgY2xhd2JhY2sgdG8gYXBwIGFkZHJlc3MKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMubmZ0LmNvbnRyYWN0Lk5GVFJldm9rZS5vcHRfaW5fdG9fYXNzZXQobWJycGF5OiB1aW50NjQpIC0+IHZvaWQ6Cm9wdF9pbl90b19hc3NldDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTU0LTE1NQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICAvLyBkZWYgb3B0X2luX3RvX2Fzc2V0KHNlbGYsIG1icnBheTogZ3R4bi5QYXltZW50VHJhbnNhY3Rpb24pIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTU2CiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBHbG9iYWwuY3JlYXRvcl9hZGRyZXNzCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTU3CiAgICAvLyBhc3NlcnQgbm90IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MuaXNfb3B0ZWRfaW4oQXNzZXQoc2VsZi5hc3NldGlkKSkKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAiYXNzZXRpZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc3NldGlkIGV4aXN0cwogICAgc3dhcAogICAgZGlnIDEKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBhc3NlcnQgbWJycGF5LnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIGZyYW1lX2RpZyAtMQogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE2MQogICAgLy8gYXNzZXJ0IG1icnBheS5hbW91bnQgPT0gR2xvYmFsLm1pbl9iYWxhbmNlICsgR2xvYmFsLmFzc2V0X29wdF9pbl9taW5fYmFsYW5jZQogICAgZnJhbWVfZGlnIC0xCiAgICBndHhucyBBbW91bnQKICAgIGdsb2JhbCBNaW5CYWxhbmNlCiAgICBnbG9iYWwgQXNzZXRPcHRJbk1pbkJhbGFuY2UKICAgICsKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTYzLTE2OAogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIHhmZXJfYXNzZXQ9IHNlbGYuYXNzZXRpZCwKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICBhc3NldF9hbW91bnQ9IDAsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE2NQogICAgLy8gYXNzZXRfcmVjZWl2ZXI9IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNjYKICAgIC8vIGFzc2V0X2Ftb3VudD0gMCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKICAgIGl0eG5fZmllbGQgWGZlckFzc2V0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE2MwogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgaW50Y18yIC8vIGF4ZmVyCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE2NwogICAgLy8gZmVlPTAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTYzLTE2OAogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIHhmZXJfYXNzZXQ9IHNlbGYuYXNzZXRpZCwKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICBhc3NldF9hbW91bnQ9IDAsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCgoKLy8gc21hcnRfY29udHJhY3RzLm5mdC5jb250cmFjdC5ORlRSZXZva2UuZ3JhbnRfYWNjZXNzKGhvbGRlcjogYnl0ZXMsIGVuZHNfYXQ6IHVpbnQ2NCkgLT4gdm9pZDoKZ3JhbnRfYWNjZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNzAtMTcxCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIC8vIGRlZiBncmFudF9hY2Nlc3Moc2VsZiwgaG9sZGVyOiBBY2NvdW50LCBlbmRzX2F0OiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTcyCiAgICAvLyBhc3NlcnQgc2VsZi5hY2Nlc3NfYWN0aXZlID09IDAsICJBY2Nlc3MgYWxyZWFkeSBhY3RpdmUiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYWNjZXNzX2FjdGl2ZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hY2Nlc3NfYWN0aXZlIGV4aXN0cwogICAgIQogICAgYXNzZXJ0IC8vIEFjY2VzcyBhbHJlYWR5IGFjdGl2ZQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxNzQKICAgIC8vIHNlbGYuYWNjZXNzX2hvbGRlciA9IGhvbGRlcgogICAgYnl0ZWNfMSAvLyAiYWNjZXNzX2hvbGRlciIKICAgIGZyYW1lX2RpZyAtMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTc1CiAgICAvLyBzZWxmLmFjY2Vzc19leHBpcmVzX2F0ID0gZW5kc19hdAogICAgYnl0ZWNfMiAvLyAiYWNjZXNzX2V4cGlyZXNfYXQiCiAgICBmcmFtZV9kaWcgLTEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE3NgogICAgLy8gc2VsZi5hY2Nlc3NfYWN0aXZlID0gVUludDY0KDEpCiAgICBieXRlY18wIC8vICJhY2Nlc3NfYWN0aXZlIgogICAgaW50Y18xIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE3OC0xODQKICAgIC8vICMgU2VuZCB0aGUgTkZUIHRvIHRoZSBob2xkZXIKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj1ob2xkZXIsCiAgICAvLyAgICAgeGZlcl9hc3NldD1zZWxmLmFzc2V0aWQsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50PTEsCiAgICAvLyAgICAgZmVlPTAKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTgxCiAgICAvLyB4ZmVyX2Fzc2V0PXNlbGYuYXNzZXRpZCwKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJhc3NldGlkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFzc2V0aWQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE4MgogICAgLy8gYXNzZXRfYW1vdW50PTEsCiAgICBpbnRjXzEgLy8gMQogICAgaXR4bl9maWVsZCBBc3NldEFtb3VudAogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIGZyYW1lX2RpZyAtMgogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE3OC0xNzkKICAgIC8vICMgU2VuZCB0aGUgTkZUIHRvIHRoZSBob2xkZXIKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIGludGNfMiAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxODMKICAgIC8vIGZlZT0wCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTc4LTE4NAogICAgLy8gIyBTZW5kIHRoZSBORlQgdG8gdGhlIGhvbGRlcgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPWhvbGRlciwKICAgIC8vICAgICB4ZmVyX2Fzc2V0PXNlbGYuYXNzZXRpZCwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9MSwKICAgIC8vICAgICBmZWU9MAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5uZnQuY29udHJhY3QuTkZUUmV2b2tlLnJldm9rZV9hY2Nlc3MoKSAtPiB2b2lkOgpyZXZva2VfYWNjZXNzOgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxODgKICAgIC8vIGFzc2VydCBzZWxmLmFjY2Vzc19hY3RpdmUgPT0gMSwgIk5vIGFjdGl2ZSBhY2Nlc3MiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiYWNjZXNzX2FjdGl2ZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hY2Nlc3NfYWN0aXZlIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gTm8gYWN0aXZlIGFjY2VzcwogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxODkKICAgIC8vIGFzc2VydCBHbG9iYWwubGF0ZXN0X3RpbWVzdGFtcCA+IHNlbGYuYWNjZXNzX2V4cGlyZXNfYXQsICJBY2Nlc3Mgbm90IHlldCBleHBpcmVkIgogICAgZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gImFjY2Vzc19leHBpcmVzX2F0IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFjY2Vzc19leHBpcmVzX2F0IGV4aXN0cwogICAgPgogICAgYXNzZXJ0IC8vIEFjY2VzcyBub3QgeWV0IGV4cGlyZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTkxLTE5OAogICAgLy8gIyBDbGF3YmFjayB0aGUgTkZUIGZyb20gdGhlIGhvbGRlcgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgeGZlcl9hc3NldD1zZWxmLmFzc2V0aWQsCiAgICAvLyAgICAgYXNzZXRfc2VuZGVyPXNlbGYuYWNjZXNzX2hvbGRlciwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9MSwKICAgIC8vICAgICBmZWU9MAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxOTMKICAgIC8vIGFzc2V0X3JlY2VpdmVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxOTQKICAgIC8vIHhmZXJfYXNzZXQ9c2VsZi5hc3NldGlkLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gImFzc2V0aWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRpZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTk1CiAgICAvLyBhc3NldF9zZW5kZXI9c2VsZi5hY2Nlc3NfaG9sZGVyLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImFjY2Vzc19ob2xkZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYWNjZXNzX2hvbGRlciBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTk2CiAgICAvLyBhc3NldF9hbW91bnQ9MSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBpdHhuX2ZpZWxkIEFzc2V0U2VuZGVyCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjE5MS0xOTIKICAgIC8vICMgQ2xhd2JhY2sgdGhlIE5GVCBmcm9tIHRoZSBob2xkZXIKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIGludGNfMiAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToxOTcKICAgIC8vIGZlZT0wCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MTkxLTE5OAogICAgLy8gIyBDbGF3YmFjayB0aGUgTkZUIGZyb20gdGhlIGhvbGRlcgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgeGZlcl9hc3NldD1zZWxmLmFzc2V0aWQsCiAgICAvLyAgICAgYXNzZXRfc2VuZGVyPXNlbGYuYWNjZXNzX2hvbGRlciwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9MSwKICAgIC8vICAgICBmZWU9MAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjAwCiAgICAvLyBzZWxmLmFjY2Vzc19hY3RpdmUgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzAgLy8gImFjY2Vzc19hY3RpdmUiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjAxCiAgICAvLyBzZWxmLmFjY2Vzc19ob2xkZXIgPSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBieXRlY18xIC8vICJhY2Nlc3NfaG9sZGVyIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMDIKICAgIC8vIHNlbGYuYWNjZXNzX2V4cGlyZXNfYXQgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzIgLy8gImFjY2Vzc19leHBpcmVzX2F0IgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICByZXRzdWIKCgovLyBzbWFydF9jb250cmFjdHMubmZ0LmNvbnRyYWN0Lk5GVFJldm9rZS5lbWVyZ2VuY3lfcmV2b2tlKCkgLT4gdm9pZDoKZW1lcmdlbmN5X3Jldm9rZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjA3CiAgICAvLyBhc3NlcnQgc2VsZi5hY2Nlc3NfYWN0aXZlID09IDEsICJObyBhY3RpdmUgYWNjZXNzIgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFjY2Vzc19hY3RpdmUiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYWNjZXNzX2FjdGl2ZSBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIE5vIGFjdGl2ZSBhY2Nlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjA5LTIxNQogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgeGZlcl9hc3NldD1zZWxmLmFzc2V0aWQsCiAgICAvLyAgICAgYXNzZXRfc2VuZGVyPXNlbGYuYWNjZXNzX2hvbGRlciwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9MSwKICAgIC8vICAgICBmZWU9MAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMTAKICAgIC8vIGFzc2V0X3JlY2VpdmVyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMTEKICAgIC8vIHhmZXJfYXNzZXQ9c2VsZi5hc3NldGlkLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gImFzc2V0aWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYXNzZXRpZCBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjEyCiAgICAvLyBhc3NldF9zZW5kZXI9c2VsZi5hY2Nlc3NfaG9sZGVyLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImFjY2Vzc19ob2xkZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYWNjZXNzX2hvbGRlciBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjEzCiAgICAvLyBhc3NldF9hbW91bnQ9MSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBpdHhuX2ZpZWxkIEFzc2V0U2VuZGVyCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIwOQogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgaW50Y18yIC8vIGF4ZmVyCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIxNAogICAgLy8gZmVlPTAKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMDktMjE1CiAgICAvLyBpdHhuLkFzc2V0VHJhbnNmZXIoCiAgICAvLyAgICAgYXNzZXRfcmVjZWl2ZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICB4ZmVyX2Fzc2V0PXNlbGYuYXNzZXRpZCwKICAgIC8vICAgICBhc3NldF9zZW5kZXI9c2VsZi5hY2Nlc3NfaG9sZGVyLAogICAgLy8gICAgIGFzc2V0X2Ftb3VudD0xLAogICAgLy8gICAgIGZlZT0wCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMTcKICAgIC8vIHNlbGYuYWNjZXNzX2FjdGl2ZSA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMCAvLyAiYWNjZXNzX2FjdGl2ZSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMTgKICAgIC8vIHNlbGYuYWNjZXNzX2hvbGRlciA9IEdsb2JhbC56ZXJvX2FkZHJlc3MKICAgIGJ5dGVjXzEgLy8gImFjY2Vzc19ob2xkZXIiCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIxOQogICAgLy8gc2VsZi5hY2Nlc3NfZXhwaXJlc19hdCA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMiAvLyAiYWNjZXNzX2V4cGlyZXNfYXQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5uZnQuY29udHJhY3QuTkZUUmV2b2tlLmdldF9zdGF0dXMoKSAtPiBieXRlcywgdWludDY0LCB1aW50NjQ6CmdldF9zdGF0dXM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIyNAogICAgLy8gcmV0dXJuIHNlbGYuYWNjZXNzX2hvbGRlciwgc2VsZi5hY2Nlc3NfZXhwaXJlc19hdCwgc2VsZi5hY2Nlc3NfYWN0aXZlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAiYWNjZXNzX2hvbGRlciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hY2Nlc3NfaG9sZGVyIGV4aXN0cwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gImFjY2Vzc19leHBpcmVzX2F0IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFjY2Vzc19leHBpcmVzX2F0IGV4aXN0cwogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFjY2Vzc19hY3RpdmUiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYWNjZXNzX2FjdGl2ZSBleGlzdHMKICAgIHJldHN1YgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5uZnQuY29udHJhY3QuTkZUUmV2b2tlLmFzc2V0X3RyYW5zZmVyX2Zyb21fYXBwKGFzc2V0OiB1aW50NjQsIHJlY2VpdmVyOiBieXRlcykgLT4gdm9pZDoKYXNzZXRfdHJhbnNmZXJfZnJvbV9hcHA6CiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIyNS0yMjYKICAgIC8vIEBhYmltZXRob2QKICAgIC8vIGRlZiBhc3NldF90cmFuc2Zlcl9mcm9tX2FwcChzZWxmLCBhc3NldDogQXNzZXQsIHJlY2VpdmVyOiBBY2NvdW50ICkgLT4gTm9uZToKICAgIHByb3RvIDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMjcKICAgIC8vIGFzc2VydCBhc3NldC5tYW5hZ2VyID09IFR4bi5zZW5kZXIKICAgIGZyYW1lX2RpZyAtMgogICAgYXNzZXRfcGFyYW1zX2dldCBBc3NldE1hbmFnZXIKICAgIGFzc2VydCAvLyBhc3NldCBleGlzdHMKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjI4LTIzNAogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIHNlbmRlciA9IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgYXNzZXRfcmVjZWl2ZXIgPSByZWNlaXZlciwKICAgIC8vICAgICB4ZmVyX2Fzc2V0ID0gYXNzZXQsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50ID0gMSwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjI5CiAgICAvLyBzZW5kZXIgPSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9uZnQvY29udHJhY3QucHk6MjMyCiAgICAvLyBhc3NldF9hbW91bnQgPSAxLAogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgQXNzZXRBbW91bnQKICAgIGZyYW1lX2RpZyAtMgogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIGZyYW1lX2RpZyAtMQogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICBpdHhuX2ZpZWxkIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMjgKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIGludGNfMiAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL25mdC9jb250cmFjdC5weToyMzMKICAgIC8vIGZlZT0wLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvbmZ0L2NvbnRyYWN0LnB5OjIyOC0yMzQKICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICBzZW5kZXIgPSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyID0gcmVjZWl2ZXIsCiAgICAvLyAgICAgeGZlcl9hc3NldCA9IGFzc2V0LAogICAgLy8gICAgIGFzc2V0X2Ftb3VudCA9IDEsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiADAAEEJgQNYWNjZXNzX2FjdGl2ZQ1hY2Nlc3NfaG9sZGVyEWFjY2Vzc19leHBpcmVzX2F0B2Fzc2V0aWQxG0EAP4IIBDzzGzEEVdTEwwQVdFNaBGr+eagE9MMq6gTrD8NcBDbfNhoE63xj/zYaAI4IAI4AfABmAFAARAA4ABoAAiJDMRkURDEYRDYaARfAMDYaAhfAHIgBkyNDMRkURDEYRIgBekwWTBZOAlBMUIAEFR98dUxQsCNDMRkURDEYRIgBLyNDMRkURDEYRIgA7iNDMRkURDEYRDYaARfAHDYaAheIAK4jQzEZFEQxGEQxFiMJSTgQIxJEiABbI0MxGRREMRhENhoBF8AwiAAnI0MxGRREMRgURDYaARfAMIgAAiNDigEAK4v/ZykyA2cqImcoImeJigEAi/9xB0QxABJEsTEAMgqyLLIpi/+yIYEDshAisgGziYoBADEAMgkSRDIKIitlRExLAXAARQEURIv/OAcyChJEi/84CDIBMhAIEkSxMgoishKyFLIRJLIQIrIBs4mKAgAiKGVEFEQpi/5nKov/ZygjZ7EiK2VEI7ISshGL/rIUJLIQIrIBs4kiKGVEIxJEMgciKmVEDUSxMgoiK2VEIillRCOyErITshGyFCSyECKyAbMoImcpMgNnKiJniSIoZUQjEkSxMgoiK2VEIillRCOyErITshGyFCSyECKyAbMoImcpMgNnKiJniSIpZUQiKmVEIihlRImKAgCL/nEHRDEAEkSxMgojshKL/rIRi/+yFLIAJLIQIrIBs4k=", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 4, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }