{ "name": "DynamicArrayContract", "structs": {}, "methods": [ { "name": "test_static_elements", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_dynamic_elements", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_mixed_single_dynamic_elements", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_mixed_multiple_dynamic_elements", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_nested_struct_replacement", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_nested_tuple_modification", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 809, 832, 856, 940, 963, 1123, 1146 ], "errorMessage": "Index access is out of bounds" }, { "pc": [ 240, 252, 261, 273, 285, 297 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 314 ], "errorMessage": "can only call when creating" }, { "pc": [ 243, 255, 264, 276, 288, 300 ], "errorMessage": "can only call when not creating" }, { "pc": [ 1422 ], "errorMessage": "tup1 does not match tup2" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAyIDEgMCA0CiAgICBieXRlY2Jsb2NrIDB4IDB4MDAwNDAwMDcwMDAxNjEwMDAzNjI2NTY1IDB4MDAwMjAwMDAwMDAwMDAwMDAwMDMwNDA1MDAwMDA0MDAwMDAwMDAwMDJhZmYgMHgwMDAwMDAwMDAwMDAwMDAzMDQwNSAweDAwMDAwNDAwMDAwMDAwMDAyYWZmIDB4MDAwNDAwMTEwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NDAwMDE2MSAweDAwMDIwMDAwMDQwMDAwMDAwMDAwMDAxMjAwMDAwMDAwMDAwMDAwMDMwMDAzNjI2NTY1IDB4MDAwMDAwMDAwMDAwMDAwMzAwMTIwMDAwMDQwMDAwMDAwMDAwMDAwMTYxIDB4MDAwMDA0MDAwMDAwMDAwMDAwMWMwMDAwMDAwMDAwMDAwMDAzMDAyMTAwMDAwNDAwMDAwMDAwMDAwMDAzNjI2NTY1MDAwNDAwMDEwMDAyMDAwMzAwMDQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MzgKICAgIC8vIGNsYXNzIER5bmFtaWNBcnJheUNvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9iYXJlX3JvdXRpbmdAMTEKICAgIHB1c2hieXRlc3MgMHg1NTcxNTgyNyAweDcxM2RkNmRiIDB4MzcxNThhYWMgMHg4NTcwYmUzYiAweDUxYWE4YzQ5IDB4MjgzYTE4NmYgLy8gbWV0aG9kICJ0ZXN0X3N0YXRpY19lbGVtZW50cygpdm9pZCIsIG1ldGhvZCAidGVzdF9keW5hbWljX2VsZW1lbnRzKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X21peGVkX211bHRpcGxlX2R5bmFtaWNfZWxlbWVudHMoKXZvaWQiLCBtZXRob2QgInRlc3RfbmVzdGVkX3N0cnVjdF9yZXBsYWNlbWVudCgpdm9pZCIsIG1ldGhvZCAidGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggbWFpbl90ZXN0X3N0YXRpY19lbGVtZW50c19yb3V0ZUAzIG1haW5fdGVzdF9keW5hbWljX2VsZW1lbnRzX3JvdXRlQDQgbWFpbl90ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzX3JvdXRlQDUgbWFpbl90ZXN0X21peGVkX211bHRpcGxlX2R5bmFtaWNfZWxlbWVudHNfcm91dGVANiBtYWluX3Rlc3RfbmVzdGVkX3N0cnVjdF9yZXBsYWNlbWVudF9yb3V0ZUA3IG1haW5fdGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uX3JvdXRlQDgKCm1haW5fYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MzgKICAgIC8vIGNsYXNzIER5bmFtaWNBcnJheUNvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICBpbnRjXzIgLy8gMAogICAgcmV0dXJuCgptYWluX3Rlc3RfbmVzdGVkX3R1cGxlX21vZGlmaWNhdGlvbl9yb3V0ZUA4OgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMzMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfbmVzdGVkX3N0cnVjdF9yZXBsYWNlbWVudF9yb3V0ZUA3OgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9taXhlZF9tdWx0aXBsZV9keW5hbWljX2VsZW1lbnRzX3JvdXRlQDY6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfbWl4ZWRfbXVsdGlwbGVfZHluYW1pY19lbGVtZW50cwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzX3JvdXRlQDU6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfbWl4ZWRfc2luZ2xlX2R5bmFtaWNfZWxlbWVudHMKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9keW5hbWljX2VsZW1lbnRzX3JvdXRlQDQ6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfZHluYW1pY19lbGVtZW50cwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X3N0YXRpY19lbGVtZW50c19yb3V0ZUAzOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTozOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X3N0YXRpY19lbGVtZW50cwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKbWFpbl9iYXJlX3JvdXRpbmdAMTE6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjM4CiAgICAvLyBjbGFzcyBEeW5hbWljQXJyYXlDb250cmFjdChBUkM0Q29udHJhY3QpOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAxNQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplKGFycmF5OiBieXRlcywgZml4ZWRfYnl0ZV9zaXplOiB1aW50NjQpIC0+IGJ5dGVzLCBieXRlczoKZHluYW1pY19hcnJheV9wb3BfZml4ZWRfc2l6ZToKICAgIHByb3RvIDIgMgogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgZnJhbWVfZGlnIC0yCiAgICBzd2FwCiAgICByZXBsYWNlMiAwCiAgICBkdXAKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBkdXAyCiAgICBmcmFtZV9kaWcgLTEKICAgIGV4dHJhY3QzCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAwCiAgICB1bmNvdmVyIDMKICAgIHN1YnN0cmluZzMKICAgIHJldHN1YgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudChhcnJheTogYnl0ZXMpIC0+IGJ5dGVzLCBieXRlczoKZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gMSAyCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgaW50Y18xIC8vIDEKICAgIC0KICAgIGR1cAogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGR1cAogICAgZnJhbWVfZGlnIC0xCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgdW5jb3ZlciAyCiAgICBkdXAKICAgIGxlbgogICAgc3dhcAogICAgY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgYnl0ZWNfMCAvLyAweAogICAgaW50Y18yIC8vIDAKCmR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDE6CiAgICBmcmFtZV9kaWcgNgogICAgZnJhbWVfZGlnIDEKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANAogICAgZnJhbWVfZGlnIDIKICAgIGZyYW1lX2RpZyA2CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gMgogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGZyYW1lX2RpZyA1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgNQogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGZyYW1lX2J1cnkgNgogICAgYiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxCgpkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQ6CiAgICBmcmFtZV9kaWcgMAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGZyYW1lX2RpZyA1CiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIDIKICAgIHN3YXAKICAgIGZyYW1lX2RpZyAzCiAgICBzdWJzdHJpbmczCiAgICBjb25jYXQKICAgIGZyYW1lX2RpZyA0CiAgICBmcmFtZV9idXJ5IDAKICAgIGZyYW1lX2J1cnkgMQogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmFyYzQuZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50KGFycmF5X2l0ZW1zX2NvdW50OiB1aW50NjQsIGFycmF5X2hlYWRfYW5kX3RhaWw6IGJ5dGVzLCBuZXdfaXRlbXNfY291bnQ6IHVpbnQ2NCwgbmV3X2hlYWRfYW5kX3RhaWw6IGJ5dGVzKSAtPiBieXRlczoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gNCAxCiAgICBieXRlY18wIC8vICIiCiAgICBkdXAKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGZyYW1lX2RpZyAtNAogICAgaW50Y18wIC8vIDIKICAgICoKICAgIGludGNfMiAvLyAwCgpkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxOgogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyAzCiAgICA8CiAgICBieiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQKICAgIGZyYW1lX2RpZyAtMwogICAgZnJhbWVfZGlnIDQKICAgIGR1cAogICAgY292ZXIgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2RpZyAyCiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgZnJhbWVfZGlnIDEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAxCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDEKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANDoKICAgIGZyYW1lX2RpZyAtMwogICAgbGVuCiAgICBmcmFtZV9idXJ5IDAKICAgIGludGNfMiAvLyAwCiAgICBmcmFtZV9idXJ5IDQKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDU6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDIKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JAOAogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgNAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZnJhbWVfZGlnIDAKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMCAvLyAyCiAgICArCiAgICBmcmFtZV9idXJ5IDQKICAgIGIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJANQoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA4OgogICAgZnJhbWVfZGlnIC00CiAgICBmcmFtZV9kaWcgLTIKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgMQogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMAogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBjb25jYXQKICAgIGZyYW1lX2J1cnkgMAogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLmFyYzQuZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudChzb3VyY2U6IGJ5dGVzLCBuZXdfaXRlbTogYnl0ZXMsIGluZGV4OiB1aW50NjQpIC0+IGJ5dGVzOgpkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gMyAxCiAgICBmcmFtZV9kaWcgLTMKICAgIHN1YnN0cmluZyAwIDIKICAgIGR1cAogICAgYnRvaQogICAgZnJhbWVfZGlnIC0zCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBpbnRjXzAgLy8gMgogICAgKgogICAgZHVwCiAgICBjb3ZlciA0CiAgICBkaWcgMgogICAgc3dhcAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBsZW4KICAgIGRpZyA0CiAgICBmcmFtZV9kaWcgLTEKICAgIC0KICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkaWcgMQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZHVwCiAgICBkaWcgMwogICAgLQogICAgY292ZXIgNQogICAgZnJhbWVfZGlnIC0yCiAgICBsZW4KICAgIGNvdmVyIDUKICAgIGRpZyAzCiAgICBpbnRjXzIgLy8gMAogICAgdW5jb3ZlciA0CiAgICBzdWJzdHJpbmczCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBzd2FwCiAgICBpbnRjXzAgLy8gMgogICAgKgoKZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDI6CiAgICBmcmFtZV9kaWcgMQogICAgZnJhbWVfZGlnIDUKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDUKICAgIGZyYW1lX2RpZyA0CiAgICBkdXAKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgMwogICAgKwogICAgZnJhbWVfZGlnIDIKICAgIC0KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBkaWcgMgogICAgc3dhcAogICAgcmVwbGFjZTMKICAgIGZyYW1lX2J1cnkgNAogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGZyYW1lX2J1cnkgMQogICAgYiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJAMgoKZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANToKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgNAogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X3N0YXRpY19lbGVtZW50cygpIC0+IHZvaWQ6CnRlc3Rfc3RhdGljX2VsZW1lbnRzOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo0NwogICAgLy8gYXJyYXlbMV0gPSBzdHJ1Y3QyLmNvcHkoKQogICAgYnl0ZWNfMiAvLyAweDAwMDIwMDAwMDAwMDAwMDAwMDAzMDQwNTAwMDAwNDAwMDAwMDAwMDAyYWZmCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBsb2coYXJyYXkpCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NDkKICAgIC8vIGxvZyhhcnJheVswXSkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwMDAwMDAwMDAwMDAzMDQwNQogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjUwCiAgICAvLyBsb2coYXJyYXlbMV0pCiAgICBieXRlYyA0IC8vIDB4MDAwMDA0MDAwMDAwMDAwMDJhZmYKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo0NwogICAgLy8gYXJyYXlbMV0gPSBzdHJ1Y3QyLmNvcHkoKQogICAgYnl0ZWNfMiAvLyAweDAwMDIwMDAwMDAwMDAwMDAwMDAzMDQwNTAwMDAwNDAwMDAwMDAwMDAyYWZmCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjUyCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MgogICAgcHVzaGludCAxMCAvLyAxMAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplCiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjQ1CiAgICAvLyBzdHJ1Y3QyID0gU3RhdGljU3RydWN0KGdldF91aW50MigpLCBieXRlX2FycmF5Mi5jb3B5KCkpCiAgICBieXRlYyA0IC8vIDB4MDAwMDA0MDAwMDAwMDAwMDJhZmYKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTIKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjUzCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgcHVzaGludCAxMCAvLyAxMAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplCiAgICBwb3AKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NDQKICAgIC8vIHN0cnVjdDEgPSBTdGF0aWNTdHJ1Y3QoZ2V0X3VpbnQxKCksIGJ5dGVfYXJyYXkxLmNvcHkoKSkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwMDAwMDAwMDAwMDAzMDQwNQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo1MwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgID09CiAgICBhc3NlcnQKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X2R5bmFtaWNfZWxlbWVudHMoKSAtPiB2b2lkOgp0ZXN0X2R5bmFtaWNfZWxlbWVudHM6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjYwCiAgICAvLyBhcnJheS5hcHBlbmQoc3RydWN0MS5jb3B5KCkpCiAgICBpbnRjXzAgLy8gMgogICAgcHVzaGJ5dGVzIDB4MDAwNDAwMTAwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUKICAgIGludGNfMSAvLyAxCiAgICBwdXNoYnl0ZXMgMHgwMDAyMDAwNDAwMDcwMDAxNjEwMDAzNjI2NTY1CiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo1OAogICAgLy8gc3RydWN0MiA9IER5bmFtaWNTdHJ1Y3QoZ2V0X3N0cmluZzMoKSwgZ2V0X3N0cmluZzEoKSkKICAgIGJ5dGVjIDUgLy8gMHgwMDA0MDAxMTAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0MDAwMTYxCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjYxCiAgICAvLyBhcnJheVsxXSA9IHN0cnVjdDIuY29weSgpICAjIHJlcGxhY2UKICAgIGludGNfMSAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjIKICAgIC8vIGxvZyhhcnJheSkKICAgIGR1cAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjYzCiAgICAvLyBsb2coYXJyYXlbMF0pCiAgICBkdXAKICAgIGV4dHJhY3QgMiAwCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBpbnRjXzEgLy8gMQogICAgLSAvLyBvbiBlcnJvcjogSW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGRpZyAzCiAgICBsZW4KICAgIGRpZyA0CiAgICBpbnRjXzAgLy8gMgogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cDIKICAgIHVuY292ZXIgNAogICAgc2VsZWN0CiAgICBkaWcgNQogICAgdW5jb3ZlciA1CiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2NAogICAgLy8gbG9nKGFycmF5WzFdKQogICAgZGlnIDIKICAgIGludGNfMCAvLyAyCiAgICAtIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZGlnIDQKICAgIGludGNfMyAvLyA0CiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDMKICAgIGRpZyAxCiAgICB1bmNvdmVyIDMKICAgIHNlbGVjdAogICAgZGlnIDUKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjUKICAgIC8vIGxvZyhhcnJheVsyXSkKICAgIHVuY292ZXIgMgogICAgcHVzaGludCAzIC8vIDMKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgcHVzaGludCA2IC8vIDYKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudAogICAgc3dhcAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo1NwogICAgLy8gc3RydWN0MSA9IER5bmFtaWNTdHJ1Y3QoZ2V0X3N0cmluZzEoKSwgZ2V0X3N0cmluZzIoKSkKICAgIGJ5dGVjXzEgLy8gMHgwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjcKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjY4CiAgICAvLyBsb2coYXJyYXkpCiAgICBkdXAKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2OQogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDIKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU4CiAgICAvLyBzdHJ1Y3QyID0gRHluYW1pY1N0cnVjdChnZXRfc3RyaW5nMygpLCBnZXRfc3RyaW5nMSgpKQogICAgYnl0ZWMgNSAvLyAweDAwMDQwMDExMDAwYjQ4NjU2YzZjNmYyMDU3NmY3MjZjNjQwMDAxNjEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjkKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjcwCiAgICAvLyBsb2coYXJyYXkpCiAgICBkdXAKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3MQogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU3CiAgICAvLyBzdHJ1Y3QxID0gRHluYW1pY1N0cnVjdChnZXRfc3RyaW5nMSgpLCBnZXRfc3RyaW5nMigpKQogICAgYnl0ZWNfMSAvLyAweDAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3MQogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NzIKICAgIC8vIGxvZyhhcnJheSkKICAgIGxvZwogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcmM0X2R5bmFtaWNfYXJyYXlzLmNvbnRyYWN0LkR5bmFtaWNBcnJheUNvbnRyYWN0LnRlc3RfbWl4ZWRfc2luZ2xlX2R5bmFtaWNfZWxlbWVudHMoKSAtPiB2b2lkOgp0ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3OQogICAgLy8gYXJyYXkuYXBwZW5kKHN0cnVjdDIuY29weSgpKQogICAgaW50Y18yIC8vIDAKICAgIGJ5dGVjXzAgLy8gMHgKICAgIGludGNfMSAvLyAxCiAgICBieXRlYyA2IC8vIDB4MDAwMjAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjgwCiAgICAvLyBhcnJheS5hcHBlbmQoc3RydWN0Mi5jb3B5KCkpCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgc3dhcAogICAgZXh0cmFjdCAyIDAKICAgIGludGNfMSAvLyAxCiAgICBieXRlYyA2IC8vIDB4MDAwMjAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzdHJ1Y3QxID0gTWl4ZWRTaW5nbGVTdHJ1Y3QoZ2V0X3VpbnQxKCksIGdldF9zdHJpbmcxKCksIGdldF91aW50MigpKQogICAgYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDMwMDEyMDAwMDA0MDAwMDAwMDAwMDAwMDE2MQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo4MQogICAgLy8gYXJyYXlbMF0gPSBzdHJ1Y3QxLmNvcHkoKSAgIyByZXBsYWNlCiAgICBpbnRjXzIgLy8gMAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBsb2coYXJyYXkpCiAgICBkdXAKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo4MwogICAgLy8gbG9nKGFycmF5WzBdKQogICAgZHVwCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICBkaWcgNAogICAgaW50Y18wIC8vIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAyCiAgICB1bmNvdmVyIDQKICAgIHNlbGVjdAogICAgZGlnIDUKICAgIHVuY292ZXIgNQogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODQKICAgIC8vIGxvZyhhcnJheVsxXSkKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDIKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgaW50Y18zIC8vIDQKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODYKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudAogICAgc3dhcAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3NwogICAgLy8gc3RydWN0MiA9IE1peGVkU2luZ2xlU3RydWN0KGdldF91aW50MigpLCBnZXRfc3RyaW5nMigpLCBnZXRfdWludDEoKSkKICAgIHB1c2hieXRlcyAweDAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODYKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojg3CiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIHBvcAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3NgogICAgLy8gc3RydWN0MSA9IE1peGVkU2luZ2xlU3RydWN0KGdldF91aW50MSgpLCBnZXRfc3RyaW5nMSgpLCBnZXRfdWludDIoKSkKICAgIGJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAzMDAxMjAwMDAwNDAwMDAwMDAwMDAwMDAxNjEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODcKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QxCiAgICA9PQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFyYzRfZHluYW1pY19hcnJheXMuY29udHJhY3QuRHluYW1pY0FycmF5Q29udHJhY3QudGVzdF9taXhlZF9tdWx0aXBsZV9keW5hbWljX2VsZW1lbnRzKCkgLT4gdm9pZDoKdGVzdF9taXhlZF9tdWx0aXBsZV9keW5hbWljX2VsZW1lbnRzOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo5NwogICAgLy8gYXJyYXkgPSBhcmM0LkR5bmFtaWNBcnJheShzdHJ1Y3QxLmNvcHkoKSwgc3RydWN0MS5jb3B5KCkpCiAgICBwdXNoYnl0ZXMgMHgwMDAyMDAwNDAwMmIwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTQtOTYKICAgIC8vIHN0cnVjdDIgPSBNaXhlZE11bHRpcGxlU3RydWN0KAogICAgLy8gICAgIGdldF91aW50MigpLCBnZXRfc3RyaW5nMigpLCBnZXRfdWludDEoKSwgZ2V0X3UxNl9hcnIyKCksIGdldF91aW50MigpCiAgICAvLyApCiAgICBieXRlYyA4IC8vIDB4MDAwMDA0MDAwMDAwMDAwMDAwMWMwMDAwMDAwMDAwMDAwMDAzMDAyMTAwMDAwNDAwMDAwMDAwMDAwMDAzNjI2NTY1MDAwNDAwMDEwMDAyMDAwMzAwMDQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTgKICAgIC8vIGFycmF5WzFdID0gc3RydWN0Mi5jb3B5KCkKICAgIGludGNfMSAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTkKICAgIC8vIGxvZyhhcnJheSkKICAgIGR1cAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjEwMAogICAgLy8gbG9nKGFycmF5WzBdKQogICAgZHVwCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyAyCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IEluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBkaWcgMwogICAgbGVuCiAgICBkaWcgNAogICAgaW50Y18wIC8vIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAyCiAgICB1bmNvdmVyIDQKICAgIHNlbGVjdAogICAgZGlnIDUKICAgIHVuY292ZXIgNQogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTAxCiAgICAvLyBsb2coYXJyYXlbMV0pCiAgICB1bmNvdmVyIDIKICAgIGludGNfMCAvLyAyCiAgICAtIC8vIG9uIGVycm9yOiBJbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZGlnIDMKICAgIGludGNfMyAvLyA0CiAgICBleHRyYWN0X3VpbnQxNgogICAgdW5jb3ZlciAzCiAgICBzd2FwCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgc3Vic3RyaW5nMwogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjEwMwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDIKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojk0LTk2CiAgICAvLyBzdHJ1Y3QyID0gTWl4ZWRNdWx0aXBsZVN0cnVjdCgKICAgIC8vICAgICBnZXRfdWludDIoKSwgZ2V0X3N0cmluZzIoKSwgZ2V0X3VpbnQxKCksIGdldF91MTZfYXJyMigpLCBnZXRfdWludDIoKQogICAgLy8gKQogICAgYnl0ZWMgOCAvLyAweDAwMDAwNDAwMDAwMDAwMDAwMDFjMDAwMDAwMDAwMDAwMDAwMzAwMjEwMDAwMDQwMDAwMDAwMDAwMDAwMzYyNjU2NTAwMDQwMDAxMDAwMjAwMDMwMDA0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjEwMwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTA0CiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIHBvcAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo5MS05MwogICAgLy8gc3RydWN0MSA9IE1peGVkTXVsdGlwbGVTdHJ1Y3QoCiAgICAvLyAgICAgZ2V0X3VpbnQxKCksIGdldF9zdHJpbmcxKCksIGdldF91aW50MigpLCBnZXRfdTE2X2FycjEoKSwgZ2V0X3VpbnQxKCkKICAgIC8vICkKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMwMDFjMDAwMDA0MDAwMDAwMDAwMDAwMWYwMDAwMDAwMDAwMDAwMDAzMDAwMTYxMDAwM2ZmZmYwMDAwMDAyYQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMDQKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QxCiAgICA9PQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFyYzRfZHluYW1pY19hcnJheXMuY29udHJhY3QuRHluYW1pY0FycmF5Q29udHJhY3QudGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uKCkgLT4gdm9pZDoKdGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxNjgKICAgIC8vIHR1cDJbM10uZC5wb3AoKQogICAgcHVzaGJ5dGVzIDB4MDAwNGZmZmYwMDAwMDAyYTAwN2IKICAgIGludGNfMCAvLyAyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemUKICAgIGJ1cnkgMQogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMzAwMWMwMDAwMDQwMDAwMDAwMDAwMDAxZjAwMDAwMDAwMDAwMDAwMDMwMDAxNjEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMzA0MDUwMDFhMDAwMDA0MDAwMDAwMDAwMDA1MDQwMDI2MDA0ZjAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NQogICAgZGlnIDEKICAgIGNvbmNhdAogICAgYnl0ZWNfMSAvLyAweDAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NQogICAgY29uY2F0CiAgICBzd2FwCiAgICBsZW4KICAgIGRpZyAxCiAgICBwdXNoaW50IDI0IC8vIDI0CiAgICBleHRyYWN0X3VpbnQxNgogICAgKwogICAgcHVzaGludCA0MSAvLyA0MQogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHJlcGxhY2UyIDI0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjE0OS0xNTcKICAgIC8vIHR1cDEgPSBhcmM0LlR1cGxlKAogICAgLy8gICAgICgKICAgIC8vICAgICAgICAgb25lLmNvcHkoKSwKICAgIC8vICAgICAgICAgdHdvLmNvcHkoKSwKICAgIC8vICAgICAgICAgdGhyZWUuY29weSgpLAogICAgLy8gICAgICAgICBmb3VyMS5jb3B5KCksCiAgICAvLyAgICAgICAgIGZpdmUuY29weSgpLAogICAgLy8gICAgICkKICAgIC8vICkKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMwNDA1MDAxYTAwMDAwNDAwMDAwMDAwMDAwNTA0MDAyNjAwNGQwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTY5CiAgICAvLyBhc3NlcnQgdHVwMS5ieXRlcyA9PSB0dXAyLmJ5dGVzLCAidHVwMSBkb2VzIG5vdCBtYXRjaCB0dXAyIgogICAgPT0KICAgIGFzc2VydCAvLyB0dXAxIGRvZXMgbm90IG1hdGNoIHR1cDIKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CiAEAgEABCYJAAwABAAHAAFhAANiZWUWAAIAAAAAAAAAAwQFAAAEAAAAAAAq/woAAAAAAAAAAwQFCgAABAAAAAAAKv8UAAQAEQALSGVsbG8gV29ybGQAAWEZAAIAAAQAAAAAAAASAAAAAAAAAAMAA2JlZRUAAAAAAAAAAwASAAAEAAAAAAAAAWErAAAEAAAAAAAAHAAAAAAAAAADACEAAAQAAAAAAAADYmVlAAQAAQACAAMABDEbQQB4ggYEVXFYJwRxPdbbBDcViqwEhXC+OwRRqoxJBCg6GG82GgCOBgA7AC8AIwAXAA4AAiRDMRkURDEYRIgDyCNDMRkURDEYRCNDMRkURDEYRIgC7CNDMRkURDEYRIgCaiNDMRkURDEYRIgBvSNDMRkURDEYRIgBlSNDMRlA/7QxGBREI0OKAgKL/iRZIwkWVwYAi/5MXABJFYv/CUqL/1hPAiRPA1KJigECi/8kWSMJSSILSYv/VwIASU4CSU8CWUlPAkkVTE4CUigkiwaLAQxBABuLAosGSU4CWSIJFlcGAosFTFCMBSIIjAZC/92LABZXBgKLBVCLASIIiwJMiwNSUIsEjACMAYmKBAEoSYv+IguL/CILJIsEiwMMQQAci/2LBElOAlmLAggWVwYCiwFMUIwBIgiMBEL/3Iv9FYwAJIwEiwSLAgxBAByL/4sESU4CWYsACBZXBgKLAUxQjAEiCIwEQv/ci/yL/ggWVwYCiwFQi/2LA4sAUlCL/xWL/4sCTwJSUIwAiYoDAYv9UQACSReL/VcCAIv/IgtLAUxZi/8jCCILSU4ESwJMWUsCFUsEi/8JIwlLAU8DTwJNSUsDCU4Fi/4VTgVLAyRPBFKL/lBPA08CTwNSUEwiC4sBiwUMQQAgiwRJiwFJTgNZiwMIiwIJFlcGAksCTF2MBCIIjAFC/9iLAIsEUIwAiSqwK7AnBLAqgQqI/mtMJwQSRIEKiP5hSCsSRIkigBwABAAQAAQABwABYQADYmVlAAQABwABYQADYmVlI4AOAAIABAAHAAFhAANiZWWI/q0nBSOI/ydJsElXAgBJJFlLAiRZSSMJSwMVSwQiWUpPBE1LBU8FTwJSsEsCIglLBCVZSwNLAU8DTUsFTwNPAlKwTwKBAwlLA4EGWU8DTE8CTVKwiP32TCkSREmwiP3tTCcFEkRJsIj940wpEkSwiSQoIycGiP43SSRZTFcCACMnBoj+KicHJIj+pEmwSVcCAEkkWUsCJFlJIwlLAxVLBCJZSk8ETUsFTwVPAlKwTwIiCUsDJVlPA0xPAk1SsIj9jEyAFwAABAAAAAAAABIAAAAAAAAAAwADYmVlEkSI/W1IJwcSRImAVAACAAQAKwAAAAAAAAADABwAAAQAAAAAAAAfAAAAAAAAAAMAAWEAA///AAAAKgAAAAAAAAADABwAAAQAAAAAAAAfAAAAAAAAAAMAAWEAA///AAAAKicII4j97UmwSVcCAEkkWUsCJFlJIwlLAxVLBCJZSk8ETUsFTwVPAlKwTwIiCUsDJVlPA0xPAk1SsIj81UwnCBJEiPzNSIAnAAAAAAAAAAMAHAAABAAAAAAAAB8AAAAAAAAAAwABYQAD//8AAAAqEkSJgAoABP//AAAAKgB7Ioj8bkUBgB8AAAAAAAAAAwAcAAAEAAAAAAAAHwAAAAAAAAADAAFhTFCAJgAAAAAAAAADBAUAGgAABAAAAAAABQQAJgBPAAQABwABYQADYmVlSwFQKVBMFUsBgRhZCIEpCRZXBgJcGIBZAAAAAAAAAAMEBQAaAAAEAAAAAAAFBAAmAE0ABAAHAAFhAANiZWUAAAAAAAAAAwAcAAAEAAAAAAAAHwAAAAAAAAADAAFhAAP//wAAACoABAAHAAFhAANiZWUSRIk=", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }