Name: series-workflowxqtkm Phase: Failed StartedAt: 2026-08-25 08:53:42 +0000 UTC FinishedAt: 2026-08-25 08:56:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxqtkm[0] Phase: Succeeded StartedAt: 2026-08-25 08:53:42 +0000 UTC FinishedAt: 2026-08-25 08:55:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxqtkm[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 08:53:42 +0000 UTC FinishedAt: 2026-08-25 08:55:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgYSBCVEZfVFlQRV9FTUlUIG1hY3JvIGNhbGwgaW4gdGhlIGtlcm5lbCBjb2RlLCB3aGljaCBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHNlbGZ0ZXN0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDg6NTQ6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXG5pbmRleCA3MDJjMjJmYWUxMzZhLi41NmM1M2FjYTQ1MTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbkBAIC02Miw2ICYjNDM7NjIsMTAgQEAgc3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbiBcdHUzMiBlbmQ7XG4gfTtcbiBcbiYjNDM7c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuJiM0MztcdHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7XG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdFx0ICAgaW50IG9mZiwgaW50IHNpemUpXG5AQCAtODYsNiAmIzQzOzkwLDggQEAgc3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0Y29uc3QgY2hhciAqY3VyID0gTlVMTDtcbiBcdGludCBpO1xuIFxuJiM0MztcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuJiM0MztcbiBcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXHUwMDNlYnRmLCByZWctXHUwMDNlYnRmX2lkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSYjNDM7JiM0MzspIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuaW5kZXggYjg1MTMzOTMwOGMyMS4uN2FiODYyOTZmZjIzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC02NywxNCAmIzQzOzY3LDE3IEBAIHN0cnVjdCB0ZXN0X3Byb2dyYW0ge1xuIFx0aW50IGluc2VydF9oZWFkO1xuIH07XG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxuLVx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbiYjNDM7XHRsb2FkX3Byb2dyYW1zKHByb2dzLCBBUlJBWV9TSVpFKHByb2dzKSwgZmFsc2UsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbiYjNDM7I2RlZmluZSBMT0FEX1BST0dSQU1TX01BWV9GQUlMKHByb2dzKSBcXFxuJiM0MztcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxuLVx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4tc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4tXHRcdFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4tXHRcdFx0ICBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4tXHRcdFx0ICBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuLVx0XHRcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbiYjNDM7XHRsb2FkX3Byb2dyYW1zKE5VTEwsIDAsIGZhbHNlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4mIzQzO3N0YXRpYyBpbnQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4mIzQzO1x0XHRcdCBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4mIzQzO1x0XHRcdCBib29sIGxvYWRfbWF5X2ZhaWwsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4mIzQzO1x0XHRcdCBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuJiM0MztcdFx0XHQgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbiB7XG4gXHRzdHJ1Y3QgYnBmX21hcCAqaXRlcl9tYXA7XG4gXHRpbnQgZXJyID0gLUVJTlZBTDtcbkBAIC0xMjgsNiAmIzQzOzEzMSw5IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0fVxuIFxuIFx0ZXJyID0gaGlkX19sb2FkKHNlbGYtXHUwMDNlc2tlbCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgbG9hZF9tYXlfZmFpbClcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuIFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2hpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwmIzM0OywgZXJyKTtcbiBcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwcm9nc19jb3VudDsgaSYjNDM7JiM0MzspIHtcbkBAIC0xNDcsNiAmIzQzOzE1Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFxuIFx0c2VsZi1cdTAwM2VoaWRyYXdfZmQgPSBvcGVuX2hpZHJhdyhcdTAwMjZzZWxmLVx1MDAzZWhpZCk7XG4gXHRBU1NFUlRfR0Uoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIDApIFRIX0xPRyhcJiMzNDtvcGVuX2hpZHJhd1wmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qXG5AQCAtOTA0LDExICYjNDM7OTExLDM5IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxuIFx0XHR7IC5uYW1lID0gXCYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCYjMzQ7IH0sXG4gXHR9O1xuIFxuLVx0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4mIzQzO1x0LyogbmV3ZXIgdmVyaWZpZXIgY2FuIGRldGVjdCB0aGUgb3ZlcmZsb3cgYXQgbG9hZCB0aW1lICovXG4mIzQzO1x0aWYgKExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuIFx0QVNTRVJUX0VRKHNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2ssIDEpO1xuIH1cbiBcbiYjNDM7VEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xuJiM0MztcdFx0eyAubmFtZSA9IFwmIzM0O2hpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXNcJiMzNDsgfSxcbiYjNDM7XHR9O1xuJiM0MztcdGNoYXIgZXhwZWN0ZWRbMjU2XSwgYnVmWzI1Nl0gPSB7fTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdOQU1FKHNpemVvZihidWYpKSwgYnVmKTtcbiYjNDM7XHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXCYjMzQ7SElESU9DR1JBV05BTUVcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9TVFJFUShcJiMzNDtuYW1lIGNvbWluZyBmcm9tIGJwZlwmIzM0OywgYnVmKTtcbiYjNDM7XG4mIzQzO1x0c25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIFwmIzM0OyVkIHBoeXM6Y29taW5nOmZyb206YnBmXCYjMzQ7LCBzZWxmLVx1MDAzZWhpZC5kZXZfaWQpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBpb2N0bChzZWxmLVx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV1BIWVMoc2l6ZW9mKGJ1ZikpLCBidWYpO1xuJiM0MztcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcJiMzNDtISURJT0NHUkFXUEhZU1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBpb2N0bChzZWxmLVx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV1VOSVEoc2l6ZW9mKGJ1ZikpLCBidWYpO1xuJiM0MztcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcJiMzNDtISURJT0NHUkFXVU5JUVwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX1NUUkVRKFwmIzM0O3VuaXE6Y29taW5nOmZyb206YnBmXCYjMzQ7LCBidWYpO1xuJiM0MztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcbiBcdFx0XHQgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5pbmRleCBiMjFmYmIxM2M5MjZmLi5iNWQ5YWVhMWJkYTFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbkBAIC0yNTUsNiAmIzQzOzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4gXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4gfTtcbiBcbiYjNDM7U0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuJiM0Mzt7XG4mIzQzOyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXG4mIzQzO1x0X19idWlsdGluX21lbWNweSh0YXJnZXQsIHN0ciwgc2l6ZW9mKHN0cikpXG4mIzQzO1xuJiM0MztcdEhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZW5hbWUsIFwmIzM0O25hbWUgY29taW5nIGZyb20gYnBmXCYjMzQ7KTtcbiYjNDM7XHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2V1bmlxLCBcJiMzNDt1bmlxOmNvbWluZzpmcm9tOmJwZlwmIzM0Oyk7XG4mIzQzO1x0LyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi9cbiYjNDM7XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmICghaGlkX2N0eC1cdTAwM2VoaWQtXHUwMDNlcGh5c1tpXSkge1xuJiM0MztcdFx0XHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2VwaHlzICYjNDM7IGksIFwmIzM0OyBwaHlzOmNvbWluZzpmcm9tOmJwZlwmIzM0Oyk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzOyN1bmRlZiBISURfQlBGX0NPTkNBVFxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG4mIzQzO3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XG4mIzQzO1x0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cyxcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG5pbmRleCBjZGNhOTEyZjNhZmQ4Li4wNTY5ODc5Mzc2MmFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmhcbkBAIC02MSw2ICYjNDM7NjEsOSBAQCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB7XG4gXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xuIFx0dW5zaWduZWQgaW50IGlkO1xuJiM0MztcdGNoYXIgbmFtZVsxMjhdO1xuJiM0MztcdGNoYXIgcGh5c1s2NF07XG4mIzQzO1x0Y2hhciB1bmlxWzY0XTtcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xuIFxuIHN0cnVjdCBicGZfd3Ege1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlNzNjMzlkNTU1MzE5YTM3OWE4MWRiYTdjNDQ2NDY2MGJjMmJjNzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwODo1NDo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYwppbmRleCA3MDJjMjJmYWUxMzZhLi41NmM1M2FjYTQ1MTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jCkBAIC02Miw2ICYjNDM7NjIsMTAgQEAgc3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHsKIAl1MzIgZW5kOwogfTsKIAomIzQzO3N0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkIHsKJiM0MzsJc3RydWN0IGhpZF9kZXZpY2UgKmhpZDsKJiM0Mzt9OwomIzQzOwogc3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQkJCQkgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLAogCQkJCQkgICBpbnQgb2ZmLCBpbnQgc2l6ZSkKQEAgLTg2LDYgJiM0Mzs5MCw4IEBAIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAljb25zdCBjaGFyICpjdXIgPSBOVUxMOwogCWludCBpOwogCiYjNDM7CUJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpOwomIzQzOwogCXQgPSBidGZfdHlwZV9ieV9pZChyZWctJmd0O2J0ZiwgcmVnLSZndDtidGZfaWQpOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSYjNDM7JiM0MzspIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCmluZGV4IGI4NTEzMzkzMDhjMjEuLjdhYjg2Mjk2ZmYyMzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwpAQCAtNjcsMTQgJiM0Mzs2NywxNyBAQCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHsKIAlpbnQgaW5zZXJ0X2hlYWQ7CiB9OwogI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcCi0JbG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudCkKJiM0MzsJbG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIGZhbHNlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpCiYjNDM7I2RlZmluZSBMT0FEX1BST0dSQU1TX01BWV9GQUlMKHByb2dzKSBcCiYjNDM7CWxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpCiAjZGVmaW5lIExPQURfQlBGIFwKLQlsb2FkX3Byb2dyYW1zKE5VTEwsIDAsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudCkKLXN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAotCQkJICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsCi0JCQkgIHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSwKLQkJCSAgRklYVFVSRV9EQVRBKGhpZF9icGYpICogc2VsZiwKLQkJCSAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudCkKJiM0MzsJbG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KQomIzQzO3N0YXRpYyBpbnQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sCiYjNDM7CQkJIGNvbnN0IHNpemVfdCBwcm9nc19jb3VudCwKJiM0MzsJCQkgYm9vbCBsb2FkX21heV9mYWlsLAomIzQzOwkJCSBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsCiYjNDM7CQkJIEZJWFRVUkVfREFUQShoaWRfYnBmKSAqIHNlbGYsCiYjNDM7CQkJIGNvbnN0IEZJWFRVUkVfVkFSSUFOVChoaWRfYnBmKSAqIHZhcmlhbnQpCiB7CiAJc3RydWN0IGJwZl9tYXAgKml0ZXJfbWFwOwogCWludCBlcnIgPSAtRUlOVkFMOwpAQCAtMTI4LDYgJiM0MzsxMzEsOSBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAl9CiAKIAllcnIgPSBoaWRfX2xvYWQoc2VsZi0mZ3Q7c2tlbCk7CiYjNDM7CWlmIChlcnIgJmFtcDsmYW1wOyBsb2FkX21heV9mYWlsKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlBU1NFUlRfT0soZXJyKSBUSF9MT0coJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWQmIzM0OywgZXJyKTsKIAogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgcHJvZ3NfY291bnQ7IGkmIzQzOyYjNDM7KSB7CkBAIC0xNDcsNiAmIzQzOzE1Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCiAJc2VsZi0mZ3Q7aGlkcmF3X2ZkID0gb3Blbl9oaWRyYXcoJmFtcDtzZWxmLSZndDtoaWQpOwogCUFTU0VSVF9HRShzZWxmLSZndDtoaWRyYXdfZmQsIDApIFRIX0xPRygmIzM0O29wZW5faGlkcmF3JiMzNDspOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTkwNCwxMSAmIzQzOzkxMSwzOSBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdykKIAkJeyAubmFtZSA9ICYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93JiMzNDsgfSwKIAl9OwogCi0JTE9BRF9QUk9HUkFNUyhwcm9ncyk7CiYjNDM7CS8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqLwomIzQzOwlpZiAoTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykpCiYjNDM7CQlyZXR1cm47CiAKIAlBU1NFUlRfRVEoc2VsZi0mZ3Q7c2tlbC0mZ3Q7YnNzLSZndDtnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7CiB9CiAKJiM0MztURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7CiYjNDM7CQl7IC5uYW1lID0gJiMzNDtoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzJiMzNDsgfSwKJiM0MzsJfTsKJiM0MzsJY2hhciBleHBlY3RlZFsyNTZdLCBidWZbMjU2XSA9IHt9OwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlMT0FEX1BST0dSQU1TKHByb2dzKTsKJiM0MzsKJiM0MzsJZXJyID0gaW9jdGwoc2VsZi0mZ3Q7aGlkcmF3X2ZkLCBISURJT0NHUkFXTkFNRShzaXplb2YoYnVmKSksIGJ1Zik7CiYjNDM7CUFTU0VSVF9HRShlcnIsIDApIFRIX0xPRygmIzM0O0hJRElPQ0dSQVdOQU1FJiMzNDspOwomIzQzOwlBU1NFUlRfU1RSRVEoJiMzNDtuYW1lIGNvbWluZyBmcm9tIGJwZiYjMzQ7LCBidWYpOwomIzQzOwomIzQzOwlzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgJiMzNDslZCBwaHlzOmNvbWluZzpmcm9tOmJwZiYjMzQ7LCBzZWxmLSZndDtoaWQuZGV2X2lkKTsKJiM0MzsKJiM0MzsJZXJyID0gaW9jdGwoc2VsZi0mZ3Q7aGlkcmF3X2ZkLCBISURJT0NHUkFXUEhZUyhzaXplb2YoYnVmKSksIGJ1Zik7CiYjNDM7CUFTU0VSVF9HRShlcnIsIDApIFRIX0xPRygmIzM0O0hJRElPQ0dSQVdQSFlTJiMzNDspOwomIzQzOwlBU1NFUlRfU1RSRVEoZXhwZWN0ZWQsIGJ1Zik7CiYjNDM7CiYjNDM7CWVyciA9IGlvY3RsKHNlbGYtJmd0O2hpZHJhd19mZCwgSElESU9DR1JBV1VOSVEoc2l6ZW9mKGJ1ZikpLCBidWYpOwomIzQzOwlBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coJiMzNDtISURJT0NHUkFXVU5JUSYjMzQ7KTsKJiM0MzsJQVNTRVJUX1NUUkVRKCYjMzQ7dW5pcTpjb21pbmc6ZnJvbTpicGYmIzM0OywgYnVmKTsKJiM0MzsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCwKIAkJCSAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCmluZGV4IGIyMWZiYjEzYzkyNmYuLmI1ZDlhZWExYmRhMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMKQEAgLTI1NSw2ICYjNDM7MjU1LDMyIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHsKIAkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csCiB9OwogCiYjNDM7U0VDKCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXAmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KQomIzQzO3sKJiM0MzsjZGVmaW5lIEhJRF9CUEZfTUVNQ1BZKHRhcmdldCwgc3RyKSBcCiYjNDM7CV9fYnVpbHRpbl9tZW1jcHkodGFyZ2V0LCBzdHIsIHNpemVvZihzdHIpKQomIzQzOwomIzQzOwlISURfQlBGX01FTUNQWShoaWRfY3R4LSZndDtoaWQtJmd0O25hbWUsICYjMzQ7bmFtZSBjb21pbmcgZnJvbSBicGYmIzM0Oyk7CiYjNDM7CUhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtJmd0O2hpZC0mZ3Q7dW5pcSwgJiMzNDt1bmlxOmNvbWluZzpmcm9tOmJwZiYjMzQ7KTsKJiM0MzsJLyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi8KJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyA0OyBpJiM0MzsmIzQzOykgewomIzQzOwkJaWYgKCFoaWRfY3R4LSZndDtoaWQtJmd0O3BoeXNbaV0pIHsKJiM0MzsJCQlISURfQlBGX01FTUNQWShoaWRfY3R4LSZndDtoaWQtJmd0O3BoeXMgJiM0MzsgaSwgJiMzNDsgcGh5czpjb21pbmc6ZnJvbTpicGYmIzM0Oyk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsjdW5kZWYgSElEX0JQRl9DT05DQVQKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmsmIzM0OykKJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzID0gewomIzQzOwkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLAomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oCmluZGV4IGNkY2E5MTJmM2FmZDguLjA1Njk4NzkzNzYyYWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgKQEAgLTYxLDYgJiM0Mzs2MSw5IEBAIGVudW0gaGlkX3JlcG9ydF90eXBlIHsKIAogc3RydWN0IGhpZF9kZXZpY2UgewogCXVuc2lnbmVkIGludCBpZDsKJiM0MzsJY2hhciBuYW1lWzEyOF07CiYjNDM7CWNoYXIgcGh5c1s2NF07CiYjNDM7CWNoYXIgdW5pcVs2NF07CiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpOwogCiBzdHJ1Y3QgYnBmX3dxIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIFNlcmllcyBmb3IgRnVuY3Rpb25hbCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgd291bGQgd2FycmFudCBmdXp6aW5nLiBUaGUgcGF0Y2ggdG91Y2hlcyBhIGZldyBmaWxlczogYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AsIGFuZCBhIGZldyBzZWxmLXRlc3QgZmlsZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLgoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AuIFRoZSBkaWZmIHNob3dzIGEgbmV3IGBzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZGAgYW5kIHRoZSB1c2Ugb2YgYEJURl9UWVBFX0VNSVRgLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXMgdGhpcyBhY3R1YWxseSBkb2luZyBzb21ldGhpbmcsIG9yIGlzIGl0IGp1c3QgbWV0YWRhdGE/IEl0IGxvb2tzIGxpa2UgaXQgaXMgZW1pdHRpbmcgQlRGIGluZm9ybWF0aW9uIGZvciB0aGlzIG5ldyBzdHJ1Y3R1cmUuIEkgc3VzcGVjdCB0aGlzIGlzIHRvIGFsbG93IEJQRiBwcm9ncmFtcyB0byBzYWZlbHkgYWNjZXNzIGBoaWRfY3R4LSZndDtoaWRgLiBCdXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzLgoKT2theSwgcmVyZWFkaW5nIHRoZSBkaWZmLCB0aGUgb25seSB0aGluZyBoYXBwZW5pbmcgaW4gdGhpcyBmaWxlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgbmV3IHN0cnVjdCBhbmQgdGhlIGBCVEZfVFlQRV9FTUlUYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IERvZXMgdGhpcyBjaGFuZ2UgYW55IGV4ZWN1dGlvbiBmbG93LCBvciBpcyBpdCBqdXN0IHR5cGUgaW5mb3JtYXRpb24/IGBCVEZfVFlQRV9FTUlUYCBpcyBhIG1hY3JvIHRoYXQgdXN1YWxseSB0ZWxscyB0aGUgY29tcGlsZXIgdG8gZW1pdCBCVEYgZm9yIHRoZSB0eXBlLiBJdCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYWZmZWN0IHRoZSBleGVjdXRpb24gb2YgdGhlIGRyaXZlciBpdHNlbGYuCgpTbywgYXQgdGhpcyBwb2ludCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgQlRGX1RZUEVfRU1JVGAgYWN0dWFsbHkgZG9lcy4gVGhlbiwgSSBjYW4gbWFrZSBhIGRlY2lzaW9uIGFzIHRvIHdoZXRoZXIgdGhpcyBjb25zdGl0dXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIG9yIGlzIGEgc2FmZSBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBCVEZfVFlQRV9FTUlUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnRmLmgtMTMtXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE0OiNkZWZpbmUgQlRGX1RZUEVfRU1JVCh0eXBlKSAoKHZvaWQpKHR5cGUgKikwKVxuaW5jbHVkZS9saW51eC9idGYuaDoxNTojZGVmaW5lIEJURl9UWVBFX0VNSVRfRU5VTShlbnVtX3ZhbCkgKCh2b2lkKWVudW1fdmFsKVxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTIzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlRGIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGAjZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSlgIG1hY3JvLi4uIGl0JiMzOTtzIGEgY2xldmVyIHRyaWNrLiBObyBhY3R1YWwgY29kZSBpcyBiZWluZyBnZW5lcmF0ZWQgaGVyZSwgaXQmIzM5O3MganVzdCBhIHdheSB0byBmb3JjZSB0aGUgQlRGIGdlbmVyYXRpb24gdG8gaW5jbHVkZSBhIHR5cGUgZGVmaW5pdGlvbi4gRWZmZWN0aXZlbHksIGl0JiMzOTtzIGNhc3RpbmcgYSB6ZXJvIHRvIGEgcG9pbnRlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHRoZW4gZGlzY2FyZGluZyBpdCB3aXRoIGEgdm9pZCBjYXN0LiBUaGlzIGlzIHB1cmVseSBmb3IgQlRGIG1ldGFkYXRhLiBUaGUgb3RoZXIgZmlsZSBtb2RpZmljYXRpb25zIGFyZSBsb2NhbGl6ZWQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLCBzbyBubyBkaXJlY3QgZnVuY3Rpb25hbCBpbXBhY3Qgb24ga2VybmVsIGV4ZWN1dGlvbi4gVGhhdCYjMzk7cyBhIHJlbGllZi4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGRvZXMgaW50cm9kdWNpbmcgYSBuZXcgdHlwZSBpbnRvIEJURiBoYXZlIGFueSBzaWRlIGVmZmVjdHMgb24gdGhlIHZlcmlmaWVyPyBUaGUgdmVyaWZpZXIgbWlnaHQgc3RhcnQgbG9va2luZyB1cCBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgIGluIHRoZSBCVEYgZGF0YS4gTGV0JiMzOTtzIG5vdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmUgbm8gdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBzdHJ1Y3R1cmUsIGBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCwgaXMgcmVmZXJlbmNlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvZGViYXNlLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gY29uZmlybSB0aGlzIGlzIGEgc2FmZSBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTY2LVx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIEFub21hbHkqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW4gdGhpcyBrZXJuZWwgY29kZSB0aGF0IGZlZWxzLi4uIGlzb2xhdGVkLiBUaGlzIHNuaXBwZXQgaXNuJiMzOTt0IHJlZmVyZW5jZWQgYW55d2hlcmUgZWxzZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb2RlYmFzZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gV2h5IGlzIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZSBoYW5naW5nIG91dCBoZXJlLCBhbG9uZT8gSXQmIzM5O3MgbWFraW5nIG1lIHdvbmRlciBhYm91dCBpdHMgcHVycG9zZSwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc29tZWhvdyByZWR1bmRhbnQgb3IsIHdvcnNlLCBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKVGhlbiwgYSB0aG91Z2h0IHNwYXJrcyAtIHdhaXQgYSBzZWNvbmQsIGRvZXNuJiMzOTt0IHRoZSB2ZXJpZmllciwgaW4gaXRzIGNoZWNrcywgaGF2ZSBzb21lIGtpbmQgb2YgbWVjaGFuaXNtIGZvciBpZGVudGlmeWluZyBzcGVjaWZpYyB0eXBlcyB0aGF0IGVuZCBpbiBzb21ldGhpbmcgbGlrZSBgX19zYWZlX3RydXN0ZWRgPyBJIHNlZW0gdG8gcmVjYWxsIGEgZmVhdHVyZSBkZXNpZ25lZCB0byBoYW5kbGUgdHJ1c3RlZCBjb2RlIG9yIGRhdGEuIFBlcmhhcHMgdGhpcyBjb2RlIGlzIHJlbGF0ZWQgdG8gdGhhdC4KClJpZ2h0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaHVuY2guIExldCYjMzk7cyBkaXZlIGludG8gdGhlIHZlcmlmaWVyIGNvZGUgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbG9naWMgc3BlY2lmaWNhbGx5IGdlYXJlZCB0b3dhcmRzIHRoZXNlIGtpbmRzIG9mIHR5cGUgbmFtaW5nIGNvbnZlbnRpb25zLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlYXNvbiB0aGlzIHNlZW1pbmdseSBvcnBoYW5lZCBjb2RlIGV4aXN0cyBhbmQgd2h5IGl0JiMzOTtzIHN0cnVjdHVyZWQgdGhlIHdheSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NhZmVfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTY2LVx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NTczPWludCBicGZfbWFwX2RpcmVjdF9yZWFkKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBvZmYsIGludCBzaXplLCB1NjQgKnZhbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYwNS0jZGVmaW5lIEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoX190eXBlKSAgX19QQVNURShfX3R5cGUsIF9fc2FmZV9yY3Vfb3JfbnVsbClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA2OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA3OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEX09SX05VTEwoX190eXBlKSAgX19QQVNURShfX3R5cGUsIF9fc2FmZV90cnVzdGVkX29yX251bGwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYwOC1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcwOT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE4Olx0cmV0dXJuIGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkKFx1MDAyNmVudi1cdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcJiMzNDtfX3NhZmVfdHJ1c3RlZFwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxOS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcyOS1cdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzMwOlx0XHRcdFx0XHQgIFwmIzM0O19fc2FmZV90cnVzdGVkX29yX251bGxcJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBCVEYtRHJpdmVuIFZlcmlmaWVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBJdCYjMzk7cyB0aGF0IGBfX3NhZmVfdHJ1c3RlZGAgc3VmZml4IHRyaWNrISAgUmlnaHQsIHRoZSB2ZXJpZmllciB1c2VzIHRoYXQgdG8gZGV0ZXJtaW5lIGlmIGEgZmllbGQgaXMgY29uc2lkZXJlZCB0cnVzdGVkLiBTbywgYWRkaW5nIGBzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCB7IHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7IH07YCBhbmQgZW1pdHRpbmcgaXQgaXMgdGhlIGNydXggb2YgaXQuICBUaGlzIG1lYW5zIHRoZSB2ZXJpZmllciAqbm93KiBjb25zaWRlcnMgYGhpZF9jdHgtJmd0O2hpZGAgYSB0cnVzdGVkIHBvaW50ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0Z1bmN0aW9uYWxseSwgaXMgdGhpcyBhIGNoYW5nZT8mIzM0OwoKWWVzLCBhYnNvbHV0ZWx5LiBJdCAqY2hhbmdlcyogdGhlIHZlcmlmaWVyJiMzOTtzIGJlaGF2aW9yLiAgQlBGIHByb2dyYW1zIGNhbiBub3cgZ2V0IGxvYWRlZCB0aGF0IHdlcmUgcHJldmlvdXNseSBibG9ja2VkLiAgQnV0IGhlcmUmIzM5O3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIHJlYWxseSBraWNrcyBpbjogZG9lcyBpdCBjaGFuZ2Uga2VybmVsICpleGVjdXRpb24qIGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZz8gVGhlIHZlcmlmaWVyIGl0c2VsZiBpc27igJl0IHRvdWNoZWQgKGNvZGUtd2lzZSksIG9ubHkgdGhlIEJURiBkYXRhIGZvciBgaGlkX2JwZl9jdHhgIGNoYW5nZXMuCgpXYWl0IGEgc2VjLCB0aGUgdmVyaWZpZXIgKmlzKiBmdXp6ZWQuICBCeSBhZGRpbmcgdGhpcyBCVEYgdHlwZSwgd2UmIzM5O3JlIGV4cG9zaW5nIGEgbmV3IHRydXN0ZWQgcG9pbnRlciB0byBCUEYgcHJvZ3JhbXMuICBDcnVjaWFsbHksIHRoZXJlJiMzOTtzICpubyogbmV3IEMgY29kZS4gIEl0JiMzOTtzIGp1c3QgdGhhdCBgQlRGX1RZUEVfRU1JVGAgbGluZSDigJMgYSB0eXBlIGRlZmluaXRpb24uIFRoZSBrZXJuZWwmIzM5O3MgKmV4ZWN1dGlvbiBmbG93KiBkb2VzbiYjMzk7dCBmdW5kYW1lbnRhbGx5IGNoYW5nZSwgb3RoZXIgdGhhbiB0aGUgdmVyaWZpZXIgYWNjZXB0aW5nIHRoZSBCUEYgcHJvZ3JhbXMuICBUaGVyZSYjMzk7cyBubyBuZXcga2VybmVsIGxvZ2ljIHRvIHRhcmdldCB3aXRoIGZ1enppbmcuCgpNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gZGlzbWlzcyBpdC4gQnV0LCB3YWl0LiBJZiBhIEJQRiBwcm9ncmFtIGNhbiBub3cgKnBhc3MqIGBoaWRfY3R4LSZndDtoaWRgIHRvIGEgaGVscGVyIGZ1bmN0aW9uLCBpdCBjb3VsZCB0cmlnZ2VyIGJ1Z3MgKndpdGhpbiogdGhhdCBoZWxwZXIuIEJ1dCB0aGUgaGVscGVyIGlzIGFscmVhZHkgZnV6emVkLiBTbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKVGhlIHByb21wdCBzdGF0ZXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4mIzM0OwoKVGhpcyBpcywgdGVjaG5pY2FsbHksIGEgY2hhbmdlIHRvIEJURiBkYXRhIGFuZCBpdCBhbHRlcnMgdGhlIHZlcmlmaWVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBUaGUgdmVyaWZpZXIgd2lsbCBub3cgcmV0dXJuIHRydWUgZm9yIGB0eXBlX2lzX3RydXN0ZWRgLiAgQnV0Li4ubm8gbmV3IGZ1bmN0aW9ucyBvciBjb2RlLiBMZXQgbWUgY2hlY2sgYGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTMxODA9c3RydWN0IGJwZl9jb3JlX2N0eCB7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMTg0LVxuaW5jbHVkZS9saW51eC9icGYuaDozMTg1OmJvb2wgYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE4Ni1cdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi9idGYuYz05Njc0PWludCBicGZfY29yZV9hcHBseShzdHJ1Y3QgYnBmX2NvcmVfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBicGZfY29yZV9yZWxvICpyZWxvLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtOTc1Mi1cbmtlcm5lbC9icGYvYnRmLmM6OTc1Mzpib29sIGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG5rZXJuZWwvYnBmL2J0Zi5jLTk3NTQtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njg2PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU2OTQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5NTpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXCYjMzQ7X19zYWZlX3JjdVwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY5Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2OTg9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Vfb3JfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzA1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MDY6XHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXHUwMDI2ZW52LVx1MDAzZWxvZywgcmVnLCBmaWVsZF9uYW1lLCBidGZfaWQsIFwmIzM0O19fc2FmZV9yY3Vfb3JfbnVsbFwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcwNy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXCYjMzQ7X19zYWZlX3RydXN0ZWRcJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NzIxPXN0YXRpYyBib29sIHR5cGVfaXNfdHJ1c3RlZF9vcl9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MjgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyOTpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzMwLVx0XHRcdFx0XHQgIFwmIzM0O19fc2FmZV90cnVzdGVkX29yX251bGxcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDY5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBib2lscyBkb3duIHRvIGFkZGluZyBhIEJURiB0eXBlLCBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgLCB3aGljaCBsZXRzIEJQRiBwcm9ncmFtcyB0cnVzdCBgaGlkX2N0eC0mZ3Q7aGlkYCBhcyBhIHZhbGlkIHBvaW50ZXIuIE5vIG5ldyBrZXJuZWwsIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYmVpbmcgaW50cm9kdWNlZCBoZXJlIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzaWduLiBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AgYW5kIHRoZSBCVEYgdHlwZSBlbWlzc2lvbiBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYC4KCk15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBsYWNrIG9mIG5ldyBleGVjdXRhYmxlIGtlcm5lbCBsb2dpYywgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhpcyBCVEYgY2hhbmdlICppbmRpcmVjdGx5KiBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGNyYXNoIHBhdGggdmlhIHRoZSB2ZXJpZmllci4gQ291bGQgYSBtYWxpY2lvdXMgQlBGIHByb2dyYW0gbGV2ZXJhZ2UgdGhpcyBuZXcgdHlwZSB0byBkbyBzb21ldGhpbmcgYmFkIGlmIGBoaWRfY3R4LSZndDtoaWRgIGlzbiYjMzk7dCBhY3R1YWxseSBzYWZlIGluIGEgZ2l2ZW4gY29udGV4dD8gVGhhdCYjMzk7cyBhIGxlZ2l0aW1hdGUgY29uY2Vybi4KClRoZSBnb29kIG5ld3MgaXMgc3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBCUEYgcHJvZ3JhbXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBwaWNrIHVwIHRoaXMgbmV3IEJURiB0eXBlIGFuZCBsaWtlbHkgdHJ5IHRvIGV4cGxvaXQgaXQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0byBmb2N1cyBmdXp6aW5nIG9uLCBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGlzIHN0cnVjdHVyYWwsIG5vdCBmdW5jdGlvbmFsLiBJJiMzOTttIG1vZGlmeWluZyBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYCwgc3BlY2lmaWNhbGx5IGJ5IGFkZGluZyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCBhIG1hY3JvLiBJdCYjMzk7cyBhIGRyaXZlciBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBub3QgYWRkaW5nIGFueSBuZXcgZXhlY3V0YWJsZSBjb2RlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2g6IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBgQlRGX1RZUEVfRU1JVGAgKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgYW55IGtpbmQgb2YgZXhlY3V0YWJsZSBjb2RlLiBJZiBpdCBkb2VzbiYjMzk7dCwgSSB0aGluayBJJiMzOTttIGNvbWZvcnRhYmxlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gR2l2ZW4gdGhlIGV4aXN0aW5nIEJQRiBmdXp6aW5nIGNhcGFiaWxpdGllcyBvZiBzeXprYWxsZXIsIGl0IHNlZW1zIHVubGlrZWx5IHRoaXMgQlRGIGNoYW5nZSBhbG9uZSB3YXJyYW50cyBhZGRpdGlvbmFsIGZ1enppbmcgZWZmb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCVEZfVFlQRV9FTUlUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MTEwPWlzIGVtaXR0ZWQgaW4gdGhlIGBgdHlwZV9pc190cnVzdGVkKClgYCBmdW5jdGlvbiBhcyBmb2xsb3dzOlxuLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMTEzLVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDoxMTQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3Qgc29ja2V0KSk7XG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTExNS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjE5Mz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwOS1cdFx0fTtcdFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIyMTA6XHRcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzXyMjdHlwZSk7XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMTEtXHRcdF9fcmVnaXN0ZXJfYnBmX3N0cnVjdF9vcHMoc3Rfb3BzKTtcdFx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvYnRmLmgtMTMtXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE0OiNkZWZpbmUgQlRGX1RZUEVfRU1JVCh0eXBlKSAoKHZvaWQpKHR5cGUgKikwKVxuaW5jbHVkZS9saW51eC9idGYuaDoxNTojZGVmaW5lIEJURl9UWVBFX0VNSVRfRU5VTShlbnVtX3ZhbCkgKCh2b2lkKWVudW1fdmFsKVxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0xMTgzPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBicGZfdGltZXJfY2Ioc3RydWN0IGhydGltZXIgKmhydGltZXIpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTE5MS1cbmtlcm5lbC9icGYvaGVscGVycy5jOjExOTI6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGltZXIpO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMTE5My1cdGNhbGxiYWNrX2ZuID0gcmN1X2RlcmVmZXJlbmNlX2NoZWNrKHQtXHUwMDNlY2IuY2FsbGJhY2tfZm4sIHJjdV9yZWFkX2xvY2tfYmhfaGVsZCgpKTtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0xMjE1PXN0YXRpYyB2b2lkIGJwZl93cV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMjI0LVxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTIyNTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl93cSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMjI2LVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTE4NjE9QlBGX0NBTExfNChicGZfZHlucHRyX2Zyb21fbWVtLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSwgdTY0LCBmbGFncywgc3RydWN0IGJwZl9keW5wdHJfa2VybiAqLCBwdHIpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTg2NC1cbmtlcm5lbC9icGYvaGVscGVycy5jOjE4NjU6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfZHlucHRyKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTE4NjYtXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDU5Nj1zdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYwMy1cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2MDQ6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGFza193b3JrKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MDUtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2ODY9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Uoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY4OS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MDpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IHRhc2tfc3RydWN0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MTpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cCkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTI6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVKHN0cnVjdCBjc3Nfc2V0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MzpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcwMS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMjpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3QgbW1fc3RydWN0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMzpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3Qgc2tfYnVmZikpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MDQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoc3RydWN0IHJlcXVlc3Rfc29jaykpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDUtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTIte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTM6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfX3Rhc2spKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE1Olx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1RSVVNURUQoc3RydWN0IGxpbnV4X2JpbnBybSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTY6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgZmlsZSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTctXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcyNC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNTpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEX09SX05VTEwoc3RydWN0IHNvY2tldCkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MjY6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBkZW50cnkpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzI3Olx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1RSVVNURURfT1JfTlVMTChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NjEyPXN0YXRpYyBpbnQgcHJvY2Vzc19pdGVyX25leHRfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTc2MTgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzYxOTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9pdGVyKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjIwLVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTc3MT1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3Nzk6XHRCVEZfVFlQRV9FTUlUKGVudW0gYnBmX2ZlYXR1cmVzKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz03NDQ5PXUzMiBicGZfdGNwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzKGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNzQ3OC1cbm5ldC9jb3JlL2ZpbHRlci5jOjc0Nzk6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGNwX3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtNzQ4MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz03NjQzPXUzMiBicGZfeGRwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzKGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNzY1OC1cbm5ldC9jb3JlL2ZpbHRlci5jOjc2NTk6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfeGRwX3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtNzY2MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz04NjAwPXhkcF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTg2NjYtXHQgKi9cbm5ldC9jb3JlL2ZpbHRlci5jOjg2Njc6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBuZl9jb25uX19faW5pdCk7XG5uZXQvY29yZS9maWx0ZXIuYy04NjY4LSNlbmRpZlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMDM5PUJQRl9DQUxMXzEoYnBmX3NrY190b190Y3A2X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDQzLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA0NDpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHRjcDZfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjA0NS1cdGlmIChzayBcdTAwMjZcdTAwMjYgc2tfZnVsbHNvY2soc2spIFx1MDAyNlx1MDAyNiBzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMjA3Nj1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDgwLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MjpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHRjcF90aW1ld2FpdF9zb2NrKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDgzLVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTI4PUJQRl9DQUxMXzEoYnBmX3NrY190b191ZHA2X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTMyLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjEzMzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHVkcDZfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjEzNC1cdGlmIChzayBcdTAwMjZcdTAwMjYgc2tfZnVsbHNvY2soc2spIFx1MDAyNlx1MDAyNiBzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1VEUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMjE0OT1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdW5peF9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy0xMjE1My1cdCAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTIxNTQ6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB1bml4X3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtMTIxNTUtXHRpZiAoc2sgXHUwMDI2XHUwMDI2IHNrX2lzX3VuaXgoc2spKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTY5PUJQRl9DQUxMXzEoYnBmX3NrY190b19tcHRjcF9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTcwLXtcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTcxOlx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgbXB0Y3Bfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjE3Mi1cdHJldHVybiAodW5zaWduZWQgbG9uZylicGZfbXB0Y3Bfc29ja19mcm9tX3N1YmZsb3coc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jPTI5NjA9dm9pZCB0Y3Bfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgaW50IHN0YXRlKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTI5OTQtXHQgKi9cbm5ldC9pcHY0L3RjcC5jOjI5OTU6XHRCVEZfVFlQRV9FTUlUX0VOVU0oQlBGX1RDUF9FU1RBQkxJU0hFRCk7XG5uZXQvaXB2NC90Y3AuYy0yOTk2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MzU3PWJwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMShzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgX191c2VyICphcmcpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzU4Olx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzozNTk6XHRCVEZfVFlQRV9FTUlUKGZ1bmNfcHJvdG9fdHlwZWRlZl9uZXN0ZWQxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzYwOlx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWZfbmVzdGVkMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTM2MS1cdHJldHVybiBhcmctXHUwMDNlYTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNzUKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UqKgoKT2theSwgc28gYEJURl9UWVBFX0VNSVRgIGlzIHNpbXBseSBhIGRpcmVjdGl2ZSwgYSBoaW50IHRvIHRoZSBjb21waWxlciB0byAqaW5jbHVkZSogdGhlIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyB0eXBlLiBJdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwcm9kdWNlIGFueSAqZXhlY3V0YWJsZSogY29kZSBvbiBpdHMgb3duLiBUaGlzIHBhdGNoIGp1c3QgaW50cm9kdWNlcyB0aGlzIEJURiB0eXBlIGRlZmluaXRpb24gYW5kIHNvbWUgY29ycmVzcG9uZGluZyBzZWxmLXRlc3RzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGhlcmUgdGhhdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIGtlcm5lbC4gWmVybyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gZnV6ei4KCkxldCYjMzk7cyBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBjcml0ZXJpYSB0byBiZSBzdXJlLiBUaGUgcHJvbXB0IHNheXMgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5z4oCmJiMzNDsgYW5kIHRoZW4gbGlzdHMgYSBidW5jaCBvZiBzY2VuYXJpb3MuIExvb2tpbmcgYXQgdGhvc2Ugc2NlbmFyaW9zIGFnYWluLi4uIHRoaXMgaXMgZGVhZCBzaW1wbGUuIFRoaXMgcGF0Y2ggaXMganVzdCBhZGRpbmcgYSBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgdGhhdCBgQlRGX1RZUEVfRU1JVGAgbWFjcm8gY2FsbCwgd2hpY2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBUaGUgcmVzdCBvZiB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvYC4gSXQgY2xlYXJseSBmYWxscyB1bmRlciB0aGF0IGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFllcCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIFdvcnRoRnV6emluZz1mYWxzZSBpcyBzcG90IG9uLiBHb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIEJURiB0eXBlIGRlZmluaXRpb24gYW5kIGEgQlRGX1RZUEVfRU1JVCBtYWNybyBjYWxsIGluIHRoZSBrZXJuZWwgY29kZSwgd2hpY2ggZG9lcyBub3QgZ2VuZXJhdGUgYW55IGV4ZWN1dGFibGUgY29kZSBvciBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU0OjQ4LjY1MTMwMDM0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTQ1NjUxODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgYSBCVEZfVFlQRV9FTUlUIG1hY3JvIGNhbGwgaW4gdGhlIGtlcm5lbCBjb2RlLCB3aGljaCBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NDguNjUxMzA5Njc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTM2NjAzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDA4OjU0OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY1xcbmluZGV4IDcwMmMyMmZhZTEzNmEuLjU2YzUzYWNhNDUxMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXFxuKysrIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXFxuQEAgLTYyLDYgKzYyLDEwIEBAIHN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XFxuIFxcdHUzMiBlbmQ7XFxuIH07XFxuIFxcbitzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCB7XFxuK1xcdHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7XFxuK307XFxuK1xcbiBzdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGludCBvZmYsIGludCBzaXplKVxcbkBAIC04Niw2ICs5MCw4IEBAIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0Y29uc3QgY2hhciAqY3VyID0gTlVMTDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkKTtcXG4rXFxuIFxcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXFx1MDAzZWJ0ZiwgcmVnLVxcdTAwM2VidGZfaWQpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSsrKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuaW5kZXggYjg1MTMzOTMwOGMyMS4uN2FiODYyOTZmZjIzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbkBAIC02NywxNCArNjcsMTcgQEAgc3RydWN0IHRlc3RfcHJvZ3JhbSB7XFxuIFxcdGludCBpbnNlcnRfaGVhZDtcXG4gfTtcXG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxcXFxuLVxcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXFxuK1xcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbisjZGVmaW5lIExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpIFxcXFxcXG4rXFx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIHRydWUsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxcXFxuLVxcdGxvYWRfcHJvZ3JhbXMoTlVMTCwgMCwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbi1zdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4tXFx0XFx0XFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXFxuLVxcdFxcdFxcdCAgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxcbi1cXHRcXHRcXHQgIEZJWFRVUkVfREFUQShoaWRfYnBmKSAqIHNlbGYsXFxuLVxcdFxcdFxcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcXG4rXFx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbitzdGF0aWMgaW50IGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbitcXHRcXHRcXHQgY29uc3Qgc2l6ZV90IHByb2dzX2NvdW50LFxcbitcXHRcXHRcXHQgYm9vbCBsb2FkX21heV9mYWlsLFxcbitcXHRcXHRcXHQgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxcbitcXHRcXHRcXHQgRklYVFVSRV9EQVRBKGhpZF9icGYpICogc2VsZixcXG4rXFx0XFx0XFx0IGNvbnN0IEZJWFRVUkVfVkFSSUFOVChoaWRfYnBmKSAqIHZhcmlhbnQpXFxuIHtcXG4gXFx0c3RydWN0IGJwZl9tYXAgKml0ZXJfbWFwO1xcbiBcXHRpbnQgZXJyID0gLUVJTlZBTDtcXG5AQCAtMTI4LDYgKzEzMSw5IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cXHUwMDNlc2tlbCk7XFxuK1xcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgbG9hZF9tYXlfZmFpbClcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuIFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiaGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXFxcIiwgZXJyKTtcXG4gXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xcbkBAIC0xNDcsNiArMTUzLDcgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcbiBcXHRzZWxmLVxcdTAwM2VoaWRyYXdfZmQgPSBvcGVuX2hpZHJhdyhcXHUwMDI2c2VsZi1cXHUwMDNlaGlkKTtcXG4gXFx0QVNTRVJUX0dFKHNlbGYtXFx1MDAzZWhpZHJhd19mZCwgMCkgVEhfTE9HKFxcXCJvcGVuX2hpZHJhd1xcXCIpO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gLypcXG5AQCAtOTA0LDExICs5MTEsMzkgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXFxuIFxcdFxcdHsgLm5hbWUgPSBcXFwiaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XFxcIiB9LFxcbiBcXHR9O1xcbiBcXG4tXFx0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XFxuK1xcdC8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqL1xcbitcXHRpZiAoTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdEFTU0VSVF9FUShzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcXG4gfVxcbiBcXG4rVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHtcXG4rXFx0XFx0eyAubmFtZSA9IFxcXCJoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzXFxcIiB9LFxcbitcXHR9O1xcbitcXHRjaGFyIGV4cGVjdGVkWzI1Nl0sIGJ1ZlsyNTZdID0ge307XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcXG4rXFxuK1xcdGVyciA9IGlvY3RsKHNlbGYtXFx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV05BTUUoc2l6ZW9mKGJ1ZikpLCBidWYpO1xcbitcXHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXFxcIkhJRElPQ0dSQVdOQU1FXFxcIik7XFxuK1xcdEFTU0VSVF9TVFJFUShcXFwibmFtZSBjb21pbmcgZnJvbSBicGZcXFwiLCBidWYpO1xcbitcXG4rXFx0c25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIFxcXCIlZCBwaHlzOmNvbWluZzpmcm9tOmJwZlxcXCIsIHNlbGYtXFx1MDAzZWhpZC5kZXZfaWQpO1xcbitcXG4rXFx0ZXJyID0gaW9jdGwoc2VsZi1cXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXUEhZUyhzaXplb2YoYnVmKSksIGJ1Zik7XFxuK1xcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcXFwiSElESU9DR1JBV1BIWVNcXFwiKTtcXG4rXFx0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xcbitcXG4rXFx0ZXJyID0gaW9jdGwoc2VsZi1cXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXVU5JUShzaXplb2YoYnVmKSksIGJ1Zik7XFxuK1xcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcXFwiSElESU9DR1JBV1VOSVFcXFwiKTtcXG4rXFx0QVNTRVJUX1NUUkVRKFxcXCJ1bmlxOmNvbWluZzpmcm9tOmJwZlxcXCIsIGJ1Zik7XFxuK1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXFxuaW5kZXggYjIxZmJiMTNjOTI2Zi4uYjVkOWFlYTFiZGExZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG5AQCAtMjU1LDYgKzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XFxuIFxcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcXG4gfTtcXG4gXFxuK1NFQyhcXFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcXFwiKVxcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbit7XFxuKyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXFxcXG4rXFx0X19idWlsdGluX21lbWNweSh0YXJnZXQsIHN0ciwgc2l6ZW9mKHN0cikpXFxuK1xcbitcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZW5hbWUsIFxcXCJuYW1lIGNvbWluZyBmcm9tIGJwZlxcXCIpO1xcbitcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZXVuaXEsIFxcXCJ1bmlxOmNvbWluZzpmcm9tOmJwZlxcXCIpO1xcbitcXHQvKiBoaWRfYnBmIHJlbGllcyBvbiBhIHBoeXMgYmVpbmcgYSByYW5kICUgMTAyNCAqL1xcbitcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIDQ7IGkrKykge1xcbitcXHRcXHRpZiAoIWhpZF9jdHgtXFx1MDAzZWhpZC1cXHUwMDNlcGh5c1tpXSkge1xcbitcXHRcXHRcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZXBoeXMgKyBpLCBcXFwiIHBoeXM6Y29taW5nOmZyb206YnBmXFxcIik7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuKyN1bmRlZiBISURfQlBGX0NPTkNBVFxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XFxuK1xcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMsXFxuK307XFxuK1xcbiBTRUMoXFxcIj9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcXFwiKVxcbiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxcbmluZGV4IGNkY2E5MTJmM2FmZDguLjA1Njk4NzkzNzYyYWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXFxuQEAgLTYxLDYgKzYxLDkgQEAgZW51bSBoaWRfcmVwb3J0X3R5cGUge1xcbiBcXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xcbiBcXHR1bnNpZ25lZCBpbnQgaWQ7XFxuK1xcdGNoYXIgbmFtZVsxMjhdO1xcbitcXHRjaGFyIHBoeXNbNjRdO1xcbitcXHRjaGFyIHVuaXFbNjRdO1xcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xcbiBcXG4gc3RydWN0IGJwZl93cSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU0OjQ5LjA0NTY1Njg0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzMTUxMjgyMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDg6NTQ6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbmluZGV4IDcwMmMyMmZhZTEzNmEuLjU2YzUzYWNhNDUxMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbisrKyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY1xuQEAgLTYyLDYgKzYyLDEwIEBAIHN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XG4gXHR1MzIgZW5kO1xuIH07XG4gXG4rc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuK1x0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbit9O1xuK1xuIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdFx0ICAgaW50IG9mZiwgaW50IHNpemUpXG5AQCAtODYsNiArOTAsOCBAQCBzdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRjb25zdCBjaGFyICpjdXIgPSBOVUxMO1xuIFx0aW50IGk7XG4gXG4rXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkKTtcbitcbiBcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXHUwMDNlYnRmLCByZWctXHUwMDNlYnRmX2lkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSsrKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IGI4NTEzMzkzMDhjMjEuLjdhYjg2Mjk2ZmYyMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5AQCAtNjcsMTQgKzY3LDE3IEBAIHN0cnVjdCB0ZXN0X3Byb2dyYW0ge1xuIFx0aW50IGluc2VydF9oZWFkO1xuIH07XG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxuLVx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbitcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxuKyNkZWZpbmUgTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykgXFxcbitcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxuLVx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4tc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4tXHRcdFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4tXHRcdFx0ICBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4tXHRcdFx0ICBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuLVx0XHRcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbitcdGxvYWRfcHJvZ3JhbXMoTlVMTCwgMCwgZmFsc2UsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbitzdGF0aWMgaW50IGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuK1x0XHRcdCBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4rXHRcdFx0IGJvb2wgbG9hZF9tYXlfZmFpbCxcbitcdFx0XHQgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxuK1x0XHRcdCBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuK1x0XHRcdCBjb25zdCBGSVhUVVJFX1ZBUklBTlQoaGlkX2JwZikgKiB2YXJpYW50KVxuIHtcbiBcdHN0cnVjdCBicGZfbWFwICppdGVyX21hcDtcbiBcdGludCBlcnIgPSAtRUlOVkFMO1xuQEAgLTEyOCw2ICsxMzEsOSBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdH1cbiBcbiBcdGVyciA9IGhpZF9fbG9hZChzZWxmLVx1MDAzZXNrZWwpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgbG9hZF9tYXlfZmFpbClcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHByb2dzX2NvdW50OyBpKyspIHtcbkBAIC0xNDcsNiArMTUzLDcgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXG4gXHRzZWxmLVx1MDAzZWhpZHJhd19mZCA9IG9wZW5faGlkcmF3KFx1MDAyNnNlbGYtXHUwMDNlaGlkKTtcbiBcdEFTU0VSVF9HRShzZWxmLVx1MDAzZWhpZHJhd19mZCwgMCkgVEhfTE9HKFwib3Blbl9oaWRyYXdcIik7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLypcbkBAIC05MDQsMTEgKzkxMSwzOSBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbiBcdFx0eyAubmFtZSA9IFwiaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCIgfSxcbiBcdH07XG4gXG4tXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbitcdC8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqL1xuK1x0aWYgKExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4gfVxuIFxuK1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXNcIiB9LFxuK1x0fTtcbitcdGNoYXIgZXhwZWN0ZWRbMjU2XSwgYnVmWzI1Nl0gPSB7fTtcbitcdGludCBlcnI7XG4rXG4rXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbitcbitcdGVyciA9IGlvY3RsKHNlbGYtXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXTkFNRShzaXplb2YoYnVmKSksIGJ1Zik7XG4rXHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXCJISURJT0NHUkFXTkFNRVwiKTtcbitcdEFTU0VSVF9TVFJFUShcIm5hbWUgY29taW5nIGZyb20gYnBmXCIsIGJ1Zik7XG4rXG4rXHRzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgXCIlZCBwaHlzOmNvbWluZzpmcm9tOmJwZlwiLCBzZWxmLVx1MDAzZWhpZC5kZXZfaWQpO1xuK1xuK1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdQSFlTKHNpemVvZihidWYpKSwgYnVmKTtcbitcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcIkhJRElPQ0dSQVdQSFlTXCIpO1xuK1x0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xuK1xuK1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdVTklRKHNpemVvZihidWYpKSwgYnVmKTtcbitcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcIkhJRElPQ0dSQVdVTklRXCIpO1xuK1x0QVNTRVJUX1NUUkVRKFwidW5pcTpjb21pbmc6ZnJvbTpicGZcIiwgYnVmKTtcbitcbit9XG4rXG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXG4gXHRcdFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuaW5kZXggYjIxZmJiMTNjOTI2Zi4uYjVkOWFlYTFiZGExZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMjU1LDYgKzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4gXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4gfTtcbiBcbitTRUMoXCI/c3RydWN0X29wcy5zL2hpZF9yZGVzY19maXh1cFwiKVxuK2ludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuKyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXG4rXHRfX2J1aWx0aW5fbWVtY3B5KHRhcmdldCwgc3RyLCBzaXplb2Yoc3RyKSlcbitcbitcdEhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZW5hbWUsIFwibmFtZSBjb21pbmcgZnJvbSBicGZcIik7XG4rXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2V1bmlxLCBcInVuaXE6Y29taW5nOmZyb206YnBmXCIpO1xuK1x0LyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi9cbitcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyA0OyBpKyspIHtcbitcdFx0aWYgKCFoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2VwaHlzW2ldKSB7XG4rXHRcdFx0SElEX0JQRl9NRU1DUFkoaGlkX2N0eC1cdTAwM2VoaWQtXHUwMDNlcGh5cyArIGksIFwiIHBoeXM6Y29taW5nOmZyb206YnBmXCIpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHR9XG4rXG4rI3VuZGVmIEhJRF9CUEZfQ09OQ0FUXG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwiLnN0cnVjdF9vcHMubGlua1wiKVxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLFxuK307XG4rXG4gU0VDKFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwiKVxuIGludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQxLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxuaW5kZXggY2RjYTkxMmYzYWZkOC4uMDU2OTg3OTM3NjJhYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG5AQCAtNjEsNiArNjEsOSBAQCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB7XG4gXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xuIFx0dW5zaWduZWQgaW50IGlkO1xuK1x0Y2hhciBuYW1lWzEyOF07XG4rXHRjaGFyIHBoeXNbNjRdO1xuK1x0Y2hhciB1bmlxWzY0XTtcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xuIFxuIHN0cnVjdCBicGZfd3Ege1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NDkuMDQ1NjU4NTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTU2MDg3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBTZXJpZXMgZm9yIEZ1bmN0aW9uYWwgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaW50cm9kdWNlcyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCB3b3VsZCB3YXJyYW50IGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIGEgZmV3IGZpbGVzOiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYCwgYW5kIGEgZmV3IHNlbGYtdGVzdCBmaWxlcyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AuXG5cbk15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNgLiBUaGUgZGlmZiBzaG93cyBhIG5ldyBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgIGFuZCB0aGUgdXNlIG9mIGBCVEZfVFlQRV9FTUlUYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIElzIHRoaXMgYWN0dWFsbHkgZG9pbmcgc29tZXRoaW5nLCBvciBpcyBpdCBqdXN0IG1ldGFkYXRhPyBJdCBsb29rcyBsaWtlIGl0IGlzIGVtaXR0aW5nIEJURiBpbmZvcm1hdGlvbiBmb3IgdGhpcyBuZXcgc3RydWN0dXJlLiBJIHN1c3BlY3QgdGhpcyBpcyB0byBhbGxvdyBCUEYgcHJvZ3JhbXMgdG8gc2FmZWx5IGFjY2VzcyBgaGlkX2N0eC1cdTAwM2VoaWRgLiBCdXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzLlxuXG5Pa2F5LCByZXJlYWRpbmcgdGhlIGRpZmYsIHRoZSBvbmx5IHRoaW5nIGhhcHBlbmluZyBpbiB0aGlzIGZpbGUgaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBuZXcgc3RydWN0IGFuZCB0aGUgYEJURl9UWVBFX0VNSVRgLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyB0aGlzIGNoYW5nZSBhbnkgZXhlY3V0aW9uIGZsb3csIG9yIGlzIGl0IGp1c3QgdHlwZSBpbmZvcm1hdGlvbj8gYEJURl9UWVBFX0VNSVRgIGlzIGEgbWFjcm8gdGhhdCB1c3VhbGx5IHRlbGxzIHRoZSBjb21waWxlciB0byBlbWl0IEJURiBmb3IgdGhlIHR5cGUuIEl0IGlzIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBhZmZlY3QgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZHJpdmVyIGl0c2VsZi5cblxuU28sIGF0IHRoaXMgcG9pbnQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYEJURl9UWVBFX0VNSVRgIGFjdHVhbGx5IGRvZXMuIFRoZW4sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhcyB0byB3aGV0aGVyIHRoaXMgY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBvciBpcyBhIHNhZmUgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTcxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NTkuMjYxMjcwNzc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODk1MjkyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBCVEZfVFlQRV9FTUlUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnRmLmgtMTMtXFxuaW5jbHVkZS9saW51eC9idGYuaDoxNDojZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSkgKCh2b2lkKSh0eXBlICopMClcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE1OiNkZWZpbmUgQlRGX1RZUEVfRU1JVF9FTlVNKGVudW1fdmFsKSAoKHZvaWQpZW51bV92YWwpXFxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MDEuMDUwODA1NzIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU2NDc0ODQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJURiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGAjZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSlgIG1hY3JvLi4uIGl0J3MgYSBjbGV2ZXIgdHJpY2suIE5vIGFjdHVhbCBjb2RlIGlzIGJlaW5nIGdlbmVyYXRlZCBoZXJlLCBpdCdzIGp1c3QgYSB3YXkgdG8gZm9yY2UgdGhlIEJURiBnZW5lcmF0aW9uIHRvIGluY2x1ZGUgYSB0eXBlIGRlZmluaXRpb24uIEVmZmVjdGl2ZWx5LCBpdCdzIGNhc3RpbmcgYSB6ZXJvIHRvIGEgcG9pbnRlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHRoZW4gZGlzY2FyZGluZyBpdCB3aXRoIGEgdm9pZCBjYXN0LiBUaGlzIGlzIHB1cmVseSBmb3IgQlRGIG1ldGFkYXRhLiBUaGUgb3RoZXIgZmlsZSBtb2RpZmljYXRpb25zIGFyZSBsb2NhbGl6ZWQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLCBzbyBubyBkaXJlY3QgZnVuY3Rpb25hbCBpbXBhY3Qgb24ga2VybmVsIGV4ZWN1dGlvbi4gVGhhdCdzIGEgcmVsaWVmLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBkb2VzIGludHJvZHVjaW5nIGEgbmV3IHR5cGUgaW50byBCVEYgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG9uIHRoZSB2ZXJpZmllcj8gVGhlIHZlcmlmaWVyIG1pZ2h0IHN0YXJ0IGxvb2tpbmcgdXAgYHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCBpbiB0aGUgQlRGIGRhdGEuIExldCdzIG5vdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmUgbm8gdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IHN0cnVjdHVyZSwgYGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgLCBpcyByZWZlcmVuY2VkIGFueXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBrZXJuZWwncyBjb2RlYmFzZS4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgdG8gY29uZmlybSB0aGlzIGlzIGEgc2FmZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MDcuNjE1NTU2MjMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjE0NTcxMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy02NC1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy02Ni1cXHRzdHJ1Y3QgaGlkX2RldmljZSAqaGlkO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jPTY5PXN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6OTM6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCk7XFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTowOS4zMzcwMTgwNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk3MTIzMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQW5vbWFseSoqXG5cbk9rYXksIHNvIEkndmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW4gdGhpcyBrZXJuZWwgY29kZSB0aGF0IGZlZWxzLi4uIGlzb2xhdGVkLiBUaGlzIHNuaXBwZXQgaXNuJ3QgcmVmZXJlbmNlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbiB0aGUga2VybmVsJ3MgY29kZWJhc2UsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdoeSBpcyB0aGlzIHNwZWNpZmljIHBpZWNlIG9mIGNvZGUgaGFuZ2luZyBvdXQgaGVyZSwgYWxvbmU/IEl0J3MgbWFraW5nIG1lIHdvbmRlciBhYm91dCBpdHMgcHVycG9zZSwgYW5kIHdoZXRoZXIgaXQncyBzb21laG93IHJlZHVuZGFudCBvciwgd29yc2UsIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuXG5cblRoZW4sIGEgdGhvdWdodCBzcGFya3MgLSB3YWl0IGEgc2Vjb25kLCBkb2Vzbid0IHRoZSB2ZXJpZmllciwgaW4gaXRzIGNoZWNrcywgaGF2ZSBzb21lIGtpbmQgb2YgbWVjaGFuaXNtIGZvciBpZGVudGlmeWluZyBzcGVjaWZpYyB0eXBlcyB0aGF0IGVuZCBpbiBzb21ldGhpbmcgbGlrZSBgX19zYWZlX3RydXN0ZWRgPyBJIHNlZW0gdG8gcmVjYWxsIGEgZmVhdHVyZSBkZXNpZ25lZCB0byBoYW5kbGUgdHJ1c3RlZCBjb2RlIG9yIGRhdGEuIFBlcmhhcHMgdGhpcyBjb2RlIGlzIHJlbGF0ZWQgdG8gdGhhdC5cblxuUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBodW5jaC4gTGV0J3MgZGl2ZSBpbnRvIHRoZSB2ZXJpZmllciBjb2RlIGFuZCBzZWUgaWYgdGhlcmUncyBhbnkgbG9naWMgc3BlY2lmaWNhbGx5IGdlYXJlZCB0b3dhcmRzIHRoZXNlIGtpbmRzIG9mIHR5cGUgbmFtaW5nIGNvbnZlbnRpb25zLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlYXNvbiB0aGlzIHNlZW1pbmdseSBvcnBoYW5lZCBjb2RlIGV4aXN0cyBhbmQgd2h5IGl0J3Mgc3RydWN0dXJlZCB0aGUgd2F5IGl0IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjE3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MTMuMTM0MTQzNDQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjYxNjQwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zYWZlX3RydXN0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jPTU4PXN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjY1OnN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkIHtcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjYtXFx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYz02OT1zdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtOTItXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjkzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05NC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NTczPWludCBicGZfbWFwX2RpcmVjdF9yZWFkKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBvZmYsIGludCBzaXplLCB1NjQgKnZhbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NjA1LSNkZWZpbmUgQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChfX3R5cGUpICBfX1BBU1RFKF9fdHlwZSwgX19zYWZlX3JjdV9vcl9udWxsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA2OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTYwNzojZGVmaW5lIEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZF9vcl9udWxsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NjA4LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcXHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXFxcIl9fc2FmZV90cnVzdGVkXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI5LVxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzMwOlxcdFxcdFxcdFxcdFxcdCAgXFxcIl9fc2FmZV90cnVzdGVkX29yX251bGxcXFwiKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTczMS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjE0LjY2MDMxMzc3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTI1OTkzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgQlRGLURyaXZlbiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIEl0J3MgdGhhdCBgX19zYWZlX3RydXN0ZWRgIHN1ZmZpeCB0cmljayEgIFJpZ2h0LCB0aGUgdmVyaWZpZXIgdXNlcyB0aGF0IHRvIGRldGVybWluZSBpZiBhIGZpZWxkIGlzIGNvbnNpZGVyZWQgdHJ1c3RlZC4gU28sIGFkZGluZyBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQgeyBzdHJ1Y3QgaGlkX2RldmljZSAqaGlkOyB9O2AgYW5kIGVtaXR0aW5nIGl0IGlzIHRoZSBjcnV4IG9mIGl0LiAgVGhpcyBtZWFucyB0aGUgdmVyaWZpZXIgKm5vdyogY29uc2lkZXJzIGBoaWRfY3R4LVx1MDAzZWhpZGAgYSB0cnVzdGVkIHBvaW50ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkZ1bmN0aW9uYWxseSwgaXMgdGhpcyBhIGNoYW5nZT9cIlxuXG5ZZXMsIGFic29sdXRlbHkuIEl0ICpjaGFuZ2VzKiB0aGUgdmVyaWZpZXIncyBiZWhhdmlvci4gIEJQRiBwcm9ncmFtcyBjYW4gbm93IGdldCBsb2FkZWQgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYmxvY2tlZC4gIEJ1dCBoZXJlJ3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIHJlYWxseSBraWNrcyBpbjogZG9lcyBpdCBjaGFuZ2Uga2VybmVsICpleGVjdXRpb24qIGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZz8gVGhlIHZlcmlmaWVyIGl0c2VsZiBpc27igJl0IHRvdWNoZWQgKGNvZGUtd2lzZSksIG9ubHkgdGhlIEJURiBkYXRhIGZvciBgaGlkX2JwZl9jdHhgIGNoYW5nZXMuXG5cbldhaXQgYSBzZWMsIHRoZSB2ZXJpZmllciAqaXMqIGZ1enplZC4gIEJ5IGFkZGluZyB0aGlzIEJURiB0eXBlLCB3ZSdyZSBleHBvc2luZyBhIG5ldyB0cnVzdGVkIHBvaW50ZXIgdG8gQlBGIHByb2dyYW1zLiAgQ3J1Y2lhbGx5LCB0aGVyZSdzICpubyogbmV3IEMgY29kZS4gIEl0J3MganVzdCB0aGF0IGBCVEZfVFlQRV9FTUlUYCBsaW5lIOKAkyBhIHR5cGUgZGVmaW5pdGlvbi4gVGhlIGtlcm5lbCdzICpleGVjdXRpb24gZmxvdyogZG9lc24ndCBmdW5kYW1lbnRhbGx5IGNoYW5nZSwgb3RoZXIgdGhhbiB0aGUgdmVyaWZpZXIgYWNjZXB0aW5nIHRoZSBCUEYgcHJvZ3JhbXMuICBUaGVyZSdzIG5vIG5ldyBrZXJuZWwgbG9naWMgdG8gdGFyZ2V0IHdpdGggZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpc21pc3MgaXQuIEJ1dCwgd2FpdC4gSWYgYSBCUEYgcHJvZ3JhbSBjYW4gbm93ICpwYXNzKiBgaGlkX2N0eC1cdTAwM2VoaWRgIHRvIGEgaGVscGVyIGZ1bmN0aW9uLCBpdCBjb3VsZCB0cmlnZ2VyIGJ1Z3MgKndpdGhpbiogdGhhdCBoZWxwZXIuIEJ1dCB0aGUgaGVscGVyIGlzIGFscmVhZHkgZnV6emVkLiBTbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1xuXG5UaGUgcHJvbXB0IHN0YXRlczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyAuLi4gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiXG5cblRoaXMgaXMsIHRlY2huaWNhbGx5LCBhIGNoYW5nZSB0byBCVEYgZGF0YSBhbmQgaXQgYWx0ZXJzIHRoZSB2ZXJpZmllcidzIGV4ZWN1dGlvbiBmbG93LiBUaGUgdmVyaWZpZXIgd2lsbCBub3cgcmV0dXJuIHRydWUgZm9yIGB0eXBlX2lzX3RydXN0ZWRgLiAgQnV0Li4ubm8gbmV3IGZ1bmN0aW9ucyBvciBjb2RlLiBMZXQgbWUgY2hlY2sgYGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjEyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjI1LjU4NjMxMDYxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNzgzMTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTMxODA9c3RydWN0IGJwZl9jb3JlX2N0eCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxODQtXFxuaW5jbHVkZS9saW51eC9icGYuaDozMTg1OmJvb2wgYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxODYtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTY3ND1pbnQgYnBmX2NvcmVfYXBwbHkoc3RydWN0IGJwZl9jb3JlX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgYnBmX2NvcmVfcmVsbyAqcmVsbyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTc1Mi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk3NTM6Ym9vbCBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvYnRmLmMtOTc1NC1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2ODY9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Uoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Njk1OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcXFwiX19zYWZlX3JjdVxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzA1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzA2OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcXFwiX19zYWZlX3JjdV9vcl9udWxsXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDctfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcXHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXFxcIl9fc2FmZV90cnVzdGVkXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzI5OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzMwLVxcdFxcdFxcdFxcdFxcdCAgXFxcIl9fc2FmZV90cnVzdGVkX29yX251bGxcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MjcuMjI0MTUxODE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDY4OTAzMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYm9pbHMgZG93biB0byBhZGRpbmcgYSBCVEYgdHlwZSwgYHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCwgd2hpY2ggbGV0cyBCUEYgcHJvZ3JhbXMgdHJ1c3QgYGhpZF9jdHgtXHUwMDNlaGlkYCBhcyBhIHZhbGlkIHBvaW50ZXIuIE5vIG5ldyBrZXJuZWwsIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYmVpbmcgaW50cm9kdWNlZCBoZXJlIOKAkyB0aGF0J3MgYSBnb29kIHNpZ24uIFRoZSBhY3R1YWwgY29kZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvYCBhbmQgdGhlIEJURiB0eXBlIGVtaXNzaW9uIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNgLlxuXG5NeSBpbml0aWFsIGluc3RpbmN0LCBnaXZlbiB0aGUgbGFjayBvZiBuZXcgZXhlY3V0YWJsZSBrZXJuZWwgbG9naWMsIGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGlmIHRoaXMgQlRGIGNoYW5nZSAqaW5kaXJlY3RseSogaW50cm9kdWNlcyBhIHBvdGVudGlhbCBjcmFzaCBwYXRoIHZpYSB0aGUgdmVyaWZpZXIuIENvdWxkIGEgbWFsaWNpb3VzIEJQRiBwcm9ncmFtIGxldmVyYWdlIHRoaXMgbmV3IHR5cGUgdG8gZG8gc29tZXRoaW5nIGJhZCBpZiBgaGlkX2N0eC1cdTAwM2VoaWRgIGlzbid0IGFjdHVhbGx5IHNhZmUgaW4gYSBnaXZlbiBjb250ZXh0PyBUaGF0J3MgYSBsZWdpdGltYXRlIGNvbmNlcm4uXG5cblRoZSBnb29kIG5ld3MgaXMgc3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBCUEYgcHJvZ3JhbXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBwaWNrIHVwIHRoaXMgbmV3IEJURiB0eXBlIGFuZCBsaWtlbHkgdHJ5IHRvIGV4cGxvaXQgaXQuIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgb24sIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgaXMgc3RydWN0dXJhbCwgbm90IGZ1bmN0aW9uYWwuIEknbSBtb2RpZnlpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBhbmQgYSBtYWNyby4gSXQncyBhIGRyaXZlciBtb2RpZmljYXRpb24sIGJ1dCBpdCdzIG5vdCBhZGRpbmcgYW55IG5ldyBleGVjdXRhYmxlIGNvZGUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoOiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYEJURl9UWVBFX0VNSVRgICpkb2Vzbid0KiBpbnRyb2R1Y2UgYW55IGtpbmQgb2YgZXhlY3V0YWJsZSBjb2RlLiBJZiBpdCBkb2Vzbid0LCBJIHRoaW5rIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEdpdmVuIHRoZSBleGlzdGluZyBCUEYgZnV6emluZyBjYXBhYmlsaXRpZXMgb2Ygc3l6a2FsbGVyLCBpdCBzZWVtcyB1bmxpa2VseSB0aGlzIEJURiBjaGFuZ2UgYWxvbmUgd2FycmFudHMgYWRkaXRpb25hbCBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTozMy43NzEwNDQ1NDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTMzMTI1NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlRGX1RZUEVfRU1JVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTExMD1pcyBlbWl0dGVkIGluIHRoZSBgYHR5cGVfaXNfdHJ1c3RlZCgpYGAgZnVuY3Rpb24gYXMgZm9sbG93czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMTEzLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6MTE0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBzb2NrZXQpKTtcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTExNS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYz02OT1zdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtOTItXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjkzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05NC1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjE5Mz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yMjA5LVxcdFxcdH07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjIxMDpcXHRcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfc3RydWN0X29wc18jI3R5cGUpO1xcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMTEtXFx0XFx0X19yZWdpc3Rlcl9icGZfc3RydWN0X29wcyhzdF9vcHMpO1xcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnRmLmgtMTMtXFxuaW5jbHVkZS9saW51eC9idGYuaDoxNDojZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSkgKCh2b2lkKSh0eXBlICopMClcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE1OiNkZWZpbmUgQlRGX1RZUEVfRU1JVF9FTlVNKGVudW1fdmFsKSAoKHZvaWQpZW51bV92YWwpXFxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTExODM9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGJwZl90aW1lcl9jYihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcilcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTExOTEtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTE5MjpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGltZXIpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTExOTMtXFx0Y2FsbGJhY2tfZm4gPSByY3VfZGVyZWZlcmVuY2VfY2hlY2sodC1cXHUwMDNlY2IuY2FsbGJhY2tfZm4sIHJjdV9yZWFkX2xvY2tfYmhfaGVsZCgpKTtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTEyMTU9c3RhdGljIHZvaWQgYnBmX3dxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTIyNC1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMjI1OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl93cSk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTIyNi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTE4NjE9QlBGX0NBTExfNChicGZfZHlucHRyX2Zyb21fbWVtLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSwgdTY0LCBmbGFncywgc3RydWN0IGJwZl9keW5wdHJfa2VybiAqLCBwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xODY0LVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjE4NjU6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgYnBmX2R5bnB0cik7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTg2Ni1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ1OTY9c3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYwMy1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjA0OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl90YXNrX3dvcmspO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MDUtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTY4Nj1zdGF0aWMgYm9vbCB0eXBlX2lzX3JjdShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU2ODkte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjkwOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IHRhc2tfc3RydWN0KSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTE6XFx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1JDVShzdHJ1Y3QgY2dyb3VwKSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTI6XFx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1JDVShzdHJ1Y3QgY3NzX3NldCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjkzOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY5NC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzAxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoc3RydWN0IG1tX3N0cnVjdCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzAzOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3Qgc2tfYnVmZikpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzA0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3QgcmVxdWVzdF9zb2NrKSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDUtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcwOT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzEyLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxMzpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBicGZfaXRlcl9fdGFzaykpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE1OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBsaW51eF9iaW5wcm0pKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxNjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgZmlsZSkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzE3LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI0LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNTpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBzb2NrZXQpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBkZW50cnkpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNzpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTc2MTI9c3RhdGljIGludCBwcm9jZXNzX2l0ZXJfbmV4dF9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjE4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3NjE5OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9pdGVyKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzYyMC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTc3MT1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3OC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3Nzk6XFx0QlRGX1RZUEVfRU1JVChlbnVtIGJwZl9mZWF0dXJlcyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzgwLVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NzQ0OT11MzIgYnBmX3RjcF9zb2NrX2NvbnZlcnRfY3R4X2FjY2VzcyhlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNzQ3OC1cXG5uZXQvY29yZS9maWx0ZXIuYzo3NDc5OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl90Y3Bfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtNzQ4MC1cXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTc2NDM9dTMyIGJwZl94ZHBfc29ja19jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NTgtXFxubmV0L2NvcmUvZmlsdGVyLmM6NzY1OTpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfeGRwX3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NjAtXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz04NjAwPXhkcF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtODY2Ni1cXHQgKi9cXG5uZXQvY29yZS9maWx0ZXIuYzo4NjY3OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IG5mX2Nvbm5fX19pbml0KTtcXG5uZXQvY29yZS9maWx0ZXIuYy04NjY4LSNlbmRpZlxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTIwMzk9QlBGX0NBTExfMShicGZfc2tjX3RvX3RjcDZfc29jaywgc3RydWN0IHNvY2sgKiwgc2spXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjA0My1cXHQgKi9cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA0NDpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB0Y3A2X3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDQ1LVxcdGlmIChzayBcXHUwMDI2XFx1MDAyNiBza19mdWxsc29jayhzaykgXFx1MDAyNlxcdTAwMjYgc2stXFx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjA3Nj1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwODAtXFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTIwODE6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrKTtcXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MjpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB0Y3BfdGltZXdhaXRfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwODMtXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjEyOD1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdWRwNl9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTMyLVxcdCAqL1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTMzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IHVkcDZfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxMzQtXFx0aWYgKHNrIFxcdTAwMjZcXHUwMDI2IHNrX2Z1bGxzb2NrKHNrKSBcXHUwMDI2XFx1MDAyNiBzay1cXHUwMDNlc2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTQ5PUJQRl9DQUxMXzEoYnBmX3NrY190b191bml4X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxNTMtXFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTIxNTQ6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgdW5peF9zb2NrKTtcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjE1NS1cXHRpZiAoc2sgXFx1MDAyNlxcdTAwMjYgc2tfaXNfdW5peChzaykpXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjE2OT1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fbXB0Y3Bfc29jaywgc3RydWN0IHNvY2sgKiwgc2spXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxNzAte1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTcxOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IG1wdGNwX3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTcyLVxcdHJldHVybiAodW5zaWduZWQgbG9uZylicGZfbXB0Y3Bfc29ja19mcm9tX3N1YmZsb3coc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9Mjk2MD12b2lkIHRjcF9zZXRfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCBpbnQgc3RhdGUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0yOTk0LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjI5OTU6XFx0QlRGX1RZUEVfRU1JVF9FTlVNKEJQRl9UQ1BfRVNUQUJMSVNIRUQpO1xcbm5ldC9pcHY0L3RjcC5jLTI5OTYtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTM1Nz1icGZfdGVzdG1vZF90ZXN0X2J0Zl90eXBlX3RhZ191c2VyXzEoc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xIF9fdXNlciAqYXJnKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzozNTg6XFx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWYpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzU5OlxcdEJURl9UWVBFX0VNSVQoZnVuY19wcm90b190eXBlZGVmX25lc3RlZDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzYwOlxcdEJURl9UWVBFX0VNSVQoZnVuY19wcm90b190eXBlZGVmX25lc3RlZDIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMzYxLVxcdHJldHVybiBhcmctXFx1MDAzZWE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjM1LjM2NDM2MTUwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODMyNTUxODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IEZhbHNlKipcblxuT2theSwgc28gYEJURl9UWVBFX0VNSVRgIGlzIHNpbXBseSBhIGRpcmVjdGl2ZSwgYSBoaW50IHRvIHRoZSBjb21waWxlciB0byAqaW5jbHVkZSogdGhlIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyB0eXBlLiBJdCBkb2Vzbid0IGFjdHVhbGx5IHByb2R1Y2UgYW55ICpleGVjdXRhYmxlKiBjb2RlIG9uIGl0cyBvd24uIFRoaXMgcGF0Y2gganVzdCBpbnRyb2R1Y2VzIHRoaXMgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgc29tZSBjb3JyZXNwb25kaW5nIHNlbGYtdGVzdHMuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBnb2luZyB0byBhZmZlY3QgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIGtlcm5lbC4gWmVybyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gZnV6ei5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgY3JpdGVyaWEgdG8gYmUgc3VyZS4gVGhlIHByb21wdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KAplwiIGFuZCB0aGVuIGxpc3RzIGEgYnVuY2ggb2Ygc2NlbmFyaW9zLiBMb29raW5nIGF0IHRob3NlIHNjZW5hcmlvcyBhZ2Fpbi4uLiB0aGlzIGlzIGRlYWQgc2ltcGxlLiBUaGlzIHBhdGNoIGlzIGp1c3QgYWRkaW5nIGEgc3RydWN0IGRlZmluaXRpb24gYW5kIHRoYXQgYEJURl9UWVBFX0VNSVRgIG1hY3JvIGNhbGwsIHdoaWNoIGhhcyBubyBmdW5jdGlvbmFsIGltcGFjdC4gVGhlIHJlc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AuIEl0IGNsZWFybHkgZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeSBvZiBjaGFuZ2VzIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFllcCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIFdvcnRoRnV6emluZz1mYWxzZSBpcyBzcG90IG9uLiBHb29kIHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE3NSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTo0Mi4xOTY5MTYzODRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTo0Mi4xOTY5NDA2NTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxqtkm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 08:53:42 +0000 UTC FinishedAt: 2026-08-25 08:55:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgYSBCVEZfVFlQRV9FTUlUIG1hY3JvIGNhbGwgaW4gdGhlIGtlcm5lbCBjb2RlLCB3aGljaCBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBUaGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHNlbGZ0ZXN0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDg6NTQ6NDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXG5pbmRleCA3MDJjMjJmYWUxMzZhLi41NmM1M2FjYTQ1MTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbkBAIC02Miw2ICYjNDM7NjIsMTAgQEAgc3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbiBcdHUzMiBlbmQ7XG4gfTtcbiBcbiYjNDM7c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuJiM0MztcdHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7XG4mIzQzO307XG4mIzQzO1xuIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdFx0ICAgaW50IG9mZiwgaW50IHNpemUpXG5AQCAtODYsNiAmIzQzOzkwLDggQEAgc3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0Y29uc3QgY2hhciAqY3VyID0gTlVMTDtcbiBcdGludCBpO1xuIFxuJiM0MztcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuJiM0MztcbiBcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXHUwMDNlYnRmLCByZWctXHUwMDNlYnRmX2lkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSYjNDM7JiM0MzspIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xuaW5kZXggYjg1MTMzOTMwOGMyMS4uN2FiODYyOTZmZjIzNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbkBAIC02NywxNCAmIzQzOzY3LDE3IEBAIHN0cnVjdCB0ZXN0X3Byb2dyYW0ge1xuIFx0aW50IGluc2VydF9oZWFkO1xuIH07XG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxuLVx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbiYjNDM7XHRsb2FkX3Byb2dyYW1zKHByb2dzLCBBUlJBWV9TSVpFKHByb2dzKSwgZmFsc2UsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbiYjNDM7I2RlZmluZSBMT0FEX1BST0dSQU1TX01BWV9GQUlMKHByb2dzKSBcXFxuJiM0MztcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxuLVx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4tc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4tXHRcdFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4tXHRcdFx0ICBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4tXHRcdFx0ICBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuLVx0XHRcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbiYjNDM7XHRsb2FkX3Byb2dyYW1zKE5VTEwsIDAsIGZhbHNlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4mIzQzO3N0YXRpYyBpbnQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4mIzQzO1x0XHRcdCBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4mIzQzO1x0XHRcdCBib29sIGxvYWRfbWF5X2ZhaWwsXG4mIzQzO1x0XHRcdCBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4mIzQzO1x0XHRcdCBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuJiM0MztcdFx0XHQgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbiB7XG4gXHRzdHJ1Y3QgYnBmX21hcCAqaXRlcl9tYXA7XG4gXHRpbnQgZXJyID0gLUVJTlZBTDtcbkBAIC0xMjgsNiAmIzQzOzEzMSw5IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFx0fVxuIFxuIFx0ZXJyID0gaGlkX19sb2FkKHNlbGYtXHUwMDNlc2tlbCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgbG9hZF9tYXlfZmFpbClcbiYjNDM7XHRcdHJldHVybiBlcnI7XG4mIzQzO1xuIFx0QVNTRVJUX09LKGVycikgVEhfTE9HKFwmIzM0O2hpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwmIzM0OywgZXJyKTtcbiBcbiBcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyBwcm9nc19jb3VudDsgaSYjNDM7JiM0MzspIHtcbkBAIC0xNDcsNiAmIzQzOzE1Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuIFxuIFx0c2VsZi1cdTAwM2VoaWRyYXdfZmQgPSBvcGVuX2hpZHJhdyhcdTAwMjZzZWxmLVx1MDAzZWhpZCk7XG4gXHRBU1NFUlRfR0Uoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIDApIFRIX0xPRyhcJiMzNDtvcGVuX2hpZHJhd1wmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIC8qXG5AQCAtOTA0LDExICYjNDM7OTExLDM5IEBAIFRFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93KVxuIFx0XHR7IC5uYW1lID0gXCYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCYjMzQ7IH0sXG4gXHR9O1xuIFxuLVx0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XG4mIzQzO1x0LyogbmV3ZXIgdmVyaWZpZXIgY2FuIGRldGVjdCB0aGUgb3ZlcmZsb3cgYXQgbG9hZCB0aW1lICovXG4mIzQzO1x0aWYgKExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpKVxuJiM0MztcdFx0cmV0dXJuO1xuIFxuIFx0QVNTRVJUX0VRKHNlbGYtXHUwMDNlc2tlbC1cdTAwM2Vic3MtXHUwMDNlZ2V0X2RhdGFfb3ZlcmZsb3dfY2hlY2ssIDEpO1xuIH1cbiBcbiYjNDM7VEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9nc1tdID0ge1xuJiM0MztcdFx0eyAubmFtZSA9IFwmIzM0O2hpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXNcJiMzNDsgfSxcbiYjNDM7XHR9O1xuJiM0MztcdGNoYXIgZXhwZWN0ZWRbMjU2XSwgYnVmWzI1Nl0gPSB7fTtcbiYjNDM7XHRpbnQgZXJyO1xuJiM0MztcbiYjNDM7XHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdOQU1FKHNpemVvZihidWYpKSwgYnVmKTtcbiYjNDM7XHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXCYjMzQ7SElESU9DR1JBV05BTUVcJiMzNDspO1xuJiM0MztcdEFTU0VSVF9TVFJFUShcJiMzNDtuYW1lIGNvbWluZyBmcm9tIGJwZlwmIzM0OywgYnVmKTtcbiYjNDM7XG4mIzQzO1x0c25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIFwmIzM0OyVkIHBoeXM6Y29taW5nOmZyb206YnBmXCYjMzQ7LCBzZWxmLVx1MDAzZWhpZC5kZXZfaWQpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBpb2N0bChzZWxmLVx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV1BIWVMoc2l6ZW9mKGJ1ZikpLCBidWYpO1xuJiM0MztcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcJiMzNDtISURJT0NHUkFXUEhZU1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xuJiM0MztcbiYjNDM7XHRlcnIgPSBpb2N0bChzZWxmLVx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV1VOSVEoc2l6ZW9mKGJ1ZikpLCBidWYpO1xuJiM0MztcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcJiMzNDtISURJT0NHUkFXVU5JUVwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX1NUUkVRKFwmIzM0O3VuaXE6Y29taW5nOmZyb206YnBmXCYjMzQ7LCBidWYpO1xuJiM0MztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcbiBcdFx0XHQgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5pbmRleCBiMjFmYmIxM2M5MjZmLi5iNWQ5YWVhMWJkYTFkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcbkBAIC0yNTUsNiAmIzQzOzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4gXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4gfTtcbiBcbiYjNDM7U0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzLnMvaGlkX3JkZXNjX2ZpeHVwXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxuJiM0Mzt7XG4mIzQzOyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXG4mIzQzO1x0X19idWlsdGluX21lbWNweSh0YXJnZXQsIHN0ciwgc2l6ZW9mKHN0cikpXG4mIzQzO1xuJiM0MztcdEhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZW5hbWUsIFwmIzM0O25hbWUgY29taW5nIGZyb20gYnBmXCYjMzQ7KTtcbiYjNDM7XHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2V1bmlxLCBcJiMzNDt1bmlxOmNvbWluZzpmcm9tOmJwZlwmIzM0Oyk7XG4mIzQzO1x0LyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi9cbiYjNDM7XHRmb3IgKGludCBpID0gMDsgaSBcdTAwM2MgNDsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmICghaGlkX2N0eC1cdTAwM2VoaWQtXHUwMDNlcGh5c1tpXSkge1xuJiM0MztcdFx0XHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2VwaHlzICYjNDM7IGksIFwmIzM0OyBwaHlzOmNvbWluZzpmcm9tOmJwZlwmIzM0Oyk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzOyN1bmRlZiBISURfQlBGX0NPTkNBVFxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7U0VDKFwmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmtcJiMzNDspXG4mIzQzO3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XG4mIzQzO1x0LmhpZF9yZGVzY19maXh1cCA9ICh2b2lkICopaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cyxcbiYjNDM7fTtcbiYjNDM7XG4gU0VDKFwmIzM0Oz9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcJiMzNDspXG4gaW50IEJQRl9QUk9HKGhpZF90ZXN0X2luc2VydDEsIHN0cnVjdCBoaWRfYnBmX2N0eCAqaGlkX2N0eCwgZW51bSBoaWRfcmVwb3J0X3R5cGUgdHlwZSlcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG5pbmRleCBjZGNhOTEyZjNhZmQ4Li4wNTY5ODc5Mzc2MmFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmhcbkBAIC02MSw2ICYjNDM7NjEsOSBAQCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB7XG4gXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xuIFx0dW5zaWduZWQgaW50IGlkO1xuJiM0MztcdGNoYXIgbmFtZVsxMjhdO1xuJiM0MztcdGNoYXIgcGh5c1s2NF07XG4mIzQzO1x0Y2hhciB1bmlxWzY0XTtcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xuIFxuIHN0cnVjdCBicGZfd3Ege1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlNzNjMzlkNTU1MzE5YTM3OWE4MWRiYTdjNDQ2NDY2MGJjMmJjNzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAwODo1NDo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYwppbmRleCA3MDJjMjJmYWUxMzZhLi41NmM1M2FjYTQ1MTE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jCkBAIC02Miw2ICYjNDM7NjIsMTAgQEAgc3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHsKIAl1MzIgZW5kOwogfTsKIAomIzQzO3N0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkIHsKJiM0MzsJc3RydWN0IGhpZF9kZXZpY2UgKmhpZDsKJiM0Mzt9OwomIzQzOwogc3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLAogCQkJCQkgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLAogCQkJCQkgICBpbnQgb2ZmLCBpbnQgc2l6ZSkKQEAgLTg2LDYgJiM0Mzs5MCw4IEBAIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAljb25zdCBjaGFyICpjdXIgPSBOVUxMOwogCWludCBpOwogCiYjNDM7CUJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpOwomIzQzOwogCXQgPSBidGZfdHlwZV9ieV9pZChyZWctJmd0O2J0ZiwgcmVnLSZndDtidGZfaWQpOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSYjNDM7JiM0MzspIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jCmluZGV4IGI4NTEzMzkzMDhjMjEuLjdhYjg2Mjk2ZmYyMzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYwpAQCAtNjcsMTQgJiM0Mzs2NywxNyBAQCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHsKIAlpbnQgaW5zZXJ0X2hlYWQ7CiB9OwogI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcCi0JbG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudCkKJiM0MzsJbG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIGZhbHNlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpCiYjNDM7I2RlZmluZSBMT0FEX1BST0dSQU1TX01BWV9GQUlMKHByb2dzKSBcCiYjNDM7CWxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpCiAjZGVmaW5lIExPQURfQlBGIFwKLQlsb2FkX3Byb2dyYW1zKE5VTEwsIDAsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudCkKLXN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAotCQkJICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsCi0JCQkgIHN0cnVjdCBfX3Rlc3RfbWV0YWRhdGEgKl9tZXRhZGF0YSwKLQkJCSAgRklYVFVSRV9EQVRBKGhpZF9icGYpICogc2VsZiwKLQkJCSAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudCkKJiM0MzsJbG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KQomIzQzO3N0YXRpYyBpbnQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sCiYjNDM7CQkJIGNvbnN0IHNpemVfdCBwcm9nc19jb3VudCwKJiM0MzsJCQkgYm9vbCBsb2FkX21heV9mYWlsLAomIzQzOwkJCSBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsCiYjNDM7CQkJIEZJWFRVUkVfREFUQShoaWRfYnBmKSAqIHNlbGYsCiYjNDM7CQkJIGNvbnN0IEZJWFRVUkVfVkFSSUFOVChoaWRfYnBmKSAqIHZhcmlhbnQpCiB7CiAJc3RydWN0IGJwZl9tYXAgKml0ZXJfbWFwOwogCWludCBlcnIgPSAtRUlOVkFMOwpAQCAtMTI4LDYgJiM0MzsxMzEsOSBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSwKIAl9CiAKIAllcnIgPSBoaWRfX2xvYWQoc2VsZi0mZ3Q7c2tlbCk7CiYjNDM7CWlmIChlcnIgJmFtcDsmYW1wOyBsb2FkX21heV9mYWlsKQomIzQzOwkJcmV0dXJuIGVycjsKJiM0MzsKIAlBU1NFUlRfT0soZXJyKSBUSF9MT0coJiMzNDtoaWRfc2tlbF9sb2FkIGZhaWxlZDogJWQmIzM0OywgZXJyKTsKIAogCWZvciAoaW50IGkgPSAwOyBpICZsdDsgcHJvZ3NfY291bnQ7IGkmIzQzOyYjNDM7KSB7CkBAIC0xNDcsNiAmIzQzOzE1Myw3IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLAogCiAJc2VsZi0mZ3Q7aGlkcmF3X2ZkID0gb3Blbl9oaWRyYXcoJmFtcDtzZWxmLSZndDtoaWQpOwogCUFTU0VSVF9HRShzZWxmLSZndDtoaWRyYXdfZmQsIDApIFRIX0xPRygmIzM0O29wZW5faGlkcmF3JiMzNDspOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTkwNCwxMSAmIzQzOzkxMSwzOSBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdykKIAkJeyAubmFtZSA9ICYjMzQ7aGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93JiMzNDsgfSwKIAl9OwogCi0JTE9BRF9QUk9HUkFNUyhwcm9ncyk7CiYjNDM7CS8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqLwomIzQzOwlpZiAoTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykpCiYjNDM7CQlyZXR1cm47CiAKIAlBU1NFUlRfRVEoc2VsZi0mZ3Q7c2tlbC0mZ3Q7YnNzLSZndDtnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7CiB9CiAKJiM0MztURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7CiYjNDM7CQl7IC5uYW1lID0gJiMzNDtoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzJiMzNDsgfSwKJiM0MzsJfTsKJiM0MzsJY2hhciBleHBlY3RlZFsyNTZdLCBidWZbMjU2XSA9IHt9OwomIzQzOwlpbnQgZXJyOwomIzQzOwomIzQzOwlMT0FEX1BST0dSQU1TKHByb2dzKTsKJiM0MzsKJiM0MzsJZXJyID0gaW9jdGwoc2VsZi0mZ3Q7aGlkcmF3X2ZkLCBISURJT0NHUkFXTkFNRShzaXplb2YoYnVmKSksIGJ1Zik7CiYjNDM7CUFTU0VSVF9HRShlcnIsIDApIFRIX0xPRygmIzM0O0hJRElPQ0dSQVdOQU1FJiMzNDspOwomIzQzOwlBU1NFUlRfU1RSRVEoJiMzNDtuYW1lIGNvbWluZyBmcm9tIGJwZiYjMzQ7LCBidWYpOwomIzQzOwomIzQzOwlzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgJiMzNDslZCBwaHlzOmNvbWluZzpmcm9tOmJwZiYjMzQ7LCBzZWxmLSZndDtoaWQuZGV2X2lkKTsKJiM0MzsKJiM0MzsJZXJyID0gaW9jdGwoc2VsZi0mZ3Q7aGlkcmF3X2ZkLCBISURJT0NHUkFXUEhZUyhzaXplb2YoYnVmKSksIGJ1Zik7CiYjNDM7CUFTU0VSVF9HRShlcnIsIDApIFRIX0xPRygmIzM0O0hJRElPQ0dSQVdQSFlTJiMzNDspOwomIzQzOwlBU1NFUlRfU1RSRVEoZXhwZWN0ZWQsIGJ1Zik7CiYjNDM7CiYjNDM7CWVyciA9IGlvY3RsKHNlbGYtJmd0O2hpZHJhd19mZCwgSElESU9DR1JBV1VOSVEoc2l6ZW9mKGJ1ZikpLCBidWYpOwomIzQzOwlBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coJiMzNDtISURJT0NHUkFXVU5JUSYjMzQ7KTsKJiM0MzsJQVNTRVJUX1NUUkVRKCYjMzQ7dW5pcTpjb21pbmc6ZnJvbTpicGYmIzM0OywgYnVmKTsKJiM0MzsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCwKIAkJCSAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jCmluZGV4IGIyMWZiYjEzYzkyNmYuLmI1ZDlhZWExYmRhMWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmMKQEAgLTI1NSw2ICYjNDM7MjU1LDMyIEBAIHN0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyA9IHsKIAkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csCiB9OwogCiYjNDM7U0VDKCYjMzQ7P3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXAmIzM0OykKJiM0MztpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KQomIzQzO3sKJiM0MzsjZGVmaW5lIEhJRF9CUEZfTUVNQ1BZKHRhcmdldCwgc3RyKSBcCiYjNDM7CV9fYnVpbHRpbl9tZW1jcHkodGFyZ2V0LCBzdHIsIHNpemVvZihzdHIpKQomIzQzOwomIzQzOwlISURfQlBGX01FTUNQWShoaWRfY3R4LSZndDtoaWQtJmd0O25hbWUsICYjMzQ7bmFtZSBjb21pbmcgZnJvbSBicGYmIzM0Oyk7CiYjNDM7CUhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtJmd0O2hpZC0mZ3Q7dW5pcSwgJiMzNDt1bmlxOmNvbWluZzpmcm9tOmJwZiYjMzQ7KTsKJiM0MzsJLyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi8KJiM0MzsJZm9yIChpbnQgaSA9IDA7IGkgJmx0OyA0OyBpJiM0MzsmIzQzOykgewomIzQzOwkJaWYgKCFoaWRfY3R4LSZndDtoaWQtJmd0O3BoeXNbaV0pIHsKJiM0MzsJCQlISURfQlBGX01FTUNQWShoaWRfY3R4LSZndDtoaWQtJmd0O3BoeXMgJiM0MzsgaSwgJiMzNDsgcGh5czpjb21pbmc6ZnJvbTpicGYmIzM0Oyk7CiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKJiM0MzsjdW5kZWYgSElEX0JQRl9DT05DQVQKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO1NFQygmIzM0Oy5zdHJ1Y3Rfb3BzLmxpbmsmIzM0OykKJiM0MztzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzID0gewomIzQzOwkuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLAomIzQzO307CiYjNDM7CiBTRUMoJiMzNDs/c3RydWN0X29wcy9oaWRfZGV2aWNlX2V2ZW50JiMzNDspCiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oCmluZGV4IGNkY2E5MTJmM2FmZDguLjA1Njk4NzkzNzYyYWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkX2JwZl9oZWxwZXJzLmgKQEAgLTYxLDYgJiM0Mzs2MSw5IEBAIGVudW0gaGlkX3JlcG9ydF90eXBlIHsKIAogc3RydWN0IGhpZF9kZXZpY2UgewogCXVuc2lnbmVkIGludCBpZDsKJiM0MzsJY2hhciBuYW1lWzEyOF07CiYjNDM7CWNoYXIgcGh5c1s2NF07CiYjNDM7CWNoYXIgdW5pcVs2NF07CiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpOwogCiBzdHJ1Y3QgYnBmX3dxIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE3MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDg3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIFNlcmllcyBmb3IgRnVuY3Rpb25hbCBDaGFuZ2VzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgZ29hbCBpcyB0byBmaWd1cmUgb3V0IGlmIGl0IGludHJvZHVjZXMgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgd291bGQgd2FycmFudCBmdXp6aW5nLiBUaGUgcGF0Y2ggdG91Y2hlcyBhIGZldyBmaWxlczogYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AsIGFuZCBhIGZldyBzZWxmLXRlc3QgZmlsZXMgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLgoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AuIFRoZSBkaWZmIHNob3dzIGEgbmV3IGBzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZGAgYW5kIHRoZSB1c2Ugb2YgYEJURl9UWVBFX0VNSVRgLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXMgdGhpcyBhY3R1YWxseSBkb2luZyBzb21ldGhpbmcsIG9yIGlzIGl0IGp1c3QgbWV0YWRhdGE/IEl0IGxvb2tzIGxpa2UgaXQgaXMgZW1pdHRpbmcgQlRGIGluZm9ybWF0aW9uIGZvciB0aGlzIG5ldyBzdHJ1Y3R1cmUuIEkgc3VzcGVjdCB0aGlzIGlzIHRvIGFsbG93IEJQRiBwcm9ncmFtcyB0byBzYWZlbHkgYWNjZXNzIGBoaWRfY3R4LSZndDtoaWRgLiBCdXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzLgoKT2theSwgcmVyZWFkaW5nIHRoZSBkaWZmLCB0aGUgb25seSB0aGluZyBoYXBwZW5pbmcgaW4gdGhpcyBmaWxlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGUgbmV3IHN0cnVjdCBhbmQgdGhlIGBCVEZfVFlQRV9FTUlUYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXM6IERvZXMgdGhpcyBjaGFuZ2UgYW55IGV4ZWN1dGlvbiBmbG93LCBvciBpcyBpdCBqdXN0IHR5cGUgaW5mb3JtYXRpb24/IGBCVEZfVFlQRV9FTUlUYCBpcyBhIG1hY3JvIHRoYXQgdXN1YWxseSB0ZWxscyB0aGUgY29tcGlsZXIgdG8gZW1pdCBCVEYgZm9yIHRoZSB0eXBlLiBJdCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYWZmZWN0IHRoZSBleGVjdXRpb24gb2YgdGhlIGRyaXZlciBpdHNlbGYuCgpTbywgYXQgdGhpcyBwb2ludCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgQlRGX1RZUEVfRU1JVGAgYWN0dWFsbHkgZG9lcy4gVGhlbiwgSSBjYW4gbWFrZSBhIGRlY2lzaW9uIGFzIHRvIHdoZXRoZXIgdGhpcyBjb25zdGl0dXRlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIG9yIGlzIGEgc2FmZSBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7I2RlZmluZSBCVEZfVFlQRV9FTUlUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvYnRmLmgtMTMtXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE0OiNkZWZpbmUgQlRGX1RZUEVfRU1JVCh0eXBlKSAoKHZvaWQpKHR5cGUgKikwKVxuaW5jbHVkZS9saW51eC9idGYuaDoxNTojZGVmaW5lIEJURl9UWVBFX0VNSVRfRU5VTShlbnVtX3ZhbCkgKCh2b2lkKWVudW1fdmFsKVxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTIzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlRGIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGAjZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSlgIG1hY3JvLi4uIGl0JiMzOTtzIGEgY2xldmVyIHRyaWNrLiBObyBhY3R1YWwgY29kZSBpcyBiZWluZyBnZW5lcmF0ZWQgaGVyZSwgaXQmIzM5O3MganVzdCBhIHdheSB0byBmb3JjZSB0aGUgQlRGIGdlbmVyYXRpb24gdG8gaW5jbHVkZSBhIHR5cGUgZGVmaW5pdGlvbi4gRWZmZWN0aXZlbHksIGl0JiMzOTtzIGNhc3RpbmcgYSB6ZXJvIHRvIGEgcG9pbnRlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHRoZW4gZGlzY2FyZGluZyBpdCB3aXRoIGEgdm9pZCBjYXN0LiBUaGlzIGlzIHB1cmVseSBmb3IgQlRGIG1ldGFkYXRhLiBUaGUgb3RoZXIgZmlsZSBtb2RpZmljYXRpb25zIGFyZSBsb2NhbGl6ZWQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLCBzbyBubyBkaXJlY3QgZnVuY3Rpb25hbCBpbXBhY3Qgb24ga2VybmVsIGV4ZWN1dGlvbi4gVGhhdCYjMzk7cyBhIHJlbGllZi4KCkJ1dCB3YWl0IGEgbWludXRlLi4uIGRvZXMgaW50cm9kdWNpbmcgYSBuZXcgdHlwZSBpbnRvIEJURiBoYXZlIGFueSBzaWRlIGVmZmVjdHMgb24gdGhlIHZlcmlmaWVyPyBUaGUgdmVyaWZpZXIgbWlnaHQgc3RhcnQgbG9va2luZyB1cCBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgIGluIHRoZSBCVEYgZGF0YS4gTGV0JiMzOTtzIG5vdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmUgbm8gdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhhdCBzdHJ1Y3R1cmUsIGBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCwgaXMgcmVmZXJlbmNlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGNvZGViYXNlLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAgdG8gY29uZmlybSB0aGlzIGlzIGEgc2FmZSBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTY2LVx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTcKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgS2VybmVsIEFub21hbHkqKgoKT2theSwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW4gdGhpcyBrZXJuZWwgY29kZSB0aGF0IGZlZWxzLi4uIGlzb2xhdGVkLiBUaGlzIHNuaXBwZXQgaXNuJiMzOTt0IHJlZmVyZW5jZWQgYW55d2hlcmUgZWxzZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBjb2RlYmFzZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gV2h5IGlzIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZSBoYW5naW5nIG91dCBoZXJlLCBhbG9uZT8gSXQmIzM5O3MgbWFraW5nIG1lIHdvbmRlciBhYm91dCBpdHMgcHVycG9zZSwgYW5kIHdoZXRoZXIgaXQmIzM5O3Mgc29tZWhvdyByZWR1bmRhbnQgb3IsIHdvcnNlLCBhIHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgoKVGhlbiwgYSB0aG91Z2h0IHNwYXJrcyAtIHdhaXQgYSBzZWNvbmQsIGRvZXNuJiMzOTt0IHRoZSB2ZXJpZmllciwgaW4gaXRzIGNoZWNrcywgaGF2ZSBzb21lIGtpbmQgb2YgbWVjaGFuaXNtIGZvciBpZGVudGlmeWluZyBzcGVjaWZpYyB0eXBlcyB0aGF0IGVuZCBpbiBzb21ldGhpbmcgbGlrZSBgX19zYWZlX3RydXN0ZWRgPyBJIHNlZW0gdG8gcmVjYWxsIGEgZmVhdHVyZSBkZXNpZ25lZCB0byBoYW5kbGUgdHJ1c3RlZCBjb2RlIG9yIGRhdGEuIFBlcmhhcHMgdGhpcyBjb2RlIGlzIHJlbGF0ZWQgdG8gdGhhdC4KClJpZ2h0LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaHVuY2guIExldCYjMzk7cyBkaXZlIGludG8gdGhlIHZlcmlmaWVyIGNvZGUgYW5kIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbG9naWMgc3BlY2lmaWNhbGx5IGdlYXJlZCB0b3dhcmRzIHRoZXNlIGtpbmRzIG9mIHR5cGUgbmFtaW5nIGNvbnZlbnRpb25zLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlYXNvbiB0aGlzIHNlZW1pbmdseSBvcnBoYW5lZCBjb2RlIGV4aXN0cyBhbmQgd2h5IGl0JiMzOTtzIHN0cnVjdHVyZWQgdGhlIHdheSBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3NhZmVfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTY2LVx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NTczPWludCBicGZfbWFwX2RpcmVjdF9yZWFkKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBvZmYsIGludCBzaXplLCB1NjQgKnZhbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYwNS0jZGVmaW5lIEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoX190eXBlKSAgX19QQVNURShfX3R5cGUsIF9fc2FmZV9yY3Vfb3JfbnVsbClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA2OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA3OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEX09SX05VTEwoX190eXBlKSAgX19QQVNURShfX3R5cGUsIF9fc2FmZV90cnVzdGVkX29yX251bGwpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTYwOC1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcwOT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE4Olx0cmV0dXJuIGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkKFx1MDAyNmVudi1cdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcJiMzNDtfX3NhZmVfdHJ1c3RlZFwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxOS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcyOS1cdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzMwOlx0XHRcdFx0XHQgIFwmIzM0O19fc2FmZV90cnVzdGVkX29yX251bGxcJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MzEtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDA4OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBCVEYtRHJpdmVuIFZlcmlmaWVyIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgaG9uZXMgaW4gb24gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuICBJdCYjMzk7cyB0aGF0IGBfX3NhZmVfdHJ1c3RlZGAgc3VmZml4IHRyaWNrISAgUmlnaHQsIHRoZSB2ZXJpZmllciB1c2VzIHRoYXQgdG8gZGV0ZXJtaW5lIGlmIGEgZmllbGQgaXMgY29uc2lkZXJlZCB0cnVzdGVkLiBTbywgYWRkaW5nIGBzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCB7IHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7IH07YCBhbmQgZW1pdHRpbmcgaXQgaXMgdGhlIGNydXggb2YgaXQuICBUaGlzIG1lYW5zIHRoZSB2ZXJpZmllciAqbm93KiBjb25zaWRlcnMgYGhpZF9jdHgtJmd0O2hpZGAgYSB0cnVzdGVkIHBvaW50ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0Z1bmN0aW9uYWxseSwgaXMgdGhpcyBhIGNoYW5nZT8mIzM0OwoKWWVzLCBhYnNvbHV0ZWx5LiBJdCAqY2hhbmdlcyogdGhlIHZlcmlmaWVyJiMzOTtzIGJlaGF2aW9yLiAgQlBGIHByb2dyYW1zIGNhbiBub3cgZ2V0IGxvYWRlZCB0aGF0IHdlcmUgcHJldmlvdXNseSBibG9ja2VkLiAgQnV0IGhlcmUmIzM5O3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIHJlYWxseSBraWNrcyBpbjogZG9lcyBpdCBjaGFuZ2Uga2VybmVsICpleGVjdXRpb24qIGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZz8gVGhlIHZlcmlmaWVyIGl0c2VsZiBpc27igJl0IHRvdWNoZWQgKGNvZGUtd2lzZSksIG9ubHkgdGhlIEJURiBkYXRhIGZvciBgaGlkX2JwZl9jdHhgIGNoYW5nZXMuCgpXYWl0IGEgc2VjLCB0aGUgdmVyaWZpZXIgKmlzKiBmdXp6ZWQuICBCeSBhZGRpbmcgdGhpcyBCVEYgdHlwZSwgd2UmIzM5O3JlIGV4cG9zaW5nIGEgbmV3IHRydXN0ZWQgcG9pbnRlciB0byBCUEYgcHJvZ3JhbXMuICBDcnVjaWFsbHksIHRoZXJlJiMzOTtzICpubyogbmV3IEMgY29kZS4gIEl0JiMzOTtzIGp1c3QgdGhhdCBgQlRGX1RZUEVfRU1JVGAgbGluZSDigJMgYSB0eXBlIGRlZmluaXRpb24uIFRoZSBrZXJuZWwmIzM5O3MgKmV4ZWN1dGlvbiBmbG93KiBkb2VzbiYjMzk7dCBmdW5kYW1lbnRhbGx5IGNoYW5nZSwgb3RoZXIgdGhhbiB0aGUgdmVyaWZpZXIgYWNjZXB0aW5nIHRoZSBCUEYgcHJvZ3JhbXMuICBUaGVyZSYjMzk7cyBubyBuZXcga2VybmVsIGxvZ2ljIHRvIHRhcmdldCB3aXRoIGZ1enppbmcuCgpNeSBpbW1lZGlhdGUgcmVhY3Rpb24gaXMgdG8gZGlzbWlzcyBpdC4gQnV0LCB3YWl0LiBJZiBhIEJQRiBwcm9ncmFtIGNhbiBub3cgKnBhc3MqIGBoaWRfY3R4LSZndDtoaWRgIHRvIGEgaGVscGVyIGZ1bmN0aW9uLCBpdCBjb3VsZCB0cmlnZ2VyIGJ1Z3MgKndpdGhpbiogdGhhdCBoZWxwZXIuIEJ1dCB0aGUgaGVscGVyIGlzIGFscmVhZHkgZnV6emVkLiBTbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPwoKVGhlIHByb21wdCBzdGF0ZXM6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4mIzM0OwoKVGhpcyBpcywgdGVjaG5pY2FsbHksIGEgY2hhbmdlIHRvIEJURiBkYXRhIGFuZCBpdCBhbHRlcnMgdGhlIHZlcmlmaWVyJiMzOTtzIGV4ZWN1dGlvbiBmbG93LiBUaGUgdmVyaWZpZXIgd2lsbCBub3cgcmV0dXJuIHRydWUgZm9yIGB0eXBlX2lzX3RydXN0ZWRgLiAgQnV0Li4ubm8gbmV3IGZ1bmN0aW9ucyBvciBjb2RlLiBMZXQgbWUgY2hlY2sgYGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2JwZi5oPTMxODA9c3RydWN0IGJwZl9jb3JlX2N0eCB7XG4tLVxuaW5jbHVkZS9saW51eC9icGYuaC0zMTg0LVxuaW5jbHVkZS9saW51eC9icGYuaDozMTg1OmJvb2wgYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbmluY2x1ZGUvbGludXgvYnBmLmgtMzE4Ni1cdFx0XHRcdGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXG4tLVxua2VybmVsL2JwZi9idGYuYz05Njc0PWludCBicGZfY29yZV9hcHBseShzdHJ1Y3QgYnBmX2NvcmVfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBicGZfY29yZV9yZWxvICpyZWxvLFxuLS1cbmtlcm5lbC9icGYvYnRmLmMtOTc1Mi1cbmtlcm5lbC9icGYvYnRmLmM6OTc1Mzpib29sIGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG5rZXJuZWwvYnBmL2J0Zi5jLTk3NTQtXHRcdFx0XHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njg2PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU2OTQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5NTpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXCYjMzQ7X19zYWZlX3JjdVwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY5Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2OTg9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Vfb3JfbnVsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzA1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MDY6XHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXHUwMDI2ZW52LVx1MDAzZWxvZywgcmVnLCBmaWVsZF9uYW1lLCBidGZfaWQsIFwmIzM0O19fc2FmZV9yY3Vfb3JfbnVsbFwmIzM0Oyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcwNy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXCYjMzQ7X19zYWZlX3RydXN0ZWRcJiMzNDspO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NzIxPXN0YXRpYyBib29sIHR5cGVfaXNfdHJ1c3RlZF9vcl9udWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MjgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyOTpcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcdTAwMjZlbnYtXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzMwLVx0XHRcdFx0XHQgIFwmIzM0O19fc2FmZV90cnVzdGVkX29yX251bGxcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDY5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBib2lscyBkb3duIHRvIGFkZGluZyBhIEJURiB0eXBlLCBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgLCB3aGljaCBsZXRzIEJQRiBwcm9ncmFtcyB0cnVzdCBgaGlkX2N0eC0mZ3Q7aGlkYCBhcyBhIHZhbGlkIHBvaW50ZXIuIE5vIG5ldyBrZXJuZWwsIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYmVpbmcgaW50cm9kdWNlZCBoZXJlIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzaWduLiBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AgYW5kIHRoZSBCVEYgdHlwZSBlbWlzc2lvbiBpbiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYC4KCk15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBsYWNrIG9mIG5ldyBleGVjdXRhYmxlIGtlcm5lbCBsb2dpYywgaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBIb3dldmVyLCBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhpcyBCVEYgY2hhbmdlICppbmRpcmVjdGx5KiBpbnRyb2R1Y2VzIGEgcG90ZW50aWFsIGNyYXNoIHBhdGggdmlhIHRoZSB2ZXJpZmllci4gQ291bGQgYSBtYWxpY2lvdXMgQlBGIHByb2dyYW0gbGV2ZXJhZ2UgdGhpcyBuZXcgdHlwZSB0byBkbyBzb21ldGhpbmcgYmFkIGlmIGBoaWRfY3R4LSZndDtoaWRgIGlzbiYjMzk7dCBhY3R1YWxseSBzYWZlIGluIGEgZ2l2ZW4gY29udGV4dD8gVGhhdCYjMzk7cyBhIGxlZ2l0aW1hdGUgY29uY2Vybi4KClRoZSBnb29kIG5ld3MgaXMgc3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBCUEYgcHJvZ3JhbXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBwaWNrIHVwIHRoaXMgbmV3IEJURiB0eXBlIGFuZCBsaWtlbHkgdHJ5IHRvIGV4cGxvaXQgaXQuIEkgZG9uJiMzOTt0IHNlZSBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0byBmb2N1cyBmdXp6aW5nIG9uLCBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlIGlzIHN0cnVjdHVyYWwsIG5vdCBmdW5jdGlvbmFsLiBJJiMzOTttIG1vZGlmeWluZyBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYCwgc3BlY2lmaWNhbGx5IGJ5IGFkZGluZyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uIGFuZCBhIG1hY3JvLiBJdCYjMzk7cyBhIGRyaXZlciBtb2RpZmljYXRpb24sIGJ1dCBpdCYjMzk7cyBub3QgYWRkaW5nIGFueSBuZXcgZXhlY3V0YWJsZSBjb2RlLgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCB0aG91Z2g6IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBgQlRGX1RZUEVfRU1JVGAgKmRvZXNuJiMzOTt0KiBpbnRyb2R1Y2UgYW55IGtpbmQgb2YgZXhlY3V0YWJsZSBjb2RlLiBJZiBpdCBkb2VzbiYjMzk7dCwgSSB0aGluayBJJiMzOTttIGNvbWZvcnRhYmxlIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gR2l2ZW4gdGhlIGV4aXN0aW5nIEJQRiBmdXp6aW5nIGNhcGFiaWxpdGllcyBvZiBzeXprYWxsZXIsIGl0IHNlZW1zIHVubGlrZWx5IHRoaXMgQlRGIGNoYW5nZSBhbG9uZSB3YXJyYW50cyBhZGRpdGlvbmFsIGZ1enppbmcgZWZmb3J0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCVEZfVFlQRV9FTUlUJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q9MTEwPWlzIGVtaXR0ZWQgaW4gdGhlIGBgdHlwZV9pc190cnVzdGVkKClgYCBmdW5jdGlvbiBhcyBmb2xsb3dzOlxuLS1cbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMTEzLVxuRG9jdW1lbnRhdGlvbi9icGYva2Z1bmNzLnJzdDoxMTQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3Qgc29ja2V0KSk7XG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTExNS1cbi0tXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9Njk9c3RhdGljIGludCBoaWRfYnBmX29wc19idGZfc3RydWN0X2FjY2VzcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYzo5MzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmg9MjE5Mz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuLS1cbmluY2x1ZGUvbGludXgvYnBmLmgtMjIwOS1cdFx0fTtcdFx0XHRcdFx0XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oOjIyMTA6XHRcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9zdHJ1Y3Rfb3BzXyMjdHlwZSk7XHRcdFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMTEtXHRcdF9fcmVnaXN0ZXJfYnBmX3N0cnVjdF9vcHMoc3Rfb3BzKTtcdFx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvYnRmLmgtMTMtXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE0OiNkZWZpbmUgQlRGX1RZUEVfRU1JVCh0eXBlKSAoKHZvaWQpKHR5cGUgKikwKVxuaW5jbHVkZS9saW51eC9idGYuaDoxNTojZGVmaW5lIEJURl9UWVBFX0VNSVRfRU5VTShlbnVtX3ZhbCkgKCh2b2lkKWVudW1fdmFsKVxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0xMTgzPXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBicGZfdGltZXJfY2Ioc3RydWN0IGhydGltZXIgKmhydGltZXIpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTE5MS1cbmtlcm5lbC9icGYvaGVscGVycy5jOjExOTI6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGltZXIpO1xua2VybmVsL2JwZi9oZWxwZXJzLmMtMTE5My1cdGNhbGxiYWNrX2ZuID0gcmN1X2RlcmVmZXJlbmNlX2NoZWNrKHQtXHUwMDNlY2IuY2FsbGJhY2tfZm4sIHJjdV9yZWFkX2xvY2tfYmhfaGVsZCgpKTtcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYz0xMjE1PXN0YXRpYyB2b2lkIGJwZl93cV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMjI0LVxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTIyNTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl93cSk7XG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xMjI2LVxuLS1cbmtlcm5lbC9icGYvaGVscGVycy5jPTE4NjE9QlBGX0NBTExfNChicGZfZHlucHRyX2Zyb21fbWVtLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSwgdTY0LCBmbGFncywgc3RydWN0IGJwZl9keW5wdHJfa2VybiAqLCBwdHIpXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTg2NC1cbmtlcm5lbC9icGYvaGVscGVycy5jOjE4NjU6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfZHlucHRyKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTE4NjYtXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmM9NDU5Nj1zdGF0aWMgaW50IGJwZl90YXNrX3dvcmtfc2NoZWR1bGUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgYnBmX3Rhc2tfd29yayAqdHcsXG4tLVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYwMy1cbmtlcm5lbC9icGYvaGVscGVycy5jOjQ2MDQ6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGFza193b3JrKTtcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MDUtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2ODY9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Uoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY4OS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MDpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IHRhc2tfc3RydWN0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MTpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cCkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTI6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVKHN0cnVjdCBjc3Nfc2V0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTY5MzpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk0LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcwMS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMjpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3QgbW1fc3RydWN0KSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMzpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3Qgc2tfYnVmZikpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MDQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoc3RydWN0IHJlcXVlc3Rfc29jaykpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDUtXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTIte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTM6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTQ6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfX3Rhc2spKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE1Olx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1RSVVNURUQoc3RydWN0IGxpbnV4X2JpbnBybSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MTY6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgZmlsZSkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTctXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcyNC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNTpcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEX09SX05VTEwoc3RydWN0IHNvY2tldCkpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjU3MjY6XHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBkZW50cnkpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzI3Olx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1RSVVNURURfT1JfTlVMTChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QpKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NjEyPXN0YXRpYyBpbnQgcHJvY2Vzc19pdGVyX25leHRfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgaW5zbl9pZHgsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTc2MTgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NzYxOTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9pdGVyKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjIwLVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTc3MT1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NzgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3Nzk6XHRCVEZfVFlQRV9FTUlUKGVudW0gYnBmX2ZlYXR1cmVzKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc4MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz03NDQ5PXUzMiBicGZfdGNwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzKGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNzQ3OC1cbm5ldC9jb3JlL2ZpbHRlci5jOjc0Nzk6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGNwX3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtNzQ4MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz03NjQzPXUzMiBicGZfeGRwX3NvY2tfY29udmVydF9jdHhfYWNjZXNzKGVudW0gYnBmX2FjY2Vzc190eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNzY1OC1cbm5ldC9jb3JlL2ZpbHRlci5jOjc2NTk6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfeGRwX3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtNzY2MC1cbi0tXG5uZXQvY29yZS9maWx0ZXIuYz04NjAwPXhkcF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTg2NjYtXHQgKi9cbm5ldC9jb3JlL2ZpbHRlci5jOjg2Njc6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBuZl9jb25uX19faW5pdCk7XG5uZXQvY29yZS9maWx0ZXIuYy04NjY4LSNlbmRpZlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMDM5PUJQRl9DQUxMXzEoYnBmX3NrY190b190Y3A2X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDQzLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA0NDpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHRjcDZfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjA0NS1cdGlmIChzayBcdTAwMjZcdTAwMjYgc2tfZnVsbHNvY2soc2spIFx1MDAyNlx1MDAyNiBzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMjA3Nj1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDgwLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MTpcdEJURl9UWVBFX0VNSVQoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MjpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHRjcF90aW1ld2FpdF9zb2NrKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDgzLVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTI4PUJQRl9DQUxMXzEoYnBmX3NrY190b191ZHA2X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTMyLVx0ICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjEzMzpcdEJURl9UWVBFX0VNSVQoc3RydWN0IHVkcDZfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjEzNC1cdGlmIChzayBcdTAwMjZcdTAwMjYgc2tfZnVsbHNvY2soc2spIFx1MDAyNlx1MDAyNiBzay1cdTAwM2Vza19wcm90b2NvbCA9PSBJUFBST1RPX1VEUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvY29yZS9maWx0ZXIuYz0xMjE0OT1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdW5peF9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy0xMjE1My1cdCAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTIxNTQ6XHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB1bml4X3NvY2spO1xubmV0L2NvcmUvZmlsdGVyLmMtMTIxNTUtXHRpZiAoc2sgXHUwMDI2XHUwMDI2IHNrX2lzX3VuaXgoc2spKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTY5PUJQRl9DQUxMXzEoYnBmX3NrY190b19tcHRjcF9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTcwLXtcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTcxOlx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgbXB0Y3Bfc29jayk7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjE3Mi1cdHJldHVybiAodW5zaWduZWQgbG9uZylicGZfbXB0Y3Bfc29ja19mcm9tX3N1YmZsb3coc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jPTI5NjA9dm9pZCB0Y3Bfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgaW50IHN0YXRlKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTI5OTQtXHQgKi9cbm5ldC9pcHY0L3RjcC5jOjI5OTU6XHRCVEZfVFlQRV9FTUlUX0VOVU0oQlBGX1RDUF9FU1RBQkxJU0hFRCk7XG5uZXQvaXB2NC90Y3AuYy0yOTk2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM9MzU3PWJwZl90ZXN0bW9kX3Rlc3RfYnRmX3R5cGVfdGFnX3VzZXJfMShzdHJ1Y3QgYnBmX3Rlc3Rtb2RfYnRmX3R5cGVfdGFnXzEgX191c2VyICphcmcpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzU4Olx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzozNTk6XHRCVEZfVFlQRV9FTUlUKGZ1bmNfcHJvdG9fdHlwZWRlZl9uZXN0ZWQxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzYwOlx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWZfbmVzdGVkMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jLTM2MS1cdHJldHVybiBhcmctXHUwMDNlYTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMxNzUKCQkJCQkJCW91dHB1dDogODMKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UqKgoKT2theSwgc28gYEJURl9UWVBFX0VNSVRgIGlzIHNpbXBseSBhIGRpcmVjdGl2ZSwgYSBoaW50IHRvIHRoZSBjb21waWxlciB0byAqaW5jbHVkZSogdGhlIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyB0eXBlLiBJdCBkb2VzbiYjMzk7dCBhY3R1YWxseSBwcm9kdWNlIGFueSAqZXhlY3V0YWJsZSogY29kZSBvbiBpdHMgb3duLiBUaGlzIHBhdGNoIGp1c3QgaW50cm9kdWNlcyB0aGlzIEJURiB0eXBlIGRlZmluaXRpb24gYW5kIHNvbWUgY29ycmVzcG9uZGluZyBzZWxmLXRlc3RzLiBUaGVyZSYjMzk7cyBub3RoaW5nIGhlcmUgdGhhdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIGtlcm5lbC4gWmVybyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gZnV6ei4KCkxldCYjMzk7cyBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBjcml0ZXJpYSB0byBiZSBzdXJlLiBUaGUgcHJvbXB0IHNheXMgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5z4oCmJiMzNDsgYW5kIHRoZW4gbGlzdHMgYSBidW5jaCBvZiBzY2VuYXJpb3MuIExvb2tpbmcgYXQgdGhvc2Ugc2NlbmFyaW9zIGFnYWluLi4uIHRoaXMgaXMgZGVhZCBzaW1wbGUuIFRoaXMgcGF0Y2ggaXMganVzdCBhZGRpbmcgYSBzdHJ1Y3QgZGVmaW5pdGlvbiBhbmQgdGhhdCBgQlRGX1RZUEVfRU1JVGAgbWFjcm8gY2FsbCwgd2hpY2ggaGFzIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LiBUaGUgcmVzdCBvZiB0aGUgY2hhbmdlcyBhcmUgaXNvbGF0ZWQgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvYC4gSXQgY2xlYXJseSBmYWxscyB1bmRlciB0aGF0IGNhdGVnb3J5IG9mIGNoYW5nZXMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFllcCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIFdvcnRoRnV6emluZz1mYWxzZSBpcyBzcG90IG9uLiBHb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAwODo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIEJURiB0eXBlIGRlZmluaXRpb24gYW5kIGEgQlRGX1RZUEVfRU1JVCBtYWNybyBjYWxsIGluIHRoZSBrZXJuZWwgY29kZSwgd2hpY2ggZG9lcyBub3QgZ2VuZXJhdGUgYW55IGV4ZWN1dGFibGUgY29kZSBvciBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMDg6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU0OjQ4LjY1MTMwMDM0NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTQ1NjUxODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgYSBCVEZfVFlQRV9FTUlUIG1hY3JvIGNhbGwgaW4gdGhlIGtlcm5lbCBjb2RlLCB3aGljaCBkb2VzIG5vdCBnZW5lcmF0ZSBhbnkgZXhlY3V0YWJsZSBjb2RlIG9yIGZ1bmN0aW9uYWxseSBhbHRlciB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuIFRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUgY29uZmluZWQgdG8gc2VsZnRlc3RzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NDguNjUxMzA5Njc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTM2NjAzMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDA4OjU0OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY1xcbmluZGV4IDcwMmMyMmZhZTEzNmEuLjU2YzUzYWNhNDUxMTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXFxuKysrIGIvZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jXFxuQEAgLTYyLDYgKzYyLDEwIEBAIHN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XFxuIFxcdHUzMiBlbmQ7XFxuIH07XFxuIFxcbitzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCB7XFxuK1xcdHN0cnVjdCBoaWRfZGV2aWNlICpoaWQ7XFxuK307XFxuK1xcbiBzdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGludCBvZmYsIGludCBzaXplKVxcbkBAIC04Niw2ICs5MCw4IEBAIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4gXFx0Y29uc3QgY2hhciAqY3VyID0gTlVMTDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkKTtcXG4rXFxuIFxcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXFx1MDAzZWJ0ZiwgcmVnLVxcdTAwM2VidGZfaWQpO1xcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSsrKSB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuaW5kZXggYjg1MTMzOTMwOGMyMS4uN2FiODYyOTZmZjIzNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuY1xcbkBAIC02NywxNCArNjcsMTcgQEAgc3RydWN0IHRlc3RfcHJvZ3JhbSB7XFxuIFxcdGludCBpbnNlcnRfaGVhZDtcXG4gfTtcXG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxcXFxuLVxcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXFxuK1xcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbisjZGVmaW5lIExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpIFxcXFxcXG4rXFx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIHRydWUsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxcXFxuLVxcdGxvYWRfcHJvZ3JhbXMoTlVMTCwgMCwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbi1zdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcXG4tXFx0XFx0XFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXFxuLVxcdFxcdFxcdCAgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxcbi1cXHRcXHRcXHQgIEZJWFRVUkVfREFUQShoaWRfYnBmKSAqIHNlbGYsXFxuLVxcdFxcdFxcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcXG4rXFx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxcbitzdGF0aWMgaW50IGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbitcXHRcXHRcXHQgY29uc3Qgc2l6ZV90IHByb2dzX2NvdW50LFxcbitcXHRcXHRcXHQgYm9vbCBsb2FkX21heV9mYWlsLFxcbitcXHRcXHRcXHQgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxcbitcXHRcXHRcXHQgRklYVFVSRV9EQVRBKGhpZF9icGYpICogc2VsZixcXG4rXFx0XFx0XFx0IGNvbnN0IEZJWFRVUkVfVkFSSUFOVChoaWRfYnBmKSAqIHZhcmlhbnQpXFxuIHtcXG4gXFx0c3RydWN0IGJwZl9tYXAgKml0ZXJfbWFwO1xcbiBcXHRpbnQgZXJyID0gLUVJTlZBTDtcXG5AQCAtMTI4LDYgKzEzMSw5IEBAIHN0YXRpYyB2b2lkIGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxcbiBcXHR9XFxuIFxcbiBcXHRlcnIgPSBoaWRfX2xvYWQoc2VsZi1cXHUwMDNlc2tlbCk7XFxuK1xcdGlmIChlcnIgXFx1MDAyNlxcdTAwMjYgbG9hZF9tYXlfZmFpbClcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuIFxcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcXFwiaGlkX3NrZWxfbG9hZCBmYWlsZWQ6ICVkXFxcIiwgZXJyKTtcXG4gXFxuIFxcdGZvciAoaW50IGkgPSAwOyBpIFxcdTAwM2MgcHJvZ3NfY291bnQ7IGkrKykge1xcbkBAIC0xNDcsNiArMTUzLDcgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXFxuIFxcbiBcXHRzZWxmLVxcdTAwM2VoaWRyYXdfZmQgPSBvcGVuX2hpZHJhdyhcXHUwMDI2c2VsZi1cXHUwMDNlaGlkKTtcXG4gXFx0QVNTRVJUX0dFKHNlbGYtXFx1MDAzZWhpZHJhd19mZCwgMCkgVEhfTE9HKFxcXCJvcGVuX2hpZHJhd1xcXCIpO1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gLypcXG5AQCAtOTA0LDExICs5MTEsMzkgQEAgVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cpXFxuIFxcdFxcdHsgLm5hbWUgPSBcXFwiaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XFxcIiB9LFxcbiBcXHR9O1xcbiBcXG4tXFx0TE9BRF9QUk9HUkFNUyhwcm9ncyk7XFxuK1xcdC8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqL1xcbitcXHRpZiAoTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykpXFxuK1xcdFxcdHJldHVybjtcXG4gXFxuIFxcdEFTU0VSVF9FUShzZWxmLVxcdTAwM2Vza2VsLVxcdTAwM2Vic3MtXFx1MDAzZWdldF9kYXRhX292ZXJmbG93X2NoZWNrLCAxKTtcXG4gfVxcbiBcXG4rVEVTVF9GKGhpZF9icGYsIHRlc3RfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3NbXSA9IHtcXG4rXFx0XFx0eyAubmFtZSA9IFxcXCJoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzXFxcIiB9LFxcbitcXHR9O1xcbitcXHRjaGFyIGV4cGVjdGVkWzI1Nl0sIGJ1ZlsyNTZdID0ge307XFxuK1xcdGludCBlcnI7XFxuK1xcbitcXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcXG4rXFxuK1xcdGVyciA9IGlvY3RsKHNlbGYtXFx1MDAzZWhpZHJhd19mZCwgSElESU9DR1JBV05BTUUoc2l6ZW9mKGJ1ZikpLCBidWYpO1xcbitcXHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXFxcIkhJRElPQ0dSQVdOQU1FXFxcIik7XFxuK1xcdEFTU0VSVF9TVFJFUShcXFwibmFtZSBjb21pbmcgZnJvbSBicGZcXFwiLCBidWYpO1xcbitcXG4rXFx0c25wcmludGYoZXhwZWN0ZWQsIHNpemVvZihleHBlY3RlZCksIFxcXCIlZCBwaHlzOmNvbWluZzpmcm9tOmJwZlxcXCIsIHNlbGYtXFx1MDAzZWhpZC5kZXZfaWQpO1xcbitcXG4rXFx0ZXJyID0gaW9jdGwoc2VsZi1cXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXUEhZUyhzaXplb2YoYnVmKSksIGJ1Zik7XFxuK1xcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcXFwiSElESU9DR1JBV1BIWVNcXFwiKTtcXG4rXFx0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xcbitcXG4rXFx0ZXJyID0gaW9jdGwoc2VsZi1cXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXVU5JUShzaXplb2YoYnVmKSksIGJ1Zik7XFxuK1xcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcXFwiSElESU9DR1JBV1VOSVFcXFwiKTtcXG4rXFx0QVNTRVJUX1NUUkVRKFxcXCJ1bmlxOmNvbWluZzpmcm9tOmJwZlxcXCIsIGJ1Zik7XFxuK1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGxpYmJwZl9wcmludF9mbihlbnVtIGxpYmJwZl9wcmludF9sZXZlbCBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXFxuaW5kZXggYjIxZmJiMTNjOTI2Zi4uYjVkOWFlYTFiZGExZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvcHJvZ3MvaGlkLmNcXG5AQCAtMjU1LDYgKzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XFxuIFxcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdyxcXG4gfTtcXG4gXFxuK1NFQyhcXFwiP3N0cnVjdF9vcHMucy9oaWRfcmRlc2NfZml4dXBcXFwiKVxcbitpbnQgQlBGX1BST0coaGlkX3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cywgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4KVxcbit7XFxuKyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXFxcXG4rXFx0X19idWlsdGluX21lbWNweSh0YXJnZXQsIHN0ciwgc2l6ZW9mKHN0cikpXFxuK1xcbitcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZW5hbWUsIFxcXCJuYW1lIGNvbWluZyBmcm9tIGJwZlxcXCIpO1xcbitcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZXVuaXEsIFxcXCJ1bmlxOmNvbWluZzpmcm9tOmJwZlxcXCIpO1xcbitcXHQvKiBoaWRfYnBmIHJlbGllcyBvbiBhIHBoeXMgYmVpbmcgYSByYW5kICUgMTAyNCAqL1xcbitcXHRmb3IgKGludCBpID0gMDsgaSBcXHUwMDNjIDQ7IGkrKykge1xcbitcXHRcXHRpZiAoIWhpZF9jdHgtXFx1MDAzZWhpZC1cXHUwMDNlcGh5c1tpXSkge1xcbitcXHRcXHRcXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVxcdTAwM2VoaWQtXFx1MDAzZXBoeXMgKyBpLCBcXFwiIHBoeXM6Y29taW5nOmZyb206YnBmXFxcIik7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuKyN1bmRlZiBISURfQlBGX0NPTkNBVFxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK1NFQyhcXFwiLnN0cnVjdF9vcHMubGlua1xcXCIpXFxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XFxuK1xcdC5oaWRfcmRlc2NfZml4dXAgPSAodm9pZCAqKWhpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMsXFxuK307XFxuK1xcbiBTRUMoXFxcIj9zdHJ1Y3Rfb3BzL2hpZF9kZXZpY2VfZXZlbnRcXFwiKVxcbiBpbnQgQlBGX1BST0coaGlkX3Rlc3RfaW5zZXJ0MSwgc3RydWN0IGhpZF9icGZfY3R4ICpoaWRfY3R4LCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB0eXBlKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxcbmluZGV4IGNkY2E5MTJmM2FmZDguLjA1Njk4NzkzNzYyYWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXFxuQEAgLTYxLDYgKzYxLDkgQEAgZW51bSBoaWRfcmVwb3J0X3R5cGUge1xcbiBcXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xcbiBcXHR1bnNpZ25lZCBpbnQgaWQ7XFxuK1xcdGNoYXIgbmFtZVsxMjhdO1xcbitcXHRjaGFyIHBoeXNbNjRdO1xcbitcXHRjaGFyIHVuaXFbNjRdO1xcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xcbiBcXG4gc3RydWN0IGJwZl93cSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU0OjQ5LjA0NTY1Njg0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUzMTUxMjgyMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZTczYzM5ZDU1NTMxOWEzNzlhODFkYmE3YzQ0NjQ2NjBiYzJiYzcwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMDg6NTQ6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMgYi9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbmluZGV4IDcwMmMyMmZhZTEzNmEuLjU2YzUzYWNhNDUxMTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNcbisrKyBiL2RyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY1xuQEAgLTYyLDYgKzYyLDEwIEBAIHN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XG4gXHR1MzIgZW5kO1xuIH07XG4gXG4rc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xuK1x0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcbit9O1xuK1xuIHN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbiBcdFx0XHRcdFx0ICAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcbiBcdFx0XHRcdFx0ICAgaW50IG9mZiwgaW50IHNpemUpXG5AQCAtODYsNiArOTAsOCBAQCBzdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRjb25zdCBjaGFyICpjdXIgPSBOVUxMO1xuIFx0aW50IGk7XG4gXG4rXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkKTtcbitcbiBcdHQgPSBidGZfdHlwZV9ieV9pZChyZWctXHUwMDNlYnRmLCByZWctXHUwMDNlYnRmX2lkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUod3JpdGVfcmFuZ2VzKTsgaSsrKSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2hpZF9icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9oaWRfYnBmLmNcbmluZGV4IGI4NTEzMzkzMDhjMjEuLjdhYjg2Mjk2ZmYyMzYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvaGlkX2JwZi5jXG5AQCAtNjcsMTQgKzY3LDE3IEBAIHN0cnVjdCB0ZXN0X3Byb2dyYW0ge1xuIFx0aW50IGluc2VydF9oZWFkO1xuIH07XG4gI2RlZmluZSBMT0FEX1BST0dSQU1TKHByb2dzKSBcXFxuLVx0bG9hZF9wcm9ncmFtcyhwcm9ncywgQVJSQVlfU0laRShwcm9ncyksIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbitcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCBmYWxzZSwgX21ldGFkYXRhLCBzZWxmLCB2YXJpYW50KVxuKyNkZWZpbmUgTE9BRF9QUk9HUkFNU19NQVlfRkFJTChwcm9ncykgXFxcbitcdGxvYWRfcHJvZ3JhbXMocHJvZ3MsIEFSUkFZX1NJWkUocHJvZ3MpLCB0cnVlLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4gI2RlZmluZSBMT0FEX0JQRiBcXFxuLVx0bG9hZF9wcm9ncmFtcyhOVUxMLCAwLCBfbWV0YWRhdGEsIHNlbGYsIHZhcmlhbnQpXG4tc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4tXHRcdFx0ICBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4tXHRcdFx0ICBzdHJ1Y3QgX190ZXN0X21ldGFkYXRhICpfbWV0YWRhdGEsXG4tXHRcdFx0ICBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuLVx0XHRcdCAgY29uc3QgRklYVFVSRV9WQVJJQU5UKGhpZF9icGYpICogdmFyaWFudClcbitcdGxvYWRfcHJvZ3JhbXMoTlVMTCwgMCwgZmFsc2UsIF9tZXRhZGF0YSwgc2VsZiwgdmFyaWFudClcbitzdGF0aWMgaW50IGxvYWRfcHJvZ3JhbXMoY29uc3Qgc3RydWN0IHRlc3RfcHJvZ3JhbSBwcm9ncmFtc1tdLFxuK1x0XHRcdCBjb25zdCBzaXplX3QgcHJvZ3NfY291bnQsXG4rXHRcdFx0IGJvb2wgbG9hZF9tYXlfZmFpbCxcbitcdFx0XHQgc3RydWN0IF9fdGVzdF9tZXRhZGF0YSAqX21ldGFkYXRhLFxuK1x0XHRcdCBGSVhUVVJFX0RBVEEoaGlkX2JwZikgKiBzZWxmLFxuK1x0XHRcdCBjb25zdCBGSVhUVVJFX1ZBUklBTlQoaGlkX2JwZikgKiB2YXJpYW50KVxuIHtcbiBcdHN0cnVjdCBicGZfbWFwICppdGVyX21hcDtcbiBcdGludCBlcnIgPSAtRUlOVkFMO1xuQEAgLTEyOCw2ICsxMzEsOSBAQCBzdGF0aWMgdm9pZCBsb2FkX3Byb2dyYW1zKGNvbnN0IHN0cnVjdCB0ZXN0X3Byb2dyYW0gcHJvZ3JhbXNbXSxcbiBcdH1cbiBcbiBcdGVyciA9IGhpZF9fbG9hZChzZWxmLVx1MDAzZXNrZWwpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgbG9hZF9tYXlfZmFpbClcbitcdFx0cmV0dXJuIGVycjtcbitcbiBcdEFTU0VSVF9PSyhlcnIpIFRIX0xPRyhcImhpZF9za2VsX2xvYWQgZmFpbGVkOiAlZFwiLCBlcnIpO1xuIFxuIFx0Zm9yIChpbnQgaSA9IDA7IGkgXHUwMDNjIHByb2dzX2NvdW50OyBpKyspIHtcbkBAIC0xNDcsNiArMTUzLDcgQEAgc3RhdGljIHZvaWQgbG9hZF9wcm9ncmFtcyhjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dyYW1zW10sXG4gXG4gXHRzZWxmLVx1MDAzZWhpZHJhd19mZCA9IG9wZW5faGlkcmF3KFx1MDAyNnNlbGYtXHUwMDNlaGlkKTtcbiBcdEFTU0VSVF9HRShzZWxmLVx1MDAzZWhpZHJhd19mZCwgMCkgVEhfTE9HKFwib3Blbl9oaWRyYXdcIik7XG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gLypcbkBAIC05MDQsMTEgKzkxMSwzOSBAQCBURVNUX0YoaGlkX2JwZiwgdGVzdF9yZGVzY19maXh1cF9nZXRfZGF0YV9vdmVyZmxvdylcbiBcdFx0eyAubmFtZSA9IFwiaGlkX3JkZXNjX2ZpeHVwX2dldF9kYXRhX292ZXJmbG93XCIgfSxcbiBcdH07XG4gXG4tXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbitcdC8qIG5ld2VyIHZlcmlmaWVyIGNhbiBkZXRlY3QgdGhlIG92ZXJmbG93IGF0IGxvYWQgdGltZSAqL1xuK1x0aWYgKExPQURfUFJPR1JBTVNfTUFZX0ZBSUwocHJvZ3MpKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRBU1NFUlRfRVEoc2VsZi1cdTAwM2Vza2VsLVx1MDAzZWJzcy1cdTAwM2VnZXRfZGF0YV9vdmVyZmxvd19jaGVjaywgMSk7XG4gfVxuIFxuK1RFU1RfRihoaWRfYnBmLCB0ZXN0X3JkZXNjX2ZpeHVwX2NoYW5nZV91bmlxX25hbWVfcGh5cylcbit7XG4rXHRjb25zdCBzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dzW10gPSB7XG4rXHRcdHsgLm5hbWUgPSBcImhpZF9yZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXNcIiB9LFxuK1x0fTtcbitcdGNoYXIgZXhwZWN0ZWRbMjU2XSwgYnVmWzI1Nl0gPSB7fTtcbitcdGludCBlcnI7XG4rXG4rXHRMT0FEX1BST0dSQU1TKHByb2dzKTtcbitcbitcdGVyciA9IGlvY3RsKHNlbGYtXHUwMDNlaGlkcmF3X2ZkLCBISURJT0NHUkFXTkFNRShzaXplb2YoYnVmKSksIGJ1Zik7XG4rXHRBU1NFUlRfR0UoZXJyLCAwKSBUSF9MT0coXCJISURJT0NHUkFXTkFNRVwiKTtcbitcdEFTU0VSVF9TVFJFUShcIm5hbWUgY29taW5nIGZyb20gYnBmXCIsIGJ1Zik7XG4rXG4rXHRzbnByaW50ZihleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSwgXCIlZCBwaHlzOmNvbWluZzpmcm9tOmJwZlwiLCBzZWxmLVx1MDAzZWhpZC5kZXZfaWQpO1xuK1xuK1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdQSFlTKHNpemVvZihidWYpKSwgYnVmKTtcbitcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcIkhJRElPQ0dSQVdQSFlTXCIpO1xuK1x0QVNTRVJUX1NUUkVRKGV4cGVjdGVkLCBidWYpO1xuK1xuK1x0ZXJyID0gaW9jdGwoc2VsZi1cdTAwM2VoaWRyYXdfZmQsIEhJRElPQ0dSQVdVTklRKHNpemVvZihidWYpKSwgYnVmKTtcbitcdEFTU0VSVF9HRShlcnIsIDApIFRIX0xPRyhcIkhJRElPQ0dSQVdVTklRXCIpO1xuK1x0QVNTRVJUX1NUUkVRKFwidW5pcTpjb21pbmc6ZnJvbTpicGZcIiwgYnVmKTtcbitcbit9XG4rXG4gc3RhdGljIGludCBsaWJicGZfcHJpbnRfZm4oZW51bSBsaWJicGZfcHJpbnRfbGV2ZWwgbGV2ZWwsXG4gXHRcdFx0ICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuaW5kZXggYjIxZmJiMTNjOTI2Zi4uYjVkOWFlYTFiZGExZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZC5jXG5AQCAtMjU1LDYgKzI1NSwzMiBAQCBzdHJ1Y3QgaGlkX2JwZl9vcHMgcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3cgPSB7XG4gXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfZ2V0X2RhdGFfb3ZlcmZsb3csXG4gfTtcbiBcbitTRUMoXCI/c3RydWN0X29wcy5zL2hpZF9yZGVzY19maXh1cFwiKVxuK2ludCBCUEZfUFJPRyhoaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgpXG4re1xuKyNkZWZpbmUgSElEX0JQRl9NRU1DUFkodGFyZ2V0LCBzdHIpIFxcXG4rXHRfX2J1aWx0aW5fbWVtY3B5KHRhcmdldCwgc3RyLCBzaXplb2Yoc3RyKSlcbitcbitcdEhJRF9CUEZfTUVNQ1BZKGhpZF9jdHgtXHUwMDNlaGlkLVx1MDAzZW5hbWUsIFwibmFtZSBjb21pbmcgZnJvbSBicGZcIik7XG4rXHRISURfQlBGX01FTUNQWShoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2V1bmlxLCBcInVuaXE6Y29taW5nOmZyb206YnBmXCIpO1xuK1x0LyogaGlkX2JwZiByZWxpZXMgb24gYSBwaHlzIGJlaW5nIGEgcmFuZCAlIDEwMjQgKi9cbitcdGZvciAoaW50IGkgPSAwOyBpIFx1MDAzYyA0OyBpKyspIHtcbitcdFx0aWYgKCFoaWRfY3R4LVx1MDAzZWhpZC1cdTAwM2VwaHlzW2ldKSB7XG4rXHRcdFx0SElEX0JQRl9NRU1DUFkoaGlkX2N0eC1cdTAwM2VoaWQtXHUwMDNlcGh5cyArIGksIFwiIHBoeXM6Y29taW5nOmZyb206YnBmXCIpO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4rXHR9XG4rXG4rI3VuZGVmIEhJRF9CUEZfQ09OQ0FUXG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rU0VDKFwiLnN0cnVjdF9vcHMubGlua1wiKVxuK3N0cnVjdCBoaWRfYnBmX29wcyByZGVzY19maXh1cF9jaGFuZ2VfdW5pcV9uYW1lX3BoeXMgPSB7XG4rXHQuaGlkX3JkZXNjX2ZpeHVwID0gKHZvaWQgKiloaWRfcmRlc2NfZml4dXBfY2hhbmdlX3VuaXFfbmFtZV9waHlzLFxuK307XG4rXG4gU0VDKFwiP3N0cnVjdF9vcHMvaGlkX2RldmljZV9ldmVudFwiKVxuIGludCBCUEZfUFJPRyhoaWRfdGVzdF9pbnNlcnQxLCBzdHJ1Y3QgaGlkX2JwZl9jdHggKmhpZF9jdHgsIGVudW0gaGlkX3JlcG9ydF90eXBlIHR5cGUpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxuaW5kZXggY2RjYTkxMmYzYWZkOC4uMDU2OTg3OTM3NjJhYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9wcm9ncy9oaWRfYnBmX2hlbHBlcnMuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL3Byb2dzL2hpZF9icGZfaGVscGVycy5oXG5AQCAtNjEsNiArNjEsOSBAQCBlbnVtIGhpZF9yZXBvcnRfdHlwZSB7XG4gXG4gc3RydWN0IGhpZF9kZXZpY2Uge1xuIFx0dW5zaWduZWQgaW50IGlkO1xuK1x0Y2hhciBuYW1lWzEyOF07XG4rXHRjaGFyIHBoeXNbNjRdO1xuK1x0Y2hhciB1bmlxWzY0XTtcbiB9IF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FjY2Vzc19pbmRleCkpO1xuIFxuIHN0cnVjdCBicGZfd3Ege1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NDkuMDQ1NjU4NTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAyMTU2MDg3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBTZXJpZXMgZm9yIEZ1bmN0aW9uYWwgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaW50cm9kdWNlcyBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCB3b3VsZCB3YXJyYW50IGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIGEgZmV3IGZpbGVzOiBgZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jYCwgYW5kIGEgZmV3IHNlbGYtdGVzdCBmaWxlcyBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AuXG5cbk15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNgLiBUaGUgZGlmZiBzaG93cyBhIG5ldyBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgIGFuZCB0aGUgdXNlIG9mIGBCVEZfVFlQRV9FTUlUYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIElzIHRoaXMgYWN0dWFsbHkgZG9pbmcgc29tZXRoaW5nLCBvciBpcyBpdCBqdXN0IG1ldGFkYXRhPyBJdCBsb29rcyBsaWtlIGl0IGlzIGVtaXR0aW5nIEJURiBpbmZvcm1hdGlvbiBmb3IgdGhpcyBuZXcgc3RydWN0dXJlLiBJIHN1c3BlY3QgdGhpcyBpcyB0byBhbGxvdyBCUEYgcHJvZ3JhbXMgdG8gc2FmZWx5IGFjY2VzcyBgaGlkX2N0eC1cdTAwM2VoaWRgLiBCdXQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzLlxuXG5Pa2F5LCByZXJlYWRpbmcgdGhlIGRpZmYsIHRoZSBvbmx5IHRoaW5nIGhhcHBlbmluZyBpbiB0aGlzIGZpbGUgaXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBuZXcgc3RydWN0IGFuZCB0aGUgYEJURl9UWVBFX0VNSVRgLiBUaGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyB0aGlzIGNoYW5nZSBhbnkgZXhlY3V0aW9uIGZsb3csIG9yIGlzIGl0IGp1c3QgdHlwZSBpbmZvcm1hdGlvbj8gYEJURl9UWVBFX0VNSVRgIGlzIGEgbWFjcm8gdGhhdCB1c3VhbGx5IHRlbGxzIHRoZSBjb21waWxlciB0byBlbWl0IEJURiBmb3IgdGhlIHR5cGUuIEl0IGlzIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBhZmZlY3QgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZHJpdmVyIGl0c2VsZi5cblxuU28sIGF0IHRoaXMgcG9pbnQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYEJURl9UWVBFX0VNSVRgIGFjdHVhbGx5IGRvZXMuIFRoZW4sIEkgY2FuIG1ha2UgYSBkZWNpc2lvbiBhcyB0byB3aGV0aGVyIHRoaXMgY29uc3RpdHV0ZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBvciBpcyBhIHNhZmUgbW9kaWZpY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTcxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTQ6NTkuMjYxMjcwNzc0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODk1MjkyNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBCVEZfVFlQRV9FTUlUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvYnRmLmgtMTMtXFxuaW5jbHVkZS9saW51eC9idGYuaDoxNDojZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSkgKCh2b2lkKSh0eXBlICopMClcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE1OiNkZWZpbmUgQlRGX1RZUEVfRU1JVF9FTlVNKGVudW1fdmFsKSAoKHZvaWQpZW51bV92YWwpXFxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MDEuMDUwODA1NzIxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU2NDc0ODQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJURiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIGAjZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSlgIG1hY3JvLi4uIGl0J3MgYSBjbGV2ZXIgdHJpY2suIE5vIGFjdHVhbCBjb2RlIGlzIGJlaW5nIGdlbmVyYXRlZCBoZXJlLCBpdCdzIGp1c3QgYSB3YXkgdG8gZm9yY2UgdGhlIEJURiBnZW5lcmF0aW9uIHRvIGluY2x1ZGUgYSB0eXBlIGRlZmluaXRpb24uIEVmZmVjdGl2ZWx5LCBpdCdzIGNhc3RpbmcgYSB6ZXJvIHRvIGEgcG9pbnRlciBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIHRoZW4gZGlzY2FyZGluZyBpdCB3aXRoIGEgdm9pZCBjYXN0LiBUaGlzIGlzIHB1cmVseSBmb3IgQlRGIG1ldGFkYXRhLiBUaGUgb3RoZXIgZmlsZSBtb2RpZmljYXRpb25zIGFyZSBsb2NhbGl6ZWQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9gLCBzbyBubyBkaXJlY3QgZnVuY3Rpb25hbCBpbXBhY3Qgb24ga2VybmVsIGV4ZWN1dGlvbi4gVGhhdCdzIGEgcmVsaWVmLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZS4uLiBkb2VzIGludHJvZHVjaW5nIGEgbmV3IHR5cGUgaW50byBCVEYgaGF2ZSBhbnkgc2lkZSBlZmZlY3RzIG9uIHRoZSB2ZXJpZmllcj8gVGhlIHZlcmlmaWVyIG1pZ2h0IHN0YXJ0IGxvb2tpbmcgdXAgYHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCBpbiB0aGUgQlRGIGRhdGEuIExldCdzIG5vdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmUgbm8gdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGF0IHN0cnVjdHVyZSwgYGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWRgLCBpcyByZWZlcmVuY2VkIGFueXdoZXJlIGVsc2Ugd2l0aGluIHRoZSBrZXJuZWwncyBjb2RlYmFzZS4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgdG8gY29uZmlybSB0aGlzIGlzIGEgc2FmZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MDcuNjE1NTU2MjMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MjE0NTcxMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM9NTg9c3RydWN0IGhpZF9icGZfb2Zmc2V0X3dyaXRlX3JhbmdlIHtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy02NC1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6NjU6c3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQge1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy02Ni1cXHRzdHJ1Y3QgaGlkX2RldmljZSAqaGlkO1xcbi0tXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jPTY5PXN0YXRpYyBpbnQgaGlkX2JwZl9vcHNfYnRmX3N0cnVjdF9hY2Nlc3Moc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05Mi1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmM6OTM6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgaGlkX2JwZl9jdHhfX3NhZmVfdHJ1c3RlZCk7XFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jLTk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTowOS4zMzcwMTgwNzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk3MTIzMzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYSBLZXJuZWwgQW5vbWFseSoqXG5cbk9rYXksIHNvIEkndmUgc3R1bWJsZWQgdXBvbiBzb21ldGhpbmcgaW4gdGhpcyBrZXJuZWwgY29kZSB0aGF0IGZlZWxzLi4uIGlzb2xhdGVkLiBUaGlzIHNuaXBwZXQgaXNuJ3QgcmVmZXJlbmNlZCBhbnl3aGVyZSBlbHNlIHdpdGhpbiB0aGUga2VybmVsJ3MgY29kZWJhc2UsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIFdoeSBpcyB0aGlzIHNwZWNpZmljIHBpZWNlIG9mIGNvZGUgaGFuZ2luZyBvdXQgaGVyZSwgYWxvbmU/IEl0J3MgbWFraW5nIG1lIHdvbmRlciBhYm91dCBpdHMgcHVycG9zZSwgYW5kIHdoZXRoZXIgaXQncyBzb21laG93IHJlZHVuZGFudCBvciwgd29yc2UsIGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuXG5cblRoZW4sIGEgdGhvdWdodCBzcGFya3MgLSB3YWl0IGEgc2Vjb25kLCBkb2Vzbid0IHRoZSB2ZXJpZmllciwgaW4gaXRzIGNoZWNrcywgaGF2ZSBzb21lIGtpbmQgb2YgbWVjaGFuaXNtIGZvciBpZGVudGlmeWluZyBzcGVjaWZpYyB0eXBlcyB0aGF0IGVuZCBpbiBzb21ldGhpbmcgbGlrZSBgX19zYWZlX3RydXN0ZWRgPyBJIHNlZW0gdG8gcmVjYWxsIGEgZmVhdHVyZSBkZXNpZ25lZCB0byBoYW5kbGUgdHJ1c3RlZCBjb2RlIG9yIGRhdGEuIFBlcmhhcHMgdGhpcyBjb2RlIGlzIHJlbGF0ZWQgdG8gdGhhdC5cblxuUmlnaHQsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBodW5jaC4gTGV0J3MgZGl2ZSBpbnRvIHRoZSB2ZXJpZmllciBjb2RlIGFuZCBzZWUgaWYgdGhlcmUncyBhbnkgbG9naWMgc3BlY2lmaWNhbGx5IGdlYXJlZCB0b3dhcmRzIHRoZXNlIGtpbmRzIG9mIHR5cGUgbmFtaW5nIGNvbnZlbnRpb25zLiBIb3BlZnVsbHksIHRoYXQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIHJlYXNvbiB0aGlzIHNlZW1pbmdseSBvcnBoYW5lZCBjb2RlIGV4aXN0cyBhbmQgd2h5IGl0J3Mgc3RydWN0dXJlZCB0aGUgd2F5IGl0IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjE3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MTMuMTM0MTQzNDQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MjYxNjQwNTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19zYWZlX3RydXN0ZWRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jPTU4PXN0cnVjdCBoaWRfYnBmX29mZnNldF93cml0ZV9yYW5nZSB7XFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjQtXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjY1OnN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkIHtcXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtNjYtXFx0c3RydWN0IGhpZF9kZXZpY2UgKmhpZDtcXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYz02OT1zdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtOTItXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjkzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05NC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01NTczPWludCBicGZfbWFwX2RpcmVjdF9yZWFkKHN0cnVjdCBicGZfbWFwICptYXAsIGludCBvZmYsIGludCBzaXplLCB1NjQgKnZhbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NjA1LSNkZWZpbmUgQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChfX3R5cGUpICBfX1BBU1RFKF9fdHlwZSwgX19zYWZlX3JjdV9vcl9udWxsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjA2OiNkZWZpbmUgQlRGX1RZUEVfU0FGRV9UUlVTVEVEKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTYwNzojZGVmaW5lIEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKF9fdHlwZSkgIF9fUEFTVEUoX190eXBlLCBfX3NhZmVfdHJ1c3RlZF9vcl9udWxsKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NjA4LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcXHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXFxcIl9fc2FmZV90cnVzdGVkXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI5LVxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzMwOlxcdFxcdFxcdFxcdFxcdCAgXFxcIl9fc2FmZV90cnVzdGVkX29yX251bGxcXFwiKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTczMS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjE0LjY2MDMxMzc3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwOTI1OTkzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgQlRGLURyaXZlbiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gIEl0J3MgdGhhdCBgX19zYWZlX3RydXN0ZWRgIHN1ZmZpeCB0cmljayEgIFJpZ2h0LCB0aGUgdmVyaWZpZXIgdXNlcyB0aGF0IHRvIGRldGVybWluZSBpZiBhIGZpZWxkIGlzIGNvbnNpZGVyZWQgdHJ1c3RlZC4gU28sIGFkZGluZyBgc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQgeyBzdHJ1Y3QgaGlkX2RldmljZSAqaGlkOyB9O2AgYW5kIGVtaXR0aW5nIGl0IGlzIHRoZSBjcnV4IG9mIGl0LiAgVGhpcyBtZWFucyB0aGUgdmVyaWZpZXIgKm5vdyogY29uc2lkZXJzIGBoaWRfY3R4LVx1MDAzZWhpZGAgYSB0cnVzdGVkIHBvaW50ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkZ1bmN0aW9uYWxseSwgaXMgdGhpcyBhIGNoYW5nZT9cIlxuXG5ZZXMsIGFic29sdXRlbHkuIEl0ICpjaGFuZ2VzKiB0aGUgdmVyaWZpZXIncyBiZWhhdmlvci4gIEJQRiBwcm9ncmFtcyBjYW4gbm93IGdldCBsb2FkZWQgdGhhdCB3ZXJlIHByZXZpb3VzbHkgYmxvY2tlZC4gIEJ1dCBoZXJlJ3Mgd2hlcmUgbXkgZXhwZXJ0aXNlIHJlYWxseSBraWNrcyBpbjogZG9lcyBpdCBjaGFuZ2Uga2VybmVsICpleGVjdXRpb24qIGluIGEgd2F5IHRoYXQgd2FycmFudHMgZnV6emluZz8gVGhlIHZlcmlmaWVyIGl0c2VsZiBpc27igJl0IHRvdWNoZWQgKGNvZGUtd2lzZSksIG9ubHkgdGhlIEJURiBkYXRhIGZvciBgaGlkX2JwZl9jdHhgIGNoYW5nZXMuXG5cbldhaXQgYSBzZWMsIHRoZSB2ZXJpZmllciAqaXMqIGZ1enplZC4gIEJ5IGFkZGluZyB0aGlzIEJURiB0eXBlLCB3ZSdyZSBleHBvc2luZyBhIG5ldyB0cnVzdGVkIHBvaW50ZXIgdG8gQlBGIHByb2dyYW1zLiAgQ3J1Y2lhbGx5LCB0aGVyZSdzICpubyogbmV3IEMgY29kZS4gIEl0J3MganVzdCB0aGF0IGBCVEZfVFlQRV9FTUlUYCBsaW5lIOKAkyBhIHR5cGUgZGVmaW5pdGlvbi4gVGhlIGtlcm5lbCdzICpleGVjdXRpb24gZmxvdyogZG9lc24ndCBmdW5kYW1lbnRhbGx5IGNoYW5nZSwgb3RoZXIgdGhhbiB0aGUgdmVyaWZpZXIgYWNjZXB0aW5nIHRoZSBCUEYgcHJvZ3JhbXMuICBUaGVyZSdzIG5vIG5ldyBrZXJuZWwgbG9naWMgdG8gdGFyZ2V0IHdpdGggZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpc21pc3MgaXQuIEJ1dCwgd2FpdC4gSWYgYSBCUEYgcHJvZ3JhbSBjYW4gbm93ICpwYXNzKiBgaGlkX2N0eC1cdTAwM2VoaWRgIHRvIGEgaGVscGVyIGZ1bmN0aW9uLCBpdCBjb3VsZCB0cmlnZ2VyIGJ1Z3MgKndpdGhpbiogdGhhdCBoZWxwZXIuIEJ1dCB0aGUgaGVscGVyIGlzIGFscmVhZHkgZnV6emVkLiBTbywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1xuXG5UaGUgcHJvbXB0IHN0YXRlczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOiAuLi4gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyAuLi4gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlwiXG5cblRoaXMgaXMsIHRlY2huaWNhbGx5LCBhIGNoYW5nZSB0byBCVEYgZGF0YSBhbmQgaXQgYWx0ZXJzIHRoZSB2ZXJpZmllcidzIGV4ZWN1dGlvbiBmbG93LiBUaGUgdmVyaWZpZXIgd2lsbCBub3cgcmV0dXJuIHRydWUgZm9yIGB0eXBlX2lzX3RydXN0ZWRgLiAgQnV0Li4ubm8gbmV3IGZ1bmN0aW9ucyBvciBjb2RlLiBMZXQgbWUgY2hlY2sgYGJ0Zl9uZXN0ZWRfdHlwZV9pc190cnVzdGVkYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjEyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjI1LjU4NjMxMDYxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNzgzMTkzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oPTMxODA9c3RydWN0IGJwZl9jb3JlX2N0eCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxODQtXFxuaW5jbHVkZS9saW51eC9icGYuaDozMTg1OmJvb2wgYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTMxODYtXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmM9OTY3ND1pbnQgYnBmX2NvcmVfYXBwbHkoc3RydWN0IGJwZl9jb3JlX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgYnBmX2NvcmVfcmVsbyAqcmVsbyxcXG4tLVxcbmtlcm5lbC9icGYvYnRmLmMtOTc1Mi1cXG5rZXJuZWwvYnBmL2J0Zi5jOjk3NTM6Ym9vbCBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvYnRmLmMtOTc1NC1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU2ODY9c3RhdGljIGJvb2wgdHlwZV9pc19yY3Uoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1Njk1OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcXFwiX19zYWZlX3JjdVxcXCIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01Njk2LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzA1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzA2OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLCBcXFwiX19zYWZlX3JjdV9vcl9udWxsXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDctfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MDk9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTcxNy1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxODpcXHRyZXR1cm4gYnRmX25lc3RlZF90eXBlX2lzX3RydXN0ZWQoXFx1MDAyNmVudi1cXHUwMDNlbG9nLCByZWcsIGZpZWxkX25hbWUsIGJ0Zl9pZCwgXFxcIl9fc2FmZV90cnVzdGVkXFxcIik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MTktfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzI5OlxcdHJldHVybiBidGZfbmVzdGVkX3R5cGVfaXNfdHJ1c3RlZChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHJlZywgZmllbGRfbmFtZSwgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzMwLVxcdFxcdFxcdFxcdFxcdCAgXFxcIl9fc2FmZV90cnVzdGVkX29yX251bGxcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMDg6NTU6MjcuMjI0MTUxODE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDY4OTAzMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gdGhpcyBjaGFuZ2UgYm9pbHMgZG93biB0byBhZGRpbmcgYSBCVEYgdHlwZSwgYHN0cnVjdCBoaWRfYnBmX2N0eF9fc2FmZV90cnVzdGVkYCwgd2hpY2ggbGV0cyBCUEYgcHJvZ3JhbXMgdHJ1c3QgYGhpZF9jdHgtXHUwMDNlaGlkYCBhcyBhIHZhbGlkIHBvaW50ZXIuIE5vIG5ldyBrZXJuZWwsIGRyaXZlciwgb3IgYXJjaGl0ZWN0dXJlIGNvZGUgaXMgYmVpbmcgaW50cm9kdWNlZCBoZXJlIOKAkyB0aGF0J3MgYSBnb29kIHNpZ24uIFRoZSBhY3R1YWwgY29kZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMgd2l0aGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvYCBhbmQgdGhlIEJURiB0eXBlIGVtaXNzaW9uIGluIGBkcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmNgLlxuXG5NeSBpbml0aWFsIGluc3RpbmN0LCBnaXZlbiB0aGUgbGFjayBvZiBuZXcgZXhlY3V0YWJsZSBrZXJuZWwgbG9naWMsIGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSG93ZXZlciwgSSBuZWVkIHRvIGNvbnNpZGVyIGlmIHRoaXMgQlRGIGNoYW5nZSAqaW5kaXJlY3RseSogaW50cm9kdWNlcyBhIHBvdGVudGlhbCBjcmFzaCBwYXRoIHZpYSB0aGUgdmVyaWZpZXIuIENvdWxkIGEgbWFsaWNpb3VzIEJQRiBwcm9ncmFtIGxldmVyYWdlIHRoaXMgbmV3IHR5cGUgdG8gZG8gc29tZXRoaW5nIGJhZCBpZiBgaGlkX2N0eC1cdTAwM2VoaWRgIGlzbid0IGFjdHVhbGx5IHNhZmUgaW4gYSBnaXZlbiBjb250ZXh0PyBUaGF0J3MgYSBsZWdpdGltYXRlIGNvbmNlcm4uXG5cblRoZSBnb29kIG5ld3MgaXMgc3l6a2FsbGVyIGlzIGFscmVhZHkgZnV6emluZyBCUEYgcHJvZ3JhbXMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBwaWNrIHVwIHRoaXMgbmV3IEJURiB0eXBlIGFuZCBsaWtlbHkgdHJ5IHRvIGV4cGxvaXQgaXQuIEkgZG9uJ3Qgc2VlIGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRvIGZvY3VzIGZ1enppbmcgb24sIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgaXMgc3RydWN0dXJhbCwgbm90IGZ1bmN0aW9uYWwuIEknbSBtb2RpZnlpbmcgYGRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuY2AsIHNwZWNpZmljYWxseSBieSBhZGRpbmcgYSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBhbmQgYSBtYWNyby4gSXQncyBhIGRyaXZlciBtb2RpZmljYXRpb24sIGJ1dCBpdCdzIG5vdCBhZGRpbmcgYW55IG5ldyBleGVjdXRhYmxlIGNvZGUuXG5cbkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgdGhvdWdoOiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgYEJURl9UWVBFX0VNSVRgICpkb2Vzbid0KiBpbnRyb2R1Y2UgYW55IGtpbmQgb2YgZXhlY3V0YWJsZSBjb2RlLiBJZiBpdCBkb2Vzbid0LCBJIHRoaW5rIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEdpdmVuIHRoZSBleGlzdGluZyBCUEYgZnV6emluZyBjYXBhYmlsaXRpZXMgb2Ygc3l6a2FsbGVyLCBpdCBzZWVtcyB1bmxpa2VseSB0aGlzIEJURiBjaGFuZ2UgYWxvbmUgd2FycmFudHMgYWRkaXRpb25hbCBmdXp6aW5nIGVmZm9ydC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA2OSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTozMy43NzEwNDQ1NDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTMzMTI1NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlRGX1RZUEVfRU1JVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0PTExMD1pcyBlbWl0dGVkIGluIHRoZSBgYHR5cGVfaXNfdHJ1c3RlZCgpYGAgZnVuY3Rpb24gYXMgZm9sbG93czpcXG4tLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3QtMTEzLVxcbkRvY3VtZW50YXRpb24vYnBmL2tmdW5jcy5yc3Q6MTE0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBzb2NrZXQpKTtcXG5Eb2N1bWVudGF0aW9uL2JwZi9rZnVuY3MucnN0LTExNS1cXG4tLVxcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYz02OT1zdGF0aWMgaW50IGhpZF9icGZfb3BzX2J0Zl9zdHJ1Y3RfYWNjZXNzKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxuLS1cXG5kcml2ZXJzL2hpZC9icGYvaGlkX2JwZl9zdHJ1Y3Rfb3BzLmMtOTItXFxuZHJpdmVycy9oaWQvYnBmL2hpZF9icGZfc3RydWN0X29wcy5jOjkzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGhpZF9icGZfY3R4X19zYWZlX3RydXN0ZWQpO1xcbmRyaXZlcnMvaGlkL2JwZi9oaWRfYnBmX3N0cnVjdF9vcHMuYy05NC1cXG4tLVxcbmluY2x1ZGUvbGludXgvYnBmLmg9MjE5Mz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdHJhY2luZ19tdWx0aShlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9icGYuaC0yMjA5LVxcdFxcdH07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvYnBmLmg6MjIxMDpcXHRcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfc3RydWN0X29wc18jI3R5cGUpO1xcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2JwZi5oLTIyMTEtXFx0XFx0X19yZWdpc3Rlcl9icGZfc3RydWN0X29wcyhzdF9vcHMpO1xcdFxcdFxcdFxcXFxcXG4tLVxcbmluY2x1ZGUvbGludXgvYnRmLmgtMTMtXFxuaW5jbHVkZS9saW51eC9idGYuaDoxNDojZGVmaW5lIEJURl9UWVBFX0VNSVQodHlwZSkgKCh2b2lkKSh0eXBlICopMClcXG5pbmNsdWRlL2xpbnV4L2J0Zi5oOjE1OiNkZWZpbmUgQlRGX1RZUEVfRU1JVF9FTlVNKGVudW1fdmFsKSAoKHZvaWQpZW51bV92YWwpXFxuaW5jbHVkZS9saW51eC9idGYuaC0xNi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTExODM9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGJwZl90aW1lcl9jYihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcilcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTExOTEtXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6MTE5MjpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfdGltZXIpO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTExOTMtXFx0Y2FsbGJhY2tfZm4gPSByY3VfZGVyZWZlcmVuY2VfY2hlY2sodC1cXHUwMDNlY2IuY2FsbGJhY2tfZm4sIHJjdV9yZWFkX2xvY2tfYmhfaGVsZCgpKTtcXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTEyMTU9c3RhdGljIHZvaWQgYnBmX3dxX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTIyNC1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzoxMjI1OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl93cSk7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTIyNi1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTE4NjE9QlBGX0NBTExfNChicGZfZHlucHRyX2Zyb21fbWVtLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSwgdTY0LCBmbGFncywgc3RydWN0IGJwZl9keW5wdHJfa2VybiAqLCBwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYy0xODY0LVxcbmtlcm5lbC9icGYvaGVscGVycy5jOjE4NjU6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgYnBmX2R5bnB0cik7XFxua2VybmVsL2JwZi9oZWxwZXJzLmMtMTg2Ni1cXG4tLVxcbmtlcm5lbC9icGYvaGVscGVycy5jPTQ1OTY9c3RhdGljIGludCBicGZfdGFza193b3JrX3NjaGVkdWxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IGJwZl90YXNrX3dvcmsgKnR3LFxcbi0tXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDYwMy1cXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0NjA0OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl90YXNrX3dvcmspO1xcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ2MDUtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTY4Nj1zdGF0aWMgYm9vbCB0eXBlX2lzX3JjdShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU2ODkte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjkwOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IHRhc2tfc3RydWN0KSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTE6XFx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1JDVShzdHJ1Y3QgY2dyb3VwKSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU2OTI6XFx0QlRGX1RZUEVfRU1JVChCVEZfVFlQRV9TQUZFX1JDVShzdHJ1Y3QgY3NzX3NldCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NjkzOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1Uoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTY5NC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz01Njk4PXN0YXRpYyBib29sIHR5cGVfaXNfcmN1X29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzAxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcwMjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfUkNVX09SX05VTEwoc3RydWN0IG1tX3N0cnVjdCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzAzOlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3Qgc2tfYnVmZikpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzA0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9SQ1VfT1JfTlVMTChzdHJ1Y3QgcmVxdWVzdF9zb2NrKSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTU3MDUtXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NTcwOT1zdGF0aWMgYm9vbCB0eXBlX2lzX3RydXN0ZWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzEyLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxMzpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE0OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBicGZfaXRlcl9fdGFzaykpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1NzE1OlxcdEJURl9UWVBFX0VNSVQoQlRGX1RZUEVfU0FGRV9UUlVTVEVEKHN0cnVjdCBsaW51eF9iaW5wcm0pKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcxNjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRChzdHJ1Y3QgZmlsZSkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzE3LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTU3MjE9c3RhdGljIGJvb2wgdHlwZV9pc190cnVzdGVkX29yX251bGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI0LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNTpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBzb2NrZXQpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNjpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCBkZW50cnkpKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NTcyNzpcXHRCVEZfVFlQRV9FTUlUKEJURl9UWVBFX1NBRkVfVFJVU1RFRF9PUl9OVUxMKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCkpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01NzI4LVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTc2MTI9c3RhdGljIGludCBwcm9jZXNzX2l0ZXJfbmV4dF9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBpbnNuX2lkeCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03NjE4LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo3NjE5OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl9pdGVyKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzYyMC1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTc3MT1pbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc3OC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3Nzk6XFx0QlRGX1RZUEVfRU1JVChlbnVtIGJwZl9mZWF0dXJlcyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzgwLVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NzQ0OT11MzIgYnBmX3RjcF9zb2NrX2NvbnZlcnRfY3R4X2FjY2VzcyhlbnVtIGJwZl9hY2Nlc3NfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNzQ3OC1cXG5uZXQvY29yZS9maWx0ZXIuYzo3NDc5OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IGJwZl90Y3Bfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtNzQ4MC1cXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTc2NDM9dTMyIGJwZl94ZHBfc29ja19jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NTgtXFxubmV0L2NvcmUvZmlsdGVyLmM6NzY1OTpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCBicGZfeGRwX3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTc2NjAtXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz04NjAwPXhkcF9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtODY2Ni1cXHQgKi9cXG5uZXQvY29yZS9maWx0ZXIuYzo4NjY3OlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IG5mX2Nvbm5fX19pbml0KTtcXG5uZXQvY29yZS9maWx0ZXIuYy04NjY4LSNlbmRpZlxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTIwMzk9QlBGX0NBTExfMShicGZfc2tjX3RvX3RjcDZfc29jaywgc3RydWN0IHNvY2sgKiwgc2spXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjA0My1cXHQgKi9cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA0NDpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB0Y3A2X3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMDQ1LVxcdGlmIChzayBcXHUwMDI2XFx1MDAyNiBza19mdWxsc29jayhzaykgXFx1MDAyNlxcdTAwMjYgc2stXFx1MDAzZXNrX3Byb3RvY29sID09IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjA3Nj1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdGNwX3RpbWV3YWl0X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwODAtXFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTIwODE6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrKTtcXG5uZXQvY29yZS9maWx0ZXIuYzoxMjA4MjpcXHRCVEZfVFlQRV9FTUlUKHN0cnVjdCB0Y3BfdGltZXdhaXRfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIwODMtXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjEyOD1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fdWRwNl9zb2NrLCBzdHJ1Y3Qgc29jayAqLCBzaylcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTMyLVxcdCAqL1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTMzOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IHVkcDZfc29jayk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxMzQtXFx0aWYgKHNrIFxcdTAwMjZcXHUwMDI2IHNrX2Z1bGxzb2NrKHNrKSBcXHUwMDI2XFx1MDAyNiBzay1cXHUwMDNlc2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyMTQ5PUJQRl9DQUxMXzEoYnBmX3NrY190b191bml4X3NvY2ssIHN0cnVjdCBzb2NrICosIHNrKVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxNTMtXFx0ICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTIxNTQ6XFx0QlRGX1RZUEVfRU1JVChzdHJ1Y3QgdW5peF9zb2NrKTtcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjE1NS1cXHRpZiAoc2sgXFx1MDAyNlxcdTAwMjYgc2tfaXNfdW5peChzaykpXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjE2OT1CUEZfQ0FMTF8xKGJwZl9za2NfdG9fbXB0Y3Bfc29jaywgc3RydWN0IHNvY2sgKiwgc2spXFxubmV0L2NvcmUvZmlsdGVyLmMtMTIxNzAte1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyMTcxOlxcdEJURl9UWVBFX0VNSVQoc3RydWN0IG1wdGNwX3NvY2spO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyMTcyLVxcdHJldHVybiAodW5zaWduZWQgbG9uZylicGZfbXB0Y3Bfc29ja19mcm9tX3N1YmZsb3coc2spO1xcbi0tXFxubmV0L2lwdjQvdGNwLmM9Mjk2MD12b2lkIHRjcF9zZXRfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCBpbnQgc3RhdGUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0yOTk0LVxcdCAqL1xcbm5ldC9pcHY0L3RjcC5jOjI5OTU6XFx0QlRGX1RZUEVfRU1JVF9FTlVNKEJQRl9UQ1BfRVNUQUJMSVNIRUQpO1xcbm5ldC9pcHY0L3RjcC5jLTI5OTYtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9rbW9kcy9icGZfdGVzdG1vZC5jPTM1Nz1icGZfdGVzdG1vZF90ZXN0X2J0Zl90eXBlX3RhZ191c2VyXzEoc3RydWN0IGJwZl90ZXN0bW9kX2J0Zl90eXBlX3RhZ18xIF9fdXNlciAqYXJnKSB7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3Rfa21vZHMvYnBmX3Rlc3Rtb2QuYzozNTg6XFx0QlRGX1RZUEVfRU1JVChmdW5jX3Byb3RvX3R5cGVkZWYpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzU5OlxcdEJURl9UWVBFX0VNSVQoZnVuY19wcm90b190eXBlZGVmX25lc3RlZDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmM6MzYwOlxcdEJURl9UWVBFX0VNSVQoZnVuY19wcm90b190eXBlZGVmX25lc3RlZDIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X2ttb2RzL2JwZl90ZXN0bW9kLmMtMzYxLVxcdHJldHVybiBhcmctXFx1MDAzZWE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDA4OjU1OjM1LjM2NDM2MTUwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODMyNTUxODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IEZhbHNlKipcblxuT2theSwgc28gYEJURl9UWVBFX0VNSVRgIGlzIHNpbXBseSBhIGRpcmVjdGl2ZSwgYSBoaW50IHRvIHRoZSBjb21waWxlciB0byAqaW5jbHVkZSogdGhlIEJURiAoQlBGIFR5cGUgRm9ybWF0KSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyB0eXBlLiBJdCBkb2Vzbid0IGFjdHVhbGx5IHByb2R1Y2UgYW55ICpleGVjdXRhYmxlKiBjb2RlIG9uIGl0cyBvd24uIFRoaXMgcGF0Y2gganVzdCBpbnRyb2R1Y2VzIHRoaXMgQlRGIHR5cGUgZGVmaW5pdGlvbiBhbmQgc29tZSBjb3JyZXNwb25kaW5nIHNlbGYtdGVzdHMuIFRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBnb2luZyB0byBhZmZlY3QgdGhlIGNvcmUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIGtlcm5lbC4gWmVybyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gZnV6ei5cblxuTGV0J3MgcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgY3JpdGVyaWEgdG8gYmUgc3VyZS4gVGhlIHByb21wdCBzYXlzIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluc+KAplwiIGFuZCB0aGVuIGxpc3RzIGEgYnVuY2ggb2Ygc2NlbmFyaW9zLiBMb29raW5nIGF0IHRob3NlIHNjZW5hcmlvcyBhZ2Fpbi4uLiB0aGlzIGlzIGRlYWQgc2ltcGxlLiBUaGlzIHBhdGNoIGlzIGp1c3QgYWRkaW5nIGEgc3RydWN0IGRlZmluaXRpb24gYW5kIHRoYXQgYEJURl9UWVBFX0VNSVRgIG1hY3JvIGNhbGwsIHdoaWNoIGhhcyBubyBmdW5jdGlvbmFsIGltcGFjdC4gVGhlIHJlc3Qgb2YgdGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2AuIEl0IGNsZWFybHkgZmFsbHMgdW5kZXIgdGhhdCBjYXRlZ29yeSBvZiBjaGFuZ2VzIHRoYXQgZG9uJ3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFllcCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIFdvcnRoRnV6emluZz1mYWxzZSBpcyBzcG90IG9uLiBHb29kIHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzE3NSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTo0Mi4xOTY5MTYzODRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBCVEYgdHlwZSBkZWZpbml0aW9uIGFuZCBhIEJURl9UWVBFX0VNSVQgbWFjcm8gY2FsbCBpbiB0aGUga2VybmVsIGNvZGUsIHdoaWNoIGRvZXMgbm90IGdlbmVyYXRlIGFueSBleGVjdXRhYmxlIGNvZGUgb3IgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy4gVGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byBzZWxmdGVzdHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQwODo1NTo0Mi4xOTY5NDA2NTNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxqtkm[1] Phase: Running StartedAt: 2026-08-25 08:55:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxqtkm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-25 08:55:52 +0000 UTC FinishedAt: 2026-08-25 08:55:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}