{ "name": "AccessControl", "structs": {}, "methods": [ { "name": "initialize", "args": [], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "desc": "Called only on contract creation.", "events": [], "recommendations": {} }, { "name": "opt_in", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "desc": "Accounts must opt in to use local state.", "events": [], "recommendations": {} }, { "name": "add_admin", "args": [ { "type": "address", "name": "admin" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "remove_admin", "args": [ { "type": "address", "name": "admin" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 1 }, "local": { "ints": 0, "bytes": 1 } }, "keys": { "global": { "super_admin": { "keyType": "AVMString", "valueType": "address", "key": "c3VwZXJfYWRtaW4=" } }, "local": { "admins": { "keyType": "AVMString", "valueType": "bool", "key": "YWRtaW5z" } }, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 182, 204 ], "errorMessage": "Not admin" }, { "pc": [ 179, 201 ], "errorMessage": "check self.admins exists for account" }, { "pc": [ 147 ], "errorMessage": "check self.super_admin exists" }, { "pc": [ 173, 195 ], "errorMessage": "invalid number of bytes for arc4.static_array" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgMzIKICAgIGJ5dGVjYmxvY2sgImFkbWlucyIgInN1cGVyX2FkbWluIiAweDgwIGJhc2UzMihSR1hDRElUT0pGN0hRUjVLT1ZVWE5RTkVEQldUTjRVUUZISUVKWlRaUUxJTjJDTU5FVDJRKQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6Ny04CiAgICAvLyAjIFJHWENESVRPSkY3SFFSNUtPVlVYTlFORURCV1RONFVRRkhJRUpaVFpRTElOMkNNTkVUMjJGWllKV1EKICAgIC8vIHNlbGYuc3VwZXJfYWRtaW4gPSBHbG9iYWxTdGF0ZShBZGRyZXNzKCJSR1hDRElUT0pGN0hRUjVLT1ZVWE5RTkVEQldUTjRVUUZISUVKWlRaUUxJTjJDTU5FVDIyRlpZSldRIiksIGtleT0ic3VwZXJfYWRtaW4iKQogICAgYnl0ZWNfMSAvLyAic3VwZXJfYWRtaW4iCiAgICBieXRlY18zIC8vIGFkZHIgUkdYQ0RJVE9KRjdIUVI1S09WVVhOUU5FREJXVE40VVFGSElFSlpUWlFMSU4yQ01ORVQyMkZaWUpXUQogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6NQogICAgLy8gY2xhc3MgQWNjZXNzQ29udHJvbChBUkM0Q29udHJhY3QpOgogICAgcHVzaGJ5dGVzIDB4MzBjNmQ1OGEgLy8gbWV0aG9kICJvcHRfaW4oKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX29wdF9pbl9yb3V0ZUA0CgptYWluX3N3aXRjaF9jYXNlX25leHRANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjUKICAgIC8vIGNsYXNzIEFjY2Vzc0NvbnRyb2woQVJDNENvbnRyYWN0KToKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJ6IG1haW5fY3JlYXRlX05vT3BAMTAKICAgIHB1c2hieXRlc3MgMHgwNTQ2ODQzNiAweDQ4MjhjZDJkIC8vIG1ldGhvZCAiYWRkX2FkbWluKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAicmVtb3ZlX2FkbWluKGFkZHJlc3Mpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGFkZF9hZG1pbiByZW1vdmVfYWRtaW4KICAgIGVycgoKbWFpbl9jcmVhdGVfTm9PcEAxMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjUKICAgIC8vIGNsYXNzIEFjY2Vzc0NvbnRyb2woQVJDNENvbnRyYWN0KToKICAgIHB1c2hieXRlcyAweGZkMmM5M2NkIC8vIG1ldGhvZCAiaW5pdGlhbGl6ZSgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5faW5pdGlhbGl6ZV9yb3V0ZUAxMQogICAgZXJyCgptYWluX2luaXRpYWxpemVfcm91dGVAMTE6CiAgICAvLyBzbWFydF9jb250cmFjdHMvQWNjZXNzQ29udHJvbC9jb250cmFjdC5weToxNC0xNQogICAgLy8gIyBIYXJkY29kZWQgc3VwZXIgYWRtaW4KICAgIC8vIHNlbGYuc3VwZXJfYWRtaW4udmFsdWUgPSBBZGRyZXNzKCJSR1hDRElUT0pGN0hRUjVLT1ZVWE5RTkVEQldUTjRVUUZISUVKWlRaUUxJTjJDTU5FVDIyRlpZSldRIikKICAgIGJ5dGVjXzEgLy8gInN1cGVyX2FkbWluIgogICAgYnl0ZWNfMyAvLyBhZGRyIFJHWENESVRPSkY3SFFSNUtPVlVYTlFORURCV1RONFVRRkhJRUpaVFpRTElOMkNNTkVUMjJGWllKV1EKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvQWNjZXNzQ29udHJvbC9jb250cmFjdC5weToxMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX29wdF9pbl9yb3V0ZUA0OgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MTcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChhbGxvd19hY3Rpb25zPVsiT3B0SW4iXSkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMCAvLyBPcHRJbgogICAgPT0KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAmJgogICAgYXNzZXJ0CiAgICBiIG9wdF9pbgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5BY2Nlc3NDb250cm9sLmNvbnRyYWN0LkFjY2Vzc0NvbnRyb2wub3B0X2luW3JvdXRpbmddKCkgLT4gdm9pZDoKb3B0X2luOgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MjAKICAgIC8vIHNlbGYuYWRtaW5zW1R4bi5zZW5kZXJdID0gYXJjNC5Cb29sKFR4bi5zZW5kZXIgPT0gc2VsZi5zdXBlcl9hZG1pbi52YWx1ZSkKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18xIC8vICJzdXBlcl9hZG1pbiIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zdXBlcl9hZG1pbiBleGlzdHMKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICB0eG4gU2VuZGVyCiAgICBieXRlY18wIC8vICJhZG1pbnMiCiAgICB1bmNvdmVyIDIKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjE3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoYWxsb3dfYWN0aW9ucz1bIk9wdEluIl0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLkFjY2Vzc0NvbnRyb2wuY29udHJhY3QuQWNjZXNzQ29udHJvbC5hZGRfYWRtaW5bcm91dGluZ10oKSAtPiB2b2lkOgphZGRfYWRtaW46CiAgICAvLyBzbWFydF9jb250cmFjdHMvQWNjZXNzQ29udHJvbC9jb250cmFjdC5weToyMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBhc3NlcnQgc2VsZi5hZG1pbnNbVHhuLnNlbmRlcl0gPT0gYXJjNC5Cb29sKFRydWUpLCAiTm90IGFkbWluIgogICAgdHhuIFNlbmRlcgogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzAgLy8gImFkbWlucyIKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmFkbWlucyBleGlzdHMgZm9yIGFjY291bnQKICAgIGJ5dGVjXzIgLy8gMHg4MAogICAgPT0KICAgIGFzc2VydCAvLyBOb3QgYWRtaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjI1CiAgICAvLyBzZWxmLmFkbWluc1thZG1pbi5uYXRpdmVdID0gYXJjNC5Cb29sKFRydWUpCiAgICBieXRlY18wIC8vICJhZG1pbnMiCiAgICAvLyBzbWFydF9jb250cmFjdHMvQWNjZXNzQ29udHJvbC9jb250cmFjdC5weToyNAogICAgLy8gYXNzZXJ0IHNlbGYuYWRtaW5zW1R4bi5zZW5kZXJdID09IGFyYzQuQm9vbChUcnVlKSwgIk5vdCBhZG1pbiIKICAgIGJ5dGVjXzIgLy8gMHg4MAogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MjUKICAgIC8vIHNlbGYuYWRtaW5zW2FkbWluLm5hdGl2ZV0gPSBhcmM0LkJvb2woVHJ1ZSkKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjIyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuQWNjZXNzQ29udHJvbC5jb250cmFjdC5BY2Nlc3NDb250cm9sLnJlbW92ZV9hZG1pbltyb3V0aW5nXSgpIC0+IHZvaWQ6CnJlbW92ZV9hZG1pbjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9BY2Nlc3NDb250cm9sL2NvbnRyYWN0LnB5OjI3CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MjkKICAgIC8vIGFzc2VydCBzZWxmLmFkbWluc1tUeG4uc2VuZGVyXSA9PSBhcmM0LkJvb2woVHJ1ZSksICJOb3QgYWRtaW4iCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWNfMCAvLyAiYWRtaW5zIgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuYWRtaW5zIGV4aXN0cyBmb3IgYWNjb3VudAogICAgYnl0ZWNfMiAvLyAweDgwCiAgICA9PQogICAgYXNzZXJ0IC8vIE5vdCBhZG1pbgogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MzAKICAgIC8vIHNlbGYuYWRtaW5zW2FkbWluLm5hdGl2ZV0gPSBhcmM0LkJvb2woRmFsc2UpCiAgICBieXRlY18wIC8vICJhZG1pbnMiCiAgICBwdXNoYnl0ZXMgMHgwMAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL0FjY2Vzc0NvbnRyb2wvY29udHJhY3QucHk6MjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyADAQAgJgQGYWRtaW5zC3N1cGVyX2FkbWluAYAgia4hom5JfnhHqnVpdsGkGG028pAp0ETmeYLQ3QmNJPUxGEAAAykrZ4AEMMbVijYaAI4BADIxGRREMRhBABaCAgQFRoQ2BEgozS02GgCOAgA1AEsAgAT9LJPNNhoAjgEAAQApK2ciQzEZIhIxGBBEQgAAIyllRDEAEoABACNPAlQxAChPAmYiQzYaAUkVJBJEMQAjKGNEKhJEKCpmIkM2GgFJFSQSRDEAIyhjRCoSRCiAAQBmIkM=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 7, "patch": 1 } }, "events": [], "templateVariables": {} }