{ "name": "Contract", "structs": {}, "methods": [ { "name": "test_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_extend", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_multiple_append", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "overhead", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_too_long", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_copy_and_extend", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_evaluation_order", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_allocations", "args": [ { "type": "uint64", "name": "num" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_iteration", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_quicksort", "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": [ 178, 190, 202, 218, 230, 242, 254, 263, 275, 287 ], "errorMessage": "OnCompletion is not NoOp" }, { "pc": [ 1006 ], "errorMessage": "array is expected length" }, { "pc": [ 1440, 1525, 1753 ], "errorMessage": "array is not sorted" }, { "pc": [ 304 ], "errorMessage": "can only call when creating" }, { "pc": [ 181, 193, 205, 221, 233, 245, 257, 266, 278, 290 ], "errorMessage": "can only call when not creating" }, { "pc": [ 1095, 1128, 1138, 1147, 1154 ], "errorMessage": "expected 4" }, { "pc": [ 1070 ], "errorMessage": "expected 5" }, { "pc": [ 1704 ], "errorMessage": "expected array of length 32" }, { "pc": [ 1408 ], "errorMessage": "expected array of length 5" }, { "pc": [ 1485 ], "errorMessage": "incorrect array value" }, { "pc": [ 566, 590, 730, 801, 829, 833, 916, 946, 950, 954, 987, 1010, 1032, 1047, 1096, 1180, 1388, 1580, 1684 ], "errorMessage": "max array length exceeded" }, { "pc": [ 1777 ], "errorMessage": "no available slots" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayA4IDAgMSA1IDUxMgogICAgYnl0ZWNibG9jayAweCAweDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMyAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAwMDAwMDAwMDA0CiAgICBwdXNoYnl0ZXMgMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCiAgICBzdG9yZSAwCiAgICAvLyBhcnJheS91aW50NjQucHk6NAogICAgLy8gY2xhc3MgQ29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fYmFyZV9yb3V0aW5nQDE1CiAgICBwdXNoYnl0ZXNzIDB4YTMzYmU4NzMgMHhlMGMzNzhlOSAweDM2NmY1MDlkIDB4NTgzNTFhNTAgMHhmYTk5ZTk4NCAweGEyMGU0NDBmIDB4MTc5YWMzZjkgMHhmMTdmNmYwYSAweDg0NWUxYjRlIDB4NzYyMWNmZDEgLy8gbWV0aG9kICJ0ZXN0X2FycmF5KCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X2V4dGVuZCgpdm9pZCIsIG1ldGhvZCAidGVzdF9hcnJheV9tdWx0aXBsZV9hcHBlbmQoKXZvaWQiLCBtZXRob2QgIm92ZXJoZWFkKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X3Rvb19sb25nKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZCgpdm9pZCIsIG1ldGhvZCAidGVzdF9hcnJheV9ldmFsdWF0aW9uX29yZGVyKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FsbG9jYXRpb25zKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2l0ZXJhdGlvbigpdm9pZCIsIG1ldGhvZCAidGVzdF9xdWlja3NvcnQoKXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtYWluX3Rlc3RfYXJyYXlfcm91dGVAMyBtYWluX3Rlc3RfYXJyYXlfZXh0ZW5kX3JvdXRlQDQgbWFpbl90ZXN0X2FycmF5X211bHRpcGxlX2FwcGVuZF9yb3V0ZUA1IG1haW5fb3ZlcmhlYWRfcm91dGVANiBtYWluX3Rlc3RfYXJyYXlfdG9vX2xvbmdfcm91dGVANyBtYWluX3Rlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kX3JvdXRlQDggbWFpbl90ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXJfcm91dGVAOSBtYWluX3Rlc3RfYWxsb2NhdGlvbnNfcm91dGVAMTAgbWFpbl90ZXN0X2l0ZXJhdGlvbl9yb3V0ZUAxMSBtYWluX3Rlc3RfcXVpY2tzb3J0X3JvdXRlQDEyCgptYWluX2FmdGVyX2lmX2Vsc2VAMTk6CiAgICAvLyBhcnJheS91aW50NjQucHk6NAogICAgLy8gY2xhc3MgQ29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgaW50Y18xIC8vIDAKICAgIHJldHVybgoKbWFpbl90ZXN0X3F1aWNrc29ydF9yb3V0ZUAxMjoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNTYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9xdWlja3NvcnQKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9pdGVyYXRpb25fcm91dGVAMTE6CiAgICAvLyBhcnJheS91aW50NjQucHk6MTIyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBjYWxsc3ViIHRlc3RfaXRlcmF0aW9uCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfYWxsb2NhdGlvbnNfcm91dGVAMTA6CiAgICAvLyBhcnJheS91aW50NjQucHk6MTE2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICAvLyBhcnJheS91aW50NjQucHk6NAogICAgLy8gY2xhc3MgQ29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gYXJyYXkvdWludDY0LnB5OjExNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGNhbGxzdWIgdGVzdF9hbGxvY2F0aW9ucwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXJfcm91dGVAOToKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo5NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXIKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9hcnJheV9jb3B5X2FuZF9leHRlbmRfcm91dGVAODoKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZAogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2FycmF5X3Rvb19sb25nX3JvdXRlQDc6CiAgICAvLyBhcnJheS91aW50NjQucHk6NjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9hcnJheV90b29fbG9uZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl9vdmVyaGVhZF9yb3V0ZUA2OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0IC8vIE9uQ29tcGxldGlvbiBpcyBub3QgTm9PcAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydCAvLyBjYW4gb25seSBjYWxsIHdoZW4gbm90IGNyZWF0aW5nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX3Rlc3RfYXJyYXlfbXVsdGlwbGVfYXBwZW5kX3JvdXRlQDU6CiAgICAvLyBhcnJheS91aW50NjQucHk6NTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIGlzIG5vdCBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBub3QgY3JlYXRpbmcKICAgIGNhbGxzdWIgdGVzdF9hcnJheV9tdWx0aXBsZV9hcHBlbmQKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fdGVzdF9hcnJheV9leHRlbmRfcm91dGVANDoKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo0MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X2FycmF5X2V4dGVuZAogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl90ZXN0X2FycmF5X3JvdXRlQDM6CiAgICAvLyBhcnJheS91aW50NjQucHk6NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gaXMgbm90IE5vT3AKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQgLy8gY2FuIG9ubHkgY2FsbCB3aGVuIG5vdCBjcmVhdGluZwogICAgY2FsbHN1YiB0ZXN0X2FycmF5CiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX2JhcmVfcm91dGluZ0AxNToKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo0CiAgICAvLyBjbGFzcyBDb250cmFjdChhcmM0LkFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDE5CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgYXNzZXJ0IC8vIGNhbiBvbmx5IGNhbGwgd2hlbiBjcmVhdGluZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkudWludDY0LnF1aWNrc29ydF93aW5kb3coYXJyOiB1aW50NjQsIHdpbmRvd19sZWZ0OiB1aW50NjQsIHdpbmRvd19yaWdodDogdWludDY0KSAtPiB2b2lkOgpxdWlja3NvcnRfd2luZG93OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE3NC0xNzUKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgcXVpY2tzb3J0X3dpbmRvdyhhcnI6IEFycmF5W1VJbnQ2NF0sIHdpbmRvd19sZWZ0OiBVSW50NjQsIHdpbmRvd19yaWdodDogVUludDY0KSAtPiBOb25lOgogICAgcHJvdG8gMyAwCiAgICBieXRlY18wIC8vICIiCiAgICBkdXBuIDIKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNzgKICAgIC8vIHBpdm90ID0gYXJyWyh3aW5kb3dfbGVmdCArIHdpbmRvd19yaWdodCkgLy8gMl0KICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICArCiAgICBwdXNoaW50IDIgLy8gMgogICAgLwogICAgZnJhbWVfZGlnIC0zCiAgICBsb2FkcwogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBmcmFtZV9kaWcgLTEKICAgIGZyYW1lX2RpZyAtMgoKcXVpY2tzb3J0X3dpbmRvd193aGlsZV90b3BAMzoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxODItMTgzCiAgICAvLyAjIG1vdmUgbGVmdCBvZiB3aW5kb3cgdG93YXJkcyBwaXZvdAogICAgLy8gd2hpbGUgYXJyW2xlZnRdIDwgcGl2b3Q6CiAgICBmcmFtZV9kaWcgLTMKICAgIGxvYWRzCiAgICBmcmFtZV9kaWcgNQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfd2hpbGVfdG9wQDYKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxODQKICAgIC8vIGxlZnQgKz0gMQogICAgZnJhbWVfZGlnIDUKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDUKICAgIGIgcXVpY2tzb3J0X3dpbmRvd193aGlsZV90b3BAMwoKcXVpY2tzb3J0X3dpbmRvd193aGlsZV90b3BANjoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxODUtMTg2CiAgICAvLyAjIG1vdmUgcmlnaHQgb2Ygd2luZG93IHRvd2FyZHMgcGl2b3QKICAgIC8vIHdoaWxlIHBpdm90IDwgYXJyW3JpZ2h0XToKICAgIGZyYW1lX2RpZyAtMwogICAgbG9hZHMKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgZHVwCiAgICBmcmFtZV9idXJ5IDEKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBmcmFtZV9kaWcgMwogICAgPgogICAgYnogcXVpY2tzb3J0X3dpbmRvd19hZnRlcl93aGlsZUAxMAogICAgLy8gYXJyYXkvdWludDY0LnB5OjE4Ny0xODgKICAgIC8vICMgYnJlYWsgb3V0IG9mIGxvb3AgaWYgcmlnaHQgd291bGQgZ28gbmVnYXRpdmUKICAgIC8vIGlmIG5vdCByaWdodDoKICAgIGZyYW1lX2RpZyA0CiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCiAgICAvLyBhcnJheS91aW50NjQucHk6MTkwCiAgICAvLyByaWdodCAtPSAxCiAgICBmcmFtZV9kaWcgNAogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGZyYW1lX2J1cnkgNAogICAgYiBxdWlja3NvcnRfd2luZG93X3doaWxlX3RvcEA2CgpxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyOgogICAgLy8gYXJyYXkvdWludDY0LnB5OjIxOC0yMTkKICAgIC8vICMgc29ydCBsZWZ0IGhhbGYgb2Ygd2luZG93CiAgICAvLyBpZiB3aW5kb3dfbGVmdCA8IHJpZ2h0OgogICAgZnJhbWVfZGlnIC0yCiAgICBmcmFtZV9kaWcgNAogICAgPAogICAgYnogcXVpY2tzb3J0X3dpbmRvd19hZnRlcl9pZl9lbHNlQDI0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjIwCiAgICAvLyBxdWlja3NvcnRfd2luZG93KGFyciwgd2luZG93X2xlZnQsIHJpZ2h0KQogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyA0CiAgICBjYWxsc3ViIHF1aWNrc29ydF93aW5kb3cKCnF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAyNDoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMjEtMjIyCiAgICAvLyAjIHNvcnQgcmlnaHQgaGFsZiBvZiB3aW5kb3cKICAgIC8vIGlmIGxlZnQgPCB3aW5kb3dfcmlnaHQ6CiAgICBmcmFtZV9kaWcgNQogICAgZnJhbWVfZGlnIC0xCiAgICA8CiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX2lmX2Vsc2VAMjYKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMjMKICAgIC8vIHF1aWNrc29ydF93aW5kb3coYXJyLCBsZWZ0LCB3aW5kb3dfcmlnaHQpCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyA1CiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgcXVpY2tzb3J0X3dpbmRvdwoKcXVpY2tzb3J0X3dpbmRvd19hZnRlcl9pZl9lbHNlQDI2OgogICAgcmV0c3ViCgpxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDEwOgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE5Mi0xOTMKICAgIC8vICMgaWYgd2luZG93IGlzbid0IGVtcHR5IHRoZW4gc3dhcCB2YWx1ZXMgYW5kIG1vdmUgd2luZG93IGluCiAgICAvLyBpZiBsZWZ0IDwgcmlnaHQ6CiAgICBmcmFtZV9kaWcgNQogICAgZnJhbWVfZGlnIDQKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAxNgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE5NAogICAgLy8gYXJyW2xlZnRdLCBhcnJbcmlnaHRdID0gYXJyW3JpZ2h0XSwgYXJyW2xlZnRdCiAgICBmcmFtZV9kaWcgLTMKICAgIGxvYWRzCiAgICBkdXAKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMQogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgY292ZXIgNAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIGl0b2IKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHJlcGxhY2UzCiAgICBzd2FwCiAgICBpdG9iCiAgICBzd2FwCiAgICBjb3ZlciAyCiAgICByZXBsYWNlMwogICAgZnJhbWVfZGlnIC0zCiAgICBzd2FwCiAgICBzdG9yZXMKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxOTUKICAgIC8vIGxlZnQgKz0gMQogICAgZnJhbWVfZGlnIDUKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDUKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxOTYtMTk3CiAgICAvLyAjIGJyZWFrIG91dCBvZiBsb29wIGlmIHJpZ2h0IHdvdWxkIGdvIG5lZ2F0aXZlCiAgICAvLyBpZiBub3QgcmlnaHQ6CiAgICBmcmFtZV9kaWcgNAogICAgYnogcXVpY2tzb3J0X3dpbmRvd19hZnRlcl93aGlsZUAyMgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE5OQogICAgLy8gcmlnaHQgLT0gMQogICAgZnJhbWVfZGlnIDQKICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgNAogICAgLy8gYXJyYXkvdWludDY0LnB5OjIwMC0yMDEKICAgIC8vICMgZXhwbGljaXQgY29udGludWUgdG8gYXZvaWQgaGl0dGluZyBvdXRlciBicmVhawogICAgLy8gaWYgbGVmdCA8PSByaWdodDoKICAgIGZyYW1lX2RpZyA1CiAgICA+PQogICAgYm56IHF1aWNrc29ydF93aW5kb3dfd2hpbGVfdG9wQDMKICAgIGIgcXVpY2tzb3J0X3dpbmRvd19hZnRlcl93aGlsZUAyMgoKcXVpY2tzb3J0X3dpbmRvd19hZnRlcl9pZl9lbHNlQDE2OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjIwNi0yMDcKICAgIC8vICMgaWYgd2luZG93IGlzIGp1c3Qgb25lIGl0ZW0sIGRvbid0IGJvdGhlciBzd2FwcGluZywgYnV0IHN0aWxsIGFkanVzdCB3aW5kb3cKICAgIC8vIGlmIGxlZnQgPT0gcmlnaHQ6CiAgICBmcmFtZV9kaWcgNQogICAgZnJhbWVfZGlnIDQKICAgID09CiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCiAgICAvLyBhcnJheS91aW50NjQucHk6MjA4CiAgICAvLyBsZWZ0ICs9IDEKICAgIGZyYW1lX2RpZyA1CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA1CiAgICBmcmFtZV9kaWcgNAogICAgZHVwCiAgICBmcmFtZV9idXJ5IDIKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMDktMjEwCiAgICAvLyAjIGRvbid0IGRlY3JlbWVudCByaWdodCBpZiBpdCB3b3VsZCBnbyBuZWdhdGl2ZQogICAgLy8gaWYgcmlnaHQ6CiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX2lmX2Vsc2VAMTkKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMTEKICAgIC8vIHJpZ2h0IC09IDEKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgZnJhbWVfYnVyeSAyCgpxdWlja3NvcnRfd2luZG93X2FmdGVyX2lmX2Vsc2VAMTk6CiAgICBmcmFtZV9kaWcgMgogICAgZnJhbWVfYnVyeSA0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjEyLTIxNAogICAgLy8gIyBsb29wIGFsd2F5cyBlbmRzIGluIHRoaXMgc2NlbmFyaW8KICAgIC8vICMgYW5kIGFuIGV4cGxpY3QgYnJlYWsgY29uc3VtZXMgZmV3ZXIgb3BzCiAgICAvLyBicmVhawogICAgYiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCgoKLy8gdGVzdF9jYXNlcy5hcnJheS51aW50NjQuYWRkX3goYXJyOiB1aW50NjQsIHg6IHVpbnQ2NCkgLT4gdm9pZDoKYWRkX3g6CiAgICAvLyBhcnJheS91aW50NjQucHk6MjMzLTIzNAogICAgLy8gQHN1YnJvdXRpbmUKICAgIC8vIGRlZiBhZGRfeChhcnI6IEFycmF5W1VJbnQ2NF0sIHg6IFVJbnQ2NCkgLT4gTm9uZToKICAgIHByb3RvIDIgMAogICAgLy8gYXJyYXkvdWludDY0LnB5OjIzNQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHgpOgogICAgaW50Y18xIC8vIDAKCmFkZF94X2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMzUKICAgIC8vIGZvciBpIGluIHVyYW5nZSh4KToKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IGFkZF94X2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjM2CiAgICAvLyBhcnIuYXBwZW5kKGkpCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBpdG9iCiAgICBmcmFtZV9kaWcgLTIKICAgIGxvYWRzCiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2RpZyAtMgogICAgc3dhcAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MjM1CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoeCk6CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFkZF94X2Zvcl9oZWFkZXJAMQoKYWRkX3hfYWZ0ZXJfZm9yQDQ6CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnVpbnQ2NC5hcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyOiB1aW50NjQpIC0+IHVpbnQ2NDoKYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuOgogICAgLy8gYXJyYXkvdWludDY0LnB5OjI0Ny0yNDgKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycjogQXJyYXlbVUludDY0XSkgLT4gQXJyYXlbVUludDY0XToKICAgIHByb3RvIDEgMQogICAgLy8gYXJyYXkvdWludDY0LnB5OjI0OQogICAgLy8gYXJyLmFwcGVuZChhcnIubGVuZ3RoKQogICAgZnJhbWVfZGlnIC0xCiAgICBsb2FkcwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2RpZyAtMQogICAgc3dhcAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MjUwCiAgICAvLyByZXR1cm4gYXJyCiAgICBmcmFtZV9kaWcgLTEKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkudWludDY0LkNvbnRyYWN0LnRlc3RfYXJyYXkoKSAtPiB2b2lkOgp0ZXN0X2FycmF5OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjUtNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2FycmF5KHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3CiAgICAvLyBhcnIgPSBBcnJheVtVSW50NjRdKCkKICAgIGNhbGxzdWIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdAogICAgZHVwCiAgICAvLyBhcnJheS91aW50NjQucHk6MTAKICAgIC8vIGFyci5hcHBlbmQoVUludDY0KDQyKSkKICAgIHB1c2hpbnQgNDIgLy8gNDIKICAgIGl0b2IKICAgIGRpZyAxCiAgICBzd2FwCiAgICBzdG9yZXMKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNAogICAgLy8gYWRkX3goYXJyLCBVSW50NjQoNSkpCiAgICBkdXAKICAgIGludGNfMyAvLyA1CiAgICBjYWxsc3ViIGFkZF94CiAgICAvLyBhcnJheS91aW50NjQucHk6MTUKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDYKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCA2IC8vIDYKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNgogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gNAogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0IC8vIDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxOAogICAgLy8gcG9wX3goYXJyLCB4PVVJbnQ2NCgzKSwgZXhwZWN0ZWQ9VUludDY0KDQpKQogICAgcHVzaGludCA0IC8vIDQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyNDEKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UoeCk6CiAgICBpbnRjXzEgLy8gMAoKdGVzdF9hcnJheV9mb3JfaGVhZGVyQDI6CiAgICAvLyBhcnJheS91aW50NjQucHk6MjQxCiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKHgpOgogICAgZnJhbWVfZGlnIDIKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxOAogICAgLy8gcG9wX3goYXJyLCB4PVVJbnQ2NCgzKSwgZXhwZWN0ZWQ9VUludDY0KDQpKQogICAgcHVzaGludCAzIC8vIDMKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyNDEKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UoeCk6CiAgICA8CiAgICBieiB0ZXN0X2FycmF5X2FmdGVyX2ZvckA0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjQyCiAgICAvLyBwb3BwZWQgPSBhcnIucG9wKCkKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC0KICAgIGR1cAogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGRpZyAyCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAzCiAgICBleHRyYWN0MwogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgICoKICAgIHVuY292ZXIgMgogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGNvdmVyIDIKICAgIHN0b3JlcwogICAgLy8gYXJyYXkvdWludDY0LnB5OjI0MwogICAgLy8gYXNzZXJ0IHBvcHBlZCA9PSBleHBlY3RlZAogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgY292ZXIgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjI0NAogICAgLy8gZXhwZWN0ZWQgLT0gMQogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGZyYW1lX2J1cnkgMQogICAgLy8gYXJyYXkvdWludDY0LnB5OjI0MQogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGZyYW1lX2RpZyAyCiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAyCiAgICBiIHRlc3RfYXJyYXlfZm9yX2hlYWRlckAyCgp0ZXN0X2FycmF5X2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE5CiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSAzCiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICBsb2FkcwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgMyAvLyAzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjAKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IDEKICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzIgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjIyCiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCg0MykpCiAgICBwdXNoaW50IDQzIC8vIDQzCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGR1cDIKICAgIHN0b3JlcwogICAgLy8gYXJyYXkvdWludDY0LnB5OjIzCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCA0IC8vIDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyNAogICAgLy8gYXNzZXJ0IGFyclstMV0gPT0gNDMKICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQzIC8vIDQzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MjUKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gNDIKICAgIGV4dHJhY3QgMCA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNDIgLy8gNDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyNwogICAgLy8gYWRkX3goYXJyLCBVSW50NjQoMTApKQogICAgZHVwCiAgICBwdXNoaW50IDEwIC8vIDEwCiAgICBjYWxsc3ViIGFkZF94CiAgICAvLyBhcnJheS91aW50NjQucHk6MjgKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDE0CiAgICBkdXAKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCAxNCAvLyAxNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjI5CiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA5CiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA5IC8vIDkKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weTozMQogICAgLy8gYXJyLmFwcGVuZChVSW50NjQoNDQpKQogICAgcHVzaGludCA0NCAvLyA0NAogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICAvLyBhcnJheS91aW50NjQucHk6MzIKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDE1CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCAxNSAvLyAxNQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjMzCiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA0NAogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNDQgLy8gNDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToyMjgKICAgIC8vIGFyci5hcHBlbmQoVUludDY0KDk5KSkKICAgIHB1c2hpbnQgOTkgLy8gOTkKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gYXJyYXkvdWludDY0LnB5OjIyOQogICAgLy8gYXJyMi5hcHBlbmQoVUludDY0KDEwMCkpCiAgICBwdXNoaW50IDEwMCAvLyAxMDAKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gYXJyYXkvdWludDY0LnB5OjM1CiAgICAvLyByZXR1cm5fcmVmKGFyciwgYXJyKVswXSArPSAyCiAgICBkdXAKICAgIGV4dHJhY3QgMCA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMiAvLyAyCiAgICArCiAgICBpdG9iCiAgICByZXBsYWNlMiAwCiAgICBzd2FwCiAgICBkaWcgMQogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MzYKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDE3CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCAxNyAvLyAxNwogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjM3CiAgICAvLyBhc3NlcnQgYXJyWzBdID09IDQ0CiAgICBkaWcgMQogICAgZXh0cmFjdCAwIDgKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0NCAvLyA0NAogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjM4CiAgICAvLyBhc3NlcnQgYXJyWy0yXSA9PSA5OQogICAgZHVwCiAgICBwdXNoaW50IDIgLy8gMgogICAgLQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA5OSAvLyA5OQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjM5CiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSAxMDAKICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMTAwIC8vIDEwMAogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS51aW50NjQuQ29udHJhY3QudGVzdF9hcnJheV9leHRlbmQoKSAtPiB2b2lkOgp0ZXN0X2FycmF5X2V4dGVuZDoKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo0MwogICAgLy8gYXJyID0gQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAweAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6NDQKICAgIC8vIGFkZF94KGFyciwgVUludDY0KDEpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMQogICAgY2FsbHN1YiBhZGRfeAogICAgLy8gYXJyYXkvdWludDY0LnB5OjQ4CiAgICAvLyBhcnIyLmFwcGVuZChVSW50NjQoMykpCiAgICBieXRlY18xIC8vIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAzCiAgICBwb3AKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo1MAogICAgLy8gYXJyLmV4dGVuZChhcnIyKQogICAgZHVwCiAgICBsb2FkcwogICAgLy8gYXJyYXkvdWludDY0LnB5OjQ4CiAgICAvLyBhcnIyLmFwcGVuZChVSW50NjQoMykpCiAgICBieXRlY18xIC8vIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAzCiAgICAvLyBhcnJheS91aW50NjQucHk6NTAKICAgIC8vIGFyci5leHRlbmQoYXJyMikKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3dhcAogICAgZGlnIDEKICAgIHN0b3JlcwogICAgLy8gYXJyYXkvdWludDY0LnB5OjUxCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA0CiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBwdXNoaW50IDQgLy8gNAogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS51aW50NjQuQ29udHJhY3QudGVzdF9hcnJheV9tdWx0aXBsZV9hcHBlbmQoKSAtPiB2b2lkOgp0ZXN0X2FycmF5X211bHRpcGxlX2FwcGVuZDoKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo1NQogICAgLy8gYXJyID0gQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAweAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6NTYKICAgIC8vIGFkZF94KGFyciwgVUludDY0KDEpKQogICAgZHVwCiAgICBpbnRjXzIgLy8gMQogICAgY2FsbHN1YiBhZGRfeAogICAgLy8gYXJyYXkvdWludDY0LnB5OjU3CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgxKSkKICAgIGludGNfMiAvLyAxCiAgICBpdG9iCiAgICBkaWcgMQogICAgbG9hZHMKICAgIHN3YXAKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gYXJyYXkvdWludDY0LnB5OjU4CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgyKSkKICAgIHB1c2hpbnQgMiAvLyAyCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo1OQogICAgLy8gYXJyLmFwcGVuZChVSW50NjQoMykpCiAgICBwdXNoaW50IDMgLy8gMwogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBzd2FwCiAgICBkaWcgMQogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6NjAKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnVpbnQ2NC5Db250cmFjdC50ZXN0X2FycmF5X3Rvb19sb25nKCkgLT4gdm9pZDoKdGVzdF9hcnJheV90b29fbG9uZzoKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo2Ni02NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2FycmF5X3Rvb19sb25nKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo2OAogICAgLy8gYXJyYXkgPSBBcnJheVtVSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo2OQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUxMik6CiAgICBpbnRjXzEgLy8gMAoKdGVzdF9hcnJheV90b29fbG9uZ19mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS91aW50NjQucHk6NjkKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1MTIpOgogICAgZnJhbWVfZGlnIDEKICAgIGludGMgNCAvLyA1MTIKICAgIDwKICAgIGJ6IHRlc3RfYXJyYXlfdG9vX2xvbmdfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3MAogICAgLy8gYXJyYXkuYXBwZW5kKGkpCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBpdG9iCiAgICBmcmFtZV9kaWcgMAogICAgc3dhcAogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBmcmFtZV9idXJ5IDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo2OQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUxMik6CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRlc3RfYXJyYXlfdG9vX2xvbmdfZm9yX2hlYWRlckAxCgp0ZXN0X2FycmF5X3Rvb19sb25nX2FmdGVyX2ZvckA0OgogICAgZnJhbWVfZGlnIDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3MQogICAgLy8gYXNzZXJ0IGFycmF5Lmxlbmd0aCA9PSA1MTIsICJhcnJheSBpcyBleHBlY3RlZCBsZW5ndGgiCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGludGMgNCAvLyA1MTIKICAgID09CiAgICBhc3NlcnQgLy8gYXJyYXkgaXMgZXhwZWN0ZWQgbGVuZ3RoCiAgICAvLyBhcnJheS91aW50NjQucHk6NzMKICAgIC8vIGFycmF5LmFwcGVuZChVSW50NjQoNTEyKSkgICMgdGhpcyB3aWxsIGZhaWwKICAgIGludGMgNCAvLyA1MTIKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgcG9wCiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnVpbnQ2NC5Db250cmFjdC50ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZCgpIC0+IHZvaWQ6CnRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kOgogICAgLy8gYXJyYXkvdWludDY0LnB5Ojc1LTc2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kKHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3NwogICAgLy8gYXJyYXkgPSBBcnJheVtVSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18xIC8vIDAKCnRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kX2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo3OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMyAvLyA1CiAgICA8CiAgICBieiB0ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZF9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvdWludDY0LnB5Ojc5CiAgICAvLyBhcnJheS5hcHBlbmQoaSkKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGl0b2IKICAgIGZyYW1lX2RpZyAwCiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2J1cnkgMAogICAgLy8gYXJyYXkvdWludDY0LnB5Ojc4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAxCiAgICBiIHRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kX2Zvcl9oZWFkZXJAMQoKdGVzdF9hcnJheV9jb3B5X2FuZF9leHRlbmRfYWZ0ZXJfZm9yQDQ6CiAgICBmcmFtZV9kaWcgMAogICAgZHVwCiAgICAvLyBhcnJheS91aW50NjQucHk6ODIKICAgIC8vIGFycmF5LmFwcGVuZChVSW50NjQoNSkpCiAgICBpbnRjXzMgLy8gNQogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICAvLyBhcnJheS91aW50NjQucHk6ODMKICAgIC8vIGFzc2VydCBhcnJheS5sZW5ndGggPT0gNgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgNiAvLyA2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6ODQKICAgIC8vIGFzc2VydCBhcnJheVstMV0gPT0gNSwgImV4cGVjdGVkIDUiCiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaW50Y18zIC8vIDUKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgNQogICAgZGlnIDEKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo4NgogICAgLy8gYXNzZXJ0IGFycmF5Mi5sZW5ndGggPT0gNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBkdXAKICAgIGludGNfMyAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6ODcKICAgIC8vIGFzc2VydCBhcnJheTJbLTFdID09IDQsICJleHBlY3RlZCA0IgogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNCAvLyA0CiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIDQKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo4OQogICAgLy8gYXJyYXkuZXh0ZW5kKGFycmF5MikKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gYXJyYXkvdWludDY0LnB5OjkwCiAgICAvLyBhc3NlcnQgYXJyYXkubGVuZ3RoID09IDExCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCAxMSAvLyAxMQogICAgPT0KICAgIGFzc2VydAogICAgdW5jb3ZlciAyCiAgICAvLyBhcnJheS91aW50NjQucHk6OTEKICAgIC8vIGFzc2VydCBhcnJheTIubGVuZ3RoID09IDUKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGludGNfMyAvLyA1CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6OTIKICAgIC8vIGFzc2VydCBhcnJheVstMV0gPT0gNCwgImV4cGVjdGVkIDQiCiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0IC8vIDQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgNAogICAgLy8gYXJyYXkvdWludDY0LnB5OjkzCiAgICAvLyBhc3NlcnQgYXJyYXlbNF0gPT0gNCwgImV4cGVjdGVkIDQiCiAgICBkdXAKICAgIGV4dHJhY3QgMzIgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQgLy8gNAogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCA0CiAgICAvLyBhcnJheS91aW50NjQucHk6OTQKICAgIC8vIGFzc2VydCBhcnJheVs1XSA9PSA1LCAiZXhwZWN0ZWQgNCIKICAgIGR1cAogICAgZXh0cmFjdCA0MCA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIGludGNfMyAvLyA1CiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIDQKICAgIC8vIGFycmF5L3VpbnQ2NC5weTo5NQogICAgLy8gYXNzZXJ0IGFycmF5WzZdID09IDAsICJleHBlY3RlZCA0IgogICAgZXh0cmFjdCA0OCA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgICEKICAgIGFzc2VydCAvLyBleHBlY3RlZCA0CiAgICByZXRzdWIKCgovLyB0ZXN0X2Nhc2VzLmFycmF5LnVpbnQ2NC5Db250cmFjdC50ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXIoKSAtPiB2b2lkOgp0ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXI6CiAgICAvLyBhcnJheS91aW50NjQucHk6OTkKICAgIC8vIGFyciA9IEFycmF5W1VJbnQ2NF0oKQogICAgY2FsbHN1YiBfcHV5YV9saWIubWVtLm5ld19zbG90CiAgICAvLyBhcnJheS91aW50NjQucHk6MTAwCiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgzKSkKICAgIHB1c2hpbnQgMyAvLyAzCiAgICBpdG9iCiAgICBkaWcgMQogICAgc3dhcAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MTAxCiAgICAvLyBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyKS5leHRlbmQoYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycikpCiAgICBkdXAKICAgIGNhbGxzdWIgYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuCiAgICBkaWcgMQogICAgY2FsbHN1YiBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4KICAgIGxvYWRzCiAgICBkaWcgMQogICAgbG9hZHMKICAgIHN3YXAKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MTAyCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA2CiAgICBkdXAKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIHB1c2hpbnQgNiAvLyA2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTAzCiAgICAvLyBhc3NlcnQgYXJyWzBdID09IDMKICAgIGR1cAogICAgZXh0cmFjdCAwIDgKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCAzIC8vIDMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMDQKICAgIC8vIGFzc2VydCBhcnJbMV0gPT0gMQogICAgZHVwCiAgICBleHRyYWN0IDggOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzIgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEwNQogICAgLy8gYXNzZXJ0IGFyclsyXSA9PSAyCiAgICBkdXAKICAgIGV4dHJhY3QgMTYgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDIgLy8gMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEwNgogICAgLy8gYXNzZXJ0IGFyclszXSA9PSAzCiAgICBkdXAKICAgIGV4dHJhY3QgMjQgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDMgLy8gMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEwNwogICAgLy8gYXNzZXJ0IGFycls0XSA9PSAxCiAgICBkdXAKICAgIGV4dHJhY3QgMzIgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzIgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEwOAogICAgLy8gYXNzZXJ0IGFycls1XSA9PSAyCiAgICBleHRyYWN0IDQwIDgKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCAyIC8vIDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMTAKICAgIC8vIGFyclthcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyKVswXV0gPSBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyKVstMV0KICAgIGR1cAogICAgY2FsbHN1YiBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4KICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBkaWcgMgogICAgY2FsbHN1YiBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4KICAgIGxvYWRzCiAgICBleHRyYWN0IDAgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgbG9hZHMKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDgKICAgICoKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDgKICAgICoKICAgIHN3YXAKICAgIGl0b2IKICAgIHJlcGxhY2UzCiAgICBzd2FwCiAgICBkaWcgMQogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MTExCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSA4CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTEyCiAgICAvLyBhc3NlcnQgYXJyWzZdID09IDYKICAgIGR1cAogICAgZXh0cmFjdCA0OCA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNiAvLyA2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTEzCiAgICAvLyBhc3NlcnQgYXJyWzddID09IDcKICAgIGR1cAogICAgZXh0cmFjdCA1NiA4CiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNyAvLyA3CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTE0CiAgICAvLyBhc3NlcnQgYXJyWzNdID09IDYKICAgIGV4dHJhY3QgMjQgOAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDYgLy8gNgogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS51aW50NjQuQ29udHJhY3QudGVzdF9hbGxvY2F0aW9ucyhudW06IHVpbnQ2NCkgLT4gdm9pZDoKdGVzdF9hbGxvY2F0aW9uczoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMTYtMTE3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfYWxsb2NhdGlvbnMoc2VsZiwgbnVtOiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAxIDAKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMTgKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UobnVtKToKICAgIGludGNfMSAvLyAwCgp0ZXN0X2FsbG9jYXRpb25zX2Zvcl9oZWFkZXJAMToKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMTgKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UobnVtKToKICAgIGZyYW1lX2RpZyAwCiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IHRlc3RfYWxsb2NhdGlvbnNfYWZ0ZXJfZm9yQDQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMTkKICAgIC8vIGFsbG9jX3Rlc3QgPSBBcnJheVtVSW50NjRdKCkKICAgIGNhbGxzdWIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdAogICAgZHVwCiAgICBieXRlY18wIC8vIDB4CiAgICBzdG9yZXMKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMjAKICAgIC8vIGFkZF94KGFsbG9jX3Rlc3QsIFVJbnQ2NCgxKSkKICAgIGludGNfMiAvLyAxCiAgICBjYWxsc3ViIGFkZF94CiAgICAvLyBhcnJheS91aW50NjQucHk6MTE4CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKG51bSk6CiAgICBmcmFtZV9kaWcgMAogICAgaW50Y18yIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgMAogICAgYiB0ZXN0X2FsbG9jYXRpb25zX2Zvcl9oZWFkZXJAMQoKdGVzdF9hbGxvY2F0aW9uc19hZnRlcl9mb3JANDoKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMuYXJyYXkudWludDY0LkNvbnRyYWN0LnRlc3RfaXRlcmF0aW9uKCkgLT4gdm9pZDoKdGVzdF9pdGVyYXRpb246CiAgICAvLyBhcnJheS91aW50NjQucHk6MTIyLTEyMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIC8vIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmKSAtPiBOb25lOgogICAgcHJvdG8gMCAwCiAgICBpbnRjXzEgLy8gMAogICAgZHVwCiAgICBieXRlY18wIC8vICIiCiAgICAvLyBhcnJheS91aW50NjQucHk6MTI0CiAgICAvLyBhcnIgPSBBcnJheVtVSW50NjRdKCkKICAgIGR1cG4gNwogICAgLy8gYXJyYXkvdWludDY0LnB5OjEyNQogICAgLy8gZm9yIHZhbCBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzEgLy8gMAoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxOgogICAgLy8gYXJyYXkvdWludDY0LnB5OjEyNQogICAgLy8gZm9yIHZhbCBpbiB1cmFuZ2UoNSk6CiAgICBmcmFtZV9kaWcgMTAKICAgIGludGNfMyAvLyA1CiAgICA8CiAgICBieiB0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEyNgogICAgLy8gYXJyLmFwcGVuZCh2YWwpCiAgICBmcmFtZV9kaWcgMTAKICAgIGR1cAogICAgaXRvYgogICAgZnJhbWVfZGlnIDkKICAgIHN3YXAKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgZnJhbWVfYnVyeSA5CiAgICAvLyBhcnJheS91aW50NjQucHk6MTI1CiAgICAvLyBmb3IgdmFsIGluIHVyYW5nZSg1KToKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEwCiAgICBiIHRlc3RfaXRlcmF0aW9uX2Zvcl9oZWFkZXJAMQoKdGVzdF9pdGVyYXRpb25fYWZ0ZXJfZm9yQDQ6CiAgICBmcmFtZV9kaWcgOQogICAgLy8gYXJyYXkvdWludDY0LnB5OjEyNwogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNSwgImV4cGVjdGVkIGFycmF5IG9mIGxlbmd0aCA1IgogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgLwogICAgZHVwCiAgICBmcmFtZV9idXJ5IDIKICAgIGludGNfMyAvLyA1CiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFycmF5IG9mIGxlbmd0aCA1CiAgICAvLyBhcnJheS91aW50NjQucHk6MTI5LTEzMAogICAgLy8gIyBpdGVyYXRlCiAgICAvLyBsYXN0ID0gVUludDY0KDApCiAgICBpbnRjXzEgLy8gMAogICAgZnJhbWVfYnVyeSA3CiAgICBpbnRjXzEgLy8gMAogICAgZnJhbWVfYnVyeSA2Cgp0ZXN0X2l0ZXJhdGlvbl9mb3JfaGVhZGVyQDU6CiAgICAvLyBhcnJheS91aW50NjQucHk6MTMxCiAgICAvLyBmb3IgdmFsdWUgaW4gYXJyOgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2RpZyAyCiAgICA8CiAgICBieiB0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAOAogICAgZnJhbWVfZGlnIDkKICAgIGZyYW1lX2RpZyA2CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEzMgogICAgLy8gYXNzZXJ0IHZhbHVlID49IGxhc3QsICJhcnJheSBpcyBub3Qgc29ydGVkIgogICAgZHVwCiAgICBmcmFtZV9kaWcgNwogICAgPj0KICAgIGFzc2VydCAvLyBhcnJheSBpcyBub3Qgc29ydGVkCiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA2CiAgICBmcmFtZV9idXJ5IDcKICAgIGIgdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckA1Cgp0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAODoKICAgIGZyYW1lX2RpZyA5CiAgICAvLyBhcnJheS91aW50NjQucHk6MTM1LTEzNgogICAgLy8gIyBlbnVtZXJhdGUKICAgIC8vIGZvciBpZHgsIHZhbHVlIGluIHVlbnVtZXJhdGUoYXJyKToKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGZyYW1lX2J1cnkgMwogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgNQoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckA5OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjEzNS0xMzYKICAgIC8vICMgZW51bWVyYXRlCiAgICAvLyBmb3IgaWR4LCB2YWx1ZSBpbiB1ZW51bWVyYXRlKGFycik6CiAgICBmcmFtZV9kaWcgNQogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IHRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckAxMgogICAgZnJhbWVfZGlnIDkKICAgIGZyYW1lX2RpZyA1CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gYXJyYXkvdWludDY0LnB5OjEzNwogICAgLy8gYXNzZXJ0IHZhbHVlID09IGlkeCwgImluY29ycmVjdCBhcnJheSB2YWx1ZSIKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGluY29ycmVjdCBhcnJheSB2YWx1ZQogICAgaW50Y18yIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNQogICAgYiB0ZXN0X2l0ZXJhdGlvbl9mb3JfaGVhZGVyQDkKCnRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckAxMjoKICAgIGZyYW1lX2RpZyA5CiAgICAvLyBhcnJheS91aW50NjQucHk6MTM5LTE0MAogICAgLy8gIyByZXZlcnNlCiAgICAvLyBmb3IgdmFsdWUgaW4gcmV2ZXJzZWQoYXJyKToKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGZyYW1lX2J1cnkgOAoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxMzoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxMzktMTQwCiAgICAvLyAjIHJldmVyc2UKICAgIC8vIGZvciB2YWx1ZSBpbiByZXZlcnNlZChhcnIpOgogICAgZnJhbWVfZGlnIDgKICAgIGJ6IHRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckAxNgogICAgZnJhbWVfZGlnIDgKICAgIGludGNfMiAvLyAxCiAgICAtCiAgICBkdXAKICAgIGZyYW1lX2J1cnkgOAogICAgZnJhbWVfZGlnIDkKICAgIHN3YXAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gYXJyYXkvdWludDY0LnB5OjE0MQogICAgLy8gYXNzZXJ0IHZhbHVlIDw9IGxhc3QsICJhcnJheSBpcyBub3Qgc29ydGVkIgogICAgZHVwCiAgICBmcmFtZV9kaWcgNwogICAgPD0KICAgIGFzc2VydCAvLyBhcnJheSBpcyBub3Qgc29ydGVkCiAgICBmcmFtZV9idXJ5IDcKICAgIGIgdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxMwoKdGVzdF9pdGVyYXRpb25fYWZ0ZXJfZm9yQDE2OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE0NAogICAgLy8gYXJjNF9hcnIgPSBhcmM0LkR5bmFtaWNBcnJheVthcmM0LlVJbnQ2NF0oKQogICAgcHVzaGJ5dGVzIDB4MDAwMAogICAgZnJhbWVfYnVyeSAwCiAgICAvLyBhcnJheS91aW50NjQucHk6MTQ1CiAgICAvLyBuYXRpdmVfYXJyID0gQXJyYXlbYXJjNC5VSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gYXJyYXkvdWludDY0LnB5OjE0NgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgNAoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxNzoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNDYKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzMgLy8gNQogICAgPAogICAgYnogdGVzdF9pdGVyYXRpb25fYWZ0ZXJfZm9yQDIwCiAgICAvLyBhcnJheS91aW50NjQucHk6MTQ3CiAgICAvLyBhcmM0X2Fyci5hcHBlbmQoYXJjNC5VSW50NjQoaSkpCiAgICBmcmFtZV9kaWcgMAogICAgZXh0cmFjdCAyIDAKICAgIGZyYW1lX2RpZyA0CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGl0b2IKICAgIHN3YXAKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgLwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZnJhbWVfYnVyeSAwCiAgICBmcmFtZV9kaWcgMQogICAgLy8gYXJyYXkvdWludDY0LnB5OjE0OAogICAgLy8gbmF0aXZlX2Fyci5hcHBlbmQoYXJjNC5VSW50NjQoaSkpCiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGZyYW1lX2J1cnkgMQogICAgLy8gYXJyYXkvdWludDY0LnB5OjE0NgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18yIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNAogICAgYiB0ZXN0X2l0ZXJhdGlvbl9mb3JfaGVhZGVyQDE3Cgp0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAMjA6CiAgICAvLyBhcnJheS91aW50NjQucHk6MTQ5CiAgICAvLyBjb21iaW5lZF9hcnIgPSBhcmM0X2FyciArIG5hdGl2ZV9hcnIKICAgIGZyYW1lX2RpZyAwCiAgICBleHRyYWN0IDIgMAogICAgZnJhbWVfZGlnIDEKICAgIGNvbmNhdAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICAvCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTUwCiAgICAvLyBhc3NlcnQgY29tYmluZWRfYXJyLmxlbmd0aCA9PSAxMAogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYKICAgIHB1c2hpbnQgMTAgLy8gMTAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNTEKICAgIC8vIGFzc2VydCBjb21iaW5lZF9hcnJbMF0gPT0gMAogICAgZHVwCiAgICBleHRyYWN0IDIgOAogICAgYnl0ZWNfMiAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTUyCiAgICAvLyBhc3NlcnQgY29tYmluZWRfYXJyWzRdID09IDQKICAgIGR1cAogICAgZXh0cmFjdCAzNCA4CiAgICBieXRlY18zIC8vIDB4MDAwMDAwMDAwMDAwMDAwNAogICAgYj09CiAgICBhc3NlcnQKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNTMKICAgIC8vIGFzc2VydCBjb21iaW5lZF9hcnJbNV0gPT0gMAogICAgZHVwCiAgICBleHRyYWN0IDQyIDgKICAgIGJ5dGVjXzIgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCiAgICBiPT0KICAgIGFzc2VydAogICAgLy8gYXJyYXkvdWludDY0LnB5OjE1NAogICAgLy8gYXNzZXJ0IGNvbWJpbmVkX2Fycls5XSA9PSA0CiAgICBleHRyYWN0IDc0IDgKICAgIGJ5dGVjXzMgLy8gMHgwMDAwMDAwMDAwMDAwMDA0CiAgICBiPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcnJheS51aW50NjQuQ29udHJhY3QudGVzdF9xdWlja3NvcnQoKSAtPiB2b2lkOgp0ZXN0X3F1aWNrc29ydDoKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNTYtMTU3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgLy8gZGVmIHRlc3RfcXVpY2tzb3J0KHNlbGYpIC0+IE5vbmU6CiAgICBwcm90byAwIDAKICAgIGJ5dGVjXzAgLy8gIiIKICAgIGR1cG4gMgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE1OC0xNTkKICAgIC8vICMgY3JlYXRlIHBzZXVkbyByYW5kb20gYXJyYXkgZnJvbSBzZW5kZXIgYWRkcmVzcwogICAgLy8gcm5kID0gQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAweAogICAgc3RvcmVzCiAgICAvLyBhcnJheS91aW50NjQucHk6MTYwCiAgICAvLyBmb3IgYiBpbiBUeG4uc2VuZGVyLmJ5dGVzOgogICAgdHhuIFNlbmRlcgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyAwCgp0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDE6CiAgICAvLyBhcnJheS91aW50NjQucHk6MTYwCiAgICAvLyBmb3IgYiBpbiBUeG4uc2VuZGVyLmJ5dGVzOgogICAgZnJhbWVfZGlnIDYKICAgIGZyYW1lX2RpZyA1CiAgICA8CiAgICBieiB0ZXN0X3F1aWNrc29ydF9hZnRlcl9mb3JANAogICAgLy8gYXJyYXkvdWludDY0LnB5OjE2MQogICAgLy8gcm5kLmFwcGVuZChvcC5idG9pKGIpKQogICAgZnJhbWVfZGlnIDQKICAgIGZyYW1lX2RpZyA2CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGdldGJ5dGUKICAgIGl0b2IKICAgIGZyYW1lX2RpZyAzCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGxvYWRzCiAgICBzd2FwCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIHN0b3JlcwogICAgaW50Y18yIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNgogICAgYiB0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDEKCnRlc3RfcXVpY2tzb3J0X2FmdGVyX2ZvckA0OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE2MgogICAgLy8gYXNzZXJ0IHJuZC5sZW5ndGggPT0gMzIsICJleHBlY3RlZCBhcnJheSBvZiBsZW5ndGggMzIiCiAgICBmcmFtZV9kaWcgMwogICAgZHVwCiAgICBsb2FkcwogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgLwogICAgZHVwCiAgICBwdXNoaW50IDMyIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGV4cGVjdGVkIGFycmF5IG9mIGxlbmd0aCAzMgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE2NC0xNjUKICAgIC8vICMgc29ydCB0aGUgYXJyYXkKICAgIC8vIHF1aWNrc29ydF93aW5kb3cocm5kLCBVSW50NjQoMCksIHJuZC5sZW5ndGggLSAxKQogICAgaW50Y18yIC8vIDEKICAgIC0KICAgIGRpZyAxCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBjYWxsc3ViIHF1aWNrc29ydF93aW5kb3cKICAgIC8vIGFycmF5L3VpbnQ2NC5weToxNjctMTY4CiAgICAvLyAjIGFycmF5IHNob3VsZCBub3cgYmUgaW4gYXNjZW5kaW5nIG9yZGVyCiAgICAvLyBsYXN0ID0gVUludDY0KDApCiAgICBpbnRjXzEgLy8gMAogICAgZnJhbWVfYnVyeSAyCiAgICAvLyBhcnJheS91aW50NjQucHk6MTY5CiAgICAvLyBmb3IgdmFsdWUgaW4gcm5kOgogICAgbG9hZHMKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgIC8KICAgIGZyYW1lX2J1cnkgMAogICAgaW50Y18xIC8vIDAKICAgIGZyYW1lX2J1cnkgMQoKdGVzdF9xdWlja3NvcnRfZm9yX2hlYWRlckA1OgogICAgLy8gYXJyYXkvdWludDY0LnB5OjE2OQogICAgLy8gZm9yIHZhbHVlIGluIHJuZDoKICAgIGZyYW1lX2RpZyAxCiAgICBmcmFtZV9kaWcgMAogICAgPAogICAgYnogdGVzdF9xdWlja3NvcnRfYWZ0ZXJfZm9yQDgKICAgIGZyYW1lX2RpZyAzCiAgICBsb2FkcwogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBhcnJheS91aW50NjQucHk6MTcwCiAgICAvLyBhc3NlcnQgdmFsdWUgPj0gbGFzdCwgImFycmF5IGlzIG5vdCBzb3J0ZWQiCiAgICBkdXAKICAgIGZyYW1lX2RpZyAyCiAgICA+PQogICAgYXNzZXJ0IC8vIGFycmF5IGlzIG5vdCBzb3J0ZWQKICAgIHN3YXAKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGZyYW1lX2J1cnkgMgogICAgYiB0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDUKCnRlc3RfcXVpY2tzb3J0X2FmdGVyX2ZvckA4OgogICAgcmV0c3ViCgoKLy8gX3B1eWFfbGliLm1lbS5uZXdfc2xvdCgpIC0+IHVpbnQ2NDoKX3B1eWFfbGliLm1lbS5uZXdfc2xvdDoKICAgIGxvYWQgMAogICAgYml0bGVuCiAgICBsb2FkIDAKICAgIHB1c2hpbnQgMjU2IC8vIDI1NgogICAgZGlnIDIKICAgIC0KICAgIGludGNfMSAvLyAwCiAgICBzZXRiaXQgLy8gb24gZXJyb3I6IG5vIGF2YWlsYWJsZSBzbG90cwogICAgc3RvcmUgMAogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEwCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMSAvLyAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "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", "clear": "CoEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }