{ "name": "AbiValidationExhaustive", "structs": { "ARC4DynamicStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" }, { "name": "baz", "type": "string" } ], "ARC4StaticStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" } ], "WithABool": [ { "name": "foo", "type": "uint8" }, { "name": "bar", "type": "byte[]" }, { "name": "baz", "type": "bool" } ], "NativeDynamicStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" }, { "name": "baz", "type": "string" } ], "NativeStaticStruct": [ { "name": "foo", "type": "uint64" }, { "name": "bar", "type": "uint8" } ] }, "methods": [ { "name": "validate_uint64", "args": [ { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8", "args": [ { "type": "uint8", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint512", "args": [ { "type": "uint512", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_ufixed64", "args": [ { "type": "ufixed64x2", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8_arr", "args": [ { "type": "uint8[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_uint8_arr3", "args": [ { "type": "uint8[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool", "args": [ { "type": "bool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_byte", "args": [ { "type": "byte", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_string", "args": [ { "type": "string", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bytes", "args": [ { "type": "byte[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_address", "args": [ { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_account", "args": [ { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool_arr", "args": [ { "type": "bool[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_bool_arr3", "args": [ { "type": "bool[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_tuple", "args": [ { "type": "(uint64,uint8)", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_tuple", "args": [ { "type": "(uint64,uint8,string)", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct", "args": [ { "type": "(uint64,uint8)", "struct": "ARC4StaticStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct", "args": [ { "type": "(uint64,uint8,string)", "struct": "ARC4DynamicStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct_arr", "args": [ { "type": "(uint64,uint8)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_static_struct_arr3", "args": [ { "type": "(uint64,uint8)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_arr", "args": [ { "type": "(uint64,uint8,string)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_arr3", "args": [ { "type": "(uint64,uint8,string)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_dynamic_struct_with_a_bool", "args": [ { "type": "(uint8,byte[],bool)", "struct": "WithABool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct", "args": [ { "type": "(uint64,uint8)", "struct": "NativeStaticStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct", "args": [ { "type": "(uint64,uint8,string)", "struct": "NativeDynamicStruct", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct_arr", "args": [ { "type": "(uint64,uint8)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_static_struct_arr3", "args": [ { "type": "(uint64,uint8)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct_arr", "args": [ { "type": "(uint64,uint8,string)[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_native_dynamic_struct_arr3", "args": [ { "type": "(uint64,uint8,string)[3]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "validate_c2c", "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": [ 1985 ], "errorMessage": "Bytes has valid prefix" }, { "pc": [ 1234, 1336, 1577, 1679 ], "errorMessage": "invalid array encoding" }, { "pc": [ 887, 947, 967, 1015, 1085, 1138, 1160, 1195, 1271, 1371, 1427, 1481, 1503, 1538, 1614, 1714 ], "errorMessage": "invalid array length header" }, { "pc": [ 1149 ], "errorMessage": "invalid number of bytes for ARC4DynamicStruct" }, { "pc": [ 1110 ], "errorMessage": "invalid number of bytes for ARC4StaticStruct" }, { "pc": [ 1439 ], "errorMessage": "invalid number of bytes for WithABool" }, { "pc": [ 923 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 1301 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1170 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1030 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 896, 956, 976 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1644 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1513 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 1399 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1184 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1043 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1990 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 990, 1004 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 910 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1742 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1527 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1096 ], "errorMessage": "invalid number of bytes for arc4.tuple>" }, { "pc": [ 1057 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 876 ], "errorMessage": "invalid number of bytes for arc4.ufixed64x2" }, { "pc": [ 862 ], "errorMessage": "invalid number of bytes for arc4.uint512" }, { "pc": [ 835 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 848, 936 ], "errorMessage": "invalid number of bytes for arc4.uint8" }, { "pc": [ 1492 ], "errorMessage": "invalid number of bytes for tests/approvals/abi-validation-exhaustive.algo.ts::NativeDynamicStruct" }, { "pc": [ 1453 ], "errorMessage": "invalid number of bytes for tests/approvals/abi-validation-exhaustive.algo.ts::NativeStaticStruct" }, { "pc": [ 1418 ], "errorMessage": "invalid tail pointer at index 1 of (uint8,(len+uint8[]),bool1)" }, { "pc": [ 1076, 1129, 1266, 1366, 1472, 1609, 1709 ], "errorMessage": "invalid tail pointer at index 2 of (uint64,uint8,(len+utf8[]))" }, { "pc": [ 1242, 1585 ], "errorMessage": "invalid tail pointer for (len+(uint64,uint8,(len+utf8[]))[])" }, { "pc": [ 1344, 1687 ], "errorMessage": "invalid tail pointer for (uint64,uint8,(len+utf8[]))[3]" }, { "pc": [ 1072, 1125, 1262, 1362, 1413, 1468, 1605, 1705 ], "errorMessage": "invalid tuple encoding" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDIgMTEKICAgIGJ5dGVjYmxvY2sgMHgKICAgIGIgbWFpbl9ibG9ja0AwCgptYWluX2Jsb2NrQDA6CiAgICBiIG1haW5fYmxvY2tAMQoKbWFpbl9ibG9ja0AxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxOAogICAgLy8gY2xhc3MgQWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18xIC8vIDAKICAgICE9CiAgICBieiBtYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAzNwogICAgYiBtYWluX2FiaV9yb3V0aW5nQDIKCm1haW5fYWJpX3JvdXRpbmdAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTgKICAgIC8vIGNsYXNzIEFiaVZhbGlkYXRpb25FeGhhdXN0aXZlIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18xIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzEgLy8gMAogICAgIT0KICAgIGJ6IG1haW5fY3JlYXRlX05vT3BAMzUKICAgIGIgbWFpbl9jYWxsX05vT3BAMwoKbWFpbl9jYWxsX05vT3BAMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTgKICAgIC8vIGNsYXNzIEFiaVZhbGlkYXRpb25FeGhhdXN0aXZlIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgcHVzaGJ5dGVzIDB4NGQ3NThjNTkgLy8gbWV0aG9kICJ2YWxpZGF0ZV91aW50NjQodWludDY0KXZvaWQiCiAgICBwdXNoYnl0ZXMgMHg2YmI3Yjk2MyAvLyBtZXRob2QgInZhbGlkYXRlX3VpbnQ4KHVpbnQ4KXZvaWQiCiAgICBwdXNoYnl0ZXMgMHgxODg1MmNkNiAvLyBtZXRob2QgInZhbGlkYXRlX3VpbnQ1MTIodWludDUxMil2b2lkIgogICAgcHVzaGJ5dGVzIDB4NWIyZWZiZTEgLy8gbWV0aG9kICJ2YWxpZGF0ZV91Zml4ZWQ2NCh1Zml4ZWQ2NHgyKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhlY2NhN2E5OCAvLyBtZXRob2QgInZhbGlkYXRlX3VpbnQ4X2Fycih1aW50OFtdKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHg5NGRhNzNjMCAvLyBtZXRob2QgInZhbGlkYXRlX3VpbnQ4X2FycjModWludDhbM10pdm9pZCIKICAgIHB1c2hieXRlcyAweDI2MjMwZGUxIC8vIG1ldGhvZCAidmFsaWRhdGVfYm9vbChib29sKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHgzZWM3N2ZhYyAvLyBtZXRob2QgInZhbGlkYXRlX2J5dGUoYnl0ZSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZjExMWMwN2UgLy8gbWV0aG9kICJ2YWxpZGF0ZV9zdHJpbmcoc3RyaW5nKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHgzZjY4YjdkMSAvLyBtZXRob2QgInZhbGlkYXRlX2J5dGVzKGJ5dGVbXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4Njc0YzBlODcgLy8gbWV0aG9kICJ2YWxpZGF0ZV9hZGRyZXNzKGFkZHJlc3Mpdm9pZCIKICAgIHB1c2hieXRlcyAweDA5MWFiODQ4IC8vIG1ldGhvZCAidmFsaWRhdGVfYWNjb3VudChhZGRyZXNzKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhmMzI4OWZiOCAvLyBtZXRob2QgInZhbGlkYXRlX2Jvb2xfYXJyKGJvb2xbXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4OTFhY2VlNTEgLy8gbWV0aG9kICJ2YWxpZGF0ZV9ib29sX2FycjMoYm9vbFszXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4NGU2NDFlOTkgLy8gbWV0aG9kICJ2YWxpZGF0ZV9zdGF0aWNfdHVwbGUoKHVpbnQ2NCx1aW50OCkpdm9pZCIKICAgIHB1c2hieXRlcyAweDY1MzZlM2MyIC8vIG1ldGhvZCAidmFsaWRhdGVfZHluYW1pY190dXBsZSgodWludDY0LHVpbnQ4LHN0cmluZykpdm9pZCIKICAgIHB1c2hieXRlcyAweDkzNTIyY2I4IC8vIG1ldGhvZCAidmFsaWRhdGVfc3RhdGljX3N0cnVjdCgodWludDY0LHVpbnQ4KSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4YmY4ODg4MjUgLy8gbWV0aG9kICJ2YWxpZGF0ZV9keW5hbWljX3N0cnVjdCgodWludDY0LHVpbnQ4LHN0cmluZykpdm9pZCIKICAgIHB1c2hieXRlcyAweDIyYWE5MGQ2IC8vIG1ldGhvZCAidmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIoKHVpbnQ2NCx1aW50OClbXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4NmVlY2I0OWQgLy8gbWV0aG9kICJ2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjMoKHVpbnQ2NCx1aW50OClbM10pdm9pZCIKICAgIHB1c2hieXRlcyAweDI4Mzg4ODI5IC8vIG1ldGhvZCAidmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyKCh1aW50NjQsdWludDgsc3RyaW5nKVtdKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHg3ZTgwNGJiZiAvLyBtZXRob2QgInZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjMoKHVpbnQ2NCx1aW50OCxzdHJpbmcpWzNdKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhjZTI2YzcyYyAvLyBtZXRob2QgInZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3dpdGhfYV9ib29sKCh1aW50OCxieXRlW10sYm9vbCkpdm9pZCIKICAgIHB1c2hieXRlcyAweGVjNTYxMjZmIC8vIG1ldGhvZCAidmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3QoKHVpbnQ2NCx1aW50OCkpdm9pZCIKICAgIHB1c2hieXRlcyAweGMzNjc0YjU2IC8vIG1ldGhvZCAidmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0KCh1aW50NjQsdWludDgsc3RyaW5nKSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZmI3YjA1MjggLy8gbWV0aG9kICJ2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIoKHVpbnQ2NCx1aW50OClbXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4YmE1MTk1ZmQgLy8gbWV0aG9kICJ2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzKCh1aW50NjQsdWludDgpWzNdKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhlMzZiMzIyNCAvLyBtZXRob2QgInZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIoKHVpbnQ2NCx1aW50OCxzdHJpbmcpW10pdm9pZCIKICAgIHB1c2hieXRlcyAweDU3NGU5NDc5IC8vIG1ldGhvZCAidmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjMoKHVpbnQ2NCx1aW50OCxzdHJpbmcpWzNdKXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhkMGI1ODJmMSAvLyBtZXRob2QgInZhbGlkYXRlX2MyYygpdm9pZCIKICAgIHVuY292ZXIgMzAKICAgIG1hdGNoIG1haW5fdmFsaWRhdGVfdWludDY0X3JvdXRlQDQgbWFpbl92YWxpZGF0ZV91aW50OF9yb3V0ZUA1IG1haW5fdmFsaWRhdGVfdWludDUxMl9yb3V0ZUA2IG1haW5fdmFsaWRhdGVfdWZpeGVkNjRfcm91dGVANyBtYWluX3ZhbGlkYXRlX3VpbnQ4X2Fycl9yb3V0ZUA4IG1haW5fdmFsaWRhdGVfdWludDhfYXJyM19yb3V0ZUA5IG1haW5fdmFsaWRhdGVfYm9vbF9yb3V0ZUAxMCBtYWluX3ZhbGlkYXRlX2J5dGVfcm91dGVAMTEgbWFpbl92YWxpZGF0ZV9zdHJpbmdfcm91dGVAMTIgbWFpbl92YWxpZGF0ZV9ieXRlc19yb3V0ZUAxMyBtYWluX3ZhbGlkYXRlX2FkZHJlc3Nfcm91dGVAMTQgbWFpbl92YWxpZGF0ZV9hY2NvdW50X3JvdXRlQDE1IG1haW5fdmFsaWRhdGVfYm9vbF9hcnJfcm91dGVAMTYgbWFpbl92YWxpZGF0ZV9ib29sX2FycjNfcm91dGVAMTcgbWFpbl92YWxpZGF0ZV9zdGF0aWNfdHVwbGVfcm91dGVAMTggbWFpbl92YWxpZGF0ZV9keW5hbWljX3R1cGxlX3JvdXRlQDE5IG1haW5fdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9yb3V0ZUAyMCBtYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3JvdXRlQDIxIG1haW5fdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnJfcm91dGVAMjIgbWFpbl92YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjNfcm91dGVAMjMgbWFpbl92YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfcm91dGVAMjQgbWFpbl92YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzX3JvdXRlQDI1IG1haW5fdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2xfcm91dGVAMjYgbWFpbl92YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9yb3V0ZUAyNyBtYWluX3ZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9yb3V0ZUAyOCBtYWluX3ZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycl9yb3V0ZUAyOSBtYWluX3ZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycjNfcm91dGVAMzAgbWFpbl92YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyX3JvdXRlQDMxIG1haW5fdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMzIgbWFpbl92YWxpZGF0ZV9jMmNfcm91dGVAMzMKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3N3aXRjaF9jYXNlX25leHRAMzQ6CiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUAzNgoKbWFpbl9hZnRlcl9pZl9lbHNlQDM2OgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMzgKCm1haW5fYWZ0ZXJfaWZfZWxzZUAzODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTgKICAgIC8vIGNsYXNzIEFiaVZhbGlkYXRpb25FeGhhdXN0aXZlIGV4dGVuZHMgQ29udHJhY3QgewogICAgZXJyCgptYWluX3ZhbGlkYXRlX2MyY19yb3V0ZUAzMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTM2CiAgICAvLyB2YWxpZGF0ZV9jMmMoKSB7CiAgICBjYWxsc3ViIHZhbGlkYXRlX2MyYwogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMzI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjMKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfcm91dGVAMzE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycgogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyM19yb3V0ZUAzMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTIzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnJfcm91dGVAMjk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjExOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3Rfcm91dGVAMjg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjExNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9yb3V0ZUAyNzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTExCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdAogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2xfcm91dGVAMjY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2wKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfcm91dGVAMjU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyMwogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyX3JvdXRlQDI0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjNfcm91dGVAMjM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjMKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyX3JvdXRlQDIyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3JvdXRlQDIxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3QKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3N0YXRpY19zdHJ1Y3Rfcm91dGVAMjA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjgzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9zdGF0aWNfc3RydWN0CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9keW5hbWljX3R1cGxlX3JvdXRlQDE5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfZHluYW1pY190dXBsZQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfc3RhdGljX3R1cGxlX3JvdXRlQDE4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfc3RhdGljX3R1cGxlCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9ib29sX2FycjNfcm91dGVAMTc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjcxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9ib29sX2FycjMKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX2Jvb2xfYXJyX3JvdXRlQDE2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo2NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfYm9vbF9hcnIKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX2FjY291bnRfcm91dGVAMTU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9hY2NvdW50CiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9hZGRyZXNzX3JvdXRlQDE0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfYWRkcmVzcwogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfYnl0ZXNfcm91dGVAMTM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjU1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV9ieXRlcwogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfc3RyaW5nX3JvdXRlQDEyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfc3RyaW5nCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV9ieXRlX3JvdXRlQDExOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfYnl0ZQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfYm9vbF9yb3V0ZUAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NDMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBjYWxsc3ViIHZhbGlkYXRlX2Jvb2wKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3VpbnQ4X2FycjNfcm91dGVAOToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBjYWxsc3ViIHZhbGlkYXRlX3VpbnQ4X2FycjMKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3VpbnQ4X2Fycl9yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfdWludDhfYXJyCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAzNAoKbWFpbl92YWxpZGF0ZV91Zml4ZWQ2NF9yb3V0ZUA3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIGNhbGxzdWIgdmFsaWRhdGVfdWZpeGVkNjQKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3VpbnQ1MTJfcm91dGVANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICBjYWxsc3ViIHZhbGlkYXRlX3VpbnQ1MTIKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX3ZhbGlkYXRlX3VpbnQ4X3JvdXRlQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjIzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV91aW50OAogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMzQKCm1haW5fdmFsaWRhdGVfdWludDY0X3JvdXRlQDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgY2FsbHN1YiB2YWxpZGF0ZV91aW50NjQKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDM0CgptYWluX2NyZWF0ZV9Ob09wQDM1OgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMzYKCm1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDM3OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxOAogICAgLy8gY2xhc3MgQWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzEgLy8gTm9PcAogICAgPT0KICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzEgLy8gMAogICAgPT0KICAgICYmCiAgICBhc3NlcnQKICAgIGNhbGxzdWIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDY0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfdWludDY0OgogICAgYiB2YWxpZGF0ZV91aW50NjRfYmxvY2tAMAoKdmFsaWRhdGVfdWludDY0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50NjQKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZhbGlkYXRlX3VpbnQ4OgogICAgYiB2YWxpZGF0ZV91aW50OF9ibG9ja0AwCgp2YWxpZGF0ZV91aW50OF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoyMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDgKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50NTEyW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfdWludDUxMjoKICAgIGIgdmFsaWRhdGVfdWludDUxMl9ibG9ja0AwCgp2YWxpZGF0ZV91aW50NTEyX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjI3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50NTEyCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWZpeGVkNjRbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV91Zml4ZWQ2NDoKICAgIGIgdmFsaWRhdGVfdWZpeGVkNjRfYmxvY2tAMAoKdmFsaWRhdGVfdWZpeGVkNjRfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3VmaXhlZDY0CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfdWludDhfYXJyOgogICAgYiB2YWxpZGF0ZV91aW50OF9hcnJfYmxvY2tAMAoKdmFsaWRhdGVfdWludDhfYXJyX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjM1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnIKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnIzW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfdWludDhfYXJyMzoKICAgIGIgdmFsaWRhdGVfdWludDhfYXJyM19ibG9ja0AwCgp2YWxpZGF0ZV91aW50OF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjM5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnIzCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnZhbGlkYXRlX2Jvb2w6CiAgICBiIHZhbGlkYXRlX2Jvb2xfYmxvY2tAMAoKdmFsaWRhdGVfYm9vbF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2J5dGVbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9ieXRlOgogICAgYiB2YWxpZGF0ZV9ieXRlX2Jsb2NrQDAKCnZhbGlkYXRlX2J5dGVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NDcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2J5dGUKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdHJpbmdbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9zdHJpbmc6CiAgICBiIHZhbGlkYXRlX3N0cmluZ19ibG9ja0AwCgp2YWxpZGF0ZV9zdHJpbmdfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0cmluZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2J5dGVzW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfYnl0ZXM6CiAgICBiIHZhbGlkYXRlX2J5dGVzX2Jsb2NrQDAKCnZhbGlkYXRlX2J5dGVzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjU1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlcwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2FkZHJlc3Nbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9hZGRyZXNzOgogICAgYiB2YWxpZGF0ZV9hZGRyZXNzX2Jsb2NrQDAKCnZhbGlkYXRlX2FkZHJlc3NfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2FkZHJlc3MKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9hY2NvdW50W3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfYWNjb3VudDoKICAgIGIgdmFsaWRhdGVfYWNjb3VudF9ibG9ja0AwCgp2YWxpZGF0ZV9hY2NvdW50X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9hY2NvdW50CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnJbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9ib29sX2FycjoKICAgIGIgdmFsaWRhdGVfYm9vbF9hcnJfYmxvY2tAMAoKdmFsaWRhdGVfYm9vbF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NjcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2Jvb2xfYXJyCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnIzW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfYm9vbF9hcnIzOgogICAgYiB2YWxpZGF0ZV9ib29sX2FycjNfYmxvY2tAMAoKdmFsaWRhdGVfYm9vbF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjcxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ib29sX2FycjMKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfdHVwbGVbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9zdGF0aWNfdHVwbGU6CiAgICBiIHZhbGlkYXRlX3N0YXRpY190dXBsZV9ibG9ja0AwCgp2YWxpZGF0ZV9zdGF0aWNfdHVwbGVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NzUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY190dXBsZQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfdHVwbGVbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9keW5hbWljX3R1cGxlOgogICAgYiB2YWxpZGF0ZV9keW5hbWljX3R1cGxlX2Jsb2NrQDAKCnZhbGlkYXRlX2R5bmFtaWNfdHVwbGVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NzkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfdHVwbGUKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfc3RhdGljX3N0cnVjdDoKICAgIGIgdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9ibG9ja0AwCgp2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjgzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9keW5hbWljX3N0cnVjdDoKICAgIGIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYmxvY2tAMAoKdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnJbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjoKICAgIGIgdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnJfYmxvY2tAMAoKdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIzW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIzOgogICAgYiB2YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjNfYmxvY2tAMAoKdmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjMKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnI6CiAgICBiIHZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycl9ibG9ja0AwCgp2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycgogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzOgogICAgYiB2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Jsb2NrQDAKCnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTAzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2xbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9keW5hbWljX3N0cnVjdF93aXRoX2FfYm9vbDoKICAgIGIgdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2xfYmxvY2tAMAoKdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2xfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTA3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF93aXRoX2FfYm9vbAogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0W3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3Q6CiAgICBiIHZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Jsb2NrQDAKCnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjExMQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3Rbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3Q6CiAgICBiIHZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9ibG9ja0AwCgp2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3QKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnJbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnI6CiAgICBiIHZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycl9ibG9ja0AwCgp2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzW3JvdXRpbmddKCkgLT4gdm9pZDoKdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyMzoKICAgIGIgdmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyM19ibG9ja0AwCgp2YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyMwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyOgogICAgYiB2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyX2Jsb2NrQDAKCnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTI3CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNbcm91dGluZ10oKSAtPiB2b2lkOgp2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyMzoKICAgIGIgdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfYmxvY2tAMAoKdmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTMxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyMwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2MyY1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnZhbGlkYXRlX2MyYzoKICAgIGIgdmFsaWRhdGVfYzJjX2Jsb2NrQDAKCnZhbGlkYXRlX2MyY19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzYKICAgIC8vIHZhbGlkYXRlX2MyYygpIHsKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDY0KHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDY0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxOS0yMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3VpbnQ2NCh2YWx1ZTogYXJjNC5VaW50NjQpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50NjRfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDY0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjIxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3VpbnQ4KHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjIzLTI0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfdWludDgodmFsdWU6IGFyYzQuVWludDgpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoyNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50OAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDUxMih2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3VpbnQ1MTI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjI3LTI4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfdWludDUxMih2YWx1ZTogYXJjNC5VaW50PDUxMj4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50NTEyX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3VpbnQ1MTJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MjkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgcHVzaGludCA2NAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NTEyCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91Zml4ZWQ2NCh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3VmaXhlZDY0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozMS0zMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3VmaXhlZDY0KHZhbHVlOiBhcmM0LlVGaXhlZDw2NCwgMj4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91Zml4ZWQ2NF9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91Zml4ZWQ2NF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozMwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWZpeGVkNjR4MgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czozNS0zNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3VpbnQ4X2Fycih2YWx1ZTogYXJjNC5EeW5hbWljQXJyYXk8YXJjNC5VaW50OD4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnJfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjM3CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgICoKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnIzKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MzktNDAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICAvLyB2YWxpZGF0ZV91aW50OF9hcnIzKHZhbHVlOiBhcmM0LlN0YXRpY0FycmF5PGFyYzQuVWludDgsIDM+KSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfdWludDhfYXJyM19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV91aW50OF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjQxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMz4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2Jvb2wodmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ib29sOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0My00NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX2Jvb2wodmFsdWU6IGFyYzQuQm9vbCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2Jvb2xfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo0NQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5ib29sCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYnl0ZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NDctNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICAvLyB2YWxpZGF0ZV9ieXRlKHZhbHVlOiBhcmM0LkJ5dGUpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2J5dGVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NDkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDgKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0cmluZyh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0cmluZzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTEtNTIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICAvLyB2YWxpZGF0ZV9zdHJpbmcodmFsdWU6IGFyYzQuU3RyKSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RyaW5nX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0cmluZ19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1MwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYnl0ZXModmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlczoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6NTUtNTYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICAvLyB2YWxpZGF0ZV9ieXRlcyh2YWx1ZTogYXJjNC5EeW5hbWljQnl0ZXMpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlc19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ieXRlc19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo1NwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYWRkcmVzcyh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2FkZHJlc3M6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjU5LTYwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfYWRkcmVzcyh2YWx1ZTogYXJjNC5BZGRyZXNzKSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYWRkcmVzc19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9hZGRyZXNzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIHB1c2hpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYWNjb3VudCh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2FjY291bnQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjYzLTY0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfYWNjb3VudCh2YWx1ZTogQWNjb3VudCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2FjY291bnRfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYWNjb3VudF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo2NQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBwdXNoaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2Jvb2xfYXJyKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjY3LTY4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfYm9vbF9hcnIodmFsdWU6IGFyYzQuRHluYW1pY0FycmF5PGFyYzQuQm9vbD4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ib29sX2Fycl9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9ib29sX2Fycl9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo2OQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBwdXNoaW50IDcKICAgICsKICAgIHB1c2hpbnQgOAogICAgLwogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC5ib29sPgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnIzKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnIzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3MS03MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX2Jvb2xfYXJyMyh2YWx1ZTogYXJjNC5TdGF0aWNBcnJheTxhcmM0LkJvb2wsIDM+KSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYm9vbF9hcnIzX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2Jvb2xfYXJyM19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3MwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC5ib29sLCAzPgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3R1cGxlKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3R1cGxlOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3NS03NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3N0YXRpY190dXBsZSh2YWx1ZTogQVJDNFN0YXRpY1R1cGxlKSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3R1cGxlX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY190dXBsZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3NwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBwdXNoaW50IDkKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudHVwbGU8YXJjNC51aW50NjQsYXJjNC51aW50OD4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfdHVwbGUodmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3R1cGxlOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo3OS04MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX2R5bmFtaWNfdHVwbGUodmFsdWU6IEFSQzREeW5hbWljVHVwbGUpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3R1cGxlX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfdHVwbGVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBwdXNoaW50IDkKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGludGNfMyAvLyAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgZnJhbWVfZGlnIC0xCiAgICB1bmNvdmVyIDEKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgaW50Y18zIC8vIDExCiAgICArCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ4LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4Pj4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3QodmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4My04NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3N0YXRpY19zdHJ1Y3QodmFsdWU6IEFSQzRTdGF0aWNTdHJ1Y3QpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6ODUKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgcHVzaGludCA5CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBBUkM0U3RhdGljU3RydWN0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdCh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo4Ny04OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX2R5bmFtaWNfc3RydWN0KHZhbHVlOiBBUkM0RHluYW1pY1N0cnVjdCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjg5CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgcHVzaGludCA5CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBpbnRjXzMgLy8gMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIGZyYW1lX2RpZyAtMQogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMQogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGludGNfMyAvLyAxMQogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIEFSQzREeW5hbWljU3RydWN0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2Fycih2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5MS05MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyKHZhbHVlOiBhcmM0LkR5bmFtaWNBcnJheTxBUkM0U3RhdGljU3RydWN0PikgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjkzCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA5CiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxBUkM0U3RhdGljU3RydWN0PgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIzKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfc3RhdGljX3N0cnVjdF9hcnIzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo5NS05NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyMyh2YWx1ZTogYXJjNC5TdGF0aWNBcnJheTxBUkM0U3RhdGljU3RydWN0LCAzPikgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX3N0YXRpY19zdHJ1Y3RfYXJyM19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9zdGF0aWNfc3RydWN0X2FycjNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTcKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgcHVzaGludCAyNwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8QVJDNFN0YXRpY1N0cnVjdCwgMz4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycih2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OTktMTAwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyKHZhbHVlOiBhcmM0LkR5bmFtaWNBcnJheTxBUkM0RHluYW1pY1N0cnVjdD4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwMQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGR1cAogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMiAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfaGVhZGVyQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwMQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAzCiAgICBmcmFtZV9kaWcgMAogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyX2FmdGVyX2ZvckA0CiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfYm9keUAyCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfZm9yX2JvZHlAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTAxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBmcmFtZV9kaWcgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICB1bmNvdmVyIDEKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGVuY29kaW5nCiAgICBkdXAKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNvdmVyIDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgZm9yIChsZW4rKHVpbnQ2NCx1aW50OCwobGVuK3V0ZjhbXSkpW10pCiAgICBkaWcgMQogICAgbGVuCiAgICBjb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMQogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgZHVwCiAgICBwdXNoaW50IDkKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGludGNfMyAvLyAxMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCAyIG9mICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKQogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDEKICAgICoKICAgIGludGNfMiAvLyAyCiAgICArCiAgICBpbnRjXzMgLy8gMTEKICAgICsKICAgICsKICAgIGZyYW1lX2J1cnkgMQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfZm9yX2Zvb3RlckAzCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnJfZm9yX2Zvb3RlckAzOgogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyX2Zvcl9oZWFkZXJAMQoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyX2FmdGVyX2ZvckA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDEKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgMQogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8QVJDNER5bmFtaWNTdHJ1Y3Q+CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTAzLTEwNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjModmFsdWU6IGFyYzQuU3RhdGljQXJyYXk8QVJDNER5bmFtaWNTdHJ1Y3QsIDM+KSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyM19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIHB1c2hpbnQgMwogICAgaW50Y18yIC8vIDIKICAgICoKICAgIGludGNfMSAvLyAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Zvcl9oZWFkZXJAMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTA1CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIDEKICAgIHB1c2hpbnQgMwogICAgPAogICAgYnogdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyM19hZnRlcl9mb3JANAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Zvcl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2JvZHlAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTA1CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMiAvLyAyCiAgICAqCiAgICBmcmFtZV9kaWcgLTEKICAgIHVuY292ZXIgMQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgZW5jb2RpbmcKICAgIGR1cAogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgY292ZXIgMwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBmb3IgKHVpbnQ2NCx1aW50OCwobGVuK3V0ZjhbXSkpWzNdCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGR1cAogICAgcHVzaGludCA5CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBpbnRjXzMgLy8gMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgaW50Y18zIC8vIDExCiAgICArCiAgICArCiAgICBmcmFtZV9idXJ5IDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyM19mb3JfZm9vdGVyQDMKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2Zvb3RlckAzOgogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfZHluYW1pY19zdHJ1Y3RfYXJyM19mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X2FycjNfYWZ0ZXJfZm9yQDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwNQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgMAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8QVJDNER5bmFtaWNTdHJ1Y3QsIDM+CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9keW5hbWljX3N0cnVjdF93aXRoX2FfYm9vbCh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3dpdGhfYV9ib29sOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMDctMTA4CiAgICAvLyBAYXJjNC5hYmltZXRob2QoeyB2YWxpZGF0ZUVuY29kaW5nOiAndW5zYWZlLWRpc2FibGVkJyB9KQogICAgLy8gdmFsaWRhdGVfZHluYW1pY19zdHJ1Y3Rfd2l0aF9hX2Jvb2wodmFsdWU6IFdpdGhBQm9vbCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3dpdGhfYV9ib29sX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2R5bmFtaWNfc3RydWN0X3dpdGhfYV9ib29sX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEwOQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAxCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMSBvZiAodWludDgsKGxlbit1aW50OFtdKSxib29sMSkKICAgIGZyYW1lX2RpZyAtMQogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMQogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIHB1c2hpbnQgNAogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIFdpdGhBQm9vbAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3QodmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTExLTExMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0KHZhbHVlOiBOYXRpdmVTdGF0aWNTdHJ1Y3QpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMTMKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgcHVzaGludCA5CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVTdGF0aWNTdHJ1Y3QKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdCh2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE1LTExNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdCh2YWx1ZTogTmF0aXZlRHluYW1pY1N0cnVjdCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE3CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgcHVzaGludCA5CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBpbnRjXzMgLy8gMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIGZyYW1lX2RpZyAtMQogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMQogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGludGNfMyAvLyAxMQogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6Ok5hdGl2ZUR5bmFtaWNTdHJ1Y3QKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycih2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTE5LTEyMAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycih2YWx1ZTogQXJyYXk8TmF0aXZlU3RhdGljU3RydWN0PikgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2Fycl9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTIxCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA5CiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTx0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVTdGF0aWNTdHJ1Y3Q+CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfc3RhdGljX3N0cnVjdF9hcnIzKHZhbHVlOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTIzLTEyNAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycjModmFsdWU6IEZpeGVkQXJyYXk8TmF0aXZlU3RhdGljU3RydWN0LCAzPikgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9zdGF0aWNfc3RydWN0X2FycjNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX3N0YXRpY19zdHJ1Y3RfYXJyM19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjUKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgcHVzaGludCAyNwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8dGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6TmF0aXZlU3RhdGljU3RydWN0LCAzPgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2Fycih2YWx1ZTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyNy0xMjgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCh7IHZhbGlkYXRlRW5jb2Rpbmc6ICd1bnNhZmUtZGlzYWJsZWQnIH0pCiAgICAvLyB2YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyKHZhbHVlOiBOYXRpdmVEeW5hbWljU3RydWN0W10pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTI5CiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgZHVwCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18yIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMjkKICAgIC8vIHZhbGlkYXRlRW5jb2RpbmcodmFsdWUpCiAgICBmcmFtZV9kaWcgMwogICAgZnJhbWVfZGlnIDAKICAgIDwKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfYWZ0ZXJfZm9yQDQKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfYm9keUAyCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyX2Zvcl9ib2R5QDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyOQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZnJhbWVfZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgdW5jb3ZlciAxCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBlbmNvZGluZwogICAgZHVwCiAgICBmcmFtZV9kaWcgMQogICAgZHVwCiAgICBjb3ZlciA0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGZvciAobGVuKyh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKVtdKQogICAgZGlnIDEKICAgIGxlbgogICAgY292ZXIgMQogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDEKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGR1cAogICAgcHVzaGludCA5CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBpbnRjXzMgLy8gMTEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMiBvZiAodWludDY0LHVpbnQ4LChsZW4rdXRmOFtdKSkKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyAxCiAgICAqCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgaW50Y18zIC8vIDExCiAgICArCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfZm9vdGVyQDMKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfZm9yX2Zvb3RlckAzOgogICAgZnJhbWVfZGlnIDMKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDMKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2Fycl9mb3JfaGVhZGVyQDEKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnJfYWZ0ZXJfZm9yQDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEyOQogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzIgLy8gMgogICAgKwogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTx0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVEeW5hbWljU3RydWN0PgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjModmFsdWU6IGJ5dGVzKSAtPiB2b2lkOgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyMzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTMxLTEzMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHsgdmFsaWRhdGVFbmNvZGluZzogJ3Vuc2FmZS1kaXNhYmxlZCcgfSkKICAgIC8vIHZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIzKHZhbHVlOiBGaXhlZEFycmF5PE5hdGl2ZUR5bmFtaWNTdHJ1Y3QsIDM+KSB7CiAgICBwcm90byAxIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTMzCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgcHVzaGludCAzCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgaW50Y18xIC8vIDAKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyM19mb3JfaGVhZGVyQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzMwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAxCiAgICBwdXNoaW50IDMKICAgIDwKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIzX2FmdGVyX2ZvckA0CiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Zvcl9ib2R5QDIKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Zvcl9ib2R5QDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzMwogICAgLy8gdmFsaWRhdGVFbmNvZGluZyh2YWx1ZSkKICAgIGZyYW1lX2RpZyAxCiAgICBpbnRjXzIgLy8gMgogICAgKgogICAgZnJhbWVfZGlnIC0xCiAgICB1bmNvdmVyIDEKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGVuY29kaW5nCiAgICBkdXAKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGNvdmVyIDMKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgZm9yICh1aW50NjQsdWludDgsKGxlbit1dGY4W10pKVszXQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgbGVuCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIHB1c2hpbnQgOQogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgaW50Y18zIC8vIDExCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDIgb2YgKHVpbnQ2NCx1aW50OCwobGVuK3V0ZjhbXSkpCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMQogICAgKgogICAgaW50Y18yIC8vIDIKICAgICsKICAgIGludGNfMyAvLyAxMQogICAgKwogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX25hdGl2ZV9keW5hbWljX3N0cnVjdF9hcnIzX2Zvcl9mb290ZXJAMwoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2Zvb3RlckAzOgogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfbmF0aXZlX2R5bmFtaWNfc3RydWN0X2FycjNfZm9yX2hlYWRlckAxCgp0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9uYXRpdmVfZHluYW1pY19zdHJ1Y3RfYXJyM19hZnRlcl9mb3JANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTMzCiAgICAvLyB2YWxpZGF0ZUVuY29kaW5nKHZhbHVlKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAwCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTx0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpOYXRpdmVEeW5hbWljU3RydWN0LCAzPgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjKCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjOgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9jMmNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzOQogICAgLy8gY29uc3QgYXBwID0gY29tcGlsZWQuY2FsbC5jcmVhdGUoe30pLml0eG4uY3JlYXRlZEFwcAogICAgaXR4bl9iZWdpbgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzcKICAgIC8vIGNvbnN0IGNvbXBpbGVkID0gY29tcGlsZUFyYzQoSW52YWxpZENvbnRyYWN0KQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIExvY2FsTnVtVWludAogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgTG9jYWxOdW1CeXRlU2xpY2UKICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgR2xvYmFsTnVtVWludAogICAgcHVzaGJ5dGVzIGJhc2U2NChDMElBQUlFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzAgLy8gMHgKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweAogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbVBhZ2VzCiAgICBieXRlY18wIC8vIDB4CiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIHB1c2hieXRlcyBiYXNlNjQoQ3lBQ0FBRkNBQUJDQUFBeEdTSVNSREVZSWhOQkFCOUNBQUEyR2dDQUJFWFBCZTlQQVk0QkFBZENBQUJDQUFBQWlBQW1Rdi8yTmhvQWdBUk1YR0c2VHdHT0FRQUdRZ0FBUXYva2lBQURRdi8zUWdBQWlBQVVJME5DQUFDSUFCQ0FCQlVmZkhWUEFWQ3dJME5DQUFDSlFnQUFnQWRwYm5aaGJHbGtpUT09KQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgYnl0ZWNfMCAvLyAweAogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxMzkKICAgIC8vIGNvbnN0IGFwcCA9IGNvbXBpbGVkLmNhbGwuY3JlYXRlKHt9KS5pdHhuLmNyZWF0ZWRBcHAKICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgcHVzaGJ5dGVzIDB4NGM1YzYxYmEgLy8gbWV0aG9kICJjcmVhdGUoKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGludCA2IC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjpBYmlWYWxpZGF0aW9uRXhoYXVzdGl2ZS52YWxpZGF0ZV9jMmNfbmV4dF90eG5AMQoKdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjX25leHRfdHhuQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYWJpLXZhbGlkYXRpb24tZXhoYXVzdGl2ZS5hbGdvLnRzOjEzOQogICAgLy8gY29uc3QgYXBwID0gY29tcGlsZWQuY2FsbC5jcmVhdGUoe30pLml0eG4uY3JlYXRlZEFwcAogICAgaXR4bl9zdWJtaXQKICAgIGdpdHhuIDAgQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6MTQxLTE0NAogICAgLy8gYWJpQ2FsbCh7CiAgICAvLyAgIG1ldGhvZDogSW52YWxpZENvbnRyYWN0LnByb3RvdHlwZS5pbnZhbGlkVmFsdWUsCiAgICAvLyAgIGFwcElkOiBhcHAsCiAgICAvLyB9KQogICAgaXR4bl9iZWdpbgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBwdXNoYnl0ZXMgMHg0NWNmMDVlZiAvLyBtZXRob2QgImludmFsaWRWYWx1ZSgpdWludDY0WzNdIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIHB1c2hpbnQgNiAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czo6QWJpVmFsaWRhdGlvbkV4aGF1c3RpdmUudmFsaWRhdGVfYzJjX25leHRfdHhuQDIKCnRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLnZhbGlkYXRlX2MyY19uZXh0X3R4bkAyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2FiaS12YWxpZGF0aW9uLWV4aGF1c3RpdmUuYWxnby50czoxNDEtMTQ0CiAgICAvLyBhYmlDYWxsKHsKICAgIC8vICAgbWV0aG9kOiBJbnZhbGlkQ29udHJhY3QucHJvdG90eXBlLmludmFsaWRWYWx1ZSwKICAgIC8vICAgYXBwSWQ6IGFwcCwKICAgIC8vIH0pCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICBkdXAKICAgIGV4dHJhY3QgNCAwCiAgICBjb3ZlciAxCiAgICBleHRyYWN0IDAgNAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgbGVuCiAgICBwdXNoaW50IDI0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ2NCwgMz4KICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hYmktdmFsaWRhdGlvbi1leGhhdXN0aXZlLmFsZ28udHM6OkFiaVZhbGlkYXRpb25FeGhhdXN0aXZlLl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIGIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlX2Jsb2NrQDAKCl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZV9ibG9ja0AwOgogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgcHVzaGludCAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyAEAQACCyYBAEIAAEIAADEbIxNBAcpCAAAxGSMSRDEYIxNBAbhCAAA2GgCABE11jFmABGu3uWOABBiFLNaABFsu++GABOzKepiABJTac8CABCYjDeGABD7Hf6yABPERwH6ABD9ot9GABGdMDoeABAkauEiABPMon7iABJGs7lGABE5kHpmABGU248KABJNSLLiABL+IiCWABCKqkNaABG7stJ2ABCg4iCmABH6AS7+ABM4mxyyABOxWEm+ABMNnS1aABPt7BSiABLpRlf2ABONrMiSABFdOlHmABNC1gvFPHo4eALgAsgCsAKYAoACaAJQAjgCIAIIAfAB2AHAAagBkAF4AWABSAEwARgBAADoANAAuACgAIgAcABYAEAAKQgAAQgAAQgAAAIgCAkL/84gB8UL/7YgB4EL/54gBz0L/4YgBvkL/24gBrUL/1YgBnEL/z4gBi0L/yYgBekL/w4gBaUL/vYgBWEL/t4gBR0L/sYgBNkL/q4gBJUL/pYgBFEL/n4gBA0L/mYgA8kL/k4gA4UL/jYgA0EL/h4gAv0L/gYgArkL/e4gAnUL/dYgAjEL/b4gAe0L/aYgAakL/Y4gAWUL/XYgASEL/V4gAN0L/UYgAJkL/S4gAFUL/RUL/RTEZIxIxGCMSEESIBdoiQ0IAADYaAYgBPiJDQgAANhoBiAFBIkNCAAA2GgGIAUMiQ0IAADYaAYgBRiJDQgAANhoBiAFJIkNCAAA2GgGIAVIiQ0IAADYaAYgBVSJDQgAANhoBiAFXIkNCAAA2GgGIAVkiQ0IAADYaAYgBYiJDQgAANhoBiAFrIkNCAAA2GgGIAW4iQ0IAADYaAYgBcSJDQgAANhoBiAGAIkNCAAA2GgGIAYIiQ0IAADYaAYgBhSJDQgAANhoBiAGhIkNCAAA2GgGIAaQiQ0IAADYaAYgBwCJDQgAANhoBiAHKIkNCAAA2GgGIAc0iQ0IAADYaAYgCNyJDQgAANhoBiAKOIkNCAAA2GgGIAqsiQ0IAADYaAYgCriJDQgAANhoBiALKIkNCAAA2GgGIAtQiQ0IAADYaAYgC1yJDQgAANhoBiANBIkNCAACIA5siQ4oBAEIAAIv/FYEIEkSJigEAQgAAi/8VIhJEiYoBAEIAAIv/FYFAEkSJigEAQgAAi/8VgQgSRImKAQBCAACL/yNZIgskCIv/FRJEiYoBAEIAAIv/FYEDEkSJigEAQgAAi/8VIhJEiYoBAEIAAIv/FSISRImKAQBCAACL/yNZIgskCIv/FRJEiYoBAEIAAIv/I1kiCyQIi/8VEkSJigEAQgAAi/8VgSASRImKAQBCAACL/xWBIBJEiYoBAEIAAIv/I1kiC4EHCIEICiQIi/8VEkSJigEAQgAAi/8VIhJEiYoBAEIAAIv/FYEJEkSJigEAQgAAi/8Vi/+BCVlJJRJEi/9PAU8CUiNZIgskCCUIi/8VEkSJigEAQgAAi/8VgQkSRImKAQBCAACL/xWL/4EJWUklEkSL/08BTwJSI1kiCyQIJQiL/xUSRImKAQBCAACL/yNZgQkLJAiL/xUSRImKAQBCAACL/xWBGxJEiYoBAEIAAIv/I1lJJAuL/xWL/yRPAlIjQgAAiwOLAAxBAElCAACLAyQLiwJJTgJPAVlJiwFJTgQSREsBFU4BTwJPAU8CUkkVTgFJgQlZSSUSRE8CUiNZIgskCCUICIwBQgAAiwMiCIwDQv+viwEkCIv/FRJEiYoBAEIAAIEDJAsjQgAAiwGBAwxBAERCAACLASQLi/9PAVlJiwBJTgMSRIv/FYv/TwJPAlJJFU4BSYEJWUklEkRPAlIjWSILJAglCAiMAEIAAIsBIgiMAUL/tIv/FYsAEkSJigEAQgAAi/8Vi/8iWUmBBBJEi/9PAU8CUiNZIgskCIEECIv/FRJEiYoBAEIAAIv/FYEJEkSJigEAQgAAi/8Vi/+BCVlJJRJEi/9PAU8CUiNZIgskCCUIi/8VEkSJigEAQgAAi/8jWYEJCyQIi/8VEkSJigEAQgAAi/8VgRsSRImKAQBCAACL/yNZSSQLi/8Vi/8kTwJSI0IAAIsDiwAMQQBJQgAAiwMkC4sCSU4CTwFZSYsBSU4EEkRLARVOAU8CTwFPAlJJFU4BSYEJWUklEkRPAlIjWSILJAglCAiMAUIAAIsDIgiMA0L/r4sBJAiL/xUSRImKAQBCAACBAyQLI0IAAIsBgQMMQQBEQgAAiwEkC4v/TwFZSYsASU4DEkSL/xWL/08CTwJSSRVOAUmBCVlJJRJETwJSI1kiCyQIJQgIjABCAACLASIIjAFC/7SL/xWLABJEiUIAALEjsjgjsjYjsjcjsjUjsjSABwtCAACBAUOyQiiyQiiyQiiyQoB8CyACAAFCAABCAAAxGSISRDEYIhNBAB9CAAA2GgCABEXPBe9PAY4BAAdCAABCAAAAiAAmQv/2NhoAgARMXGG6TwGOAQAGQgAAQv/kiAADQv/3QgAAiAAUI0NCAACIABCABBUffHVPAVCwI0NCAACJQgAAgAdpbnZhbGlkibJAKLJAKLJAKLJAI7IZgARMXGG6shqBBrIQI7IBQgAAs7cAPbGyGIAERc8F77IagQayECOyAUIAALO0PklXBABOAVcABIAEFR98dRJEFYEYEkSJQgAAiQ==", "clear": "C0IAAIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }