{ "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": [ 673, 770, 791, 813, 871, 892, 1053, 1073 ], "errorMessage": "cannot pop from empty array" }, { "pc": [ 682 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 671, 768, 789, 811, 868, 890, 914, 1051, 1071 ], "errorMessage": "invalid array length header" }, { "pc": [ 1324 ], "errorMessage": "tup1 does not match tup2" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAgMiAxMAogICAgYnl0ZWNibG9jayAweDAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NSAweDAwMDAwMDAwMDAwMDAwMDMwMDEyMDAwMDA0MDAwMDAwMDAwMDAwMDE2MSAweDAwMDIwMDAwMDAwMDAwMDAwMDAzMDQwNTAwMDAwNDAwMDAwMDAwMDAyYWZmIDB4MDAwMDAwMDAwMDAwMDAwMzA0MDUgMHgwMDA0MDAxMTAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0MDAwMTYxIDB4MDAwMjAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUgMHgwMDAwMDQwMDAwMDAwMDAwMDAxMjAwMDAwMDAwMDAwMDAwMDMwMDAzNjI2NTY1IDB4MDAwMDA0MDAwMDAwMDAwMDAwMWMwMDAwMDAwMDAwMDAwMDAzMDAyMTAwMDAwNDAwMDAwMDAwMDAwMDAzNjI2NTY1MDAwNDAwMDEwMDAyMDAwMzAwMDQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MzgKICAgIC8vIGNsYXNzIER5bmFtaWNBcnJheUNvbnRyYWN0KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxMwogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4NTU3MTU4MjcgMHg3MTNkZDZkYiAweDM3MTU4YWFjIDB4ODU3MGJlM2IgMHg1MWFhOGM0OSAweDI4M2ExODZmIC8vIG1ldGhvZCAidGVzdF9zdGF0aWNfZWxlbWVudHMoKXZvaWQiLCBtZXRob2QgInRlc3RfZHluYW1pY19lbGVtZW50cygpdm9pZCIsIG1ldGhvZCAidGVzdF9taXhlZF9zaW5nbGVfZHluYW1pY19lbGVtZW50cygpdm9pZCIsIG1ldGhvZCAidGVzdF9taXhlZF9tdWx0aXBsZV9keW5hbWljX2VsZW1lbnRzKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X25lc3RlZF9zdHJ1Y3RfcmVwbGFjZW1lbnQoKXZvaWQiLCBtZXRob2QgInRlc3RfbmVzdGVkX3R1cGxlX21vZGlmaWNhdGlvbigpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIHRlc3Rfc3RhdGljX2VsZW1lbnRzIHRlc3RfZHluYW1pY19lbGVtZW50cyB0ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzIHRlc3RfbWl4ZWRfbXVsdGlwbGVfZHluYW1pY19lbGVtZW50cyBtYWluX3Rlc3RfbmVzdGVkX3N0cnVjdF9yZXBsYWNlbWVudF9yb3V0ZUA4IHRlc3RfbmVzdGVkX3R1cGxlX21vZGlmaWNhdGlvbgogICAgZXJyCgptYWluX3Rlc3RfbmVzdGVkX3N0cnVjdF9yZXBsYWNlbWVudF9yb3V0ZUA4OgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDEzOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplKGFycmF5OiBieXRlcywgZml4ZWRfYnl0ZV9zaXplOiB1aW50NjQpIC0+IGJ5dGVzOgpkeW5hbWljX2FycmF5X3BvcF9maXhlZF9zaXplOgogICAgcHJvdG8gMiAxCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBmcmFtZV9kaWcgLTIKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHJlcGxhY2UyIDAKICAgIHJldHN1YgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudChhcnJheTogYnl0ZXMpIC0+IGJ5dGVzOgpkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQ6CiAgICBwcm90byAxIDEKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgc3dhcAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGludGNfMiAvLyAyCgpkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnRfd2hpbGVfdG9wQDE6CiAgICBkdXAKICAgIGRpZyAyCiAgICA8PQogICAgYnogZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50X2FmdGVyX3doaWxlQDMKICAgIGZyYW1lX2RpZyAtMQogICAgZGlnIDEKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzIgLy8gMgogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgY29uY2F0CiAgICBjb3ZlciAyCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgYiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnRfd2hpbGVfdG9wQDEKCmR5bmFtaWNfYXJyYXlfcG9wX2R5bmFtaWNfZWxlbWVudF9hZnRlcl93aGlsZUAzOgogICAgZnJhbWVfZGlnIC0xCiAgICBleHRyYWN0IDIgMAogICAgZHVwCiAgICB1bmNvdmVyIDMKICAgIGV4dHJhY3RfdWludDE2CiAgICBzd2FwCiAgICBjb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBjb25jYXQKICAgIHJldHN1YgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQoYXJyYXk6IGJ5dGVzLCBpbmRleDogdWludDY0KSAtPiBieXRlczoKZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudDoKICAgIHByb3RvIDIgMQogICAgZnJhbWVfZGlnIC0yCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZHVwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDUKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgMgogICAgLQogICAgc2VsZWN0CiAgICBzdWJzdHJpbmczCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQoYXJyYXk6IGJ5dGVzLCBuZXdfaGVhZF9hbmRfdGFpbDogYnl0ZXMsIG5ld19pdGVtc19jb3VudDogdWludDY0KSAtPiBieXRlczoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50OgogICAgcHJvdG8gMyAxCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgZHVwCiAgICBmcmFtZV9kaWcgLTEKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAwCiAgICBzd2FwCiAgICBmcmFtZV9kaWcgLTMKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgc3dhcAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgY292ZXIgMgogICAgaW50Y18xIC8vIDAKICAgIGNvdmVyIDQKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDE6CiAgICBmcmFtZV9kaWcgMAogICAgZGlnIDIKICAgIDwKICAgIGJ6IGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANAogICAgZHVwCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBjb3ZlciAyCiAgICBleHRyYWN0X3VpbnQxNgogICAgZGlnIDQKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAwCiAgICB1bmNvdmVyIDUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgY292ZXIgNAogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgYiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAxCgpkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDQ6CiAgICBkdXAKICAgIGxlbgogICAgc3dhcAogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgMAoKZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2Zvcl9oZWFkZXJANToKICAgIGZyYW1lX2RpZyAwCiAgICBkaWcgNAogICAgPAogICAgYnogZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50X2FmdGVyX2ZvckA4CiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgMwogICAgKwogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHVuY292ZXIgNgogICAgc3dhcAogICAgY29uY2F0CiAgICBjb3ZlciA1CiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDUKCmR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JAODoKICAgIGNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0yCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgY29uY2F0CiAgICBzd2FwCiAgICByZXRzdWIKCgovLyBfcHV5YV9saWIuYXJjNC5keW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50KHNvdXJjZTogYnl0ZXMsIG5ld19pdGVtOiBieXRlcywgaW5kZXg6IHVpbnQ2NCkgLT4gYnl0ZXM6CmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQ6CiAgICBwcm90byAzIDEKICAgIGZyYW1lX2RpZyAtMwogICAgc3Vic3RyaW5nIDAgMgogICAgZHVwCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTMKICAgIGV4dHJhY3QgMiAwCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgY292ZXIgMwogICAgZHVwCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBkaWcgMgogICAgZGlnIDEKICAgIGV4dHJhY3RfdWludDE2CiAgICBkaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICAtCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZGlnIDMKICAgIGNvdmVyIDIKICAgIHNlbGVjdAogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZGlnIDQKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDE2CiAgICBkdXAyCiAgICAtCiAgICBjb3ZlciA3CiAgICBkaWcgNAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZnJhbWVfZGlnIC0yCiAgICBjb25jYXQKICAgIHVuY292ZXIgNAogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDQKICAgIHN1YnN0cmluZzMKICAgIGNvbmNhdAogICAgY292ZXIgMgogICAgc3dhcAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGNvdmVyIDIKCmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfZm9yX2hlYWRlckAyOgogICAgZHVwCiAgICBkaWcgMwogICAgPAogICAgYnogZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9hZnRlcl9mb3JANQogICAgc3dhcAogICAgZHVwCiAgICBkaWcgMgogICAgZXh0cmFjdF91aW50MTYKICAgIGRpZyA2CiAgICArCiAgICBkaWcgNQogICAgLQogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIGRpZyAyCiAgICBzd2FwCiAgICByZXBsYWNlMwogICAgc3dhcAogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGIgZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudF9mb3JfaGVhZGVyQDIKCmR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnRfYWZ0ZXJfZm9yQDU6CiAgICBwb3AKICAgIGJ1cnkgMQogICAgY29uY2F0CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X3N0YXRpY19lbGVtZW50c1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3Rfc3RhdGljX2VsZW1lbnRzOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo0NwogICAgLy8gYXJyYXlbMV0gPSBzdHJ1Y3QyLmNvcHkoKQogICAgYnl0ZWNfMiAvLyAweDAwMDIwMDAwMDAwMDAwMDAwMDAzMDQwNTAwMDAwNDAwMDAwMDAwMDAyYWZmCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBsb2coYXJyYXkpCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NDkKICAgIC8vIGxvZyhhcnJheVswXSkKICAgIGJ5dGVjXzMgLy8gMHgwMDAwMDAwMDAwMDAwMDAzMDQwNQogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjUwCiAgICAvLyBsb2coYXJyYXlbMV0pCiAgICBwdXNoYnl0ZXMgMHgwMDAwMDQwMDAwMDAwMDAwMmFmZgogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjQ3CiAgICAvLyBhcnJheVsxXSA9IHN0cnVjdDIuY29weSgpCiAgICBieXRlY18yIC8vIDB4MDAwMjAwMDAwMDAwMDAwMDAwMDMwNDA1MDAwMDA0MDAwMDAwMDAwMDJhZmYKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTIKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICBpbnRjXzMgLy8gMTAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZml4ZWRfc2l6ZQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo1MwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAtIC8vIG9uIGVycm9yOiBjYW5ub3QgcG9wIGZyb20gZW1wdHkgYXJyYXkKICAgIHN3YXAKICAgIGV4dHJhY3QgMiAwCiAgICBzd2FwCiAgICBpbnRjXzMgLy8gMTAKICAgICoKICAgIGludGNfMyAvLyAxMAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBzdHJ1Y3QxID0gU3RhdGljU3RydWN0KGdldF91aW50MSgpLCBieXRlX2FycmF5MS5jb3B5KCkpCiAgICBieXRlY18zIC8vIDB4MDAwMDAwMDAwMDAwMDAwMzA0MDUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTMKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X2R5bmFtaWNfZWxlbWVudHNbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2R5bmFtaWNfZWxlbWVudHM6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU5LTYwCiAgICAvLyBhcnJheSA9IGFyYzQuRHluYW1pY0FycmF5KHN0cnVjdDEuY29weSgpLCBzdHJ1Y3QxLmNvcHkoKSkKICAgIC8vIGFycmF5LmFwcGVuZChzdHJ1Y3QxLmNvcHkoKSkKICAgIHB1c2hieXRlc3MgMHgwMDAyMDAwNDAwMTAwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUgMHgwMDAyMDAwNDAwMDcwMDAxNjEwMDAzNjI2NTY1CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjYwCiAgICAvLyBhcnJheS5hcHBlbmQoc3RydWN0MS5jb3B5KCkpCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTgKICAgIC8vIHN0cnVjdDIgPSBEeW5hbWljU3RydWN0KGdldF9zdHJpbmczKCksIGdldF9zdHJpbmcxKCkpCiAgICBieXRlYyA0IC8vIDB4MDAwNDAwMTEwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NDAwMDE2MQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2MQogICAgLy8gYXJyYXlbMV0gPSBzdHJ1Y3QyLmNvcHkoKSAgIyByZXBsYWNlCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlcGxhY2VfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjYyCiAgICAvLyBsb2coYXJyYXkpCiAgICBkdXAKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2MwogICAgLy8gbG9nKGFycmF5WzBdKQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlYWRfZHluYW1pY19lbGVtZW50CiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjQKICAgIC8vIGxvZyhhcnJheVsxXSkKICAgIGR1cAogICAgaW50Y18wIC8vIDEKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjY1CiAgICAvLyBsb2coYXJyYXlbMl0pCiAgICBkdXAKICAgIGludGNfMiAvLyAyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAtIC8vIG9uIGVycm9yOiBjYW5ub3QgcG9wIGZyb20gZW1wdHkgYXJyYXkKICAgIGRpZyAxCiAgICBzd2FwCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU3CiAgICAvLyBzdHJ1Y3QxID0gRHluYW1pY1N0cnVjdChnZXRfc3RyaW5nMSgpLCBnZXRfc3RyaW5nMigpKQogICAgYnl0ZWNfMCAvLyAweDAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2NwogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NjgKICAgIC8vIGxvZyhhcnJheSkKICAgIGR1cAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjY5CiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MgogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgZGlnIDEKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgc3dhcAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIHN3YXAKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTgKICAgIC8vIHN0cnVjdDIgPSBEeW5hbWljU3RydWN0KGdldF9zdHJpbmczKCksIGdldF9zdHJpbmcxKCkpCiAgICBieXRlYyA0IC8vIDB4MDAwNDAwMTEwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NDAwMDE2MQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo2OQogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NzAKICAgIC8vIGxvZyhhcnJheSkKICAgIGR1cAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjcxCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgZGlnIDEKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgc3dhcAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIHN3YXAKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NTcKICAgIC8vIHN0cnVjdDEgPSBEeW5hbWljU3RydWN0KGdldF9zdHJpbmcxKCksIGdldF9zdHJpbmcyKCkpCiAgICBieXRlY18wIC8vIDB4MDAwNDAwMDcwMDAxNjEwMDAzNjI2NTY1CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjcxCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3MgogICAgLy8gbG9nKGFycmF5KQogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjU1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X21peGVkX3NpbmdsZV9keW5hbWljX2VsZW1lbnRzW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9taXhlZF9zaW5nbGVfZHluYW1pY19lbGVtZW50czoKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NzgKICAgIC8vIGFycmF5ID0gYXJjNC5EeW5hbWljQXJyYXlbTWl4ZWRTaW5nbGVTdHJ1Y3RdKCkKICAgIHB1c2hieXRlcyAweDAwMDAKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NzkKICAgIC8vIGFycmF5LmFwcGVuZChzdHJ1Y3QyLmNvcHkoKSkKICAgIGJ5dGVjIDUgLy8gMHgwMDAyMDAwMDA0MDAwMDAwMDAwMDAwMTIwMDAwMDAwMDAwMDAwMDAzMDAwMzYyNjU2NQogICAgaW50Y18wIC8vIDEKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9jb25jYXRfZHluYW1pY19lbGVtZW50CiAgICBieXRlYyA1IC8vIDB4MDAwMjAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODAKICAgIC8vIGFycmF5LmFwcGVuZChzdHJ1Y3QyLmNvcHkoKSkKICAgIGludGNfMCAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfY29uY2F0X2R5bmFtaWNfZWxlbWVudAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo3NgogICAgLy8gc3RydWN0MSA9IE1peGVkU2luZ2xlU3RydWN0KGdldF91aW50MSgpLCBnZXRfc3RyaW5nMSgpLCBnZXRfdWludDIoKSkKICAgIGJ5dGVjXzEgLy8gMHgwMDAwMDAwMDAwMDAwMDAzMDAxMjAwMDAwNDAwMDAwMDAwMDAwMDAxNjEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODEKICAgIC8vIGFycmF5WzBdID0gc3RydWN0MS5jb3B5KCkgICMgcmVwbGFjZQogICAgaW50Y18xIC8vIDAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZXBsYWNlX2R5bmFtaWNfZWxlbWVudAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo4MgogICAgLy8gbG9nKGFycmF5KQogICAgZHVwCiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODMKICAgIC8vIGxvZyhhcnJheVswXSkKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBsb2coYXJyYXlbMV0pCiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo4OAogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDIKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgZGlnIDIKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgZGlnIDIKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9wb3BfZHluYW1pY19lbGVtZW50CiAgICBzd2FwCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc3CiAgICAvLyBzdHJ1Y3QyID0gTWl4ZWRTaW5nbGVTdHJ1Y3QoZ2V0X3VpbnQyKCksIGdldF9zdHJpbmcyKCksIGdldF91aW50MSgpKQogICAgYnl0ZWMgNiAvLyAweDAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6ODgKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlYWRfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBzdHJ1Y3QxID0gTWl4ZWRTaW5nbGVTdHJ1Y3QoZ2V0X3VpbnQxKCksIGdldF9zdHJpbmcxKCksIGdldF91aW50MigpKQogICAgYnl0ZWNfMSAvLyAweDAwMDAwMDAwMDAwMDAwMDMwMDEyMDAwMDA0MDAwMDAwMDAwMDAwMDE2MQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo4OQogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTEKICAgIC8vIGFzc2VydCBhcnJheTIubGVuZ3RoID09IDIKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTIKICAgIC8vIGFycmF5Mi5leHRlbmQoYXJyYXkyLmNvcHkoKSkKICAgIGRpZyAxCiAgICBleHRyYWN0IDIgMAogICAgc3dhcAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X2NvbmNhdF9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTMKICAgIC8vIGFzc2VydCBhcnJheTIubGVuZ3RoID09IDQKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgcHVzaGludCA0CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBhc3NlcnQgYXJyYXkyWy0xXSA9PSBzdHJ1Y3QyCiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkaWcgMgogICAgc3dhcAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlYWRfZHluYW1pY19lbGVtZW50CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc3CiAgICAvLyBzdHJ1Y3QyID0gTWl4ZWRTaW5nbGVTdHJ1Y3QoZ2V0X3VpbnQyKCksIGdldF9zdHJpbmcyKCksIGdldF91aW50MSgpKQogICAgYnl0ZWMgNiAvLyAweDAwMDAwNDAwMDAwMDAwMDAwMDEyMDAwMDAwMDAwMDAwMDAwMzAwMDM2MjY1NjUKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTQKICAgIC8vIGFzc2VydCBhcnJheTJbLTFdID09IHN0cnVjdDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6OTUKICAgIC8vIGFzc2VydCBhcnJheTJbLTJdID09IHN0cnVjdDEKICAgIGludGNfMiAvLyAyCiAgICAtCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVhZF9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6NzYKICAgIC8vIHN0cnVjdDEgPSBNaXhlZFNpbmdsZVN0cnVjdChnZXRfdWludDEoKSwgZ2V0X3N0cmluZzEoKSwgZ2V0X3VpbnQyKCkpCiAgICBieXRlY18xIC8vIDB4MDAwMDAwMDAwMDAwMDAwMzAwMTIwMDAwMDQwMDAwMDAwMDAwMDAwMTYxCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojk1CiAgICAvLyBhc3NlcnQgYXJyYXkyWy0yXSA9PSBzdHJ1Y3QxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9keW5hbWljX2FycmF5cy5jb250cmFjdC5EeW5hbWljQXJyYXlDb250cmFjdC50ZXN0X21peGVkX211bHRpcGxlX2R5bmFtaWNfZWxlbWVudHNbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X21peGVkX211bHRpcGxlX2R5bmFtaWNfZWxlbWVudHM6CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjEwNQogICAgLy8gYXJyYXkgPSBhcmM0LkR5bmFtaWNBcnJheShzdHJ1Y3QxLmNvcHkoKSwgc3RydWN0MS5jb3B5KCkpCiAgICBwdXNoYnl0ZXMgMHgwMDAyMDAwNDAwMmIwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTAyLTEwNAogICAgLy8gc3RydWN0MiA9IE1peGVkTXVsdGlwbGVTdHJ1Y3QoCiAgICAvLyAgICAgZ2V0X3VpbnQyKCksIGdldF9zdHJpbmcyKCksIGdldF91aW50MSgpLCBnZXRfdTE2X2FycjIoKSwgZ2V0X3VpbnQyKCkKICAgIC8vICkKICAgIGJ5dGVjIDcgLy8gMHgwMDAwMDQwMDAwMDAwMDAwMDAxYzAwMDAwMDAwMDAwMDAwMDMwMDIxMDAwMDA0MDAwMDAwMDAwMDAwMDM2MjY1NjUwMDA0MDAwMTAwMDIwMDAzMDAwNAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMDYKICAgIC8vIGFycmF5WzFdID0gc3RydWN0Mi5jb3B5KCkKICAgIGludGNfMCAvLyAxCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcmVwbGFjZV9keW5hbWljX2VsZW1lbnQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTA3CiAgICAvLyBsb2coYXJyYXkpCiAgICBkdXAKICAgIGxvZwogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMDgKICAgIC8vIGxvZyhhcnJheVswXSkKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgbG9nCiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjEwOQogICAgLy8gbG9nKGFycmF5WzFdKQogICAgZHVwCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3JlYWRfZHluYW1pY19lbGVtZW50CiAgICBsb2cKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTExCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MgogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgZGlnIDEKICAgIHN3YXAKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgc3dhcAogICAgY2FsbHN1YiBkeW5hbWljX2FycmF5X3BvcF9keW5hbWljX2VsZW1lbnQKICAgIHN3YXAKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTAyLTEwNAogICAgLy8gc3RydWN0MiA9IE1peGVkTXVsdGlwbGVTdHJ1Y3QoCiAgICAvLyAgICAgZ2V0X3VpbnQyKCksIGdldF9zdHJpbmcyKCksIGdldF91aW50MSgpLCBnZXRfdTE2X2FycjIoKSwgZ2V0X3VpbnQyKCkKICAgIC8vICkKICAgIGJ5dGVjIDcgLy8gMHgwMDAwMDQwMDAwMDAwMDAwMDAxYzAwMDAwMDAwMDAwMDAwMDMwMDIxMDAwMDA0MDAwMDAwMDAwMDAwMDM2MjY1NjUwMDA0MDAwMTAwMDIwMDAzMDAwNAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxMTEKICAgIC8vIGFzc2VydCBhcnJheS5wb3AoKSA9PSBzdHJ1Y3QyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcmM0X2R5bmFtaWNfYXJyYXlzL2NvbnRyYWN0LnB5OjExMgogICAgLy8gYXNzZXJ0IGFycmF5LnBvcCgpID09IHN0cnVjdDEKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAtIC8vIG9uIGVycm9yOiBjYW5ub3QgcG9wIGZyb20gZW1wdHkgYXJyYXkKICAgIGNhbGxzdWIgZHluYW1pY19hcnJheV9yZWFkX2R5bmFtaWNfZWxlbWVudAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo5OS0xMDEKICAgIC8vIHN0cnVjdDEgPSBNaXhlZE11bHRpcGxlU3RydWN0KAogICAgLy8gICAgIGdldF91aW50MSgpLCBnZXRfc3RyaW5nMSgpLCBnZXRfdWludDIoKSwgZ2V0X3UxNl9hcnIxKCksIGdldF91aW50MSgpCiAgICAvLyApCiAgICBwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAzMDAxYzAwMDAwNDAwMDAwMDAwMDAwMDFmMDAwMDAwMDAwMDAwMDAwMzAwMDE2MTAwMDNmZmZmMDAwMDAwMmEKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTEyCiAgICAvLyBhc3NlcnQgYXJyYXkucG9wKCkgPT0gc3RydWN0MQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weTo5NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFyYzRfZHluYW1pY19hcnJheXMuY29udHJhY3QuRHluYW1pY0FycmF5Q29udHJhY3QudGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9uZXN0ZWRfdHVwbGVfbW9kaWZpY2F0aW9uOgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxNzYKICAgIC8vIHR1cDJbM10uZC5wb3AoKQogICAgcHVzaGJ5dGVzIDB4MDAwNGZmZmYwMDAwMDAyYTAwN2IKICAgIGludGNfMiAvLyAyCiAgICBjYWxsc3ViIGR5bmFtaWNfYXJyYXlfcG9wX2ZpeGVkX3NpemUKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMwMDFjMDAwMDA0MDAwMDAwMDAwMDAwMWYwMDAwMDAwMDAwMDAwMDAzMDAwMTYxCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMwNDA1MDAxYTAwMDAwNDAwMDAwMDAwMDAwNTA0MDAyNjAwNGYwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgwMDA0MDAwNzAwMDE2MTAwMDM2MjY1NjUKICAgIGNvbmNhdAogICAgc3dhcAogICAgbGVuCiAgICBwdXNoaW50IDc5CiAgICArCiAgICBwdXNoaW50IDQxCiAgICAtCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgcmVwbGFjZTIgMjQKICAgIC8vIGFyYzRfZHluYW1pY19hcnJheXMvY29udHJhY3QucHk6MTU3LTE2NQogICAgLy8gdHVwMSA9IGFyYzQuVHVwbGUoCiAgICAvLyAgICAgKAogICAgLy8gICAgICAgICBvbmUuY29weSgpLAogICAgLy8gICAgICAgICB0d28uY29weSgpLAogICAgLy8gICAgICAgICB0aHJlZS5jb3B5KCksCiAgICAvLyAgICAgICAgIGZvdXIxLmNvcHkoKSwKICAgIC8vICAgICAgICAgZml2ZS5jb3B5KCksCiAgICAvLyAgICAgKQogICAgLy8gKQogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMzA0MDUwMDFhMDAwMDA0MDAwMDAwMDAwMDA1MDQwMDI2MDA0ZDAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NTAwMDAwMDAwMDAwMDAwMDMwMDFjMDAwMDA0MDAwMDAwMDAwMDAwMWYwMDAwMDAwMDAwMDAwMDAzMDAwMTYxMDAwM2ZmZmYwMDAwMDAyYTAwMDQwMDA3MDAwMTYxMDAwMzYyNjU2NQogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxNzcKICAgIC8vIGFzc2VydCB0dXAxLmJ5dGVzID09IHR1cDIuYnl0ZXMsICJ0dXAxIGRvZXMgbm90IG1hdGNoIHR1cDIiCiAgICA9PQogICAgYXNzZXJ0IC8vIHR1cDEgZG9lcyBub3QgbWF0Y2ggdHVwMgogICAgLy8gYXJjNF9keW5hbWljX2FycmF5cy9jb250cmFjdC5weToxNDEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAQACCiYIDAAEAAcAAWEAA2JlZRUAAAAAAAAAAwASAAAEAAAAAAAAAWEWAAIAAAAAAAAAAwQFAAAEAAAAAAAq/woAAAAAAAAAAwQFFAAEABEAC0hlbGxvIFdvcmxkAAFhGQACAAAEAAAAAAAAEgAAAAAAAAADAANiZWUXAAAEAAAAAAAAEgAAAAAAAAADAANiZWUrAAAEAAAAAAAAHAAAAAAAAAADACEAAAQAAAAAAAADYmVlAAQAAQACAAMABDEbQQA7MRkURDEYRIIGBFVxWCcEcT3W2wQ3FYqsBIVwvjsEUaqMSQQoOhhvNhoAjgYBiQGyAkECsQABA2QAIkMxGRQxGBQQQ4oCAYv+FYv/CYv+I08CUkkjWSIJFlcGAFwAiYoBAYv/I1kiCUkWVwYATCQLJElLAg5BABaL/0sBWSQJFlcGAE8DTFBOAiQIQv/ji/9XAgBJTwNZTE4CUlCJigIBi/5XAgCL/iNZi/8kC0sCTFlLAhWL/yIISSQLSwVMWU8ETwIJTVKJigMBi/0jWUmL/wgWVwYATIv9VwIATCQLTIv/JAtOAiNOBIsASwIMQQAbSYsASU4CWUsECBZXBgBPBUxQTgQkCIwAQv/dSRVMI4wAiwBLBAxBAByL/osASU4CWUsDCBZXBgBPBkxQTgUkCIwAQv/cTgJSTwJMUIv+FYv+TwNPAlJQTImKAwGL/VEAAkkXi/1XAgCL/hVOA0kVi/8iCCQLSwJLAVlLBIv/CSIJSwNOAk2L/yQLSwRMWUoJTgdLBCNPAlKL/lBPBE8CTwRSUE4CTCQLTgJJSwMMQQAZTElLAllLBghLBQkWVwYASwJMXUwkCEL/4EhFAVCMAIkqsCuwgAoAAAQAAAAAACr/sColiP5sSSNZIglMVwIATCULJVgrEkQiQ4ICHgACAAQAEAAEAAcAAWEAA2JlZQAEAAcAAWEAA2JlZQ4AAgAEAAcAAWEAA2JlZSKI/qgnBCKI/yVJsEkjiP5xsEkiiP5rsEkkiP5lsEkjWSIJSwFMiP5ZTIj+F0woEkRJsEkjWSIJSwFMiP5ETIj+AkwnBBJESbBJI1kiCUsBTIj+LkyI/exMKBJEsCJDgAIAACcFIoj+QycFIoj+PSkjiP67SbBJI4j+B7BJIoj+AbBJI1lJIglLAkyI/fRLAoj9sUwnBhJESSNZIgmI/eIpEkRJJBJESwFXAgBMiP38SSNZSYEEEkRJIglLAkyI/cEnBhJEJAmI/bgpEkQiQ4BUAAIABAArAAAAAAAAAAMAHAAABAAAAAAAAB8AAAAAAAAAAwABYQAD//8AAAAqAAAAAAAAAAMAHAAABAAAAAAAAB8AAAAAAAAAAwABYQAD//8AAAAqJwciiP4ESbBJI4j9ULBJIoj9SrBJI1kiCUsBTIj9PkyI/PxMJwcSREkjWSIJiP0tgCcAAAAAAAAAAwAcAAAEAAAAAAAAHwAAAAAAAAADAAFhAAP//wAAACoSRCJDgAoABP//AAAAKgB7JIj8l4AfAAAAAAAAAAMAHAAABAAAAAAAAB8AAAAAAAAAAwABYUxQgCYAAAAAAAAAAwQFABoAAAQAAAAAAAUEACYATwAEAAcAAWEAA2JlZUsBUChQTBWBTwiBKQkWVwYCXBiAWQAAAAAAAAADBAUAGgAABAAAAAAABQQAJgBNAAQABwABYQADYmVlAAAAAAAAAAMAHAAABAAAAAAAAB8AAAAAAAAAAwABYQAD//8AAAAqAAQABwABYQADYmVlEkQiQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }