{ "name": "AIAnalysisPayment", "structs": {}, "methods": [ { "name": "create_application", "args": [], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "desc": "Initialize the AI payment smart contract application.", "events": [], "recommendations": {} }, { "name": "initialize", "args": [ { "type": "address", "name": "treasury" }, { "type": "uint64", "name": "usdc_asset" }, { "type": "uint64", "name": "ai_price" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Configure the treasury, accepted USDC ASA ID, and initial AI analysis price.", "events": [], "recommendations": {} }, { "name": "set_service_price", "args": [ { "type": "uint64", "name": "new_price" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Update the AI analysis service price in microUSDC.", "events": [], "recommendations": {} }, { "name": "set_service_enabled", "args": [ { "type": "uint64", "name": "enabled" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Toggle service availability on/off.", "events": [], "recommendations": {} }, { "name": "set_treasury", "args": [ { "type": "address", "name": "new_treasury" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Update the treasury address.", "events": [], "recommendations": {} }, { "name": "record_payment", "args": [ { "type": "string", "name": "payment_id" }, { "type": "address", "name": "payer" }, { "type": "uint64", "name": "amount" }, { "type": "string", "name": "service_type" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Record verified x402 AI payment on-chain.\nPrevents duplicate payment IDs using BoxMap storage.", "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "\n FixChain AI Algorand Smart Contract for x402 AI Analysis Payment Registry.\n Maintains on-chain registry & state for paid AI-analysis access.\n - Records USDC payment IDs to prevent duplicate replay attacks using BoxMap storage.\n - Manages service pricing (microUSDC) and merchant treasury routing.\n - Toggles service availability.\n ", "networks": {}, "state": { "schema": { "global": { "ints": 5, "bytes": 2 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "admin": { "keyType": "AVMString", "valueType": "address", "key": "YWRtaW4=" }, "treasury": { "keyType": "AVMString", "valueType": "address", "key": "dHJlYXN1cnk=" }, "usdc_asset": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dXNkY19hc3NldA==" }, "ai_price": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YWlfcHJpY2U=" }, "service_enabled": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "c2VydmljZV9lbmFibGVk" }, "total_analyses": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxfYW5hbHlzZXM=" }, "total_usdc_received": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxfdXNkY19yZWNlaXZlZA==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "payment_records": { "keyType": "AVMString", "valueType": "AVMString", "prefix": "cGF5bWVudF9yZWNvcmRz" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 351 ], "errorMessage": "AI analysis service is disabled" }, { "pc": [ 392 ], "errorMessage": "Duplicate payment ID already recorded" }, { "pc": [ 198 ], "errorMessage": "Only admin can initialize config" }, { "pc": [ 267 ], "errorMessage": "Only admin can toggle service" }, { "pc": [ 244 ], "errorMessage": "Only admin can update price" }, { "pc": [ 288 ], "errorMessage": "Only admin can update treasury" }, { "pc": [ 366 ], "errorMessage": "Payment ID cannot be empty" }, { "pc": [ 360 ], "errorMessage": "Payment amount does not match current AI price" }, { "pc": [ 196, 242, 265, 286 ], "errorMessage": "check self.admin exists" }, { "pc": [ 356 ], "errorMessage": "check self.ai_price exists" }, { "pc": [ 348 ], "errorMessage": "check self.service_enabled exists" }, { "pc": [ 401 ], "errorMessage": "check self.total_analyses exists" }, { "pc": [ 410 ], "errorMessage": "check self.total_usdc_received exists" }, { "pc": [ 300, 333 ], "errorMessage": "invalid array length header" }, { "pc": [ 308, 341 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 172, 280, 318 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 180, 189, 235, 258, 326 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgOCAzMgogICAgYnl0ZWNibG9jayAiYWRtaW4iICJzZXJ2aWNlX2VuYWJsZWQiICJ0b3RhbF9hbmFseXNlcyIgInRvdGFsX3VzZGNfcmVjZWl2ZWQiICJhaV9wcmljZSIgInRyZWFzdXJ5IgogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6MTIKICAgIC8vIGNsYXNzIEFJQW5hbHlzaXNQYXltZW50KEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDExCiAgICBwdXNoYnl0ZXNzIDB4M2JkZDI3YTIgMHg4ZTYyZTEwNSAweDM2ZDFjMWM4IDB4ZmNkOGNhYWYgMHhkNWNiNzk0MCAvLyBtZXRob2QgImluaXRpYWxpemUoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiLCBtZXRob2QgInNldF9zZXJ2aWNlX3ByaWNlKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJzZXRfc2VydmljZV9lbmFibGVkKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJzZXRfdHJlYXN1cnkoYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJyZWNvcmRfcGF5bWVudChzdHJpbmcsYWRkcmVzcyx1aW50NjQsc3RyaW5nKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBpbml0aWFsaXplIHNldF9zZXJ2aWNlX3ByaWNlIHNldF9zZXJ2aWNlX2VuYWJsZWQgc2V0X3RyZWFzdXJ5IHJlY29yZF9wYXltZW50CiAgICBlcnIKCm1haW5fY3JlYXRlX05vT3BAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weToxMgogICAgLy8gY2xhc3MgQUlBbmFseXNpc1BheW1lbnQoQVJDNENvbnRyYWN0KToKICAgIHB1c2hieXRlcyAweDc1MmMzYWMwIC8vIG1ldGhvZCAiY3JlYXRlX2FwcGxpY2F0aW9uKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggY3JlYXRlX2FwcGxpY2F0aW9uCiAgICBlcnIKCgovLyBzbWFydF9jb250cmFjdHMuYWlfYW5hbHlzaXNfcGF5bWVudC5jb250cmFjdC5BSUFuYWx5c2lzUGF5bWVudC5jcmVhdGVfYXBwbGljYXRpb25bcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGVfYXBwbGljYXRpb246CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTozNQogICAgLy8gc2VsZi5hZG1pbiA9IFR4bi5zZW5kZXIKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjM2CiAgICAvLyBzZWxmLnNlcnZpY2VfZW5hYmxlZCA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMSAvLyAic2VydmljZV9lbmFibGVkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTozNwogICAgLy8gc2VsZi50b3RhbF9hbmFseXNlcyA9IFVJbnQ2NCgwKQogICAgYnl0ZWNfMiAvLyAidG90YWxfYW5hbHlzZXMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjM4CiAgICAvLyBzZWxmLnRvdGFsX3VzZGNfcmVjZWl2ZWQgPSBVSW50NjQoMCkKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3VzZGNfcmVjZWl2ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjMyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoY3JlYXRlPSJyZXF1aXJlIikKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWlfYW5hbHlzaXNfcGF5bWVudC5jb250cmFjdC5BSUFuYWx5c2lzUGF5bWVudC5pbml0aWFsaXplW3JvdXRpbmddKCkgLT4gdm9pZDoKaW5pdGlhbGl6ZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjQwCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6NTAKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IHNlbGYuYWRtaW4sICJPbmx5IGFkbWluIGNhbiBpbml0aWFsaXplIGNvbmZpZyIKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJhZG1pbiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hZG1pbiBleGlzdHMKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBhZG1pbiBjYW4gaW5pdGlhbGl6ZSBjb25maWcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjUxCiAgICAvLyBzZWxmLnRyZWFzdXJ5ID0gdHJlYXN1cnkKICAgIGJ5dGVjIDUgLy8gInRyZWFzdXJ5IgogICAgdW5jb3ZlciAzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6NTIKICAgIC8vIHNlbGYudXNkY19hc3NldCA9IHVzZGNfYXNzZXQKICAgIHB1c2hieXRlcyAidXNkY19hc3NldCIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjUzCiAgICAvLyBzZWxmLmFpX3ByaWNlID0gYWlfcHJpY2UKICAgIGJ5dGVjIDQgLy8gImFpX3ByaWNlIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjU0CiAgICAvLyBzZWxmLnNlcnZpY2VfZW5hYmxlZCA9IFVJbnQ2NCgxKQogICAgYnl0ZWNfMSAvLyAic2VydmljZV9lbmFibGVkIgogICAgaW50Y18xIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo0MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFpX2FuYWx5c2lzX3BheW1lbnQuY29udHJhY3QuQUlBbmFseXNpc1BheW1lbnQuc2V0X3NlcnZpY2VfcHJpY2Vbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfc2VydmljZV9wcmljZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjU2CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjU5CiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBzZWxmLmFkbWluLCAiT25seSBhZG1pbiBjYW4gdXBkYXRlIHByaWNlIgogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFkbWluIGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGFkbWluIGNhbiB1cGRhdGUgcHJpY2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjYwCiAgICAvLyBzZWxmLmFpX3ByaWNlID0gbmV3X3ByaWNlCiAgICBieXRlYyA0IC8vICJhaV9wcmljZSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo1NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFpX2FuYWx5c2lzX3BheW1lbnQuY29udHJhY3QuQUlBbmFseXNpc1BheW1lbnQuc2V0X3NlcnZpY2VfZW5hYmxlZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9zZXJ2aWNlX2VuYWJsZWQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo2MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo2NQogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gc2VsZi5hZG1pbiwgIk9ubHkgYWRtaW4gY2FuIHRvZ2dsZSBzZXJ2aWNlIgogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFkbWluIGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGFkbWluIGNhbiB0b2dnbGUgc2VydmljZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6NjYKICAgIC8vIHNlbGYuc2VydmljZV9lbmFibGVkID0gZW5hYmxlZAogICAgYnl0ZWNfMSAvLyAic2VydmljZV9lbmFibGVkIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWlfYW5hbHlzaXNfcGF5bWVudC5jb250cmFjdC5BSUFuYWx5c2lzUGF5bWVudC5zZXRfdHJlYXN1cnlbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfdHJlYXN1cnk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo2OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjcxCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBzZWxmLmFkbWluLCAiT25seSBhZG1pbiBjYW4gdXBkYXRlIHRyZWFzdXJ5IgogICAgdHhuIFNlbmRlcgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFkbWluIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFkbWluIGV4aXN0cwogICAgPT0KICAgIGFzc2VydCAvLyBPbmx5IGFkbWluIGNhbiB1cGRhdGUgdHJlYXN1cnkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjcyCiAgICAvLyBzZWxmLnRyZWFzdXJ5ID0gbmV3X3RyZWFzdXJ5CiAgICBieXRlYyA1IC8vICJ0cmVhc3VyeSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo2OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFpX2FuYWx5c2lzX3BheW1lbnQuY29udHJhY3QuQUlBbmFseXNpc1BheW1lbnQucmVjb3JkX3BheW1lbnRbcm91dGluZ10oKSAtPiB2b2lkOgpyZWNvcmRfcGF5bWVudDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgbGVuCiAgICBpbnRjXzMgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgZHVwCiAgICBpbnRjXzAgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo4NgogICAgLy8gYXNzZXJ0IHNlbGYuc2VydmljZV9lbmFibGVkID09IFVJbnQ2NCgxKSwgIkFJIGFuYWx5c2lzIHNlcnZpY2UgaXMgZGlzYWJsZWQiCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAic2VydmljZV9lbmFibGVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnNlcnZpY2VfZW5hYmxlZCBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIEFJIGFuYWx5c2lzIHNlcnZpY2UgaXMgZGlzYWJsZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5Ojg3CiAgICAvLyBhc3NlcnQgYW1vdW50ID09IHNlbGYuYWlfcHJpY2UsICJQYXltZW50IGFtb3VudCBkb2VzIG5vdCBtYXRjaCBjdXJyZW50IEFJIHByaWNlIgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gImFpX3ByaWNlIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFpX3ByaWNlIGV4aXN0cwogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gUGF5bWVudCBhbW91bnQgZG9lcyBub3QgbWF0Y2ggY3VycmVudCBBSSBwcmljZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6ODgKICAgIC8vIGFzc2VydCBwYXltZW50X2lkICE9IFN0cmluZygiIiksICJQYXltZW50IElEIGNhbm5vdCBiZSBlbXB0eSIKICAgIGRpZyAyCiAgICBwdXNoYnl0ZXMgIiIKICAgICE9CiAgICBhc3NlcnQgLy8gUGF5bWVudCBJRCBjYW5ub3QgYmUgZW1wdHkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5OjkwLTkxCiAgICAvLyAjIENoZWNrIGR1cGxpY2F0ZSBwYXltZW50IElEIHZpYSBCb3hNYXAgc3RvcmFnZQogICAgLy8gYXNzZXJ0IHBheW1lbnRfaWQgbm90IGluIHNlbGYucGF5bWVudF9yZWNvcmRzLCAiRHVwbGljYXRlIHBheW1lbnQgSUQgYWxyZWFkeSByZWNvcmRlZCIKICAgIHB1c2hieXRlcyAicGF5bWVudF9yZWNvcmRzIgogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gRHVwbGljYXRlIHBheW1lbnQgSUQgYWxyZWFkeSByZWNvcmRlZAogICAgLy8gc21hcnRfY29udHJhY3RzL2FpX2FuYWx5c2lzX3BheW1lbnQvY29udHJhY3QucHk6OTMtOTQKICAgIC8vICMgTWFyayBwYXltZW50IElEIGFzIHJlY29yZGVkIGluIEJveE1hcCBzdG9yYWdlCiAgICAvLyBzZWxmLnBheW1lbnRfcmVjb3Jkc1twYXltZW50X2lkXSA9IHNlcnZpY2VfdHlwZQogICAgZHVwCiAgICBib3hfZGVsCiAgICBwb3AKICAgIHN3YXAKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5Ojk2CiAgICAvLyBzZWxmLnRvdGFsX2FuYWx5c2VzICs9IFVJbnQ2NCgxKQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gInRvdGFsX2FuYWx5c2VzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX2FuYWx5c2VzIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzIgLy8gInRvdGFsX2FuYWx5c2VzIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9haV9hbmFseXNpc19wYXltZW50L2NvbnRyYWN0LnB5Ojk3CiAgICAvLyBzZWxmLnRvdGFsX3VzZGNfcmVjZWl2ZWQgKz0gYW1vdW50CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAidG90YWxfdXNkY19yZWNlaXZlZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF91c2RjX3JlY2VpdmVkIGV4aXN0cwogICAgKwogICAgYnl0ZWNfMyAvLyAidG90YWxfdXNkY19yZWNlaXZlZCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWlfYW5hbHlzaXNfcGF5bWVudC9jb250cmFjdC5weTo3NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAEIICYGBWFkbWluD3NlcnZpY2VfZW5hYmxlZA50b3RhbF9hbmFseXNlcxN0b3RhbF91c2RjX3JlY2VpdmVkCGFpX3ByaWNlCHRyZWFzdXJ5MRkURDEYQQArggUEO90nogSOYuEFBDbRwcgE/NjKrwTVy3lANhoAjgUAHgBdAHQAigCgAIAEdSw6wDYaAI4BAAEAKDEAZykiZyoiZysiZyNDNhoBSRUlEkQ2GgJJFSQSRBc2GgNJFSQSRBcxACIoZUQSRCcFTwNngAp1c2RjX2Fzc2V0TwJnJwRMZykjZyNDNhoBSRUkEkQXMQAiKGVEEkQnBExnI0M2GgFJFSQSRBcxACIoZUQSRClMZyNDNhoBSRUlEkQxACIoZUQSRCcFTGcjQzYaAUkiWYECCEsBFRJEVwIANhoCFSUSRDYaA0kVJBJEFzYaBEkiWYECCEsBFRJEVwIAIillRCMSRCInBGVESwISREsCgAATRIAPcGF5bWVudF9yZWNvcmRzTwNQSb1FARRESbxITL8iKmVEIwgqTGciK2VECCtMZyND", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }