Name: series-workflowvzgbh Phase: Failed StartedAt: 2026-09-08 16:19:11 +0000 UTC FinishedAt: 2026-09-08 17:00:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzgbh[0] Phase: Succeeded StartedAt: 2026-09-08 16:19:11 +0000 UTC FinishedAt: 2026-09-08 17:00:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzgbh[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 16:19:11 +0000 UTC FinishedAt: 2026-09-08 17:00:48 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM1MjNiOTRlNjRkNGRkZTUyYjliNTQ4Y2IxYzZkYzJjYWY5OWNjNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjAwOjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcbmluZGV4IGEwZDcyNTkyM2VmMjQuLjQwODk1ZDI3NmRlNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcbkBAIC03MDksNiAmIzQzOzcwOSwxMSBAQCBzdHJ1Y3QgYXRoMTFrIHtcbiBcdCAqL1xuIFx0c3BpbmxvY2tfdCBkYXRhX2xvY2s7XG4gXG4mIzQzO1x0Lyogc2VyaWFsaXNlcyBvbmUgc2NoZWR1bGluZyByb3VuZCBwZXIgYWNjZXNzIGNhdGVnb3J5IGFnYWluc3QgdGhlXG4mIzQzO1x0ICogb3RoZXIgY29udGV4dHMgdGhhdCBkcml2ZSBpdFxuJiM0MztcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3QgdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuJiM0MztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgYXJ2aWZzO1xuIFx0Lyogc2hvdWxkIG5ldmVyIGJlIE5VTEw7IG5lZWRlZCBmb3IgcmVndWxhciBodHQgcnggKi9cbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqcnhfY2hhbm5lbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXG5pbmRleCA3MDkyMjYxMmQzZmI5Li5mZmUxZjQ2NmFlZmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXG5AQCAtNzE0LDYgJiM0Mzs3MTQsMTYgQEAgc3RhdGljIHNzaXplX3QgYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0IFwmIzM0O1xcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZzb2Nfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuIFxuJiM0MztcdC8qIERlc2NyaXB0b3JzIHRoZSBoYXJkd2FyZSBoYXMgbm90IGNvbXBsZXRlZC4gKi9cbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5QZW5kaW5nIFR4IE1TRFVzOlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlbnVtX3JhZGlvczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBhdGgxMWsgKmFyID0gYWItXHUwMDNlcGRldnNbaV0uYXI7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGFyKVxuJiM0MztcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtyYWRpbyVkOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBpLCBhdG9taWNfcmVhZChcdTAwMjZhci1cdTAwM2VkcC5udW1fdHhfcGVuZGluZykpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRsZW4gJiM0Mzs9IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX3JpbmdfYnBfc3RhdHMoYWIsIGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2Ugc2l6ZSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTc4Myw4ICYjNDM7NzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChCSVQoYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNldGNsMndibV9yYm1fbWFwW2ldLndibV9yaW5nX251bSkgXHUwMDI2XG4tXHRcdCAgICBhYi1cdTAwM2Vod19wYXJhbXMucmluZ19tYXNrLVx1MDAzZXR4W2dycF9pZF0pXG4tXHRcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSk7XG4mIzQzO1x0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKSB7XG4mIzQzO1x0XHRcdHdvcmtfZG9uZSA9XG4mIzQzO1x0XHRcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSwgYnVkZ2V0KTtcbiYjNDM7XHRcdFx0YnVkZ2V0IC09IHdvcmtfZG9uZTtcbiYjNDM7XHRcdFx0dG90X3dvcmtfZG9uZSAmIzQzOz0gd29ya19kb25lO1xuJiM0MztcdFx0XHRpZiAoYnVkZ2V0IFx1MDAzYz0gMClcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2VyeF9lcnJbZ3JwX2lkXSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuaW5kZXggMzM0MjU3MDdjMDg0Mi4uYTdiOWJiMjk1NzI4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jXG5AQCAtMTM3Nyw2ICYjNDM7MTM3Nyw3IEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsXG4gXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XG4gXHR1MzIgdHhfZHVyYXRpb24gPSAwO1xuIFx0dTggdGlkID0gSFRUX1BQRFVfU1RBVFNfTk9OX1FPU19USUQ7XG4mIzQzO1x0dTggYWlydGltZV90aWQ7XG4gXHRib29sIGlzX2FtcGR1ID0gZmFsc2U7XG4gXG4gXHRpZiAoISh1c3Jfc3RhdHMtXHUwMDNldGx2X2ZsYWdzIFx1MDAyNiBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpXG5AQCAtMTQ4NSw2ICYjNDM7MTQ4NiwyMiBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxuIFxuIFx0YXJzdGEtXHUwMDNldHhyYXRlLmJ3ID0gYXRoMTFrX21hY19id190b19tYWM4MDIxMV9idyhidyk7XG4gXHRhcnN0YS1cdTAwM2V0eF9kdXJhdGlvbiAmIzQzOz0gdHhfZHVyYXRpb247XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBhY2svQkEgc3RhdHVzIFRMViBuYW1lcyB0aGUgVElEIG9ubHkgZm9yIGEgUFBEVSB0aGF0IGRyZXcgYVxuJiM0MztcdCAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRhaXJ0aW1lX3RpZCA9IHRpZDtcbiYjNDM7XHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHVzcl9zdGF0cy1cdTAwM2V0bHZfZmxhZ3MgXHUwMDI2IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX0NPTVBMVE5fQ09NTU9OKSlcbiYjNDM7XHRcdGFpcnRpbWVfdGlkID0gdXNyX3N0YXRzLVx1MDAzZWNtcGx0bl9jbW4udGlkX251bTtcbiYjNDM7XHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4mIzQzO1x0XHRhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS1cdTAwM2V0aWRfbnVtO1xuJiM0MztcdGlmIChhaXJ0aW1lX3RpZCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fVElEUylcbiYjNDM7XHRcdGFpcnRpbWVfdGlkID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHR4X2R1cmF0aW9uKVxuJiM0MztcdFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTtcbiYjNDM7XG4gXHRtZW1jcHkoXHUwMDI2YXJzdGEtXHUwMDNlbGFzdF90eHJhdGUsIFx1MDAyNmFyc3RhLVx1MDAzZXR4cmF0ZSwgc2l6ZW9mKHN0cnVjdCByYXRlX2luZm8pKTtcbiBcbiBcdC8qIFBQRFUgc3RhdHMgcmVwb3J0ZWQgZm9yIG1nbXQgcGFja2V0IGRvZXNuJiMzOTt0IGhhdmUgdmFsaWQgdHggYnl0ZXMuXG5AQCAtNTI1Myw2ICYjNDM7NTI3MCw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0c3RydWN0IGF0aDExa19wZWVyICpwZWVyO1xuIFx0c3RydWN0IGF0aDExa19zdGEgKmFyc3RhO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXHRpbnQgbnVtX2J1ZmZzX3JlYXBlZCA9IDA7XG4gXHR1MzIgcnhfYnVmX3N6O1xuIFx0dTE2IGxvZ190eXBlO1xuQEAgLTUzMDcsNiAmIzQzOzUzMjUsNyBAQCBpbnQgYXRoMTFrX2RwX3J4X3Byb2Nlc3NfbW9uX3N0YXR1cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgbWFjX2lkLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRzdGEgPSBOVUxMO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhYi1cdTAwM2ViYXNlX2xvY2spO1xuIFx0XHRwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLVx1MDAzZXBlZXJfaWQpO1xuQEAgLTUzMjAsMTIgJiM0Mzs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXG4gXHRcdGFyc3RhID0gYXRoMTFrX3N0YV90b19hcnN0YShwZWVyLVx1MDAzZXN0YSk7XG4gXHRcdGF0aDExa19kcF9yeF91cGRhdGVfcGVlcl9zdGF0cyhhcnN0YSwgcHBkdV9pbmZvKTtcbiYjNDM7XHRcdHN0YSA9IHBlZXItXHUwMDNlc3RhO1xuIFxuIFx0XHRpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItXHUwMDNlYWRkcikpXG4gXHRcdFx0dHJhY2VfYXRoMTFrX2h0dF9yeGRlc2MoYXIsIHNrYi1cdTAwM2VkYXRhLCBsb2dfdHlwZSwgcnhfYnVmX3N6KTtcbiBcbiBuZXh0X3NrYjpcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWItXHUwMDNlYmFzZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgYWlydGltZSBhIHN0YXRpb24gc3BlbmRzIHRyYW5zbWl0dGluZyBpcyB0YWtlbiBmcm9tXG4mIzQzO1x0XHQgKiB0aGUgb3RoZXJzLCBzbyBpdHMgZGVmaWNpdCBpcyBjaGFyZ2VkIGZvciBpdCB0b28sIHdpdGggdGhlXG4mIzQzO1x0XHQgKiBkdXJhdGlvbiB0aGUgaGFyZHdhcmUgbWVhc3VyZWQgZm9yIHRoZSB3aG9sZSBQUERVLCBhcyBvblxuJiM0MztcdFx0ICogdGhlIHRyYW5zbWl0IHNpZGUuIFRoZSBUTFYgdGhhdCBuYW1lcyB0aGUgVElEIGlzIG5vdCBpblxuJiM0MztcdFx0ICogdGhlIGRlZmF1bHQgbW9uaXRvciBzdGF0dXMgZmlsdGVyLCBzbyB0aGUgY2hhcmdlIGdvZXMgdG9cbiYjNDM7XHRcdCAqIEJFLiBPdXRzaWRlIGJhc2VfbG9jaywgd2hpY2ggdHggY29tcGxldGlvbiBjb250ZW5kcyBmb3I7XG4mIzQzO1x0XHQgKiBzdGEgaXMgaGVsZCBieSB0aGUgcmN1IHJlYWQgbG9jay5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKVxuJiM0MztcdFx0XHRpZWVlODAyMTFfc3RhX3JlZ2lzdGVyX2FpcnRpbWUoc3RhLCAwLCAwLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5pbmRleCBjYWM5NzBjOTI4MDZhLi4zOTk3YmQzMzY5NDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0zMDUsOSAmIzQzOzMwNSwxMCBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfZHBfdHhfZnJlZV90eGJ1ZihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBtYWNfaWQsXG4gXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xuIFxuIFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cdTAwM2VkZXYsIHNrYl9jYi1cdTAwM2VwYWRkciwgbXNkdS1cdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xuLVx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXG4gXHRhciA9IGFiLVx1MDAzZXBkZXZzW21hY19pZF0uYXI7XG4mIzQzO1x0aWVlZTgwMjExX2ZyZWVfdHhza2IoYXItXHUwMDNlaHcsIG1zZHUpO1xuJiM0MztcbiBcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcbiBcdFx0d2FrZV91cChcdTAwMjZhci1cdTAwM2VkcC50eF9lbXB0eV93YWl0cSk7XG4gfVxuQEAgLTY4NCw3ICYjNDM7Njg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcbiBcdFx0dHMtXHUwMDNlcmF0ZV9zdGF0cyA9IDA7XG4gfVxuIFxuLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiYjNDM7aW50IGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQsXG4mIzQzO1x0XHRcdFx0ICAgIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGF0aDExayAqYXI7XG4gXHRzdHJ1Y3QgYXRoMTFrX2RwICpkcCA9IFx1MDAyNmFiLVx1MDAzZWRwO1xuQEAgLTY5Myw5ICYjNDM7Njk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdHN0cnVjdCBza19idWZmICptc2R1O1xuIFx0c3RydWN0IGhhbF90eF9zdGF0dXMgdHMgPSB7fTtcbiBcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHB1c2ggPSAwO1xuJiM0MztcdGludCBkb25lID0gMDtcbiBcdHUzMiAqZGVzYztcbiBcdHUzMiBtc2R1X2lkO1xuLVx0dTggbWFjX2lkO1xuJiM0MztcdHU4IG1hY19pZCwgaTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbkBAIC03MjEsMTAgJiM0Mzs3MjUsMTMgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c3RhdHVzX3JpbmctXHUwMDNlbG9jayk7XG4gXG4tXHR3aGlsZSAoQVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCkgIT0gdHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xuJiM0MztcdHdoaWxlIChkb25lIFx1MDAzYyBidWRnZXQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XG4mIzQzO1x0ICAgICAgIHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX2hlYWQpIHtcbiBcdFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRcdHUzMiBkZXNjX2lkO1xuIFxuJiM0MztcdFx0ZG9uZSYjNDM7JiM0Mzs7XG4gXHRcdHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwgPVxuIFx0XHRcdEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpO1xuIFx0XHR0eF9zdGF0dXMgPSBcdTAwMjZ0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c1t0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c190YWlsXTtcbkBAIC03NTUsMTIgJiM0Mzs3NjIsMjUgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxuIFx0XHRzcGluX3VubG9jayhcdTAwMjZ0eF9yaW5nLVx1MDAzZXR4X2lkcl9sb2NrKTtcbiBcbiBcdFx0YXIgPSBhYi1cdTAwM2VwZGV2c1ttYWNfaWRdLmFyO1xuJiM0MztcdFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICYjNDM7IHNrYl9nZXRfcXVldWVfbWFwcGluZyhtc2R1KSxcbiYjNDM7XHRcdFx0ICBcdTAwMjZwdXNoKTtcbiBcbiBcdFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2YXItXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpKVxuIFx0XHRcdHdha2VfdXAoXHUwMDI2YXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xuIFxuIFx0XHRhdGgxMWtfZHBfdHhfY29tcGxldGVfbXNkdShhciwgbXNkdSwgXHUwMDI2dHMpO1xuIFx0fVxuJiM0MztcbiYjNDM7XHQvKiBBIGNvbXBsZXRpb24gcmV0dXJucyB0aGUgYWlydGltZSB0aGUgZnJhbWUgd2FzIGNoYXJnZWQsIHdoaWNoIGlzXG4mIzQzO1x0ICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nXG4mIzQzO1x0ICogb24uIFRoZSBhcnJpdmFscyB0aGF0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBhIHJvdW5kIGFyZSB0aGVtc2VsdmVzXG4mIzQzO1x0ICogcXVldWVkIGJlaGluZCB0aGF0IGxpbWl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cHVzaCwgYWItXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxuJiM0MztcdFx0YXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoYWItXHUwMDNlcGRldnNbaSAvIElFRUU4MDIxMV9OVU1fQUNTXS5hcixcbiYjNDM7XHRcdFx0XHRcdCAgIGkgJSBJRUVFODAyMTFfTlVNX0FDUyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkb25lO1xuIH1cbiBcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXG5pbmRleCA5MzAzYjViYTZlMDEyLi5iNTI5NmNkYTczZTMwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbkBAIC0yMSw3ICYjNDM7MjEsOCBAQCB2b2lkIGF0aDExa19kcF90eF91cGRhdGVfdHhjb21wbChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGhhbF90eF9zdGF0dXMgKnRzKTtcbiBpbnQgYXRoMTFrX2RwX3R4X2h0dF9oMnRfdmVyX3JlcV9tc2coc3RydWN0IGF0aDExa19iYXNlICphYik7XG4gaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFx0XHQgc3RydWN0IGF0aDExa19zdGEgKmFyc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpO1xuJiM0MztpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbiYjNDM7XHRcdFx0XHQgICAgaW50IGJ1ZGdldCk7XG4gaW50IGF0aDExa19kcF90eF9zZW5kX3Jlb19jbWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3J4X3RpZCAqcnhfdGlkLFxuIFx0XHRcdCAgICAgIGVudW0gaGFsX3Jlb19jbWRfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBhdGgxMWtfaGFsX3Jlb19jbWQgKmNtZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uMTI1MzU5MjY2MzFiOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC02NDk5LDkgJiM0Mzs2NDk5LDkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyBpbnQgYXRoMTFrX21hY190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbiYjNDM7XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGF0aDExa19za2JfY2IgKnNrYl9jYiA9IEFUSDExS19TS0JfQ0Ioc2tiKTtcbiBcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXHUwMDNlcHJpdjtcbkBAIC02NTMzLDcgJiM0Mzs2NTMzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICByZXQpO1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0XHR9XG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRpZiAoY29udHJvbC1cdTAwM2VzdGEpXG5AQCAtNjU0NCw2ICYjNDM7NjU0NCw2OSBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRhdGgxMWtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxuXCYjMzQ7LCByZXQpO1xuIFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cdTAwM2Vodywgc2tiKTtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdGF0aDExa19tYWNfdHgoaHcsIGNvbnRyb2wsIHNrYik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgYXRoMTFrX21hY190eF9wdXNoX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVx1MDAzZXN0YSB9O1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBhcHBsaWVzIHRoZSBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGl0c2VsZiwgc28gYVxuJiM0MztcdCAqIHNlbGVjdGlvbiBlbmRzIHdoZXJlIHRoZSBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGJpbmRzLCB3aGVyZSB0aGVcbiYjNDM7XHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xuJiM0MztcdCAqIGhhbmRsZXIgZG9lcyB0b2RheSwgYW5kIGFkZGl0aW9uYWxseSB3aGVuIHRoZSBoYXJkd2FyZSByZWZ1c2VzIGFcbiYjNDM7XHQgKiBmcmFtZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR3aGlsZSAoKHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGFyLVx1MDAzZWh3LCB0eHEpKSkge1xuJiM0MztcdFx0cmV0ID0gYXRoMTFrX21hY190eChhci1cdTAwM2VodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyZXQgPT0gLUVOT1NQQyB8fCByZXQgPT0gLUVOT01FTSkpXG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhci1cdTAwM2VodztcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNldHhxX2xvY2tbYWNdKTtcbiYjNDM7XG4mIzQzO1x0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuJiM0MztcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG4mIzQzO1x0XHRpbnQgcmV0ID0gYXRoMTFrX21hY190eF9wdXNoX3R4cShhciwgdHhxKTtcbiYjNDM7XG4mIzQzO1x0XHRpZWVlODAyMTFfcmV0dXJuX3R4cShodywgdHhxLCBmYWxzZSk7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkocmV0KSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfZW5kKGh3LCBhYyk7XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZXR4cV9sb2NrW2FjXSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4mIzQzO3tcbiYjNDM7XHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShody1cdTAwM2Vwcml2LCB0eHEtXHUwMDNlYWMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcbiYjNDM7e1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiB2b2lkIGF0aDExa19tYWNfZHJhaW5fdHgoc3RydWN0IGF0aDExayAqYXIpXG5AQCAtMTAwNjcsNyAmIzQzOzEwMTMwLDcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5AQCAtMTA1OTIsNiAmIzQzOzEwNjU1LDkgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXG4gXHRhci1cdTAwM2Vody1cdTAwM2VzdGFfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBhdGgxMWtfc3RhKTtcbiBcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cdTAwM2Vody1cdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTtcbiYjNDM7XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcbiYjNDM7XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU1RBX1RYX1BXUik7XG4gXHRpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELFxuIFx0XHQgICAgIGFyLVx1MDAzZWFiLVx1MDAzZXdtaV9hYi5zdmNfbWFwKSkge1xuQEAgLTEwNzU0LDcgJiM0MzsxMDgyMCw3IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRzdHJ1Y3QgYXRoMTFrICphcjtcbiBcdHN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjtcbiBcdGludCByZXQ7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgajtcbiBcbiBcdGlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0xMDc4OCw2ICYjNDM7MTA4NTQsOSBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFxuIFx0XHRwZGV2LVx1MDAzZWFyID0gYXI7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgSUVFRTgwMjExX05VTV9BQ1M7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2V0eHFfbG9ja1tqXSk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZWFydmlmcyk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcbmluZGV4IDU5ZjgzYzcxNzVmZDEuLmQ1NzdjNWNhMjQ5Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG5AQCAtMTYxLDYgJiM0MzsxNjEsNyBAQCBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV92ZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiB2ZGV2X2lkKVxuIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3BkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHBkZXZfaWQpO1xuIFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcik7XG4mIzQzO3ZvaWQgYXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKTtcbiB2b2lkIGF0aDExa19tYWNfcGVlcl9jbGVhbnVwX2FsbChzdHJ1Y3QgYXRoMTFrICphcik7XG4gaW50IGF0aDExa19tYWNfdHhfbWdtdF9wZW5kaW5nX2ZyZWUoaW50IGJ1Zl9pZCwgdm9pZCAqc2tiLCB2b2lkICpjdHgpO1xuIHU4IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncodTggYncpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTIzYjk0ZTY0ZDRkZGU1MmI5YjU0OGNiMWM2ZGMyY2FmOTljYzc0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAxNzowMDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKaW5kZXggYTBkNzI1OTIzZWYyNC4uNDA4OTVkMjc2ZGU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKQEAgLTcwOSw2ICYjNDM7NzA5LDExIEBAIHN0cnVjdCBhdGgxMWsgewogCSAqLwogCXNwaW5sb2NrX3QgZGF0YV9sb2NrOwogCiYjNDM7CS8qIHNlcmlhbGlzZXMgb25lIHNjaGVkdWxpbmcgcm91bmQgcGVyIGFjY2VzcyBjYXRlZ29yeSBhZ2FpbnN0IHRoZQomIzQzOwkgKiBvdGhlciBjb250ZXh0cyB0aGF0IGRyaXZlIGl0CiYjNDM7CSAqLwomIzQzOwlzcGlubG9ja190IHR4cV9sb2NrW0lFRUU4MDIxMV9OVU1fQUNTXTsKJiM0MzsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGFydmlmczsKIAkvKiBzaG91bGQgbmV2ZXIgYmUgTlVMTDsgbmVlZGVkIGZvciByZWd1bGFyIGh0dCByeCAqLwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqcnhfY2hhbm5lbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKaW5kZXggNzA5MjI2MTJkM2ZiOS4uZmZlMWY0NjZhZWZiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKQEAgLTcxNCw2ICYjNDM7NzE0LDE2IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCQkJICYjMzQ7XG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxuJiMzNDssCiAJCQkgYXRvbWljX3JlYWQoJmFtcDtzb2Nfc3RhdHMtJmd0O3R4X2Vyci5taXNjX2ZhaWwpKTsKIAomIzQzOwkvKiBEZXNjcmlwdG9ycyB0aGUgaGFyZHdhcmUgaGFzIG5vdCBjb21wbGV0ZWQuICovCiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5QZW5kaW5nIFR4IE1TRFVzOlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O251bV9yYWRpb3M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzdHJ1Y3QgYXRoMTFrICphciA9IGFiLSZndDtwZGV2c1tpXS5hcjsKJiM0MzsKJiM0MzsJCWlmIChhcikKJiM0MzsJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JhZGlvJWQ6ICVkXG4mIzM0OywKJiM0MzsJCQkJCSBpLCBhdG9taWNfcmVhZCgmYW1wO2FyLSZndDtkcC5udW1fdHhfcGVuZGluZykpOwomIzQzOwl9CiYjNDM7CiAJbGVuICYjNDM7PSBhdGgxMWtfZGVidWdmc19kdW1wX3NvY19yaW5nX2JwX3N0YXRzKGFiLCBidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuKTsKIAogCWlmIChsZW4gJmd0OyBzaXplKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTc4Myw4ICYjNDM7NzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O2h3X3BhcmFtcy5oYWxfcGFyYW1zLSZndDtudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChCSVQoYWItJmd0O2h3X3BhcmFtcy5oYWxfcGFyYW1zLSZndDt0Y2wyd2JtX3JibV9tYXBbaV0ud2JtX3JpbmdfbnVtKSAmYW1wOwotCQkgICAgYWItJmd0O2h3X3BhcmFtcy5yaW5nX21hc2stJmd0O3R4W2dycF9pZF0pCi0JCQlhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKGFiLCBpKTsKJiM0MzsJCSAgICBhYi0mZ3Q7aHdfcGFyYW1zLnJpbmdfbWFzay0mZ3Q7dHhbZ3JwX2lkXSkgewomIzQzOwkJCXdvcmtfZG9uZSA9CiYjNDM7CQkJCWF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGksIGJ1ZGdldCk7CiYjNDM7CQkJYnVkZ2V0IC09IHdvcmtfZG9uZTsKJiM0MzsJCQl0b3Rfd29ya19kb25lICYjNDM7PSB3b3JrX2RvbmU7CiYjNDM7CQkJaWYgKGJ1ZGdldCAmbHQ7PSAwKQomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQl9CiAJfQogCiAJaWYgKGFiLSZndDtod19wYXJhbXMucmluZ19tYXNrLSZndDtyeF9lcnJbZ3JwX2lkXSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jCmluZGV4IDMzNDI1NzA3YzA4NDIuLmE3YjliYjI5NTcyOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMKQEAgLTEzNzcsNiAmIzQzOzEzNzcsNyBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLAogCXUxNiByYXRlID0gMCwgc3VjY19wa3RzID0gMDsKIAl1MzIgdHhfZHVyYXRpb24gPSAwOwogCXU4IHRpZCA9IEhUVF9QUERVX1NUQVRTX05PTl9RT1NfVElEOwomIzQzOwl1OCBhaXJ0aW1lX3RpZDsKIAlib29sIGlzX2FtcGR1ID0gZmFsc2U7CiAKIAlpZiAoISh1c3Jfc3RhdHMtJmd0O3Rsdl9mbGFncyAmYW1wOyBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpCkBAIC0xNDg1LDYgJiM0MzsxNDg2LDIyIEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsCiAKIAlhcnN0YS0mZ3Q7dHhyYXRlLmJ3ID0gYXRoMTFrX21hY19id190b19tYWM4MDIxMV9idyhidyk7CiAJYXJzdGEtJmd0O3R4X2R1cmF0aW9uICYjNDM7PSB0eF9kdXJhdGlvbjsKJiM0MzsKJiM0MzsJLyogVGhlIGFjay9CQSBzdGF0dXMgVExWIG5hbWVzIHRoZSBUSUQgb25seSBmb3IgYSBQUERVIHRoYXQgZHJldyBhCiYjNDM7CSAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS4KJiM0MzsJICovCiYjNDM7CWFpcnRpbWVfdGlkID0gdGlkOwomIzQzOwlpZiAoYWlydGltZV90aWQgJmd0Oz0gSUVFRTgwMjExX05VTV9USURTICZhbXA7JmFtcDsKJiM0MzsJICAgIHVzcl9zdGF0cy0mZ3Q7dGx2X2ZsYWdzICZhbXA7IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX0NPTVBMVE5fQ09NTU9OKSkKJiM0MzsJCWFpcnRpbWVfdGlkID0gdXNyX3N0YXRzLSZndDtjbXBsdG5fY21uLnRpZF9udW07CiYjNDM7CWlmIChhaXJ0aW1lX3RpZCAmZ3Q7PSBJRUVFODAyMTFfTlVNX1RJRFMpCiYjNDM7CQlhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS0mZ3Q7dGlkX251bTsKJiM0MzsJaWYgKGFpcnRpbWVfdGlkICZndDs9IElFRUU4MDIxMV9OVU1fVElEUykKJiM0MzsJCWFpcnRpbWVfdGlkID0gMDsKJiM0MzsKJiM0MzsJaWYgKHR4X2R1cmF0aW9uKQomIzQzOwkJaWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTsKJiM0MzsKIAltZW1jcHkoJmFtcDthcnN0YS0mZ3Q7bGFzdF90eHJhdGUsICZhbXA7YXJzdGEtJmd0O3R4cmF0ZSwgc2l6ZW9mKHN0cnVjdCByYXRlX2luZm8pKTsKIAogCS8qIFBQRFUgc3RhdHMgcmVwb3J0ZWQgZm9yIG1nbXQgcGFja2V0IGRvZXNuJiMzOTt0IGhhdmUgdmFsaWQgdHggYnl0ZXMuCkBAIC01MjUzLDYgJiM0Mzs1MjcwLDcgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCwKIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0OwogCXN0cnVjdCBhdGgxMWtfcGVlciAqcGVlcjsKIAlzdHJ1Y3QgYXRoMTFrX3N0YSAqYXJzdGE7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7CiAJaW50IG51bV9idWZmc19yZWFwZWQgPSAwOwogCXUzMiByeF9idWZfc3o7CiAJdTE2IGxvZ190eXBlOwpAQCAtNTMwNyw2ICYjNDM7NTMyNSw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsCiAJCQljb250aW51ZTsKIAkJfQogCiYjNDM7CQlzdGEgPSBOVUxMOwogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCXNwaW5fbG9ja19iaCgmYW1wO2FiLSZndDtiYXNlX2xvY2spOwogCQlwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLSZndDtwZWVyX2lkKTsKQEAgLTUzMjAsMTIgJiM0Mzs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsCiAKIAkJYXJzdGEgPSBhdGgxMWtfc3RhX3RvX2Fyc3RhKHBlZXItJmd0O3N0YSk7CiAJCWF0aDExa19kcF9yeF91cGRhdGVfcGVlcl9zdGF0cyhhcnN0YSwgcHBkdV9pbmZvKTsKJiM0MzsJCXN0YSA9IHBlZXItJmd0O3N0YTsKIAogCQlpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItJmd0O2FkZHIpKQogCQkJdHJhY2VfYXRoMTFrX2h0dF9yeGRlc2MoYXIsIHNrYi0mZ3Q7ZGF0YSwgbG9nX3R5cGUsIHJ4X2J1Zl9zeik7CiAKIG5leHRfc2tiOgogCQlzcGluX3VubG9ja19iaCgmYW1wO2FiLSZndDtiYXNlX2xvY2spOwomIzQzOwomIzQzOwkJLyogVGhlIGFpcnRpbWUgYSBzdGF0aW9uIHNwZW5kcyB0cmFuc21pdHRpbmcgaXMgdGFrZW4gZnJvbQomIzQzOwkJICogdGhlIG90aGVycywgc28gaXRzIGRlZmljaXQgaXMgY2hhcmdlZCBmb3IgaXQgdG9vLCB3aXRoIHRoZQomIzQzOwkJICogZHVyYXRpb24gdGhlIGhhcmR3YXJlIG1lYXN1cmVkIGZvciB0aGUgd2hvbGUgUFBEVSwgYXMgb24KJiM0MzsJCSAqIHRoZSB0cmFuc21pdCBzaWRlLiBUaGUgVExWIHRoYXQgbmFtZXMgdGhlIFRJRCBpcyBub3QgaW4KJiM0MzsJCSAqIHRoZSBkZWZhdWx0IG1vbml0b3Igc3RhdHVzIGZpbHRlciwgc28gdGhlIGNoYXJnZSBnb2VzIHRvCiYjNDM7CQkgKiBCRS4gT3V0c2lkZSBiYXNlX2xvY2ssIHdoaWNoIHR4IGNvbXBsZXRpb24gY29udGVuZHMgZm9yOwomIzQzOwkJICogc3RhIGlzIGhlbGQgYnkgdGhlIHJjdSByZWFkIGxvY2suCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChzdGEgJmFtcDsmYW1wOyBwcGR1X2luZm8tJmd0O3J4X2R1cmF0aW9uKQomIzQzOwkJCWllZWU4MDIxMV9zdGFfcmVnaXN0ZXJfYWlydGltZShzdGEsIDAsIDAsCiYjNDM7CQkJCQkJICAgICAgIHBwZHVfaW5mby0mZ3Q7cnhfZHVyYXRpb24pOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jCmluZGV4IGNhYzk3MGM5MjgwNmEuLjM5OTdiZDMzNjk0MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTMwNSw5ICYjNDM7MzA1LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDExa19kcF90eF9mcmVlX3R4YnVmKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IG1hY19pZCwKIAlza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpOwogCiAJZG1hX3VubWFwX3NpbmdsZShhYi0mZ3Q7ZGV2LCBza2JfY2ItJmd0O3BhZGRyLCBtc2R1LSZndDtsZW4sIERNQV9UT19ERVZJQ0UpOwotCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCiAJYXIgPSBhYi0mZ3Q7cGRldnNbbWFjX2lkXS5hcjsKJiM0MzsJaWVlZTgwMjExX2ZyZWVfdHhza2IoYXItJmd0O2h3LCBtc2R1KTsKJiM0MzsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO2FyLSZndDtkcC5udW1fdHhfcGVuZGluZykpCiAJCXdha2VfdXAoJmFtcDthci0mZ3Q7ZHAudHhfZW1wdHlfd2FpdHEpOwogfQpAQCAtNjg0LDcgJiM0Mzs2ODUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTFrX2RwX3R4X3N0YXR1c19wYXJzZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLAogCQl0cy0mZ3Q7cmF0ZV9zdGF0cyA9IDA7CiB9CiAKLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKJiM0MztpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCwKJiM0MzsJCQkJICAgIGludCBidWRnZXQpCiB7CiAJc3RydWN0IGF0aDExayAqYXI7CiAJc3RydWN0IGF0aDExa19kcCAqZHAgPSAmYW1wO2FiLSZndDtkcDsKQEAgLTY5Myw5ICYjNDM7Njk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAlzdHJ1Y3Qgc2tfYnVmZiAqbXNkdTsKIAlzdHJ1Y3QgaGFsX3R4X3N0YXR1cyB0cyA9IHt9OwogCXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJdW5zaWduZWQgbG9uZyBwdXNoID0gMDsKJiM0MzsJaW50IGRvbmUgPSAwOwogCXUzMiAqZGVzYzsKIAl1MzIgbXNkdV9pZDsKLQl1OCBtYWNfaWQ7CiYjNDM7CXU4IG1hY19pZCwgaTsKIAogCXNwaW5fbG9ja19iaCgmYW1wO3N0YXR1c19yaW5nLSZndDtsb2NrKTsKIApAQCAtNzIxLDEwICYjNDM7NzI1LDEzIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7c3RhdHVzX3JpbmctJmd0O2xvY2spOwogCi0Jd2hpbGUgKEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLSZndDt0eF9zdGF0dXNfaGVhZCkgewomIzQzOwl3aGlsZSAoZG9uZSAmbHQ7IGJ1ZGdldCAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICBBVEgxMUtfVFhfQ09NUExfTkVYVCh0eF9yaW5nLSZndDt0eF9zdGF0dXNfdGFpbCkgIT0KJiM0MzsJICAgICAgIHR4X3JpbmctJmd0O3R4X3N0YXR1c19oZWFkKSB7CiAJCXN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzOwogCQl1MzIgZGVzY19pZDsKIAomIzQzOwkJZG9uZSYjNDM7JiM0Mzs7CiAJCXR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsID0KIAkJCUFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsKTsKIAkJdHhfc3RhdHVzID0gJmFtcDt0eF9yaW5nLSZndDt0eF9zdGF0dXNbdHhfcmluZy0mZ3Q7dHhfc3RhdHVzX3RhaWxdOwpAQCAtNzU1LDEyICYjNDM7NzYyLDI1IEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAkJc3Bpbl91bmxvY2soJmFtcDt0eF9yaW5nLSZndDt0eF9pZHJfbG9jayk7CiAKIAkJYXIgPSBhYi0mZ3Q7cGRldnNbbWFjX2lkXS5hcjsKJiM0MzsJCV9fc2V0X2JpdChtYWNfaWQgKiBJRUVFODAyMTFfTlVNX0FDUyAmIzQzOyBza2JfZ2V0X3F1ZXVlX21hcHBpbmcobXNkdSksCiYjNDM7CQkJICAmYW1wO3B1c2gpOwogCiAJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7YXItJmd0O2RwLm51bV90eF9wZW5kaW5nKSkKIAkJCXdha2VfdXAoJmFtcDthci0mZ3Q7ZHAudHhfZW1wdHlfd2FpdHEpOwogCiAJCWF0aDExa19kcF90eF9jb21wbGV0ZV9tc2R1KGFyLCBtc2R1LCAmYW1wO3RzKTsKIAl9CiYjNDM7CiYjNDM7CS8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXMKJiM0MzsJICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nCiYjNDM7CSAqIG9uLiBUaGUgYXJyaXZhbHMgdGhhdCB3b3VsZCBvdGhlcndpc2Ugc3RhcnQgYSByb3VuZCBhcmUgdGhlbXNlbHZlcwomIzQzOwkgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9zZXRfYml0KGksICZhbXA7cHVzaCwgYWItJmd0O251bV9yYWRpb3MgKiBJRUVFODAyMTFfTlVNX0FDUykKJiM0MzsJCWF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKGFiLSZndDtwZGV2c1tpIC8gSUVFRTgwMjExX05VTV9BQ1NdLmFyLAomIzQzOwkJCQkJICAgaSAlIElFRUU4MDIxMV9OVU1fQUNTKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGRvbmU7CiB9CiAKIGludCBhdGgxMWtfZHBfdHhfc2VuZF9yZW9fY21kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9yeF90aWQgKnJ4X3RpZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaAppbmRleCA5MzAzYjViYTZlMDEyLi5iNTI5NmNkYTczZTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCB2b2lkIGF0aDExa19kcF90eF91cGRhdGVfdHhjb21wbChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGhhbF90eF9zdGF0dXMgKnRzKTsKIGludCBhdGgxMWtfZHBfdHhfaHR0X2gydF92ZXJfcmVxX21zZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTsKIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZiwKIAkJIHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYik7Ci12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpOwomIzQzO2ludCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkLAomIzQzOwkJCQkgICAgaW50IGJ1ZGdldCk7CiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsCiAJCQkgICAgICBlbnVtIGhhbF9yZW9fY21kX3R5cGUgdHlwZSwKIAkJCSAgICAgIHN0cnVjdCBhdGgxMWtfaGFsX3Jlb19jbWQgKmNtZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWQuLjEyNTM1OTI2NjMxYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtNjQ5OSw5ICYjNDM7NjQ5OSw5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19tZ210X3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsCi0JCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7c3RhdGljIGludCBhdGgxMWtfbWFjX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCSBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsCiYjNDM7CQkJIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGF0aDExa19za2JfY2IgKnNrYl9jYiA9IEFUSDExS19TS0JfQ0Ioc2tiKTsKIAlzdHJ1Y3QgYXRoMTFrICphciA9IGh3LSZndDtwcml2OwpAQCAtNjUzMyw3ICYjNDM7NjUzMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJICAgIHJldCk7CiAJCQlpZWVlODAyMTFfZnJlZV90eHNrYihhci0mZ3Q7aHcsIHNrYik7CiAJCX0KLQkJcmV0dXJuOwomIzQzOwkJcmV0dXJuIHJldDsKIAl9CiAKIAlpZiAoY29udHJvbC0mZ3Q7c3RhKQpAQCAtNjU0NCw2ICYjNDM7NjU0NCw2OSBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQlhdGgxMWtfd2Fybihhci0mZ3Q7YWIsICYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXG4mIzM0OywgcmV0KTsKIAkJaWVlZTgwMjExX2ZyZWVfdHhza2IoYXItJmd0O2h3LCBza2IpOwogCX0KJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCwKJiM0MzsJCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlhdGgxMWtfbWFjX3R4KGh3LCBjb250cm9sLCBza2IpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGF0aDExa19tYWNfdHhfcHVzaF90eHEoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgLnN0YSA9IHR4cS0mZ3Q7c3RhIH07CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkgYXBwbGllcyB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBpdHNlbGYsIHNvIGEKJiM0MzsJICogc2VsZWN0aW9uIGVuZHMgd2hlcmUgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgYmluZHMsIHdoZXJlIHRoZQomIzQzOwkgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpYwomIzQzOwkgKiBoYW5kbGVyIGRvZXMgdG9kYXksIGFuZCBhZGRpdGlvbmFsbHkgd2hlbiB0aGUgaGFyZHdhcmUgcmVmdXNlcyBhCiYjNDM7CSAqIGZyYW1lLgomIzQzOwkgKi8KJiM0MzsJd2hpbGUgKChza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShhci0mZ3Q7aHcsIHR4cSkpKSB7CiYjNDM7CQlyZXQgPSBhdGgxMWtfbWFjX3R4KGFyLSZndDtodywgJmFtcDtjb250cm9sLCBza2IpOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCA9PSAtRU5PU1BDIHx8IHJldCA9PSAtRU5PTUVNKSkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFyLSZndDtodzsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cTsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O3R4cV9sb2NrW2FjXSk7CiYjNDM7CiYjNDM7CWllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTsKJiM0MzsJd2hpbGUgKCh0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIGFjKSkpIHsKJiM0MzsJCWludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpOwomIzQzOwomIzQzOwkJaWVlZTgwMjExX3JldHVybl90eHEoaHcsIHR4cSwgZmFsc2UpOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTsKJiM0MzsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7dHhxX2xvY2tbYWNdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCQkJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKJiM0Mzt7CiYjNDM7CWF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGh3LSZndDtwcml2LCB0eHEtJmd0O2FjKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpCiYjNDM7ewomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGFyLCBhYyk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogfQogCiB2b2lkIGF0aDExa19tYWNfZHJhaW5fdHgoc3RydWN0IGF0aDExayAqYXIpCkBAIC0xMDA2Nyw3ICYjNDM7MTAxMzAsNyBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHsKIAkudHgJCQkJPSBhdGgxMWtfbWFjX29wX3R4LAotCS53YWtlX3R4X3F1ZXVlCQkJPSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsCiYjNDM7CS53YWtlX3R4X3F1ZXVlCQkJPSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsCiAJLnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsCiAJLnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCwKIAkucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSwKQEAgLTEwNTkyLDYgJiM0MzsxMDY1NSw5IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKQogCWFyLSZndDtody0mZ3Q7c3RhX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3N0YSk7CiAKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItJmd0O2h3LSZndDt3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTsKJiM0MzsJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLSZndDtody0mZ3Q7d2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTsKJiM0MzsJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLSZndDtody0mZ3Q7d2lwaHksCiYjNDM7CQkJICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BSVJUSU1FX0ZBSVJORVNTKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItJmd0O2h3LSZndDt3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TVEFfVFhfUFdSKTsKIAlpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELAogCQkgICAgIGFyLSZndDthYi0mZ3Q7d21pX2FiLnN2Y19tYXApKSB7CkBAIC0xMDc1NCw3ICYjNDM7MTA4MjAsNyBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKQogCXN0cnVjdCBhdGgxMWsgKmFyOwogCXN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjsKIAlpbnQgcmV0OwotCWludCBpOwomIzQzOwlpbnQgaSwgajsKIAogCWlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQogCQlyZXR1cm4gMDsKQEAgLTEwNzg4LDYgJiM0MzsxMDg1NCw5IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAKIAkJcGRldi0mZ3Q7YXIgPSBhcjsKIAkJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKJiM0MzsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBJRUVFODAyMTFfTlVNX0FDUzsgaiYjNDM7JiM0MzspCiYjNDM7CQkJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7dHhxX2xvY2tbal0pOwogCQlJTklUX0xJU1RfSEVBRCgmYW1wO2FyLSZndDthcnZpZnMpOwogCQlJTklUX0xJU1RfSEVBRCgmYW1wO2FyLSZndDtwcGR1X3N0YXRzX2luZm8pOwogCQltdXRleF9pbml0KCZhbXA7YXItJmd0O2NvbmZfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgKaW5kZXggNTlmODNjNzE3NWZkMS4uZDU3N2M1Y2EyNDljYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oCkBAIC0xNjEsNiAmIzQzOzE2MSw3IEBAIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3ZkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHZkZXZfaWQpCiBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV9wZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBwZGV2X2lkKTsKIAogdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKTsKJiM0Mzt2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYyk7CiB2b2lkIGF0aDExa19tYWNfcGVlcl9jbGVhbnVwX2FsbChzdHJ1Y3QgYXRoMTFrICphcik7CiBpbnQgYXRoMTFrX21hY190eF9tZ210X3BlbmRpbmdfZnJlZShpbnQgYnVmX2lkLCB2b2lkICpza2IsIHZvaWQgKmN0eCk7CiB1OCBhdGgxMWtfbWFjX2J3X3RvX21hYzgwMjExX2J3KHU4IGJ3KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEwMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIFRyb3VibGVzaG9vdGluZyBQYXRoKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gd2hhdCBgYXRoMTFrYCBhY3R1YWxseSAqaXMqIGFuZCBjb25maXJtIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiBteSBlbnZpcm9ubWVudC4gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gcmVhZGlseSB0ZXN0IHdpdGhpbiBhbiBlbXVsYXRlZCBzZXR0aW5nLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IGludHJpbnNpY2FsbHkgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgYSBkZWRpY2F0ZWQgV2ktRmkgY2FyZD8gSSYjMzk7bSB0aGlua2luZywgcG90ZW50aWFsbHksIGEgUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCBjYXJkPwoKSG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gYmUgbW9yZSBtZXRob2RpY2FsLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbnN0cnVjdGlvbnMsIHBhcnRpY3VsYXJseSBTZWN0aW9uIDIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgZXhwbGljaXRseSBydWxlZCBvdXQgZHVlIHRvIGJlaW5nIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGhlIHRleHQgcG9pbnRzIHRvIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIEkgcXVpY2tseSBuZWVkIHRvIGFzY2VydGFpbiBpZiBgYXRoMTFrYCBmYWxscyBpbnRvICp0aGF0KiBjYXRlZ29yeS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIG1haW4gcXVlc3Rpb246IGlzIGBhdGgxMWtgIGEgcGh5c2ljYWwgV2ktRmkgY2FyZCBkcml2ZXIsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBhIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXg/IFRvIGRldGVybWluZSB0aGlzLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBBVEgxMUsmIzM5O3MgY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBkcml2ZXIgZW5hYmxlcyBhbmQsIGNvbnNlcXVlbnRseSwgaXRzIGhhcmR3YXJlIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjM6Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMzOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zNC1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDE6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDItXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ5OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU1OmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjQ6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMyOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGF0aDExayYjMzk7cyBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGF0aDExay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYXRoMTFrIGlzIGFsbCBhYm91dCBRdWFsY29tbSYjMzk7cyA4MDIuMTFheCBjaGlwc2V0cywgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYW5kIEFIQiBpbnRlcmZhY2VzLiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgaGFkIHNvbWUgc29ydCBvZiB2aXJ0dWFsIG9yIFVTQiBzdXBwb3J0LCBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQgbG9va3MgbGlrZSB0aGF0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIsIGNvbXBsZXRlbHkgZGlzdGluY3QuIEFuZCBubyBVU0Igc3VwcG9ydCBlaXRoZXIsIGp1c3QgQUhCIGFuZCBQQ0ksIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk5leHQsIEkgdGhvdWdodCBhYm91dCBRRU1VIGVtdWxhdGlvbi4gSXMgYXRoMTFrIGVtdWxhdGVkIGF0IGFsbCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IE5vcGUuIFRoYXQgd291bGQgbWFrZSBpdCBtdWNoIGVhc2llci4KClNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFdlbGwsIHdhaXQgYSBtaW51dGUsIHN5emthbGxlciB0eXBpY2FsbHkgaGl0cyBtYWM4MDIxMSB0aHJvdWdoIGVpdGhlciBgbWFjODAyMTFfaHdzaW1gIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRocm91Z2ggVVNCIFdpRmkgZG9uZ2xlcyB2aWEgc29tZXRoaW5nIGxpa2UgcmF3LWdhZGdldCBvciBhIFVTQiBmdXp6ZXIgYXBwcm9hY2ggbGlrZSB3aXRoIGF0aDlrX2h0YywgcnRsODE4Nywgb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpCdXQgd2l0aCBhdGgxMWssIGl0JiMzOTtzIGp1c3QgQUhCIGFuZCBQQ0ksIGxpa2Ugd2l0aCB0aGUgSVBRODA3NCwgUUNBNjM5MCwgb3IgV0NONjg1NS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZGlyZWN0IGFjY2VzcyB0byBRdWFsY29tbSYjMzk7cyBwaHlzaWNhbCBoYXJkd2FyZSBvciBBU0lDcy4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiYWxsZ2FtZS4KCk9rYXksIGJhY2sgdG8gdGhlIGRyYXdpbmcgYm9hcmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGF0aDExayBjb2RlYmFzZSBhZ2FpbiwgcGFydGljdWxhcmx5IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHByb2JlcyBvciBidXMgaW1wbGVtZW50YXRpb25zLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIFVTQiBvciB2aXJ0dWFsIGNvbXBvbmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEzNDM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoMTFrX2FoYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMzUzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXRoMTFrX2FoYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIzPUVYUE9SVF9TWU1CT0woYXRoMTFrX2RlYnVnX21hc2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjQ6bW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnX21hc2ssIGF0aDExa19kZWJ1Z19tYXNrLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI1LU1PRFVMRV9QQVJNX0RFU0MoZGVidWdfbWFzaywgXCYjMzQ7RGVidWdnaW5nIG1hc2tcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTI3PXN0YXRpYyB1bnNpZ25lZCBpbnQgYXRoMTFrX2NyeXB0b19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6Mjg6bW9kdWxlX3BhcmFtX25hbWVkKGNyeXB0b19tb2RlLCBhdGgxMWtfY3J5cHRvX21vZGUsIHVpbnQsIDA2NDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG9fbW9kZSwgXCYjMzQ7Y3J5cHRvIG1vZGU6IDAtaGFyZHdhcmUsIDEtc29mdHdhcmVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTMyPXVuc2lnbmVkIGludCBhdGgxMWtfZnJhbWVfbW9kZSA9IEFUSDExS19IV19UWFJYX05BVElWRV9XSUZJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MzM6bW9kdWxlX3BhcmFtX25hbWVkKGZyYW1lX21vZGUsIGF0aDExa19mcmFtZV9tb2RlLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM0LU1PRFVMRV9QQVJNX0RFU0MoZnJhbWVfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0zNz1ib29sIGF0aDExa19mdG1fbW9kZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjM4Om1vZHVsZV9wYXJhbV9uYW1lZChmdG1fbW9kZSwgYXRoMTFrX2Z0bV9tb2RlLCBib29sLCAwNDQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM5LU1PRFVMRV9QQVJNX0RFU0MoZnRtX21vZGUsIFwmIzM0O0Jvb3RzIHVwIGluIGZhY3RvcnkgdGVzdCBtb2RlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD02MzI9c3RydWN0IGF0aDExa19kZWJ1ZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNjQyLVx0dTMyIG1lbV9vZmZzZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaDo2NDM6XHR1MzIgbW9kdWxlX2lkX2JpdG1hcFtNQVhfTU9EVUxFX0lEX0JJVE1BUF9XT1JEU107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC02NDQtXHRzdHJ1Y3QgYXRoMTFrX2RlYnVnX2RiciAqZGJyX2RlYnVnW1dNSV9ESVJFQ1RfQlVGX01BWF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYz0xNTU9aW50IGF0aDExa19kYnJpbmdfd21pX2NmZ19zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MTY1Olx0cGFyYW0ubW9kdWxlX2lkXHRcdD0gaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2Ni1cdHBhcmFtLmJhc2VfcGFkZHJfbG9cdD0gbG93ZXJfMzJfYml0cyhyaW5nLVx1MDAzZXJlZmlsbF9zcm5nLnBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTI4MT1pbnQgYXRoMTFrX2RicmluZ19idWZmZXJfcmVsZWFzZV9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjkxLVx0dTMyIG51bV9lbnRyeSwgbnVtX2J1ZmZfcmVhcGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyOTI6XHR1OCBwZGV2X2lkeCwgcmJtLCBtb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI5My1cdHUzMiBjb29raWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMDAtXHRwZGV2X2lkeCA9IGV2LVx1MDAzZWZpeGVkLnBkZXZfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjMwMTpcdG1vZHVsZV9pZCA9IGV2LVx1MDAzZWZpeGVkLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozMjg6XHRzd2l0Y2ggKGV2LVx1MDAzZWZpeGVkLm1vZHVsZV9pZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMjktXHRjYXNlIFdNSV9ESVJFQ1RfQlVGX1NQRUNUUkFMOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzM3LVx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7UmVjdiBkbWEgYnVmZmVyIHJlbGVhc2UgZXYgb24gdW5zdXBwIG1vZHVsZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzM4Olx0XHRcdCAgICBldi1cdTAwM2VmaXhlZC5tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMzktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozNzc6XHRcdGF0aDExa19kZWJ1Z2ZzX2FkZF9kYnJpbmdfZW50cnkoYXIsIG1vZHVsZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc4LVx0XHRcdFx0XHRcdEFUSDExS19EQkdfREJSX0VWRU5UX1JYLCBzcm5nKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5NC1cdFx0bWVtc2V0KGJ1ZmYtXHUwMDNlcGF5bG9hZCwgMCwgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjM5NTpcdFx0YXRoMTFrX2RicmluZ19idWZzX3JlcGxlbmlzaChhciwgcmluZywgYnVmZiwgbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzk2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jPTc0ND1zdGF0aWMgc3NpemVfdCBhdGgxMWtfd3JpdGVfZndfZGJnbG9nKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3MS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmM6NzcyOlx0XHRhci1cdTAwM2VkZWJ1Zy5tb2R1bGVfaWRfYml0bWFwW21vZF9pZF9pbmRleF0gPSB1cHBlcl8zMl9iaXRzKHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3My1cdFx0aWYgKCFpc19lbmQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYy03ODUtXHRkYmdsb2cudmFsdWUgPSBsb3dlcl8zMl9iaXRzKHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jOjc4NjpcdHJldCA9IGF0aDExa193bWlfZndfZGJnbG9nX2NmZyhhciwgYXItXHUwMDNlZGVidWcubW9kdWxlX2lkX2JpdG1hcCwgXHUwMDI2ZGJnbG9nKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc4Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaD0xMzY9ZW51bSBhdGgxMWtfZGJnX2FnZ3JfbW9kZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgtMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg6MTQyOmVudW0gZndfZGJnbG9nX3dsYW5fbW9kdWxlX2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0My1cdFdMQU5fTU9EVUxFX0lEX01JTiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg9MjUwPXN0cnVjdCBhdGgxMWtfZndfZGJnbG9nIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNTUtXHRcdFx0dTE2IGxvZ19sZXZlbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NjpcdFx0XHQvKiBtb2R1bGVfaWQgdmFsdWVzIGFyZSBnaXZlbiBpbiAgZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NzpcdFx0XHR1MTYgbW9kdWxlX2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgtMjU4LVx0XHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg6MjU5Olx0XHQvKiB2YWx1ZSBpcyBlaXRoZXIgbG9nX2xldmVsXHUwMDI2bW9kdWxlX2lkL3ZkZXZfaWQvdmRldl9pZF9iaXRtYXAvbG9nX2xldmVsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNjAtXHRcdCAqIGFjY29yZGluZyB0byBwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz0zOTg9aHR0X3ByaW50X2h3X3N0YXRzX3dkX3RpbWVvdXRfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNC1cdHUzMiBidWZfbGVuID0gQVRIMTFLX0hUVF9TVEFUU19CVUZfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MDU6XHRjaGFyIGh3X21vZHVsZV9uYW1lW0hUVF9TVEFUU19NQVhfSFdfTU9EVUxFX05BTUVfTEVOICYjNDM7IDFdID0ge307XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNy1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O0hUVF9IV19TVEFUU19XRF9USU1FT1VUX1RMVjpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjQwODpcdG1lbWNweShod19tb2R1bGVfbmFtZSwgXHUwMDI2KGh0dF9zdGF0c19idWYtXHUwMDNlaHdfbW9kdWxlX25hbWVbMF0pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwOS1cdCAgICAgICBIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NDEwOlx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7aHdfbW9kdWxlX25hbWUgPSAlc1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTE6XHRcdFx0IGh3X21vZHVsZV9uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy00MTItXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtjb3VudCA9ICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz01MTA9c3RhdGljIGlubGluZSB2b2lkIGh0dF9wcmludF90eF90aWRfc3RhdHNfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTU0OS1cdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VsYXN0X3NjaGVkdWxlZF90c21wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTA6XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtwYXVzZV9tb2R1bGVfaWQgPSAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTE6XHRcdFx0IGh0dF9zdGF0c19idWYtXHUwMDNlcGF1c2VfbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTI6XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtibG9ja19tb2R1bGVfaWQgPSAldVxcblxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTM6XHRcdFx0IGh0dF9zdGF0c19idWYtXHUwMDNlYmxvY2tfbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy01NTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTU2Mz1zdGF0aWMgaW5saW5lIHZvaWQgaHR0X3ByaW50X3R4X3RpZF9zdGF0c192MV90bHYoY29uc3Qgdm9pZCAqdGFnX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjAyLVx0XHRcdCBodHRfc3RhdHNfYnVmLVx1MDAzZWxhc3Rfc2NoZWR1bGVkX3RzbXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwMzpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O3BhdXNlX21vZHVsZV9pZCA9ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNDpcdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VwYXVzZV9tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNTpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2Jsb2NrX21vZHVsZV9pZCA9ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNjpcdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VibG9ja19tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwNy1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2FsbG93X25fZmxhZ3MgPSAweCV4XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaD0yNzY9c3RydWN0IGh0dF9od19zdGF0c193ZF90aW1lb3V0X3RsdiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc3LVx0LyogU3RvcmVkIGFzIGxpdHRsZSBlbmRpYW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDoyNzg6XHR1OCBod19tb2R1bGVfbmFtZVtIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc5LVx0dTMyIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaD0zMzg9c3RydWN0IGh0dF90eF90aWRfc3RhdHNfdGx2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzUxLVx0dTMyIGxhc3Rfc2NoZWR1bGVkX3RzbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzUyOlx0dTMyIHBhdXNlX21vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNTM6XHR1MzIgYmxvY2tfbW9kdWxlX2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM1NC1cdHUzMiB0aWRfdHhfYWlydGltZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzYzPXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3YxX3RsdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM3Ni1cdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjM3NzpcdHUzMiBwYXVzZV9tb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mzc4Olx0dTMyIGJsb2NrX21vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaC0zNzktXHR1MzIgdGlkX3R4X2FpcnRpbWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzA3PXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxODptb2R1bGVfaW5pdChhdGgxMWtfcGNpX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzIwPXN0YXRpYyB2b2lkIGF0aDExa19wY2lfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMyNTptb2R1bGVfZXhpdChhdGgxMWtfcGNpX2V4aXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmM9Mjg9RVhQT1JUX1NZTUJPTChhdGgxMWtfY29sZF9ib290X2NhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jOjI5Om1vZHVsZV9wYXJhbV9uYW1lZChjb2xkX2Jvb3RfY2FsLCBhdGgxMWtfY29sZF9ib290X2NhbCwgYm9vbCwgMDY0NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMwLU1PRFVMRV9QQVJNX0RFU0MoY29sZF9ib290X2NhbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTQ1NzQ9aW50IGF0aDExa193bWlfcGRldl9kbWFfcmluZ19jZmcoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy00NTg5LVx0Y21kLVx1MDAzZXBkZXZfaWRcdFx0PSBwYXJhbS1cdTAwM2VwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo0NTkwOlx0Y21kLVx1MDAzZW1vZHVsZV9pZFx0XHQ9IHBhcmFtLVx1MDAzZW1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNDU5MS1cdGNtZC1cdTAwM2ViYXNlX3BhZGRyX2xvXHQ9IHBhcmFtLVx1MDAzZWJhc2VfcGFkZHJfbG87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz00OTg0PXN0YXRpYyBpbnQgYXRoMTFrX3dtaV90bHZfZG1hX3JpbmdfY2FwcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jYXBzX3BhcnNlLVx1MDAzZW5fZG1hX3JpbmdfY2FwczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NTAxNzpcdFx0aWYgKGRtYV9jYXBzW2ldLm1vZHVsZV9pZCBcdTAwM2U9IFdNSV9ESVJFQ1RfQlVGX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE4Olx0XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDtJbnZhbGlkIG1vZHVsZSBpZCAlZFxcblwmIzM0OywgZG1hX2NhcHNbaV0ubW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxOS1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NTAyMzpcdFx0ZGlyX2J1ZmZfY2Fwc1tpXS5pZCA9IGRtYV9jYXBzW2ldLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAyNC1cdFx0ZGlyX2J1ZmZfY2Fwc1tpXS5wZGV2X2lkID0gRFBfSFcyU1dfTUFDSUQoZG1hX2NhcHNbaV0ucGRldl9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTAxPWF0aDExa193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTEyNi1cdGNtZC1cdTAwM2V2ZGV2X2lkID0gdXRfY21kLnZkZXZfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkxMjc6XHRjbWQtXHUwMDNlbW9kdWxlX2lkID0gdXRfY21kLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTEyOC1cdGNtZC1cdTAwM2VudW1fYXJncyA9IHV0X2NtZC5udW1fYXJncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxNTItXHRcdCAgIFwmIzM0O2NtZCB1bml0IHRlc3QgbW9kdWxlICVkIHZkZXYgJWQgbl9hcmdzICVkIHRva2VuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTUzOlx0XHQgICBjbWQtXHUwMDNlbW9kdWxlX2lkLCBjbWQtXHUwMDNldmRldl9pZCwgY21kLVx1MDAzZW51bV9hcmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTU0LVx0XHQgICBjbWQtXHUwMDNlZGlhZ190b2tlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTU5PWludCBhdGgxMWtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMWsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE4NC1cdHdtaV91dC52ZGV2X2lkID0gYXJ2aWYtXHUwMDNldmRldl9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE4NTpcdHdtaV91dC5tb2R1bGVfaWQgPSBERlNfVU5JVF9URVNUX01PRFVMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE4Ni1cdHdtaV91dC5udW1fYXJncyA9IERGU19NQVhfVEVTVF9BUkdTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE5NDppbnQgYXRoMTFrX3dtaV9md19kYmdsb2dfY2ZnKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgKm1vZHVsZV9pZF9iaXRtYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTUtXHRcdFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIyNi1cdFx0Y21kLVx1MDAzZXZhbHVlID0gZGJnbG9nLVx1MDAzZXZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MjI3Olx0XHRtZW1jcHkodGx2LVx1MDAzZXZhbHVlLCBtb2R1bGVfaWRfYml0bWFwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MjI4LVx0XHQgICAgICAgTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFMgKiBzaXplb2YodTMyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMjktXHRcdC8qIGNsZWFyIGN1cnJlbnQgY29uZmlnIHRvIGJlIHVzZWQgZm9yIG5leHQgdXNlciBjb25maWcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTIzMDpcdFx0bWVtc2V0KG1vZHVsZV9pZF9iaXRtYXAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMzEtXHRcdCAgICAgICBNQVhfTU9EVUxFX0lEX0JJVE1BUF9XT1JEUyAqIHNpemVvZih1MzIpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTI1NzU9c3RydWN0IHdtaV9kbWFfcmluZ19jYXBhYmlsaXRpZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3Ny1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyNTc4Olx0dTMyIG1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3OS1cdHUzMiBtaW5fZWxlbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTQxMDE9c3RydWN0IHdtaV91bml0X3Rlc3RfY21kIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDMtXHR1MzIgdmRldl9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6NDEwNDpcdHUzMiBtb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDUtXHR1MzIgbnVtX2FyZ3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD01NjY4PXN0cnVjdCBhdGgxMWtfd21pX3BkZXZfZG1hX3JpbmdfY2ZnX3JlcV9jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY3MC1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo1NjcxOlx0dTMyIG1vZHVsZV9pZDtcdFx0Lyogc2VlIGVudW0gd21pX2RpcmVjdF9idWZmZXJfbW9kdWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTU2NzItXHR1MzIgYmFzZV9wYWRkcl9sbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTU2OTA9c3RydWN0IGF0aDExa193bWlfZG1hX2J1Zl9yZWxlYXNlX2ZpeGVkX3BhcmFtIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5MS1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo1NjkyOlx0dTMyIG1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5My1cdHUzMiBudW1fYnVmX3JlbGVhc2VfZW50cnk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD02NTk0PWludCBhdGgxMWtfd21pX3NjYW5fcHJvYl9yZXFfb3VpKHN0cnVjdCBhdGgxMWsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC02NTk1LVx0XHRcdFx0IGNvbnN0IHU4IG1hY19hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjY1OTY6aW50IGF0aDExa193bWlfZndfZGJnbG9nX2NmZyhzdHJ1Y3QgYXRoMTFrICphciwgdTMyICptb2R1bGVfaWRfYml0bWFwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC02NTk3LVx0XHRcdCAgICAgc3RydWN0IGF0aDExa19md19kYmdsb2cgKmRiZ2xvZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NDkKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBgYXRoMTFrYCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHRoZSBgYXRoMTFrYCBkcml2ZXIuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDExa2AgaXMgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgYW5kIGl0JiMzOTtzIHByZXR0eSBzcGVjaWZpYyDigJMgaXQgb25seSBwbGF5cyBuaWNlbHkgd2l0aCBQQ0kgYW5kIEFIQiBoYXJkd2FyZSBwbGF0Zm9ybXMgKHRoaW5rIElQUTgwNzQsIFFDQTYzOTAsIHRob3NlIHR5cGVzKS4gSXQgKmRvZXNuJiMzOTt0KiBzdXBwb3J0IFVTQi4gVGhpcyBtZWFucyB0aGF0LCB1bmxpa2Ugc29tZSBvdGhlciBkcml2ZXJzLCBJIGNhbiYjMzk7dCBqdXN0IGVhc2lseSBzcGluIHVwIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgYW5kIGV4cGVjdCB0byBoaXQgdGhlIGNvZGUuIE5vIHNvZnR3YXJlIG1vY2tzIG9yIGVtdWxhdGlvbnMgZXhpc3QgaW4gdGhvc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciB0aGlzIGRyaXZlci4gIEl0IG5lZWRzIHNwZWNpYWwgUXVhbGNvbW0gaGFyZHdhcmUsIEFTSUNzLCBhbmQgZmlybXdhcmUgdG8gZXZlbiBwcm9iZSBhbmQgaW5pdGlhbGl6ZSBwcm9wZXJseS4KCkkmIzM5O20gYWxzbyBrZWVwaW5nIGluIG1pbmQgdGhlIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCB0aGUgYml0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMg4oCTIHRoZSBvbmVzIHRoYXQgZGVtYW5kIHJlYWwgQVNJQy9QQ0llIGNhcmRzIGFuZCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwLiAgVGhpcyBzZWVtcyBoaWdobHkgcmVsZXZhbnQgaGVyZS4KCkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgYWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgbmVhdGx5IHR1Y2tlZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gOiAgYGNvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgZHAuY2AsIGBkcF9yeC5jYCwgYGRwX3R4LmNgLCBgZHBfdHguaGAsIGBtYWMuY2AsIGFuZCBgbWFjLmhgLiAgTm9uZSBvZiB0aGVzZSBhcmUgcmVsYXRlZCB0byB2aXJ0dWFsIGRldmljZSBkcml2ZXJzLCBsaWtlIG1hYzgwMjExX2h3c2ltIG9yIHZpcnRpby1uZXQsIG9yIGV2ZW4gYSBVU0IgZHJpdmVyIHRoYXQgY291bGQgKnBvdGVudGlhbGx5KiBiZSBmYWtlZCB1c2luZyBhIHN5emthbGxlciBVU0IgcmF3IGdhZGdldC4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzIGxpa2UgUUVNVSBhbmQgR0NFLiBJJiMzOTtkIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgYGF0aDExa2AgZHJpdmVyIHJlbGllcyBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoQVNJQ3MgYW5kIGZpcm13YXJlKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aHVzIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjaGVja2VkIHRoYXQgdGhlIGRpZmYgb25seSB0b3VjaGVzIGZpbGVzIHdpdGhpbiB0aGUgYGF0aDExa2AgZGlyZWN0b3J5LiAgRXZlcnl0aGluZyBsb29rcyBnb29kLCBzbyBJJiMzOTttIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MjIuMzc1NDgyMjI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNjMzMDk5OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gODAyLjExYXggd2lyZWxlc3MgZHJpdmVyKSwgd2hpY2ggb3BlcmF0ZXMgZXhjbHVzaXZlbHkgb24gcGh5c2ljYWwgUENJZS9BSEIgaGFyZHdhcmUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDoyMi4zNzU0ODY1NThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTg5Mzc0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNTIzYjk0ZTY0ZDRkZGU1MmI5YjU0OGNiMWM2ZGMyY2FmOTljYzc0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMTc6MDA6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxcbmluZGV4IGEwZDcyNTkyM2VmMjQuLjQwODk1ZDI3NmRlNWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxcbkBAIC03MDksNiArNzA5LDExIEBAIHN0cnVjdCBhdGgxMWsge1xcbiBcXHQgKi9cXG4gXFx0c3BpbmxvY2tfdCBkYXRhX2xvY2s7XFxuIFxcbitcXHQvKiBzZXJpYWxpc2VzIG9uZSBzY2hlZHVsaW5nIHJvdW5kIHBlciBhY2Nlc3MgY2F0ZWdvcnkgYWdhaW5zdCB0aGVcXG4rXFx0ICogb3RoZXIgY29udGV4dHMgdGhhdCBkcml2ZSBpdFxcbitcXHQgKi9cXG4rXFx0c3BpbmxvY2tfdCB0eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XFxuK1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGFydmlmcztcXG4gXFx0Lyogc2hvdWxkIG5ldmVyIGJlIE5VTEw7IG5lZWRlZCBmb3IgcmVndWxhciBodHQgcnggKi9cXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpyeF9jaGFubmVsO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXFxuaW5kZXggNzA5MjI2MTJkM2ZiOS4uZmZlMWY0NjZhZWZiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXFxuQEAgLTcxNCw2ICs3MTQsMTYgQEAgc3RhdGljIHNzaXplX3QgYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFxcdCBcXFwiXFxcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0IGF0b21pY19yZWFkKFxcdTAwMjZzb2Nfc3RhdHMtXFx1MDAzZXR4X2Vyci5taXNjX2ZhaWwpKTtcXG4gXFxuK1xcdC8qIERlc2NyaXB0b3JzIHRoZSBoYXJkd2FyZSBoYXMgbm90IGNvbXBsZXRlZC4gKi9cXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblBlbmRpbmcgVHggTVNEVXM6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2VudW1fcmFkaW9zOyBpKyspIHtcXG4rXFx0XFx0c3RydWN0IGF0aDExayAqYXIgPSBhYi1cXHUwMDNlcGRldnNbaV0uYXI7XFxuK1xcbitcXHRcXHRpZiAoYXIpXFxuK1xcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmFkaW8lZDogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBpLCBhdG9taWNfcmVhZChcXHUwMDI2YXItXFx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSk7XFxuK1xcdH1cXG4rXFxuIFxcdGxlbiArPSBhdGgxMWtfZGVidWdmc19kdW1wX3NvY19yaW5nX2JwX3N0YXRzKGFiLCBidWYgKyBsZW4sIHNpemUgLSBsZW4pO1xcbiBcXG4gXFx0aWYgKGxlbiBcXHUwMDNlIHNpemUpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuQEAgLTc4Myw4ICs3ODMsMTQgQEAgaW50IGF0aDExa19kcF9zZXJ2aWNlX3Nybmcoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlmIChCSVQoYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2V0Y2wyd2JtX3JibV9tYXBbaV0ud2JtX3JpbmdfbnVtKSBcXHUwMDI2XFxuLVxcdFxcdCAgICBhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbZ3JwX2lkXSlcXG4tXFx0XFx0XFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSk7XFxuK1xcdFxcdCAgICBhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbZ3JwX2lkXSkge1xcbitcXHRcXHRcXHR3b3JrX2RvbmUgPVxcbitcXHRcXHRcXHRcXHRhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKGFiLCBpLCBidWRnZXQpO1xcbitcXHRcXHRcXHRidWRnZXQgLT0gd29ya19kb25lO1xcbitcXHRcXHRcXHR0b3Rfd29ya19kb25lICs9IHdvcmtfZG9uZTtcXG4rXFx0XFx0XFx0aWYgKGJ1ZGdldCBcXHUwMDNjPSAwKVxcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMucmluZ19tYXNrLVxcdTAwM2VyeF9lcnJbZ3JwX2lkXSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcXG5pbmRleCAzMzQyNTcwN2MwODQyLi5hN2I5YmIyOTU3MjhiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xcbkBAIC0xMzc3LDYgKzEzNzcsNyBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XFxuIFxcdHUzMiB0eF9kdXJhdGlvbiA9IDA7XFxuIFxcdHU4IHRpZCA9IEhUVF9QUERVX1NUQVRTX05PTl9RT1NfVElEO1xcbitcXHR1OCBhaXJ0aW1lX3RpZDtcXG4gXFx0Ym9vbCBpc19hbXBkdSA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCEodXNyX3N0YXRzLVxcdTAwM2V0bHZfZmxhZ3MgXFx1MDAyNiBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpXFxuQEAgLTE0ODUsNiArMTQ4NiwyMiBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXG4gXFx0YXJzdGEtXFx1MDAzZXR4cmF0ZS5idyA9IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncoYncpO1xcbiBcXHRhcnN0YS1cXHUwMDNldHhfZHVyYXRpb24gKz0gdHhfZHVyYXRpb247XFxuK1xcbitcXHQvKiBUaGUgYWNrL0JBIHN0YXR1cyBUTFYgbmFtZXMgdGhlIFRJRCBvbmx5IGZvciBhIFBQRFUgdGhhdCBkcmV3IGFcXG4rXFx0ICogcmVzcG9uc2U7IGZhbGwgYmFjayB0byB0aGUgY29tcGxldGlvbiBhbmQgcmF0ZSBUTFZzLCB0aGVuIHRvIEJFLlxcbitcXHQgKi9cXG4rXFx0YWlydGltZV90aWQgPSB0aWQ7XFxuK1xcdGlmIChhaXJ0aW1lX3RpZCBcXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHVzcl9zdGF0cy1cXHUwMDNldGx2X2ZsYWdzIFxcdTAwMjYgQklUKEhUVF9QUERVX1NUQVRTX1RBR19VU1JfQ09NUExUTl9DT01NT04pKVxcbitcXHRcXHRhaXJ0aW1lX3RpZCA9IHVzcl9zdGF0cy1cXHUwMDNlY21wbHRuX2Ntbi50aWRfbnVtO1xcbitcXHRpZiAoYWlydGltZV90aWQgXFx1MDAzZT0gSUVFRTgwMjExX05VTV9USURTKVxcbitcXHRcXHRhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS1cXHUwMDNldGlkX251bTtcXG4rXFx0aWYgKGFpcnRpbWVfdGlkIFxcdTAwM2U9IElFRUU4MDIxMV9OVU1fVElEUylcXG4rXFx0XFx0YWlydGltZV90aWQgPSAwO1xcbitcXG4rXFx0aWYgKHR4X2R1cmF0aW9uKVxcbitcXHRcXHRpZWVlODAyMTFfc3RhX3JlZ2lzdGVyX2FpcnRpbWUoc3RhLCBhaXJ0aW1lX3RpZCwgdHhfZHVyYXRpb24sIDApO1xcbitcXG4gXFx0bWVtY3B5KFxcdTAwMjZhcnN0YS1cXHUwMDNlbGFzdF90eHJhdGUsIFxcdTAwMjZhcnN0YS1cXHUwMDNldHhyYXRlLCBzaXplb2Yoc3RydWN0IHJhdGVfaW5mbykpO1xcbiBcXG4gXFx0LyogUFBEVSBzdGF0cyByZXBvcnRlZCBmb3IgbWdtdCBwYWNrZXQgZG9lc24ndCBoYXZlIHZhbGlkIHR4IGJ5dGVzLlxcbkBAIC01MjUzLDYgKzUyNzAsNyBAQCBpbnQgYXRoMTFrX2RwX3J4X3Byb2Nlc3NfbW9uX3N0YXR1cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgbWFjX2lkLFxcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xcbiBcXHRzdHJ1Y3QgYXRoMTFrX3BlZXIgKnBlZXI7XFxuIFxcdHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcXG4gXFx0aW50IG51bV9idWZmc19yZWFwZWQgPSAwO1xcbiBcXHR1MzIgcnhfYnVmX3N6O1xcbiBcXHR1MTYgbG9nX3R5cGU7XFxuQEAgLTUzMDcsNiArNTMyNSw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRzdGEgPSBOVUxMO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWItXFx1MDAzZWJhc2VfbG9jayk7XFxuIFxcdFxcdHBlZXIgPSBhdGgxMWtfcGVlcl9maW5kX2J5X2lkKGFiLCBwcGR1X2luZm8tXFx1MDAzZXBlZXJfaWQpO1xcbkBAIC01MzIwLDEyICs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXFxuIFxcbiBcXHRcXHRhcnN0YSA9IGF0aDExa19zdGFfdG9fYXJzdGEocGVlci1cXHUwMDNlc3RhKTtcXG4gXFx0XFx0YXRoMTFrX2RwX3J4X3VwZGF0ZV9wZWVyX3N0YXRzKGFyc3RhLCBwcGR1X2luZm8pO1xcbitcXHRcXHRzdGEgPSBwZWVyLVxcdTAwM2VzdGE7XFxuIFxcbiBcXHRcXHRpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItXFx1MDAzZWFkZHIpKVxcbiBcXHRcXHRcXHR0cmFjZV9hdGgxMWtfaHR0X3J4ZGVzYyhhciwgc2tiLVxcdTAwM2VkYXRhLCBsb2dfdHlwZSwgcnhfYnVmX3N6KTtcXG4gXFxuIG5leHRfc2tiOlxcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YWItXFx1MDAzZWJhc2VfbG9jayk7XFxuK1xcbitcXHRcXHQvKiBUaGUgYWlydGltZSBhIHN0YXRpb24gc3BlbmRzIHRyYW5zbWl0dGluZyBpcyB0YWtlbiBmcm9tXFxuK1xcdFxcdCAqIHRoZSBvdGhlcnMsIHNvIGl0cyBkZWZpY2l0IGlzIGNoYXJnZWQgZm9yIGl0IHRvbywgd2l0aCB0aGVcXG4rXFx0XFx0ICogZHVyYXRpb24gdGhlIGhhcmR3YXJlIG1lYXN1cmVkIGZvciB0aGUgd2hvbGUgUFBEVSwgYXMgb25cXG4rXFx0XFx0ICogdGhlIHRyYW5zbWl0IHNpZGUuIFRoZSBUTFYgdGhhdCBuYW1lcyB0aGUgVElEIGlzIG5vdCBpblxcbitcXHRcXHQgKiB0aGUgZGVmYXVsdCBtb25pdG9yIHN0YXR1cyBmaWx0ZXIsIHNvIHRoZSBjaGFyZ2UgZ29lcyB0b1xcbitcXHRcXHQgKiBCRS4gT3V0c2lkZSBiYXNlX2xvY2ssIHdoaWNoIHR4IGNvbXBsZXRpb24gY29udGVuZHMgZm9yO1xcbitcXHRcXHQgKiBzdGEgaXMgaGVsZCBieSB0aGUgcmN1IHJlYWQgbG9jay5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChzdGEgXFx1MDAyNlxcdTAwMjYgcHBkdV9pbmZvLVxcdTAwM2VyeF9kdXJhdGlvbilcXG4rXFx0XFx0XFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgMCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHBwZHVfaW5mby1cXHUwMDNlcnhfZHVyYXRpb24pO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEuLjM5OTdiZDMzNjk0MmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuQEAgLTMwNSw5ICszMDUsMTAgQEAgc3RhdGljIHZvaWQgYXRoMTFrX2RwX3R4X2ZyZWVfdHhidWYoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTggbWFjX2lkLFxcbiBcXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xcbiBcXG4gXFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cXHUwMDNlZGV2LCBza2JfY2ItXFx1MDAzZXBhZGRyLCBtc2R1LVxcdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xcbi1cXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4gXFxuIFxcdGFyID0gYWItXFx1MDAzZXBkZXZzW21hY19pZF0uYXI7XFxuK1xcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVxcdTAwM2VodywgbXNkdSk7XFxuK1xcbiBcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2YXItXFx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2YXItXFx1MDAzZWRwLnR4X2VtcHR5X3dhaXRxKTtcXG4gfVxcbkBAIC02ODQsNyArNjg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4gXFx0XFx0dHMtXFx1MDAzZXJhdGVfc3RhdHMgPSAwO1xcbiB9XFxuIFxcbi12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXFxuK2ludCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgaW50IGJ1ZGdldClcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoMTFrICphcjtcXG4gXFx0c3RydWN0IGF0aDExa19kcCAqZHAgPSBcXHUwMDI2YWItXFx1MDAzZWRwO1xcbkBAIC02OTMsOSArNjk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZHU7XFxuIFxcdHN0cnVjdCBoYWxfdHhfc3RhdHVzIHRzID0ge307XFxuIFxcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xcbitcXHR1bnNpZ25lZCBsb25nIHB1c2ggPSAwO1xcbitcXHRpbnQgZG9uZSA9IDA7XFxuIFxcdHUzMiAqZGVzYztcXG4gXFx0dTMyIG1zZHVfaWQ7XFxuLVxcdHU4IG1hY19pZDtcXG4rXFx0dTggbWFjX2lkLCBpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzdGF0dXNfcmluZy1cXHUwMDNlbG9jayk7XFxuIFxcbkBAIC03MjEsMTAgKzcyNSwxMyBAQCB2b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXFxuIFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c3RhdHVzX3JpbmctXFx1MDAzZWxvY2spO1xcbiBcXG4tXFx0d2hpbGUgKEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xcbitcXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgQVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XFxuK1xcdCAgICAgICB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xcbiBcXHRcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0XFx0dTMyIGRlc2NfaWQ7XFxuIFxcbitcXHRcXHRkb25lKys7XFxuIFxcdFxcdHR4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsID1cXG4gXFx0XFx0XFx0QVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cXHUwMDNldHhfc3RhdHVzX3RhaWwpO1xcbiBcXHRcXHR0eF9zdGF0dXMgPSBcXHUwMDI2dHhfcmluZy1cXHUwMDNldHhfc3RhdHVzW3R4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsXTtcXG5AQCAtNzU1LDEyICs3NjIsMjUgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dHhfcmluZy1cXHUwMDNldHhfaWRyX2xvY2spO1xcbiBcXG4gXFx0XFx0YXIgPSBhYi1cXHUwMDNlcGRldnNbbWFjX2lkXS5hcjtcXG4rXFx0XFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICsgc2tiX2dldF9xdWV1ZV9tYXBwaW5nKG1zZHUpLFxcbitcXHRcXHRcXHQgIFxcdTAwMjZwdXNoKTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZhci1cXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpKVxcbiBcXHRcXHRcXHR3YWtlX3VwKFxcdTAwMjZhci1cXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xcbiBcXG4gXFx0XFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRlX21zZHUoYXIsIG1zZHUsIFxcdTAwMjZ0cyk7XFxuIFxcdH1cXG4rXFxuK1xcdC8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXNcXG4rXFx0ICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nXFxuK1xcdCAqIG9uLiBUaGUgYXJyaXZhbHMgdGhhdCB3b3VsZCBvdGhlcndpc2Ugc3RhcnQgYSByb3VuZCBhcmUgdGhlbXNlbHZlc1xcbitcXHQgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9zZXRfYml0KGksIFxcdTAwMjZwdXNoLCBhYi1cXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxcbitcXHRcXHRhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhhYi1cXHUwMDNlcGRldnNbaSAvIElFRUU4MDIxMV9OVU1fQUNTXS5hcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgaSAlIElFRUU4MDIxMV9OVU1fQUNTKTtcXG4rXFxuK1xcdHJldHVybiBkb25lO1xcbiB9XFxuIFxcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaFxcbmluZGV4IDkzMDNiNWJhNmUwMTIuLmI1Mjk2Y2RhNzNlMzAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXFxuQEAgLTIxLDcgKzIxLDggQEAgdm9pZCBhdGgxMWtfZHBfdHhfdXBkYXRlX3R4Y29tcGwoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBoYWxfdHhfc3RhdHVzICp0cyk7XFxuIGludCBhdGgxMWtfZHBfdHhfaHR0X2gydF92ZXJfcmVxX21zZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG4gaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxcbiBcXHRcXHQgc3RydWN0IGF0aDExa19zdGEgKmFyc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKTtcXG4raW50IGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQsXFxuK1xcdFxcdFxcdFxcdCAgICBpbnQgYnVkZ2V0KTtcXG4gaW50IGF0aDExa19kcF90eF9zZW5kX3Jlb19jbWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3J4X3RpZCAqcnhfdGlkLFxcbiBcXHRcXHRcXHQgICAgICBlbnVtIGhhbF9yZW9fY21kX3R5cGUgdHlwZSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aDExa19oYWxfcmVvX2NtZCAqY21kLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjEyNTM1OTI2NjMxYjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtNjQ5OSw5ICs2NDk5LDkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcXG4tXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgaW50IGF0aDExa19tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuK1xcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2IgPSBBVEgxMUtfU0tCX0NCKHNrYik7XFxuIFxcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXFx1MDAzZXByaXY7XFxuQEAgLTY1MzMsNyArNjUzMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cXHUwMDNlaHcsIHNrYik7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY29udHJvbC1cXHUwMDNlc3RhKVxcbkBAIC02NTQ0LDYgKzY1NDQsNjkgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0YXRoMTFrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxcXG5cXFwiLCByZXQpO1xcbiBcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cXHUwMDNlaHcsIHNrYik7XFxuIFxcdH1cXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0YXRoMTFrX21hY190eChodywgY29udHJvbCwgc2tiKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVxcdTAwM2VzdGEgfTtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkgYXBwbGllcyB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBpdHNlbGYsIHNvIGFcXG4rXFx0ICogc2VsZWN0aW9uIGVuZHMgd2hlcmUgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgYmluZHMsIHdoZXJlIHRoZVxcbitcXHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xcbitcXHQgKiBoYW5kbGVyIGRvZXMgdG9kYXksIGFuZCBhZGRpdGlvbmFsbHkgd2hlbiB0aGUgaGFyZHdhcmUgcmVmdXNlcyBhXFxuK1xcdCAqIGZyYW1lLlxcbitcXHQgKi9cXG4rXFx0d2hpbGUgKChza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShhci1cXHUwMDNlaHcsIHR4cSkpKSB7XFxuK1xcdFxcdHJldCA9IGF0aDExa19tYWNfdHgoYXItXFx1MDAzZWh3LCBcXHUwMDI2Y29udHJvbCwgc2tiKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJldCA9PSAtRU5PU1BDIHx8IHJldCA9PSAtRU5PTUVNKSlcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfc2NoZWR1bGVfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcXG4re1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFyLVxcdTAwM2VodztcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZXR4cV9sb2NrW2FjXSk7XFxuK1xcbitcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCBhYyk7XFxuK1xcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XFxuK1xcdFxcdGludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpO1xcbitcXG4rXFx0XFx0aWVlZTgwMjExX3JldHVybl90eHEoaHcsIHR4cSwgZmFsc2UpO1xcbitcXHRcXHRpZiAodW5saWtlbHkocmV0KSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTtcXG4rXFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNldHhxX2xvY2tbYWNdKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdGF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGh3LVxcdTAwM2Vwcml2LCB0eHEtXFx1MDAzZWFjKTtcXG4rfVxcbitcXG4rdm9pZCBhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpXFxuK3tcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG4gdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKVxcbkBAIC0xMDA2Nyw3ICsxMDEzMCw3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMWtfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuQEAgLTEwNTkyLDYgKzEwNjU1LDkgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuIFxcdGFyLVxcdTAwM2Vody1cXHUwMDNlc3RhX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3N0YSk7XFxuIFxcbiBcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTtcXG4rXFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcXG4rXFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuK1xcdFxcdFxcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NUQV9UWF9QV1IpO1xcbiBcXHRpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELFxcbiBcXHRcXHQgICAgIGFyLVxcdTAwM2VhYi1cXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XFxuQEAgLTEwNzU0LDcgKzEwODIwLDcgQEAgaW50IGF0aDExa19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4gXFx0c3RydWN0IGF0aDExayAqYXI7XFxuIFxcdHN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjtcXG4gXFx0aW50IHJldDtcXG4tXFx0aW50IGk7XFxuK1xcdGludCBpLCBqO1xcbiBcXG4gXFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFR0lTVEVSRUQsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTEwNzg4LDYgKzEwODU0LDkgQEAgaW50IGF0aDExa19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4gXFxuIFxcdFxcdHBkZXYtXFx1MDAzZWFyID0gYXI7XFxuIFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBJRUVFODAyMTFfTlVNX0FDUzsgaisrKVxcbitcXHRcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YXItXFx1MDAzZXR4cV9sb2NrW2pdKTtcXG4gXFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFyLVxcdTAwM2VhcnZpZnMpO1xcbiBcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YXItXFx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcXG5pbmRleCA1OWY4M2M3MTc1ZmQxLi5kNTc3YzVjYTI0OWNjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXFxuQEAgLTE2MSw2ICsxNjEsNyBAQCBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV92ZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiB2ZGV2X2lkKVxcbiBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV9wZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBwZGV2X2lkKTtcXG4gXFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcik7XFxuK3ZvaWQgYXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKTtcXG4gdm9pZCBhdGgxMWtfbWFjX3BlZXJfY2xlYW51cF9hbGwoc3RydWN0IGF0aDExayAqYXIpO1xcbiBpbnQgYXRoMTFrX21hY190eF9tZ210X3BlbmRpbmdfZnJlZShpbnQgYnVmX2lkLCB2b2lkICpza2IsIHZvaWQgKmN0eCk7XFxuIHU4IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncodTggYncpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDoyMy45OTUwNzIyNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNzQzNzEwMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gODAyLjExYXggd2lyZWxlc3MgZHJpdmVyKSwgd2hpY2ggb3BlcmF0ZXMgZXhjbHVzaXZlbHkgb24gcGh5c2ljYWwgUENJZS9BSEIgaGFyZHdhcmUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1MjNiOTRlNjRkNGRkZTUyYjliNTQ4Y2IxYzZkYzJjYWY5OWNjNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjAwOjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuaW5kZXggYTBkNzI1OTIzZWYyNC4uNDA4OTVkMjc2ZGU1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuQEAgLTcwOSw2ICs3MDksMTEgQEAgc3RydWN0IGF0aDExayB7XG4gXHQgKi9cbiBcdHNwaW5sb2NrX3QgZGF0YV9sb2NrO1xuIFxuK1x0Lyogc2VyaWFsaXNlcyBvbmUgc2NoZWR1bGluZyByb3VuZCBwZXIgYWNjZXNzIGNhdGVnb3J5IGFnYWluc3QgdGhlXG4rXHQgKiBvdGhlciBjb250ZXh0cyB0aGF0IGRyaXZlIGl0XG4rXHQgKi9cbitcdHNwaW5sb2NrX3QgdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuK1xuIFx0c3RydWN0IGxpc3RfaGVhZCBhcnZpZnM7XG4gXHQvKiBzaG91bGQgbmV2ZXIgYmUgTlVMTDsgbmVlZGVkIGZvciByZWd1bGFyIGh0dCByeCAqL1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpyeF9jaGFubmVsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbmluZGV4IDcwOTIyNjEyZDNmYjkuLmZmZTFmNDY2YWVmYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbkBAIC03MTQsNiArNzE0LDE2IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRcdCBcIlxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNnNvY19zdGF0cy1cdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XG4gXG4rXHQvKiBEZXNjcmlwdG9ycyB0aGUgaGFyZHdhcmUgaGFzIG5vdCBjb21wbGV0ZWQuICovXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5QZW5kaW5nIFR4IE1TRFVzOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZW51bV9yYWRpb3M7IGkrKykge1xuK1x0XHRzdHJ1Y3QgYXRoMTFrICphciA9IGFiLVx1MDAzZXBkZXZzW2ldLmFyO1xuK1xuK1x0XHRpZiAoYXIpXG4rXHRcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwicmFkaW8lZDogJWRcXG5cIixcbitcdFx0XHRcdFx0IGksIGF0b21pY19yZWFkKFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSk7XG4rXHR9XG4rXG4gXHRsZW4gKz0gYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfcmluZ19icF9zdGF0cyhhYiwgYnVmICsgbGVuLCBzaXplIC0gbGVuKTtcbiBcbiBcdGlmIChsZW4gXHUwMDNlIHNpemUpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5pbmRleCBiZTY1ZDczYjkwNGI2Li5kZGI0MzRjNTEzZTBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC03ODMsOCArNzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xuIFx0XHRpZiAoQklUKGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZXRjbDJ3Ym1fcmJtX21hcFtpXS53Ym1fcmluZ19udW0pIFx1MDAyNlxuLVx0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKVxuLVx0XHRcdGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGkpO1xuK1x0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKSB7XG4rXHRcdFx0d29ya19kb25lID1cbitcdFx0XHRcdGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGksIGJ1ZGdldCk7XG4rXHRcdFx0YnVkZ2V0IC09IHdvcmtfZG9uZTtcbitcdFx0XHR0b3Rfd29ya19kb25lICs9IHdvcmtfZG9uZTtcbitcdFx0XHRpZiAoYnVkZ2V0IFx1MDAzYz0gMClcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGFiLVx1MDAzZWh3X3BhcmFtcy5yaW5nX21hc2stXHUwMDNlcnhfZXJyW2dycF9pZF0pIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcbmluZGV4IDMzNDI1NzA3YzA4NDIuLmE3YjliYjI5NTcyOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuQEAgLTEzNzcsNiArMTM3Nyw3IEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsXG4gXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XG4gXHR1MzIgdHhfZHVyYXRpb24gPSAwO1xuIFx0dTggdGlkID0gSFRUX1BQRFVfU1RBVFNfTk9OX1FPU19USUQ7XG4rXHR1OCBhaXJ0aW1lX3RpZDtcbiBcdGJvb2wgaXNfYW1wZHUgPSBmYWxzZTtcbiBcbiBcdGlmICghKHVzcl9zdGF0cy1cdTAwM2V0bHZfZmxhZ3MgXHUwMDI2IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX1JBVEUpKSlcbkBAIC0xNDg1LDYgKzE0ODYsMjIgQEAgYXRoMTFrX3VwZGF0ZV9wZXJfcGVlcl90eF9zdGF0cyhzdHJ1Y3QgYXRoMTFrICphcixcbiBcbiBcdGFyc3RhLVx1MDAzZXR4cmF0ZS5idyA9IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncoYncpO1xuIFx0YXJzdGEtXHUwMDNldHhfZHVyYXRpb24gKz0gdHhfZHVyYXRpb247XG4rXG4rXHQvKiBUaGUgYWNrL0JBIHN0YXR1cyBUTFYgbmFtZXMgdGhlIFRJRCBvbmx5IGZvciBhIFBQRFUgdGhhdCBkcmV3IGFcbitcdCAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS5cbitcdCAqL1xuK1x0YWlydGltZV90aWQgPSB0aWQ7XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXHUwMDI2XHUwMDI2XG4rXHQgICAgdXNyX3N0YXRzLVx1MDAzZXRsdl9mbGFncyBcdTAwMjYgQklUKEhUVF9QUERVX1NUQVRTX1RBR19VU1JfQ09NUExUTl9DT01NT04pKVxuK1x0XHRhaXJ0aW1lX3RpZCA9IHVzcl9zdGF0cy1cdTAwM2VjbXBsdG5fY21uLnRpZF9udW07XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4rXHRcdGFpcnRpbWVfdGlkID0gdXNlcl9yYXRlLVx1MDAzZXRpZF9udW07XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4rXHRcdGFpcnRpbWVfdGlkID0gMDtcbitcbitcdGlmICh0eF9kdXJhdGlvbilcbitcdFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTtcbitcbiBcdG1lbWNweShcdTAwMjZhcnN0YS1cdTAwM2VsYXN0X3R4cmF0ZSwgXHUwMDI2YXJzdGEtXHUwMDNldHhyYXRlLCBzaXplb2Yoc3RydWN0IHJhdGVfaW5mbykpO1xuIFxuIFx0LyogUFBEVSBzdGF0cyByZXBvcnRlZCBmb3IgbWdtdCBwYWNrZXQgZG9lc24ndCBoYXZlIHZhbGlkIHR4IGJ5dGVzLlxuQEAgLTUyNTMsNiArNTI3MCw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0c3RydWN0IGF0aDExa19wZWVyICpwZWVyO1xuIFx0c3RydWN0IGF0aDExa19zdGEgKmFyc3RhO1xuK1x0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbiBcdGludCBudW1fYnVmZnNfcmVhcGVkID0gMDtcbiBcdHUzMiByeF9idWZfc3o7XG4gXHR1MTYgbG9nX3R5cGU7XG5AQCAtNTMwNyw2ICs1MzI1LDcgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCxcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuK1x0XHRzdGEgPSBOVUxMO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhYi1cdTAwM2ViYXNlX2xvY2spO1xuIFx0XHRwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLVx1MDAzZXBlZXJfaWQpO1xuQEAgLTUzMjAsMTIgKzUzMzksMjUgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCxcbiBcbiBcdFx0YXJzdGEgPSBhdGgxMWtfc3RhX3RvX2Fyc3RhKHBlZXItXHUwMDNlc3RhKTtcbiBcdFx0YXRoMTFrX2RwX3J4X3VwZGF0ZV9wZWVyX3N0YXRzKGFyc3RhLCBwcGR1X2luZm8pO1xuK1x0XHRzdGEgPSBwZWVyLVx1MDAzZXN0YTtcbiBcbiBcdFx0aWYgKGF0aDExa19kZWJ1Z2ZzX2lzX3BrdGxvZ19wZWVyX3ZhbGlkKGFyLCBwZWVyLVx1MDAzZWFkZHIpKVxuIFx0XHRcdHRyYWNlX2F0aDExa19odHRfcnhkZXNjKGFyLCBza2ItXHUwMDNlZGF0YSwgbG9nX3R5cGUsIHJ4X2J1Zl9zeik7XG4gXG4gbmV4dF9za2I6XG4gXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFiLVx1MDAzZWJhc2VfbG9jayk7XG4rXG4rXHRcdC8qIFRoZSBhaXJ0aW1lIGEgc3RhdGlvbiBzcGVuZHMgdHJhbnNtaXR0aW5nIGlzIHRha2VuIGZyb21cbitcdFx0ICogdGhlIG90aGVycywgc28gaXRzIGRlZmljaXQgaXMgY2hhcmdlZCBmb3IgaXQgdG9vLCB3aXRoIHRoZVxuK1x0XHQgKiBkdXJhdGlvbiB0aGUgaGFyZHdhcmUgbWVhc3VyZWQgZm9yIHRoZSB3aG9sZSBQUERVLCBhcyBvblxuK1x0XHQgKiB0aGUgdHJhbnNtaXQgc2lkZS4gVGhlIFRMViB0aGF0IG5hbWVzIHRoZSBUSUQgaXMgbm90IGluXG4rXHRcdCAqIHRoZSBkZWZhdWx0IG1vbml0b3Igc3RhdHVzIGZpbHRlciwgc28gdGhlIGNoYXJnZSBnb2VzIHRvXG4rXHRcdCAqIEJFLiBPdXRzaWRlIGJhc2VfbG9jaywgd2hpY2ggdHggY29tcGxldGlvbiBjb250ZW5kcyBmb3I7XG4rXHRcdCAqIHN0YSBpcyBoZWxkIGJ5IHRoZSByY3UgcmVhZCBsb2NrLlxuK1x0XHQgKi9cbitcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKVxuK1x0XHRcdGllZWU4MDIxMV9zdGFfcmVnaXN0ZXJfYWlydGltZShzdGEsIDAsIDAsXG4rXHRcdFx0XHRcdFx0ICAgICAgIHBwZHVfaW5mby1cdTAwM2VyeF9kdXJhdGlvbik7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YS4uMzk5N2JkMzM2OTQyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMzA1LDkgKzMwNSwxMCBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfZHBfdHhfZnJlZV90eGJ1ZihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBtYWNfaWQsXG4gXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xuIFxuIFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cdTAwM2VkZXYsIHNrYl9jYi1cdTAwM2VwYWRkciwgbXNkdS1cdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xuLVx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXG4gXHRhciA9IGFiLVx1MDAzZXBkZXZzW21hY19pZF0uYXI7XG4rXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cdTAwM2VodywgbXNkdSk7XG4rXG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZhci1cdTAwM2VkcC5udW1fdHhfcGVuZGluZykpXG4gXHRcdHdha2VfdXAoXHUwMDI2YXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xuIH1cbkBAIC02ODQsNyArNjg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcbiBcdFx0dHMtXHUwMDNlcmF0ZV9zdGF0cyA9IDA7XG4gfVxuIFxuLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbitpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbitcdFx0XHRcdCAgICBpbnQgYnVkZ2V0KVxuIHtcbiBcdHN0cnVjdCBhdGgxMWsgKmFyO1xuIFx0c3RydWN0IGF0aDExa19kcCAqZHAgPSBcdTAwMjZhYi1cdTAwM2VkcDtcbkBAIC02OTMsOSArNjk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdHN0cnVjdCBza19idWZmICptc2R1O1xuIFx0c3RydWN0IGhhbF90eF9zdGF0dXMgdHMgPSB7fTtcbiBcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbitcdHVuc2lnbmVkIGxvbmcgcHVzaCA9IDA7XG4rXHRpbnQgZG9uZSA9IDA7XG4gXHR1MzIgKmRlc2M7XG4gXHR1MzIgbXNkdV9pZDtcbi1cdHU4IG1hY19pZDtcbitcdHU4IG1hY19pZCwgaTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbkBAIC03MjEsMTAgKzcyNSwxMyBAQCB2b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbi1cdHdoaWxlIChBVEgxMUtfVFhfQ09NUExfTkVYVCh0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c19oZWFkKSB7XG4rXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XG4rXHQgICAgICAgdHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xuIFx0XHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcbiBcdFx0dTMyIGRlc2NfaWQ7XG4gXG4rXHRcdGRvbmUrKztcbiBcdFx0dHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCA9XG4gXHRcdFx0QVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCk7XG4gXHRcdHR4X3N0YXR1cyA9IFx1MDAyNnR4X3JpbmctXHUwMDNldHhfc3RhdHVzW3R4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWxdO1xuQEAgLTc1NSwxMiArNzYyLDI1IEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2dHhfcmluZy1cdTAwM2V0eF9pZHJfbG9jayk7XG4gXG4gXHRcdGFyID0gYWItXHUwMDNlcGRldnNbbWFjX2lkXS5hcjtcbitcdFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICsgc2tiX2dldF9xdWV1ZV9tYXBwaW5nKG1zZHUpLFxuK1x0XHRcdCAgXHUwMDI2cHVzaCk7XG4gXG4gXHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcbiBcdFx0XHR3YWtlX3VwKFx1MDAyNmFyLVx1MDAzZWRwLnR4X2VtcHR5X3dhaXRxKTtcbiBcbiBcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRlX21zZHUoYXIsIG1zZHUsIFx1MDAyNnRzKTtcbiBcdH1cbitcbitcdC8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXNcbitcdCAqIHdoYXQgYW4gYWlydGltZS1saW1pdGVkIHN0YXRpb24gaW4gdGhhdCBhY2Nlc3MgY2F0ZWdvcnkgaXMgd2FpdGluZ1xuK1x0ICogb24uIFRoZSBhcnJpdmFscyB0aGF0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBhIHJvdW5kIGFyZSB0aGVtc2VsdmVzXG4rXHQgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cHVzaCwgYWItXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxuK1x0XHRhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhhYi1cdTAwM2VwZGV2c1tpIC8gSUVFRTgwMjExX05VTV9BQ1NdLmFyLFxuK1x0XHRcdFx0XHQgICBpICUgSUVFRTgwMjExX05VTV9BQ1MpO1xuK1xuK1x0cmV0dXJuIGRvbmU7XG4gfVxuIFxuIGludCBhdGgxMWtfZHBfdHhfc2VuZF9yZW9fY21kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9yeF90aWQgKnJ4X3RpZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbmluZGV4IDkzMDNiNWJhNmUwMTIuLmI1Mjk2Y2RhNzNlMzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaFxuQEAgLTIxLDcgKzIxLDggQEAgdm9pZCBhdGgxMWtfZHBfdHhfdXBkYXRlX3R4Y29tcGwoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBoYWxfdHhfc3RhdHVzICp0cyk7XG4gaW50IGF0aDExa19kcF90eF9odHRfaDJ0X3Zlcl9yZXFfbXNnKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbiBcdFx0IHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKTtcbitpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbitcdFx0XHRcdCAgICBpbnQgYnVkZ2V0KTtcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXG4gXHRcdFx0ICAgICAgZW51bSBoYWxfcmVvX2NtZF90eXBlIHR5cGUsXG4gXHRcdFx0ICAgICAgc3RydWN0IGF0aDExa19oYWxfcmVvX2NtZCAqY21kLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi4xMjUzNTkyNjYzMWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTY0OTksOSArNjQ5OSw5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19tZ210X3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXG4tXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyBpbnQgYXRoMTFrX21hY190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHQgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxuK1x0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2IgPSBBVEgxMUtfU0tCX0NCKHNrYik7XG4gXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG5AQCAtNjUzMyw3ICs2NTMzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICByZXQpO1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0XHR9XG4tXHRcdHJldHVybjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGlmIChjb250cm9sLVx1MDAzZXN0YSlcbkBAIC02NTQ0LDYgKzY1NDQsNjkgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0YXRoMTFrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxuXCIsIHJldCk7XG4gXHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbitcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0YXRoMTFrX21hY190eChodywgY29udHJvbCwgc2tiKTtcbit9XG4rXG4rc3RhdGljIGludCBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVx1MDAzZXN0YSB9O1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGFwcGxpZXMgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgaXRzZWxmLCBzbyBhXG4rXHQgKiBzZWxlY3Rpb24gZW5kcyB3aGVyZSB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBiaW5kcywgd2hlcmUgdGhlXG4rXHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xuK1x0ICogaGFuZGxlciBkb2VzIHRvZGF5LCBhbmQgYWRkaXRpb25hbGx5IHdoZW4gdGhlIGhhcmR3YXJlIHJlZnVzZXMgYVxuK1x0ICogZnJhbWUuXG4rXHQgKi9cbitcdHdoaWxlICgoc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoYXItXHUwMDNlaHcsIHR4cSkpKSB7XG4rXHRcdHJldCA9IGF0aDExa19tYWNfdHgoYXItXHUwMDNlaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXHRcdGlmICh1bmxpa2VseShyZXQgPT0gLUVOT1NQQyB8fCByZXQgPT0gLUVOT01FTSkpXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpXG4re1xuK1x0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhci1cdTAwM2VodztcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHE7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNldHhxX2xvY2tbYWNdKTtcbitcbitcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTtcbitcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG4rXHRcdGludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpO1xuK1xuK1x0XHRpZWVlODAyMTFfcmV0dXJuX3R4cShodywgdHhxLCBmYWxzZSk7XG4rXHRcdGlmICh1bmxpa2VseShyZXQpKVxuK1x0XHRcdGJyZWFrO1xuK1x0fVxuK1x0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTtcbitcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZXR4cV9sb2NrW2FjXSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbit7XG4rXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShody1cdTAwM2Vwcml2LCB0eHEtXHUwMDNlYWMpO1xuK31cbitcbit2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcbit7XG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcilcbkBAIC0xMDA2Nyw3ICsxMDEzMCw3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4rXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5AQCAtMTA1OTIsNiArMTA2NTUsOSBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbiBcdGFyLVx1MDAzZWh3LVx1MDAzZXN0YV9kYXRhX3NpemUgPSBzaXplb2Yoc3RydWN0IGF0aDExa19zdGEpO1xuIFxuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NRTV9SU1NJX0xJU1QpO1xuK1x0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCk7XG4rXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG4rXHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BSVJUSU1FX0ZBSVJORVNTKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cdTAwM2Vody1cdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TVEFfVFhfUFdSKTtcbiBcdGlmICh0ZXN0X2JpdChXTUlfVExWX1NFUlZJQ0VfQlNTX0NPTE9SX09GRkxPQUQsXG4gXHRcdCAgICAgYXItXHUwMDNlYWItXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XG5AQCAtMTA3NTQsNyArMTA4MjAsNyBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0c3RydWN0IGF0aDExayAqYXI7XG4gXHRzdHJ1Y3QgYXRoMTFrX3BkZXYgKnBkZXY7XG4gXHRpbnQgcmV0O1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgajtcbiBcbiBcdGlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0xMDc4OCw2ICsxMDg1NCw5IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXG4gXHRcdHBkZXYtXHUwMDNlYXIgPSBhcjtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgSUVFRTgwMjExX05VTV9BQ1M7IGorKylcbitcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2V0eHFfbG9ja1tqXSk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZWFydmlmcyk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcbmluZGV4IDU5ZjgzYzcxNzVmZDEuLmQ1NzdjNWNhMjQ5Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG5AQCAtMTYxLDYgKzE2MSw3IEBAIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3ZkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHZkZXZfaWQpXG4gc3RydWN0IGF0aDExayAqYXRoMTFrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZCk7XG4gXG4gdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKTtcbit2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYyk7XG4gdm9pZCBhdGgxMWtfbWFjX3BlZXJfY2xlYW51cF9hbGwoc3RydWN0IGF0aDExayAqYXIpO1xuIGludCBhdGgxMWtfbWFjX3R4X21nbXRfcGVuZGluZ19mcmVlKGludCBidWZfaWQsIHZvaWQgKnNrYiwgdm9pZCAqY3R4KTtcbiB1OCBhdGgxMWtfbWFjX2J3X3RvX21hYzgwMjExX2J3KHU4IGJ3KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjIzLjk5NTA3MzYwOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxOTM5OTYyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcgUGF0aCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gd2hhdCBgYXRoMTFrYCBhY3R1YWxseSAqaXMqIGFuZCBjb25maXJtIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiBteSBlbnZpcm9ubWVudC4gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gcmVhZGlseSB0ZXN0IHdpdGhpbiBhbiBlbXVsYXRlZCBzZXR0aW5nLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IGludHJpbnNpY2FsbHkgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgYSBkZWRpY2F0ZWQgV2ktRmkgY2FyZD8gSSdtIHRoaW5raW5nLCBwb3RlbnRpYWxseSwgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGNhcmQ/XG5cbkhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhhdCByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIGJlIG1vcmUgbWV0aG9kaWNhbC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5zdHJ1Y3Rpb25zLCBwYXJ0aWN1bGFybHkgU2VjdGlvbiAyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBleHBsaWNpdGx5IHJ1bGVkIG91dCBkdWUgdG8gYmVpbmcgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBUaGUgdGV4dCBwb2ludHMgdG8gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IG5lZWQgdG8gYXNjZXJ0YWluIGlmIGBhdGgxMWtgIGZhbGxzIGludG8gKnRoYXQqIGNhdGVnb3J5LlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBtYWluIHF1ZXN0aW9uOiBpcyBgYXRoMTFrYCBhIHBoeXNpY2FsIFdpLUZpIGNhcmQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4PyBUbyBkZXRlcm1pbmUgdGhpcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBBVEgxMUsncyBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIGRyaXZlciBlbmFibGVzIGFuZCwgY29uc2VxdWVudGx5LCBpdHMgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEwMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjI3LjE4OTA3MzE3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQwMjIwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjM6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMzpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM0LVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0MTpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDItXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ5OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MC1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NTpjb25maWcgQVRIMTFLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU2LVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MjcuMjQwNDgwODk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ2Mzk2MjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGF0aDExaydzIEZ1enppbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gbGV0J3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGF0aDExay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYXRoMTFrIGlzIGFsbCBhYm91dCBRdWFsY29tbSdzIDgwMi4xMWF4IGNoaXBzZXRzLCBzcGVjaWZpY2FsbHkgdGhlIFBDSSBhbmQgQUhCIGludGVyZmFjZXMuIEkgd2FzIHdvbmRlcmluZyBpZiBpdCBoYWQgc29tZSBzb3J0IG9mIHZpcnR1YWwgb3IgVVNCIHN1cHBvcnQsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBpdCBsb29rcyBsaWtlIHRoYXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBjb21wbGV0ZWx5IGRpc3RpbmN0LiBBbmQgbm8gVVNCIHN1cHBvcnQgZWl0aGVyLCBqdXN0IEFIQiBhbmQgUENJLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuTmV4dCwgSSB0aG91Z2h0IGFib3V0IFFFTVUgZW11bGF0aW9uLiBJcyBhdGgxMWsgZW11bGF0ZWQgYXQgYWxsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gTm9wZS4gVGhhdCB3b3VsZCBtYWtlIGl0IG11Y2ggZWFzaWVyLlxuXG5TbyB0aGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IENhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBXZWxsLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgdHlwaWNhbGx5IGhpdHMgbWFjODAyMTEgdGhyb3VnaCBlaXRoZXIgYG1hYzgwMjExX2h3c2ltYCBvciwgbW9yZSByZWFsaXN0aWNhbGx5LCB0aHJvdWdoIFVTQiBXaUZpIGRvbmdsZXMgdmlhIHNvbWV0aGluZyBsaWtlIHJhdy1nYWRnZXQgb3IgYSBVU0IgZnV6emVyIGFwcHJvYWNoIGxpa2Ugd2l0aCBhdGg5a19odGMsIHJ0bDgxODcsIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5CdXQgd2l0aCBhdGgxMWssIGl0J3MganVzdCBBSEIgYW5kIFBDSSwgbGlrZSB3aXRoIHRoZSBJUFE4MDc0LCBRQ0E2MzkwLCBvciBXQ042ODU1LiBXZSdyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBhY2Nlc3MgdG8gUXVhbGNvbW0ncyBwaHlzaWNhbCBoYXJkd2FyZSBvciBBU0lDcy4gVGhhdCdzIGEgZGlmZmVyZW50IGJhbGxnYW1lLlxuXG5Pa2F5LCBiYWNrIHRvIHRoZSBkcmF3aW5nIGJvYXJkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEknbSBnb2luZyB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYXRoMTFrIGNvZGViYXNlIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gcHJvYmVzIG9yIGJ1cyBpbXBsZW1lbnRhdGlvbnMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYSBVU0Igb3IgdmlydHVhbCBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzI5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjMwLjcwNDQ0NjE2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMzQzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF0aDExa19haGJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTM1Mzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF0aDExa19haGJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzNTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMz1FWFBPUlRfU1lNQk9MKGF0aDExa19kZWJ1Z19tYXNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNDptb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTFrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI1LU1PRFVMRV9QQVJNX0RFU0MoZGVidWdfbWFzaywgXFxcIkRlYnVnZ2luZyBtYXNrXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNz1zdGF0aWMgdW5zaWduZWQgaW50IGF0aDExa19jcnlwdG9fbW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyODptb2R1bGVfcGFyYW1fbmFtZWQoY3J5cHRvX21vZGUsIGF0aDExa19jcnlwdG9fbW9kZSwgdWludCwgMDY0NCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG9fbW9kZSwgXFxcImNyeXB0byBtb2RlOiAwLWhhcmR3YXJlLCAxLXNvZnR3YXJlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0zMj11bnNpZ25lZCBpbnQgYXRoMTFrX2ZyYW1lX21vZGUgPSBBVEgxMUtfSFdfVFhSWF9OQVRJVkVfV0lGSTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzozMzptb2R1bGVfcGFyYW1fbmFtZWQoZnJhbWVfbW9kZSwgYXRoMTFrX2ZyYW1lX21vZGUsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM0LU1PRFVMRV9QQVJNX0RFU0MoZnJhbWVfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTM3PWJvb2wgYXRoMTFrX2Z0bV9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjM4Om1vZHVsZV9wYXJhbV9uYW1lZChmdG1fbW9kZSwgYXRoMTFrX2Z0bV9tb2RlLCBib29sLCAwNDQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0zOS1NT0RVTEVfUEFSTV9ERVNDKGZ0bV9tb2RlLCBcXFwiQm9vdHMgdXAgaW4gZmFjdG9yeSB0ZXN0IG1vZGVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTYzMj1zdHJ1Y3QgYXRoMTFrX2RlYnVnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTY0Mi1cXHR1MzIgbWVtX29mZnNldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaDo2NDM6XFx0dTMyIG1vZHVsZV9pZF9iaXRtYXBbTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFNdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTY0NC1cXHRzdHJ1Y3QgYXRoMTFrX2RlYnVnX2RiciAqZGJyX2RlYnVnW1dNSV9ESVJFQ1RfQlVGX01BWF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTE1NT1pbnQgYXRoMTFrX2RicmluZ193bWlfY2ZnX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0xNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoxNjU6XFx0cGFyYW0ubW9kdWxlX2lkXFx0XFx0PSBpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2Ni1cXHRwYXJhbS5iYXNlX3BhZGRyX2xvXFx0PSBsb3dlcl8zMl9iaXRzKHJpbmctXFx1MDAzZXJlZmlsbF9zcm5nLnBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjgxPWludCBhdGgxMWtfZGJyaW5nX2J1ZmZlcl9yZWxlYXNlX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI5MS1cXHR1MzIgbnVtX2VudHJ5LCBudW1fYnVmZl9yZWFwZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyOTI6XFx0dTggcGRldl9pZHgsIHJibSwgbW9kdWxlX2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjkzLVxcdHUzMiBjb29raWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMwMC1cXHRwZGV2X2lkeCA9IGV2LVxcdTAwM2VmaXhlZC5wZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzAxOlxcdG1vZHVsZV9pZCA9IGV2LVxcdTAwM2VmaXhlZC5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjMyODpcXHRzd2l0Y2ggKGV2LVxcdTAwM2VmaXhlZC5tb2R1bGVfaWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMyOS1cXHRjYXNlIFdNSV9ESVJFQ1RfQlVGX1NQRUNUUkFMOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMzctXFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJSZWN2IGRtYSBidWZmZXIgcmVsZWFzZSBldiBvbiB1bnN1cHAgbW9kdWxlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzM4OlxcdFxcdFxcdCAgICBldi1cXHUwMDNlZml4ZWQubW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMzOS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6Mzc3OlxcdFxcdGF0aDExa19kZWJ1Z2ZzX2FkZF9kYnJpbmdfZW50cnkoYXIsIG1vZHVsZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM3OC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMUtfREJHX0RCUl9FVkVOVF9SWCwgc3JuZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5NC1cXHRcXHRtZW1zZXQoYnVmZi1cXHUwMDNlcGF5bG9hZCwgMCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozOTU6XFx0XFx0YXRoMTFrX2RicmluZ19idWZzX3JlcGxlbmlzaChhciwgcmluZywgYnVmZiwgbW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYz03NDQ9c3RhdGljIHNzaXplX3QgYXRoMTFrX3dyaXRlX2Z3X2RiZ2xvZyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3MS1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmM6NzcyOlxcdFxcdGFyLVxcdTAwM2VkZWJ1Zy5tb2R1bGVfaWRfYml0bWFwW21vZF9pZF9pbmRleF0gPSB1cHBlcl8zMl9iaXRzKHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYy03NzMtXFx0XFx0aWYgKCFpc19lbmQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc4NS1cXHRkYmdsb2cudmFsdWUgPSBsb3dlcl8zMl9iaXRzKHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYzo3ODY6XFx0cmV0ID0gYXRoMTFrX3dtaV9md19kYmdsb2dfY2ZnKGFyLCBhci1cXHUwMDNlZGVidWcubW9kdWxlX2lkX2JpdG1hcCwgXFx1MDAyNmRiZ2xvZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMtNzg3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oPTEzNj1lbnVtIGF0aDExa19kYmdfYWdncl9tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoxNDI6ZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0My1cXHRXTEFOX01PRFVMRV9JRF9NSU4gPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg9MjUwPXN0cnVjdCBhdGgxMWtfZndfZGJnbG9nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTI1NS1cXHRcXHRcXHR1MTYgbG9nX2xldmVsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NjpcXHRcXHRcXHQvKiBtb2R1bGVfaWQgdmFsdWVzIGFyZSBnaXZlbiBpbiAgZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoyNTc6XFx0XFx0XFx0dTE2IG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNTgtXFx0XFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoyNTk6XFx0XFx0LyogdmFsdWUgaXMgZWl0aGVyIGxvZ19sZXZlbFxcdTAwMjZtb2R1bGVfaWQvdmRldl9pZC92ZGV2X2lkX2JpdG1hcC9sb2dfbGV2ZWxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNjAtXFx0XFx0ICogYWNjb3JkaW5nIHRvIHBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM9Mzk4PWh0dF9wcmludF9od19zdGF0c193ZF90aW1lb3V0X3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNC1cXHR1MzIgYnVmX2xlbiA9IEFUSDExS19IVFRfU1RBVFNfQlVGX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjQwNTpcXHRjaGFyIGh3X21vZHVsZV9uYW1lW0hUVF9TVEFUU19NQVhfSFdfTU9EVUxFX05BTUVfTEVOICsgMV0gPSB7fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy00MDctXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFxcXCJIVFRfSFdfU1RBVFNfV0RfVElNRU9VVF9UTFY6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NDA4OlxcdG1lbWNweShod19tb2R1bGVfbmFtZSwgXFx1MDAyNihodHRfc3RhdHNfYnVmLVxcdTAwM2Vod19tb2R1bGVfbmFtZVswXSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwOS1cXHQgICAgICAgSFRUX1NUQVRTX01BWF9IV19NT0RVTEVfTkFNRV9MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTA6XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFxcXCJod19tb2R1bGVfbmFtZSA9ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTE6XFx0XFx0XFx0IGh3X21vZHVsZV9uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDEyLVxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiY291bnQgPSAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz01MTA9c3RhdGljIGlubGluZSB2b2lkIGh0dF9wcmludF90eF90aWRfc3RhdHNfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNTQ5LVxcdFxcdFxcdCBodHRfc3RhdHNfYnVmLVxcdTAwM2VsYXN0X3NjaGVkdWxlZF90c21wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUwOlxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwicGF1c2VfbW9kdWxlX2lkID0gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjU1MTpcXHRcXHRcXHQgaHR0X3N0YXRzX2J1Zi1cXHUwMDNlcGF1c2VfbW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUyOlxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiYmxvY2tfbW9kdWxlX2lkID0gJXVcXFxcblxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUzOlxcdFxcdFxcdCBodHRfc3RhdHNfYnVmLVxcdTAwM2VibG9ja19tb2R1bGVfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy01NTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NTYzPXN0YXRpYyBpbmxpbmUgdm9pZCBodHRfcHJpbnRfdHhfdGlkX3N0YXRzX3YxX3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwMi1cXHRcXHRcXHQgaHR0X3N0YXRzX2J1Zi1cXHUwMDNlbGFzdF9zY2hlZHVsZWRfdHNtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwMzpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInBhdXNlX21vZHVsZV9pZCA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo2MDQ6XFx0XFx0XFx0IGh0dF9zdGF0c19idWYtXFx1MDAzZXBhdXNlX21vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImJsb2NrX21vZHVsZV9pZCA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo2MDY6XFx0XFx0XFx0IGh0dF9zdGF0c19idWYtXFx1MDAzZWJsb2NrX21vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwNy1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImFsbG93X25fZmxhZ3MgPSAweCV4XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTI3Nj1zdHJ1Y3QgaHR0X2h3X3N0YXRzX3dkX3RpbWVvdXRfdGx2IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc3LVxcdC8qIFN0b3JlZCBhcyBsaXR0bGUgZW5kaWFuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjI3ODpcXHR1OCBod19tb2R1bGVfbmFtZVtIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTI3OS1cXHR1MzIgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzM4PXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzUxLVxcdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNTI6XFx0dTMyIHBhdXNlX21vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzUzOlxcdHUzMiBibG9ja19tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM1NC1cXHR1MzIgdGlkX3R4X2FpcnRpbWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzYzPXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3YxX3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzc2LVxcdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNzc6XFx0dTMyIHBhdXNlX21vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mzc4OlxcdHUzMiBibG9ja19tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM3OS1cXHR1MzIgdGlkX3R4X2FpcnRpbWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMyMD1zdGF0aWMgdm9pZCBhdGgxMWtfcGNpX2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMjU6bW9kdWxlX2V4aXQoYXRoMTFrX3BjaV9leGl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jPTI4PUVYUE9SVF9TWU1CT0woYXRoMTFrX2NvbGRfYm9vdF9jYWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmM6Mjk6bW9kdWxlX3BhcmFtX25hbWVkKGNvbGRfYm9vdF9jYWwsIGF0aDExa19jb2xkX2Jvb3RfY2FsLCBib29sLCAwNjQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMwLU1PRFVMRV9QQVJNX0RFU0MoY29sZF9ib290X2NhbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9NDU3ND1pbnQgYXRoMTFrX3dtaV9wZGV2X2RtYV9yaW5nX2NmZyhzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNDU4OS1cXHRjbWQtXFx1MDAzZXBkZXZfaWRcXHRcXHQ9IHBhcmFtLVxcdTAwM2VwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NDU5MDpcXHRjbWQtXFx1MDAzZW1vZHVsZV9pZFxcdFxcdD0gcGFyYW0tXFx1MDAzZW1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTQ1OTEtXFx0Y21kLVxcdTAwM2ViYXNlX3BhZGRyX2xvXFx0PSBwYXJhbS1cXHUwMDNlYmFzZV9wYWRkcl9sbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9NDk4ND1zdGF0aWMgaW50IGF0aDExa193bWlfdGx2X2RtYV9yaW5nX2NhcHMoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NhcHNfcGFyc2UtXFx1MDAzZW5fZG1hX3JpbmdfY2FwczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE3OlxcdFxcdGlmIChkbWFfY2Fwc1tpXS5tb2R1bGVfaWQgXFx1MDAzZT0gV01JX0RJUkVDVF9CVUZfTUFYKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE4OlxcdFxcdFxcdGF0aDExa193YXJuKGFiLCBcXFwiSW52YWxpZCBtb2R1bGUgaWQgJWRcXFxcblxcXCIsIGRtYV9jYXBzW2ldLm1vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy01MDE5LVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTUwMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDIzOlxcdFxcdGRpcl9idWZmX2NhcHNbaV0uaWQgPSBkbWFfY2Fwc1tpXS5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy01MDI0LVxcdFxcdGRpcl9idWZmX2NhcHNbaV0ucGRldl9pZCA9IERQX0hXMlNXX01BQ0lEKGRtYV9jYXBzW2ldLnBkZXZfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTAxPWF0aDExa193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTI2LVxcdGNtZC1cXHUwMDNldmRldl9pZCA9IHV0X2NtZC52ZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTEyNzpcXHRjbWQtXFx1MDAzZW1vZHVsZV9pZCA9IHV0X2NtZC5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTI4LVxcdGNtZC1cXHUwMDNlbnVtX2FyZ3MgPSB1dF9jbWQubnVtX2FyZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxNTItXFx0XFx0ICAgXFxcImNtZCB1bml0IHRlc3QgbW9kdWxlICVkIHZkZXYgJWQgbl9hcmdzICVkIHRva2VuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE1MzpcXHRcXHQgICBjbWQtXFx1MDAzZW1vZHVsZV9pZCwgY21kLVxcdTAwM2V2ZGV2X2lkLCBjbWQtXFx1MDAzZW51bV9hcmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE1NC1cXHRcXHQgICBjbWQtXFx1MDAzZWRpYWdfdG9rZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTU5PWludCBhdGgxMWtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTg0LVxcdHdtaV91dC52ZGV2X2lkID0gYXJ2aWYtXFx1MDAzZXZkZXZfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTg1OlxcdHdtaV91dC5tb2R1bGVfaWQgPSBERlNfVU5JVF9URVNUX01PRFVMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxODYtXFx0d21pX3V0Lm51bV9hcmdzID0gREZTX01BWF9URVNUX0FSR1M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTk0OmludCBhdGgxMWtfd21pX2Z3X2RiZ2xvZ19jZmcoc3RydWN0IGF0aDExayAqYXIsIHUzMiAqbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MjI2LVxcdFxcdGNtZC1cXHUwMDNldmFsdWUgPSBkYmdsb2ctXFx1MDAzZXZhbHVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTIyNzpcXHRcXHRtZW1jcHkodGx2LVxcdTAwM2V2YWx1ZSwgbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMjgtXFx0XFx0ICAgICAgIE1BWF9NT0RVTEVfSURfQklUTUFQX1dPUkRTICogc2l6ZW9mKHUzMikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIyOS1cXHRcXHQvKiBjbGVhciBjdXJyZW50IGNvbmZpZyB0byBiZSB1c2VkIGZvciBuZXh0IHVzZXIgY29uZmlnICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MjMwOlxcdFxcdG1lbXNldChtb2R1bGVfaWRfYml0bWFwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIzMS1cXHRcXHQgICAgICAgTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFMgKiBzaXplb2YodTMyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTI1NzU9c3RydWN0IHdtaV9kbWFfcmluZ19jYXBhYmlsaXRpZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC0yNTc3LVxcdHUzMiBwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjU3ODpcXHR1MzIgbW9kdWxlX2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3OS1cXHR1MzIgbWluX2VsZW07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTQxMDE9c3RydWN0IHdtaV91bml0X3Rlc3RfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNDEwMy1cXHR1MzIgdmRldl9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjQxMDQ6XFx0dTMyIG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDUtXFx0dTMyIG51bV9hcmdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD01NjY4PXN0cnVjdCBhdGgxMWtfd21pX3BkZXZfZG1hX3JpbmdfY2ZnX3JlcV9jbWQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC01NjcwLVxcdHUzMiBwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6NTY3MTpcXHR1MzIgbW9kdWxlX2lkO1xcdFxcdC8qIHNlZSBlbnVtIHdtaV9kaXJlY3RfYnVmZmVyX21vZHVsZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY3Mi1cXHR1MzIgYmFzZV9wYWRkcl9sbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9NTY5MD1zdHJ1Y3QgYXRoMTFrX3dtaV9kbWFfYnVmX3JlbGVhc2VfZml4ZWRfcGFyYW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5MS1cXHR1MzIgcGRldl9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjU2OTI6XFx0dTMyIG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTU2OTMtXFx0dTMyIG51bV9idWZfcmVsZWFzZV9lbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9NjU5ND1pbnQgYXRoMTFrX3dtaV9zY2FuX3Byb2JfcmVxX291aShzdHJ1Y3QgYXRoMTFrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTY1OTUtXFx0XFx0XFx0XFx0IGNvbnN0IHU4IG1hY19hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo2NTk2OmludCBhdGgxMWtfd21pX2Z3X2RiZ2xvZ19jZmcoc3RydWN0IGF0aDExayAqYXIsIHUzMiAqbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTY1OTctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MzAuNzUxNzg5MzYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk4Njk2NjExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBhdGgxMWtgIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHRoZSBgYXRoMTFrYCBkcml2ZXIuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDExa2AgaXMgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgYW5kIGl0J3MgcHJldHR5IHNwZWNpZmljIOKAkyBpdCBvbmx5IHBsYXlzIG5pY2VseSB3aXRoIFBDSSBhbmQgQUhCIGhhcmR3YXJlIHBsYXRmb3JtcyAodGhpbmsgSVBRODA3NCwgUUNBNjM5MCwgdGhvc2UgdHlwZXMpLiBJdCAqZG9lc24ndCogc3VwcG9ydCBVU0IuIFRoaXMgbWVhbnMgdGhhdCwgdW5saWtlIHNvbWUgb3RoZXIgZHJpdmVycywgSSBjYW4ndCBqdXN0IGVhc2lseSBzcGluIHVwIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgYW5kIGV4cGVjdCB0byBoaXQgdGhlIGNvZGUuIE5vIHNvZnR3YXJlIG1vY2tzIG9yIGVtdWxhdGlvbnMgZXhpc3QgaW4gdGhvc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciB0aGlzIGRyaXZlci4gIEl0IG5lZWRzIHNwZWNpYWwgUXVhbGNvbW0gaGFyZHdhcmUsIEFTSUNzLCBhbmQgZmlybXdhcmUgdG8gZXZlbiBwcm9iZSBhbmQgaW5pdGlhbGl6ZSBwcm9wZXJseS5cblxuSSdtIGFsc28ga2VlcGluZyBpbiBtaW5kIHRoZSBzdHJ1Y3R1cmFsIHVucmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIFNwZWNpZmljYWxseSwgdGhlIGJpdCBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIOKAkyB0aGUgb25lcyB0aGF0IGRlbWFuZCByZWFsIEFTSUMvUENJZSBjYXJkcyBhbmQgYXJlbid0IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwLiAgVGhpcyBzZWVtcyBoaWdobHkgcmVsZXZhbnQgaGVyZS5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmLCBhbGwgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBuZWF0bHkgdHVja2VkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2A6ICBgY29yZS5oYCwgYGRlYnVnZnMuY2AsIGBkcC5jYCwgYGRwX3J4LmNgLCBgZHBfdHguY2AsIGBkcF90eC5oYCwgYG1hYy5jYCwgYW5kIGBtYWMuaGAuICBOb25lIG9mIHRoZXNlIGFyZSByZWxhdGVkIHRvIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMsIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgdmlydGlvLW5ldCwgb3IgZXZlbiBhIFVTQiBkcml2ZXIgdGhhdCBjb3VsZCAqcG90ZW50aWFsbHkqIGJlIGZha2VkIHVzaW5nIGEgc3l6a2FsbGVyIFVTQiByYXcgZ2FkZ2V0LlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgY29kZSBpbiB0aGlzIHBhdGNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcyBsaWtlIFFFTVUgYW5kIEdDRS4gSSdkIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgYGF0aDExa2AgZHJpdmVyIHJlbGllcyBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoQVNJQ3MgYW5kIGZpcm13YXJlKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aHVzIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkndmUgY2hlY2tlZCB0aGF0IHRoZSBkaWZmIG9ubHkgdG91Y2hlcyBmaWxlcyB3aXRoaW4gdGhlIGBhdGgxMWtgIGRpcmVjdG9yeS4gIEV2ZXJ5dGhpbmcgbG9va3MgZ29vZCwgc28gSSdtIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU0OSwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDozNi43Mzg3NTc3NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjM2LjczODc4Mzk1MloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvzgbh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 16:19:11 +0000 UTC FinishedAt: 2026-09-08 17:00:38 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM1MjNiOTRlNjRkNGRkZTUyYjliNTQ4Y2IxYzZkYzJjYWY5OWNjNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjAwOjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcbmluZGV4IGEwZDcyNTkyM2VmMjQuLjQwODk1ZDI3NmRlNWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcbkBAIC03MDksNiAmIzQzOzcwOSwxMSBAQCBzdHJ1Y3QgYXRoMTFrIHtcbiBcdCAqL1xuIFx0c3BpbmxvY2tfdCBkYXRhX2xvY2s7XG4gXG4mIzQzO1x0Lyogc2VyaWFsaXNlcyBvbmUgc2NoZWR1bGluZyByb3VuZCBwZXIgYWNjZXNzIGNhdGVnb3J5IGFnYWluc3QgdGhlXG4mIzQzO1x0ICogb3RoZXIgY29udGV4dHMgdGhhdCBkcml2ZSBpdFxuJiM0MztcdCAqL1xuJiM0MztcdHNwaW5sb2NrX3QgdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuJiM0MztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgYXJ2aWZzO1xuIFx0Lyogc2hvdWxkIG5ldmVyIGJlIE5VTEw7IG5lZWRlZCBmb3IgcmVndWxhciBodHQgcnggKi9cbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqcnhfY2hhbm5lbDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXG5pbmRleCA3MDkyMjYxMmQzZmI5Li5mZmUxZjQ2NmFlZmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXG5AQCAtNzE0LDYgJiM0Mzs3MTQsMTYgQEAgc3RhdGljIHNzaXplX3QgYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXG4gXHRcdFx0IFwmIzM0O1xcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCYjMzQ7LFxuIFx0XHRcdCBhdG9taWNfcmVhZChcdTAwMjZzb2Nfc3RhdHMtXHUwMDNldHhfZXJyLm1pc2NfZmFpbCkpO1xuIFxuJiM0MztcdC8qIERlc2NyaXB0b3JzIHRoZSBoYXJkd2FyZSBoYXMgbm90IGNvbXBsZXRlZC4gKi9cbiYjNDM7XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtcXG5QZW5kaW5nIFR4IE1TRFVzOlxcblwmIzM0Oyk7XG4mIzQzO1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlbnVtX3JhZGlvczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdHN0cnVjdCBhdGgxMWsgKmFyID0gYWItXHUwMDNlcGRldnNbaV0uYXI7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGFyKVxuJiM0MztcdFx0XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCBcJiMzNDtyYWRpbyVkOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdCBpLCBhdG9taWNfcmVhZChcdTAwMjZhci1cdTAwM2VkcC5udW1fdHhfcGVuZGluZykpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRsZW4gJiM0Mzs9IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX3JpbmdfYnBfc3RhdHMoYWIsIGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2Ugc2l6ZSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xuQEAgLTc4Myw4ICYjNDM7NzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChCSVQoYWItXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXHUwMDNldGNsMndibV9yYm1fbWFwW2ldLndibV9yaW5nX251bSkgXHUwMDI2XG4tXHRcdCAgICBhYi1cdTAwM2Vod19wYXJhbXMucmluZ19tYXNrLVx1MDAzZXR4W2dycF9pZF0pXG4tXHRcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSk7XG4mIzQzO1x0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKSB7XG4mIzQzO1x0XHRcdHdvcmtfZG9uZSA9XG4mIzQzO1x0XHRcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSwgYnVkZ2V0KTtcbiYjNDM7XHRcdFx0YnVkZ2V0IC09IHdvcmtfZG9uZTtcbiYjNDM7XHRcdFx0dG90X3dvcmtfZG9uZSAmIzQzOz0gd29ya19kb25lO1xuJiM0MztcdFx0XHRpZiAoYnVkZ2V0IFx1MDAzYz0gMClcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRpZiAoYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2VyeF9lcnJbZ3JwX2lkXSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuaW5kZXggMzM0MjU3MDdjMDg0Mi4uYTdiOWJiMjk1NzI4YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jXG5AQCAtMTM3Nyw2ICYjNDM7MTM3Nyw3IEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsXG4gXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XG4gXHR1MzIgdHhfZHVyYXRpb24gPSAwO1xuIFx0dTggdGlkID0gSFRUX1BQRFVfU1RBVFNfTk9OX1FPU19USUQ7XG4mIzQzO1x0dTggYWlydGltZV90aWQ7XG4gXHRib29sIGlzX2FtcGR1ID0gZmFsc2U7XG4gXG4gXHRpZiAoISh1c3Jfc3RhdHMtXHUwMDNldGx2X2ZsYWdzIFx1MDAyNiBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpXG5AQCAtMTQ4NSw2ICYjNDM7MTQ4NiwyMiBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxuIFxuIFx0YXJzdGEtXHUwMDNldHhyYXRlLmJ3ID0gYXRoMTFrX21hY19id190b19tYWM4MDIxMV9idyhidyk7XG4gXHRhcnN0YS1cdTAwM2V0eF9kdXJhdGlvbiAmIzQzOz0gdHhfZHVyYXRpb247XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBhY2svQkEgc3RhdHVzIFRMViBuYW1lcyB0aGUgVElEIG9ubHkgZm9yIGEgUFBEVSB0aGF0IGRyZXcgYVxuJiM0MztcdCAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRhaXJ0aW1lX3RpZCA9IHRpZDtcbiYjNDM7XHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHVzcl9zdGF0cy1cdTAwM2V0bHZfZmxhZ3MgXHUwMDI2IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX0NPTVBMVE5fQ09NTU9OKSlcbiYjNDM7XHRcdGFpcnRpbWVfdGlkID0gdXNyX3N0YXRzLVx1MDAzZWNtcGx0bl9jbW4udGlkX251bTtcbiYjNDM7XHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4mIzQzO1x0XHRhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS1cdTAwM2V0aWRfbnVtO1xuJiM0MztcdGlmIChhaXJ0aW1lX3RpZCBcdTAwM2U9IElFRUU4MDIxMV9OVU1fVElEUylcbiYjNDM7XHRcdGFpcnRpbWVfdGlkID0gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHR4X2R1cmF0aW9uKVxuJiM0MztcdFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTtcbiYjNDM7XG4gXHRtZW1jcHkoXHUwMDI2YXJzdGEtXHUwMDNlbGFzdF90eHJhdGUsIFx1MDAyNmFyc3RhLVx1MDAzZXR4cmF0ZSwgc2l6ZW9mKHN0cnVjdCByYXRlX2luZm8pKTtcbiBcbiBcdC8qIFBQRFUgc3RhdHMgcmVwb3J0ZWQgZm9yIG1nbXQgcGFja2V0IGRvZXNuJiMzOTt0IGhhdmUgdmFsaWQgdHggYnl0ZXMuXG5AQCAtNTI1Myw2ICYjNDM7NTI3MCw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0c3RydWN0IGF0aDExa19wZWVyICpwZWVyO1xuIFx0c3RydWN0IGF0aDExa19zdGEgKmFyc3RhO1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7XG4gXHRpbnQgbnVtX2J1ZmZzX3JlYXBlZCA9IDA7XG4gXHR1MzIgcnhfYnVmX3N6O1xuIFx0dTE2IGxvZ190eXBlO1xuQEAgLTUzMDcsNiAmIzQzOzUzMjUsNyBAQCBpbnQgYXRoMTFrX2RwX3J4X3Byb2Nlc3NfbW9uX3N0YXR1cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgbWFjX2lkLFxuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG4mIzQzO1x0XHRzdGEgPSBOVUxMO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhYi1cdTAwM2ViYXNlX2xvY2spO1xuIFx0XHRwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLVx1MDAzZXBlZXJfaWQpO1xuQEAgLTUzMjAsMTIgJiM0Mzs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXG4gXHRcdGFyc3RhID0gYXRoMTFrX3N0YV90b19hcnN0YShwZWVyLVx1MDAzZXN0YSk7XG4gXHRcdGF0aDExa19kcF9yeF91cGRhdGVfcGVlcl9zdGF0cyhhcnN0YSwgcHBkdV9pbmZvKTtcbiYjNDM7XHRcdHN0YSA9IHBlZXItXHUwMDNlc3RhO1xuIFxuIFx0XHRpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItXHUwMDNlYWRkcikpXG4gXHRcdFx0dHJhY2VfYXRoMTFrX2h0dF9yeGRlc2MoYXIsIHNrYi1cdTAwM2VkYXRhLCBsb2dfdHlwZSwgcnhfYnVmX3N6KTtcbiBcbiBuZXh0X3NrYjpcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YWItXHUwMDNlYmFzZV9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgYWlydGltZSBhIHN0YXRpb24gc3BlbmRzIHRyYW5zbWl0dGluZyBpcyB0YWtlbiBmcm9tXG4mIzQzO1x0XHQgKiB0aGUgb3RoZXJzLCBzbyBpdHMgZGVmaWNpdCBpcyBjaGFyZ2VkIGZvciBpdCB0b28sIHdpdGggdGhlXG4mIzQzO1x0XHQgKiBkdXJhdGlvbiB0aGUgaGFyZHdhcmUgbWVhc3VyZWQgZm9yIHRoZSB3aG9sZSBQUERVLCBhcyBvblxuJiM0MztcdFx0ICogdGhlIHRyYW5zbWl0IHNpZGUuIFRoZSBUTFYgdGhhdCBuYW1lcyB0aGUgVElEIGlzIG5vdCBpblxuJiM0MztcdFx0ICogdGhlIGRlZmF1bHQgbW9uaXRvciBzdGF0dXMgZmlsdGVyLCBzbyB0aGUgY2hhcmdlIGdvZXMgdG9cbiYjNDM7XHRcdCAqIEJFLiBPdXRzaWRlIGJhc2VfbG9jaywgd2hpY2ggdHggY29tcGxldGlvbiBjb250ZW5kcyBmb3I7XG4mIzQzO1x0XHQgKiBzdGEgaXMgaGVsZCBieSB0aGUgcmN1IHJlYWQgbG9jay5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKVxuJiM0MztcdFx0XHRpZWVlODAyMTFfc3RhX3JlZ2lzdGVyX2FpcnRpbWUoc3RhLCAwLCAwLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKTtcbiBcdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXG4gXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5pbmRleCBjYWM5NzBjOTI4MDZhLi4zOTk3YmQzMzY5NDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmNcbkBAIC0zMDUsOSAmIzQzOzMwNSwxMCBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfZHBfdHhfZnJlZV90eGJ1ZihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBtYWNfaWQsXG4gXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xuIFxuIFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cdTAwM2VkZXYsIHNrYl9jYi1cdTAwM2VwYWRkciwgbXNkdS1cdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xuLVx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXG4gXHRhciA9IGFiLVx1MDAzZXBkZXZzW21hY19pZF0uYXI7XG4mIzQzO1x0aWVlZTgwMjExX2ZyZWVfdHhza2IoYXItXHUwMDNlaHcsIG1zZHUpO1xuJiM0MztcbiBcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcbiBcdFx0d2FrZV91cChcdTAwMjZhci1cdTAwM2VkcC50eF9lbXB0eV93YWl0cSk7XG4gfVxuQEAgLTY4NCw3ICYjNDM7Njg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcbiBcdFx0dHMtXHUwMDNlcmF0ZV9zdGF0cyA9IDA7XG4gfVxuIFxuLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiYjNDM7aW50IGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQsXG4mIzQzO1x0XHRcdFx0ICAgIGludCBidWRnZXQpXG4ge1xuIFx0c3RydWN0IGF0aDExayAqYXI7XG4gXHRzdHJ1Y3QgYXRoMTFrX2RwICpkcCA9IFx1MDAyNmFiLVx1MDAzZWRwO1xuQEAgLTY5Myw5ICYjNDM7Njk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdHN0cnVjdCBza19idWZmICptc2R1O1xuIFx0c3RydWN0IGhhbF90eF9zdGF0dXMgdHMgPSB7fTtcbiBcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHB1c2ggPSAwO1xuJiM0MztcdGludCBkb25lID0gMDtcbiBcdHUzMiAqZGVzYztcbiBcdHUzMiBtc2R1X2lkO1xuLVx0dTggbWFjX2lkO1xuJiM0MztcdHU4IG1hY19pZCwgaTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbkBAIC03MjEsMTAgJiM0Mzs3MjUsMTMgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxuIFxuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2c3RhdHVzX3JpbmctXHUwMDNlbG9jayk7XG4gXG4tXHR3aGlsZSAoQVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCkgIT0gdHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xuJiM0MztcdHdoaWxlIChkb25lIFx1MDAzYyBidWRnZXQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XG4mIzQzO1x0ICAgICAgIHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX2hlYWQpIHtcbiBcdFx0c3RydWN0IGhhbF93Ym1fcmVsZWFzZV9yaW5nICp0eF9zdGF0dXM7XG4gXHRcdHUzMiBkZXNjX2lkO1xuIFxuJiM0MztcdFx0ZG9uZSYjNDM7JiM0Mzs7XG4gXHRcdHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwgPVxuIFx0XHRcdEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpO1xuIFx0XHR0eF9zdGF0dXMgPSBcdTAwMjZ0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c1t0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c190YWlsXTtcbkBAIC03NTUsMTIgJiM0Mzs3NjIsMjUgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxuIFx0XHRzcGluX3VubG9jayhcdTAwMjZ0eF9yaW5nLVx1MDAzZXR4X2lkcl9sb2NrKTtcbiBcbiBcdFx0YXIgPSBhYi1cdTAwM2VwZGV2c1ttYWNfaWRdLmFyO1xuJiM0MztcdFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICYjNDM7IHNrYl9nZXRfcXVldWVfbWFwcGluZyhtc2R1KSxcbiYjNDM7XHRcdFx0ICBcdTAwMjZwdXNoKTtcbiBcbiBcdFx0aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoXHUwMDI2YXItXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpKVxuIFx0XHRcdHdha2VfdXAoXHUwMDI2YXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xuIFxuIFx0XHRhdGgxMWtfZHBfdHhfY29tcGxldGVfbXNkdShhciwgbXNkdSwgXHUwMDI2dHMpO1xuIFx0fVxuJiM0MztcbiYjNDM7XHQvKiBBIGNvbXBsZXRpb24gcmV0dXJucyB0aGUgYWlydGltZSB0aGUgZnJhbWUgd2FzIGNoYXJnZWQsIHdoaWNoIGlzXG4mIzQzO1x0ICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nXG4mIzQzO1x0ICogb24uIFRoZSBhcnJpdmFscyB0aGF0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBhIHJvdW5kIGFyZSB0aGVtc2VsdmVzXG4mIzQzO1x0ICogcXVldWVkIGJlaGluZCB0aGF0IGxpbWl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cHVzaCwgYWItXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxuJiM0MztcdFx0YXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoYWItXHUwMDNlcGRldnNbaSAvIElFRUU4MDIxMV9OVU1fQUNTXS5hcixcbiYjNDM7XHRcdFx0XHRcdCAgIGkgJSBJRUVFODAyMTFfTlVNX0FDUyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkb25lO1xuIH1cbiBcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXG5pbmRleCA5MzAzYjViYTZlMDEyLi5iNTI5NmNkYTczZTMwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbkBAIC0yMSw3ICYjNDM7MjEsOCBAQCB2b2lkIGF0aDExa19kcF90eF91cGRhdGVfdHhjb21wbChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGhhbF90eF9zdGF0dXMgKnRzKTtcbiBpbnQgYXRoMTFrX2RwX3R4X2h0dF9oMnRfdmVyX3JlcV9tc2coc3RydWN0IGF0aDExa19iYXNlICphYik7XG4gaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxuIFx0XHQgc3RydWN0IGF0aDExa19zdGEgKmFyc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpO1xuJiM0MztpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbiYjNDM7XHRcdFx0XHQgICAgaW50IGJ1ZGdldCk7XG4gaW50IGF0aDExa19kcF90eF9zZW5kX3Jlb19jbWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3J4X3RpZCAqcnhfdGlkLFxuIFx0XHRcdCAgICAgIGVudW0gaGFsX3Jlb19jbWRfdHlwZSB0eXBlLFxuIFx0XHRcdCAgICAgIHN0cnVjdCBhdGgxMWtfaGFsX3Jlb19jbWQgKmNtZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuaW5kZXggMmQ1NWNkYzRkMTY1ZC4uMTI1MzU5MjY2MzFiOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcbkBAIC02NDk5LDkgJiM0Mzs2NDk5LDkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi1cdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4mIzQzO3N0YXRpYyBpbnQgYXRoMTFrX21hY190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbiYjNDM7XHRcdFx0IHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGF0aDExa19za2JfY2IgKnNrYl9jYiA9IEFUSDExS19TS0JfQ0Ioc2tiKTtcbiBcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXHUwMDNlcHJpdjtcbkBAIC02NTMzLDcgJiM0Mzs2NTMzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICByZXQpO1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0XHR9XG4tXHRcdHJldHVybjtcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4gXHRpZiAoY29udHJvbC1cdTAwM2VzdGEpXG5AQCAtNjU0NCw2ICYjNDM7NjU0NCw2OSBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRhdGgxMWtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxuXCYjMzQ7LCByZXQpO1xuIFx0XHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cdTAwM2Vodywgc2tiKTtcbiBcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXG4mIzQzO1x0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjNDM7e1xuJiM0MztcdGF0aDExa19tYWNfdHgoaHcsIGNvbnRyb2wsIHNrYik7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbnQgYXRoMTFrX21hY190eF9wdXNoX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVx1MDAzZXN0YSB9O1xuJiM0MztcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0LyogaWVlZTgwMjExX3R4X2RlcXVldWUoKSBhcHBsaWVzIHRoZSBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGl0c2VsZiwgc28gYVxuJiM0MztcdCAqIHNlbGVjdGlvbiBlbmRzIHdoZXJlIHRoZSBhaXJ0aW1lIHF1ZXVlIGxpbWl0IGJpbmRzLCB3aGVyZSB0aGVcbiYjNDM7XHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xuJiM0MztcdCAqIGhhbmRsZXIgZG9lcyB0b2RheSwgYW5kIGFkZGl0aW9uYWxseSB3aGVuIHRoZSBoYXJkd2FyZSByZWZ1c2VzIGFcbiYjNDM7XHQgKiBmcmFtZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR3aGlsZSAoKHNrYiA9IGllZWU4MDIxMV90eF9kZXF1ZXVlKGFyLVx1MDAzZWh3LCB0eHEpKSkge1xuJiM0MztcdFx0cmV0ID0gYXRoMTFrX21hY190eChhci1cdTAwM2VodywgXHUwMDI2Y29udHJvbCwgc2tiKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseShyZXQgPT0gLUVOT1NQQyB8fCByZXQgPT0gLUVOT01FTSkpXG4mIzQzO1x0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19zY2hlZHVsZV90eHEoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhci1cdTAwM2VodztcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNldHhxX2xvY2tbYWNdKTtcbiYjNDM7XG4mIzQzO1x0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9zdGFydChodywgYWMpO1xuJiM0MztcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG4mIzQzO1x0XHRpbnQgcmV0ID0gYXRoMTFrX21hY190eF9wdXNoX3R4cShhciwgdHhxKTtcbiYjNDM7XG4mIzQzO1x0XHRpZWVlODAyMTFfcmV0dXJuX3R4cShodywgdHhxLCBmYWxzZSk7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkocmV0KSlcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0fVxuJiM0MztcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfZW5kKGh3LCBhYyk7XG4mIzQzO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZXR4cV9sb2NrW2FjXSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpXG4mIzQzO3tcbiYjNDM7XHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShody1cdTAwM2Vwcml2LCB0eHEtXHUwMDNlYWMpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcbiYjNDM7e1xuJiM0MztcdHJjdV9yZWFkX2xvY2soKTtcbiYjNDM7XHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiB2b2lkIGF0aDExa19tYWNfZHJhaW5fdHgoc3RydWN0IGF0aDExayAqYXIpXG5AQCAtMTAwNjcsNyAmIzQzOzEwMTMwLDcgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcbiBcdC50eFx0XHRcdFx0PSBhdGgxMWtfbWFjX29wX3R4LFxuLVx0Lndha2VfdHhfcXVldWVcdFx0XHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcbiYjNDM7XHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5AQCAtMTA1OTIsNiAmIzQzOzEwNjU1LDkgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXG4gXHRhci1cdTAwM2Vody1cdTAwM2VzdGFfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBhdGgxMWtfc3RhKTtcbiBcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cdTAwM2Vody1cdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTtcbiYjNDM7XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcbiYjNDM7XHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XG4gXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfU1RBX1RYX1BXUik7XG4gXHRpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELFxuIFx0XHQgICAgIGFyLVx1MDAzZWFiLVx1MDAzZXdtaV9hYi5zdmNfbWFwKSkge1xuQEAgLTEwNzU0LDcgJiM0MzsxMDgyMCw3IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXHRzdHJ1Y3QgYXRoMTFrICphcjtcbiBcdHN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjtcbiBcdGludCByZXQ7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgajtcbiBcbiBcdGlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0xMDc4OCw2ICYjNDM7MTA4NTQsOSBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFxuIFx0XHRwZGV2LVx1MDAzZWFyID0gYXI7XG4gXHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgSUVFRTgwMjExX05VTV9BQ1M7IGomIzQzOyYjNDM7KVxuJiM0MztcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2V0eHFfbG9ja1tqXSk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZWFydmlmcyk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcbmluZGV4IDU5ZjgzYzcxNzVmZDEuLmQ1NzdjNWNhMjQ5Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG5AQCAtMTYxLDYgJiM0MzsxNjEsNyBAQCBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV92ZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiB2ZGV2X2lkKVxuIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3BkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHBkZXZfaWQpO1xuIFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcik7XG4mIzQzO3ZvaWQgYXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKTtcbiB2b2lkIGF0aDExa19tYWNfcGVlcl9jbGVhbnVwX2FsbChzdHJ1Y3QgYXRoMTFrICphcik7XG4gaW50IGF0aDExa19tYWNfdHhfbWdtdF9wZW5kaW5nX2ZyZWUoaW50IGJ1Zl9pZCwgdm9pZCAqc2tiLCB2b2lkICpjdHgpO1xuIHU4IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncodTggYncpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjNTIzYjk0ZTY0ZDRkZGU1MmI5YjU0OGNiMWM2ZGMyY2FmOTljYzc0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAxNzowMDoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKaW5kZXggYTBkNzI1OTIzZWYyNC4uNDA4OTVkMjc2ZGU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgKQEAgLTcwOSw2ICYjNDM7NzA5LDExIEBAIHN0cnVjdCBhdGgxMWsgewogCSAqLwogCXNwaW5sb2NrX3QgZGF0YV9sb2NrOwogCiYjNDM7CS8qIHNlcmlhbGlzZXMgb25lIHNjaGVkdWxpbmcgcm91bmQgcGVyIGFjY2VzcyBjYXRlZ29yeSBhZ2FpbnN0IHRoZQomIzQzOwkgKiBvdGhlciBjb250ZXh0cyB0aGF0IGRyaXZlIGl0CiYjNDM7CSAqLwomIzQzOwlzcGlubG9ja190IHR4cV9sb2NrW0lFRUU4MDIxMV9OVU1fQUNTXTsKJiM0MzsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGFydmlmczsKIAkvKiBzaG91bGQgbmV2ZXIgYmUgTlVMTDsgbmVlZGVkIGZvciByZWd1bGFyIGh0dCByeCAqLwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqcnhfY2hhbm5lbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKaW5kZXggNzA5MjI2MTJkM2ZiOS4uZmZlMWY0NjZhZWZiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMKQEAgLTcxNCw2ICYjNDM7NzE0LDE2IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLAogCQkJICYjMzQ7XG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxuJiMzNDssCiAJCQkgYXRvbWljX3JlYWQoJmFtcDtzb2Nfc3RhdHMtJmd0O3R4X2Vyci5taXNjX2ZhaWwpKTsKIAomIzQzOwkvKiBEZXNjcmlwdG9ycyB0aGUgaGFyZHdhcmUgaGFzIG5vdCBjb21wbGV0ZWQuICovCiYjNDM7CWxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIHNpemUgLSBsZW4sICYjMzQ7XG5QZW5kaW5nIFR4IE1TRFVzOlxuJiMzNDspOwomIzQzOwlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O251bV9yYWRpb3M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlzdHJ1Y3QgYXRoMTFrICphciA9IGFiLSZndDtwZGV2c1tpXS5hcjsKJiM0MzsKJiM0MzsJCWlmIChhcikKJiM0MzsJCQlsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuLCAmIzM0O3JhZGlvJWQ6ICVkXG4mIzM0OywKJiM0MzsJCQkJCSBpLCBhdG9taWNfcmVhZCgmYW1wO2FyLSZndDtkcC5udW1fdHhfcGVuZGluZykpOwomIzQzOwl9CiYjNDM7CiAJbGVuICYjNDM7PSBhdGgxMWtfZGVidWdmc19kdW1wX3NvY19yaW5nX2JwX3N0YXRzKGFiLCBidWYgJiM0MzsgbGVuLCBzaXplIC0gbGVuKTsKIAogCWlmIChsZW4gJmd0OyBzaXplKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jCmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmMKQEAgLTc4Myw4ICYjNDM7NzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgYWItJmd0O2h3X3BhcmFtcy5oYWxfcGFyYW1zLSZndDtudW1fdHhfcmluZ3M7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChCSVQoYWItJmd0O2h3X3BhcmFtcy5oYWxfcGFyYW1zLSZndDt0Y2wyd2JtX3JibV9tYXBbaV0ud2JtX3JpbmdfbnVtKSAmYW1wOwotCQkgICAgYWItJmd0O2h3X3BhcmFtcy5yaW5nX21hc2stJmd0O3R4W2dycF9pZF0pCi0JCQlhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKGFiLCBpKTsKJiM0MzsJCSAgICBhYi0mZ3Q7aHdfcGFyYW1zLnJpbmdfbWFzay0mZ3Q7dHhbZ3JwX2lkXSkgewomIzQzOwkJCXdvcmtfZG9uZSA9CiYjNDM7CQkJCWF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGksIGJ1ZGdldCk7CiYjNDM7CQkJYnVkZ2V0IC09IHdvcmtfZG9uZTsKJiM0MzsJCQl0b3Rfd29ya19kb25lICYjNDM7PSB3b3JrX2RvbmU7CiYjNDM7CQkJaWYgKGJ1ZGdldCAmbHQ7PSAwKQomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQl9CiAJfQogCiAJaWYgKGFiLSZndDtod19wYXJhbXMucmluZ19tYXNrLSZndDtyeF9lcnJbZ3JwX2lkXSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF9yeC5jCmluZGV4IDMzNDI1NzA3YzA4NDIuLmE3YjliYjI5NTcyOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMKQEAgLTEzNzcsNiAmIzQzOzEzNzcsNyBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLAogCXUxNiByYXRlID0gMCwgc3VjY19wa3RzID0gMDsKIAl1MzIgdHhfZHVyYXRpb24gPSAwOwogCXU4IHRpZCA9IEhUVF9QUERVX1NUQVRTX05PTl9RT1NfVElEOwomIzQzOwl1OCBhaXJ0aW1lX3RpZDsKIAlib29sIGlzX2FtcGR1ID0gZmFsc2U7CiAKIAlpZiAoISh1c3Jfc3RhdHMtJmd0O3Rsdl9mbGFncyAmYW1wOyBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpCkBAIC0xNDg1LDYgJiM0MzsxNDg2LDIyIEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsCiAKIAlhcnN0YS0mZ3Q7dHhyYXRlLmJ3ID0gYXRoMTFrX21hY19id190b19tYWM4MDIxMV9idyhidyk7CiAJYXJzdGEtJmd0O3R4X2R1cmF0aW9uICYjNDM7PSB0eF9kdXJhdGlvbjsKJiM0MzsKJiM0MzsJLyogVGhlIGFjay9CQSBzdGF0dXMgVExWIG5hbWVzIHRoZSBUSUQgb25seSBmb3IgYSBQUERVIHRoYXQgZHJldyBhCiYjNDM7CSAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS4KJiM0MzsJICovCiYjNDM7CWFpcnRpbWVfdGlkID0gdGlkOwomIzQzOwlpZiAoYWlydGltZV90aWQgJmd0Oz0gSUVFRTgwMjExX05VTV9USURTICZhbXA7JmFtcDsKJiM0MzsJICAgIHVzcl9zdGF0cy0mZ3Q7dGx2X2ZsYWdzICZhbXA7IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX0NPTVBMVE5fQ09NTU9OKSkKJiM0MzsJCWFpcnRpbWVfdGlkID0gdXNyX3N0YXRzLSZndDtjbXBsdG5fY21uLnRpZF9udW07CiYjNDM7CWlmIChhaXJ0aW1lX3RpZCAmZ3Q7PSBJRUVFODAyMTFfTlVNX1RJRFMpCiYjNDM7CQlhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS0mZ3Q7dGlkX251bTsKJiM0MzsJaWYgKGFpcnRpbWVfdGlkICZndDs9IElFRUU4MDIxMV9OVU1fVElEUykKJiM0MzsJCWFpcnRpbWVfdGlkID0gMDsKJiM0MzsKJiM0MzsJaWYgKHR4X2R1cmF0aW9uKQomIzQzOwkJaWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTsKJiM0MzsKIAltZW1jcHkoJmFtcDthcnN0YS0mZ3Q7bGFzdF90eHJhdGUsICZhbXA7YXJzdGEtJmd0O3R4cmF0ZSwgc2l6ZW9mKHN0cnVjdCByYXRlX2luZm8pKTsKIAogCS8qIFBQRFUgc3RhdHMgcmVwb3J0ZWQgZm9yIG1nbXQgcGFja2V0IGRvZXNuJiMzOTt0IGhhdmUgdmFsaWQgdHggYnl0ZXMuCkBAIC01MjUzLDYgJiM0Mzs1MjcwLDcgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCwKIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0OwogCXN0cnVjdCBhdGgxMWtfcGVlciAqcGVlcjsKIAlzdHJ1Y3QgYXRoMTFrX3N0YSAqYXJzdGE7CiYjNDM7CXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7CiAJaW50IG51bV9idWZmc19yZWFwZWQgPSAwOwogCXUzMiByeF9idWZfc3o7CiAJdTE2IGxvZ190eXBlOwpAQCAtNTMwNyw2ICYjNDM7NTMyNSw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsCiAJCQljb250aW51ZTsKIAkJfQogCiYjNDM7CQlzdGEgPSBOVUxMOwogCQlyY3VfcmVhZF9sb2NrKCk7CiAJCXNwaW5fbG9ja19iaCgmYW1wO2FiLSZndDtiYXNlX2xvY2spOwogCQlwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLSZndDtwZWVyX2lkKTsKQEAgLTUzMjAsMTIgJiM0Mzs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsCiAKIAkJYXJzdGEgPSBhdGgxMWtfc3RhX3RvX2Fyc3RhKHBlZXItJmd0O3N0YSk7CiAJCWF0aDExa19kcF9yeF91cGRhdGVfcGVlcl9zdGF0cyhhcnN0YSwgcHBkdV9pbmZvKTsKJiM0MzsJCXN0YSA9IHBlZXItJmd0O3N0YTsKIAogCQlpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItJmd0O2FkZHIpKQogCQkJdHJhY2VfYXRoMTFrX2h0dF9yeGRlc2MoYXIsIHNrYi0mZ3Q7ZGF0YSwgbG9nX3R5cGUsIHJ4X2J1Zl9zeik7CiAKIG5leHRfc2tiOgogCQlzcGluX3VubG9ja19iaCgmYW1wO2FiLSZndDtiYXNlX2xvY2spOwomIzQzOwomIzQzOwkJLyogVGhlIGFpcnRpbWUgYSBzdGF0aW9uIHNwZW5kcyB0cmFuc21pdHRpbmcgaXMgdGFrZW4gZnJvbQomIzQzOwkJICogdGhlIG90aGVycywgc28gaXRzIGRlZmljaXQgaXMgY2hhcmdlZCBmb3IgaXQgdG9vLCB3aXRoIHRoZQomIzQzOwkJICogZHVyYXRpb24gdGhlIGhhcmR3YXJlIG1lYXN1cmVkIGZvciB0aGUgd2hvbGUgUFBEVSwgYXMgb24KJiM0MzsJCSAqIHRoZSB0cmFuc21pdCBzaWRlLiBUaGUgVExWIHRoYXQgbmFtZXMgdGhlIFRJRCBpcyBub3QgaW4KJiM0MzsJCSAqIHRoZSBkZWZhdWx0IG1vbml0b3Igc3RhdHVzIGZpbHRlciwgc28gdGhlIGNoYXJnZSBnb2VzIHRvCiYjNDM7CQkgKiBCRS4gT3V0c2lkZSBiYXNlX2xvY2ssIHdoaWNoIHR4IGNvbXBsZXRpb24gY29udGVuZHMgZm9yOwomIzQzOwkJICogc3RhIGlzIGhlbGQgYnkgdGhlIHJjdSByZWFkIGxvY2suCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChzdGEgJmFtcDsmYW1wOyBwcGR1X2luZm8tJmd0O3J4X2R1cmF0aW9uKQomIzQzOwkJCWllZWU4MDIxMV9zdGFfcmVnaXN0ZXJfYWlydGltZShzdGEsIDAsIDAsCiYjNDM7CQkJCQkJICAgICAgIHBwZHVfaW5mby0mZ3Q7cnhfZHVyYXRpb24pOwogCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jCmluZGV4IGNhYzk3MGM5MjgwNmEuLjM5OTdiZDMzNjk0MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmMKQEAgLTMwNSw5ICYjNDM7MzA1LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDExa19kcF90eF9mcmVlX3R4YnVmKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHU4IG1hY19pZCwKIAlza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpOwogCiAJZG1hX3VubWFwX3NpbmdsZShhYi0mZ3Q7ZGV2LCBza2JfY2ItJmd0O3BhZGRyLCBtc2R1LSZndDtsZW4sIERNQV9UT19ERVZJQ0UpOwotCWRldl9rZnJlZV9za2JfYW55KG1zZHUpOwogCiAJYXIgPSBhYi0mZ3Q7cGRldnNbbWFjX2lkXS5hcjsKJiM0MzsJaWVlZTgwMjExX2ZyZWVfdHhza2IoYXItJmd0O2h3LCBtc2R1KTsKJiM0MzsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO2FyLSZndDtkcC5udW1fdHhfcGVuZGluZykpCiAJCXdha2VfdXAoJmFtcDthci0mZ3Q7ZHAudHhfZW1wdHlfd2FpdHEpOwogfQpAQCAtNjg0LDcgJiM0Mzs2ODUsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTFrX2RwX3R4X3N0YXR1c19wYXJzZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLAogCQl0cy0mZ3Q7cmF0ZV9zdGF0cyA9IDA7CiB9CiAKLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKJiM0MztpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCwKJiM0MzsJCQkJICAgIGludCBidWRnZXQpCiB7CiAJc3RydWN0IGF0aDExayAqYXI7CiAJc3RydWN0IGF0aDExa19kcCAqZHAgPSAmYW1wO2FiLSZndDtkcDsKQEAgLTY5Myw5ICYjNDM7Njk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAlzdHJ1Y3Qgc2tfYnVmZiAqbXNkdTsKIAlzdHJ1Y3QgaGFsX3R4X3N0YXR1cyB0cyA9IHt9OwogCXN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gJmFtcDtkcC0mZ3Q7dHhfcmluZ1tyaW5nX2lkXTsKJiM0MzsJdW5zaWduZWQgbG9uZyBwdXNoID0gMDsKJiM0MzsJaW50IGRvbmUgPSAwOwogCXUzMiAqZGVzYzsKIAl1MzIgbXNkdV9pZDsKLQl1OCBtYWNfaWQ7CiYjNDM7CXU4IG1hY19pZCwgaTsKIAogCXNwaW5fbG9ja19iaCgmYW1wO3N0YXR1c19yaW5nLSZndDtsb2NrKTsKIApAQCAtNzIxLDEwICYjNDM7NzI1LDEzIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAogCXNwaW5fdW5sb2NrX2JoKCZhbXA7c3RhdHVzX3JpbmctJmd0O2xvY2spOwogCi0Jd2hpbGUgKEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLSZndDt0eF9zdGF0dXNfaGVhZCkgewomIzQzOwl3aGlsZSAoZG9uZSAmbHQ7IGJ1ZGdldCAmYW1wOyZhbXA7CiYjNDM7CSAgICAgICBBVEgxMUtfVFhfQ09NUExfTkVYVCh0eF9yaW5nLSZndDt0eF9zdGF0dXNfdGFpbCkgIT0KJiM0MzsJICAgICAgIHR4X3JpbmctJmd0O3R4X3N0YXR1c19oZWFkKSB7CiAJCXN0cnVjdCBoYWxfd2JtX3JlbGVhc2VfcmluZyAqdHhfc3RhdHVzOwogCQl1MzIgZGVzY19pZDsKIAomIzQzOwkJZG9uZSYjNDM7JiM0Mzs7CiAJCXR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsID0KIAkJCUFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctJmd0O3R4X3N0YXR1c190YWlsKTsKIAkJdHhfc3RhdHVzID0gJmFtcDt0eF9yaW5nLSZndDt0eF9zdGF0dXNbdHhfcmluZy0mZ3Q7dHhfc3RhdHVzX3RhaWxdOwpAQCAtNzU1LDEyICYjNDM7NzYyLDI1IEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCkKIAkJc3Bpbl91bmxvY2soJmFtcDt0eF9yaW5nLSZndDt0eF9pZHJfbG9jayk7CiAKIAkJYXIgPSBhYi0mZ3Q7cGRldnNbbWFjX2lkXS5hcjsKJiM0MzsJCV9fc2V0X2JpdChtYWNfaWQgKiBJRUVFODAyMTFfTlVNX0FDUyAmIzQzOyBza2JfZ2V0X3F1ZXVlX21hcHBpbmcobXNkdSksCiYjNDM7CQkJICAmYW1wO3B1c2gpOwogCiAJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZhbXA7YXItJmd0O2RwLm51bV90eF9wZW5kaW5nKSkKIAkJCXdha2VfdXAoJmFtcDthci0mZ3Q7ZHAudHhfZW1wdHlfd2FpdHEpOwogCiAJCWF0aDExa19kcF90eF9jb21wbGV0ZV9tc2R1KGFyLCBtc2R1LCAmYW1wO3RzKTsKIAl9CiYjNDM7CiYjNDM7CS8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXMKJiM0MzsJICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nCiYjNDM7CSAqIG9uLiBUaGUgYXJyaXZhbHMgdGhhdCB3b3VsZCBvdGhlcndpc2Ugc3RhcnQgYSByb3VuZCBhcmUgdGhlbXNlbHZlcwomIzQzOwkgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuCiYjNDM7CSAqLwomIzQzOwlmb3JfZWFjaF9zZXRfYml0KGksICZhbXA7cHVzaCwgYWItJmd0O251bV9yYWRpb3MgKiBJRUVFODAyMTFfTlVNX0FDUykKJiM0MzsJCWF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKGFiLSZndDtwZGV2c1tpIC8gSUVFRTgwMjExX05VTV9BQ1NdLmFyLAomIzQzOwkJCQkJICAgaSAlIElFRUU4MDIxMV9OVU1fQUNTKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGRvbmU7CiB9CiAKIGludCBhdGgxMWtfZHBfdHhfc2VuZF9yZW9fY21kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9yeF90aWQgKnJ4X3RpZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaAppbmRleCA5MzAzYjViYTZlMDEyLi5iNTI5NmNkYTczZTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oCkBAIC0yMSw3ICYjNDM7MjEsOCBAQCB2b2lkIGF0aDExa19kcF90eF91cGRhdGVfdHhjb21wbChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGhhbF90eF9zdGF0dXMgKnRzKTsKIGludCBhdGgxMWtfZHBfdHhfaHR0X2gydF92ZXJfcmVxX21zZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTsKIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZiwKIAkJIHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYik7Ci12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpOwomIzQzO2ludCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkLAomIzQzOwkJCQkgICAgaW50IGJ1ZGdldCk7CiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsCiAJCQkgICAgICBlbnVtIGhhbF9yZW9fY21kX3R5cGUgdHlwZSwKIAkJCSAgICAgIHN0cnVjdCBhdGgxMWtfaGFsX3Jlb19jbWQgKmNtZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jCmluZGV4IDJkNTVjZGM0ZDE2NWQuLjEyNTM1OTI2NjMxYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYwpAQCAtNjQ5OSw5ICYjNDM7NjQ5OSw5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19tZ210X3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAotCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsCi0JCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7c3RhdGljIGludCBhdGgxMWtfbWFjX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCSBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsCiYjNDM7CQkJIHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGF0aDExa19za2JfY2IgKnNrYl9jYiA9IEFUSDExS19TS0JfQ0Ioc2tiKTsKIAlzdHJ1Y3QgYXRoMTFrICphciA9IGh3LSZndDtwcml2OwpAQCAtNjUzMyw3ICYjNDM7NjUzMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJICAgIHJldCk7CiAJCQlpZWVlODAyMTFfZnJlZV90eHNrYihhci0mZ3Q7aHcsIHNrYik7CiAJCX0KLQkJcmV0dXJuOwomIzQzOwkJcmV0dXJuIHJldDsKIAl9CiAKIAlpZiAoY29udHJvbC0mZ3Q7c3RhKQpAQCAtNjU0NCw2ICYjNDM7NjU0NCw2OSBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQlhdGgxMWtfd2Fybihhci0mZ3Q7YWIsICYjMzQ7ZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXG4mIzM0OywgcmV0KTsKIAkJaWVlZTgwMjExX2ZyZWVfdHhza2IoYXItJmd0O2h3LCBza2IpOwogCX0KJiM0MzsKJiM0MzsJcmV0dXJuIHJldDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKJiM0MzsJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCwKJiM0MzsJCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpCiYjNDM7ewomIzQzOwlhdGgxMWtfbWFjX3R4KGh3LCBjb250cm9sLCBza2IpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW50IGF0aDExa19tYWNfdHhfcHVzaF90eHEoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgY29udHJvbCA9IHsgLnN0YSA9IHR4cS0mZ3Q7c3RhIH07CiYjNDM7CXN0cnVjdCBza19idWZmICpza2I7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CS8qIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkgYXBwbGllcyB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBpdHNlbGYsIHNvIGEKJiM0MzsJICogc2VsZWN0aW9uIGVuZHMgd2hlcmUgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgYmluZHMsIHdoZXJlIHRoZQomIzQzOwkgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpYwomIzQzOwkgKiBoYW5kbGVyIGRvZXMgdG9kYXksIGFuZCBhZGRpdGlvbmFsbHkgd2hlbiB0aGUgaGFyZHdhcmUgcmVmdXNlcyBhCiYjNDM7CSAqIGZyYW1lLgomIzQzOwkgKi8KJiM0MzsJd2hpbGUgKChza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShhci0mZ3Q7aHcsIHR4cSkpKSB7CiYjNDM7CQlyZXQgPSBhdGgxMWtfbWFjX3R4KGFyLSZndDtodywgJmFtcDtjb250cm9sLCBza2IpOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCA9PSAtRU5PU1BDIHx8IHJldCA9PSAtRU5PTUVNKSkKJiM0MzsJCQlyZXR1cm4gcmV0OwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFyLSZndDtodzsKJiM0MzsJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cTsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O3R4cV9sb2NrW2FjXSk7CiYjNDM7CiYjNDM7CWllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTsKJiM0MzsJd2hpbGUgKCh0eHEgPSBpZWVlODAyMTFfbmV4dF90eHEoaHcsIGFjKSkpIHsKJiM0MzsJCWludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpOwomIzQzOwomIzQzOwkJaWVlZTgwMjExX3JldHVybl90eHEoaHcsIHR4cSwgZmFsc2UpOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCkpCiYjNDM7CQkJYnJlYWs7CiYjNDM7CX0KJiM0MzsJaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTsKJiM0MzsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7dHhxX2xvY2tbYWNdKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAomIzQzOwkJCQkJc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKJiM0Mzt7CiYjNDM7CWF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGh3LSZndDtwcml2LCB0eHEtJmd0O2FjKTsKJiM0Mzt9CiYjNDM7CiYjNDM7dm9pZCBhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpCiYjNDM7ewomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CWF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGFyLCBhYyk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogfQogCiB2b2lkIGF0aDExa19tYWNfZHJhaW5fdHgoc3RydWN0IGF0aDExayAqYXIpCkBAIC0xMDA2Nyw3ICYjNDM7MTAxMzAsNyBAQCBzdGF0aWMgaW50IGF0aDExa19tYWNfb3Bfc3RhX3N0YXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHsKIAkudHgJCQkJPSBhdGgxMWtfbWFjX29wX3R4LAotCS53YWtlX3R4X3F1ZXVlCQkJPSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsCiYjNDM7CS53YWtlX3R4X3F1ZXVlCQkJPSBhdGgxMWtfbWFjX29wX3dha2VfdHhfcXVldWUsCiAJLnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsCiAJLnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCwKIAkucmVjb25maWdfY29tcGxldGUgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZSwKQEAgLTEwNTkyLDYgJiM0MzsxMDY1NSw5IEBAIHN0YXRpYyBpbnQgX19hdGgxMWtfbWFjX3JlZ2lzdGVyKHN0cnVjdCBhdGgxMWsgKmFyKQogCWFyLSZndDtody0mZ3Q7c3RhX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3N0YSk7CiAKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItJmd0O2h3LSZndDt3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTsKJiM0MzsJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLSZndDtody0mZ3Q7d2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTsKJiM0MzsJd2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLSZndDtody0mZ3Q7d2lwaHksCiYjNDM7CQkJICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BSVJUSU1FX0ZBSVJORVNTKTsKIAl3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItJmd0O2h3LSZndDt3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TVEFfVFhfUFdSKTsKIAlpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELAogCQkgICAgIGFyLSZndDthYi0mZ3Q7d21pX2FiLnN2Y19tYXApKSB7CkBAIC0xMDc1NCw3ICYjNDM7MTA4MjAsNyBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKQogCXN0cnVjdCBhdGgxMWsgKmFyOwogCXN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjsKIAlpbnQgcmV0OwotCWludCBpOwomIzQzOwlpbnQgaSwgajsKIAogCWlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQogCQlyZXR1cm4gMDsKQEAgLTEwNzg4LDYgJiM0MzsxMDg1NCw5IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpCiAKIAkJcGRldi0mZ3Q7YXIgPSBhcjsKIAkJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKJiM0MzsKJiM0MzsJCWZvciAoaiA9IDA7IGogJmx0OyBJRUVFODAyMTFfTlVNX0FDUzsgaiYjNDM7JiM0MzspCiYjNDM7CQkJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7dHhxX2xvY2tbal0pOwogCQlJTklUX0xJU1RfSEVBRCgmYW1wO2FyLSZndDthcnZpZnMpOwogCQlJTklUX0xJU1RfSEVBRCgmYW1wO2FyLSZndDtwcGR1X3N0YXRzX2luZm8pOwogCQltdXRleF9pbml0KCZhbXA7YXItJmd0O2NvbmZfbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmgKaW5kZXggNTlmODNjNzE3NWZkMS4uZDU3N2M1Y2EyNDljYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oCkBAIC0xNjEsNiAmIzQzOzE2MSw3IEBAIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3ZkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHZkZXZfaWQpCiBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV9wZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBwZGV2X2lkKTsKIAogdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKTsKJiM0Mzt2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYyk7CiB2b2lkIGF0aDExa19tYWNfcGVlcl9jbGVhbnVwX2FsbChzdHJ1Y3QgYXRoMTFrICphcik7CiBpbnQgYXRoMTFrX21hY190eF9tZ210X3BlbmRpbmdfZnJlZShpbnQgYnVmX2lkLCB2b2lkICpza2IsIHZvaWQgKmN0eCk7CiB1OCBhdGgxMWtfbWFjX2J3X3RvX21hYzgwMjExX2J3KHU4IGJ3KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTEwMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIFRyb3VibGVzaG9vdGluZyBQYXRoKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gd2hhdCBgYXRoMTFrYCBhY3R1YWxseSAqaXMqIGFuZCBjb25maXJtIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiBteSBlbnZpcm9ubWVudC4gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gcmVhZGlseSB0ZXN0IHdpdGhpbiBhbiBlbXVsYXRlZCBzZXR0aW5nLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IGludHJpbnNpY2FsbHkgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgYSBkZWRpY2F0ZWQgV2ktRmkgY2FyZD8gSSYjMzk7bSB0aGlua2luZywgcG90ZW50aWFsbHksIGEgUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheCBjYXJkPwoKSG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gYmUgbW9yZSBtZXRob2RpY2FsLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbnN0cnVjdGlvbnMsIHBhcnRpY3VsYXJseSBTZWN0aW9uIDIuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIHRoYXQmIzM5O3MgZXhwbGljaXRseSBydWxlZCBvdXQgZHVlIHRvIGJlaW5nIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gVGhlIHRleHQgcG9pbnRzIHRvIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIEkgcXVpY2tseSBuZWVkIHRvIGFzY2VydGFpbiBpZiBgYXRoMTFrYCBmYWxscyBpbnRvICp0aGF0KiBjYXRlZ29yeS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIG1haW4gcXVlc3Rpb246IGlzIGBhdGgxMWtgIGEgcGh5c2ljYWwgV2ktRmkgY2FyZCBkcml2ZXIsIHNwZWNpZmljYWxseSBzb21ldGhpbmcgbGlrZSBhIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXg/IFRvIGRldGVybWluZSB0aGlzLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBBVEgxMUsmIzM5O3MgY29uZmlndXJhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBkcml2ZXIgZW5hYmxlcyBhbmQsIGNvbnNlcXVlbnRseSwgaXRzIGhhcmR3YXJlIGRlcGVuZGVuY3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEFUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6Mjpjb25maWcgQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIDgwMi4xMWF4IGNoaXBzZXQgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjM6Y29uZmlnIEFUSDExS19QQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMzOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zNC1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDE6Y29uZmlnIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDItXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ5OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjU1OmNvbmZpZyBBVEgxMUtfU1BFQ1RSQUxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01Ni1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjQ6Y29uZmlnIEFUSDExS19DRlJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7YXRoMTFrIGNoYW5uZWwgZnJlcXVlbmN5IHJlc3BvbnNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDMyOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGF0aDExayYjMzk7cyBGdXp6aW5nIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGF0aDExay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYXRoMTFrIGlzIGFsbCBhYm91dCBRdWFsY29tbSYjMzk7cyA4MDIuMTFheCBjaGlwc2V0cywgc3BlY2lmaWNhbGx5IHRoZSBQQ0kgYW5kIEFIQiBpbnRlcmZhY2VzLiBJIHdhcyB3b25kZXJpbmcgaWYgaXQgaGFkIHNvbWUgc29ydCBvZiB2aXJ0dWFsIG9yIFVTQiBzdXBwb3J0LCBtYXliZSBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgaXQgbG9va3MgbGlrZSB0aGF0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIsIGNvbXBsZXRlbHkgZGlzdGluY3QuIEFuZCBubyBVU0Igc3VwcG9ydCBlaXRoZXIsIGp1c3QgQUhCIGFuZCBQQ0ksIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCk5leHQsIEkgdGhvdWdodCBhYm91dCBRRU1VIGVtdWxhdGlvbi4gSXMgYXRoMTFrIGVtdWxhdGVkIGF0IGFsbCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IE5vcGUuIFRoYXQgd291bGQgbWFrZSBpdCBtdWNoIGVhc2llci4KClNvIHRoZSBtaWxsaW9uLWRvbGxhciBxdWVzdGlvbjogQ2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFdlbGwsIHdhaXQgYSBtaW51dGUsIHN5emthbGxlciB0eXBpY2FsbHkgaGl0cyBtYWM4MDIxMSB0aHJvdWdoIGVpdGhlciBgbWFjODAyMTFfaHdzaW1gIG9yLCBtb3JlIHJlYWxpc3RpY2FsbHksIHRocm91Z2ggVVNCIFdpRmkgZG9uZ2xlcyB2aWEgc29tZXRoaW5nIGxpa2UgcmF3LWdhZGdldCBvciBhIFVTQiBmdXp6ZXIgYXBwcm9hY2ggbGlrZSB3aXRoIGF0aDlrX2h0YywgcnRsODE4Nywgb3Igc29tZXRoaW5nIHNpbWlsYXIuCgpCdXQgd2l0aCBhdGgxMWssIGl0JiMzOTtzIGp1c3QgQUhCIGFuZCBQQ0ksIGxpa2Ugd2l0aCB0aGUgSVBRODA3NCwgUUNBNjM5MCwgb3IgV0NONjg1NS4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZGlyZWN0IGFjY2VzcyB0byBRdWFsY29tbSYjMzk7cyBwaHlzaWNhbCBoYXJkd2FyZSBvciBBU0lDcy4gVGhhdCYjMzk7cyBhIGRpZmZlcmVudCBiYWxsZ2FtZS4KCk9rYXksIGJhY2sgdG8gdGhlIGRyYXdpbmcgYm9hcmQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGF0aDExayBjb2RlYmFzZSBhZ2FpbiwgcGFydGljdWxhcmx5IGZvciBhbnl0aGluZyByZWxhdGVkIHRvIHByb2JlcyBvciBidXMgaW1wbGVtZW50YXRpb25zLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhIFVTQiBvciB2aXJ0dWFsIGNvbXBvbmVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jPTEzNDM9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYXRoMTFrX2FoYl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzUyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYzoxMzUzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYXRoMTFrX2FoYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTIzPUVYUE9SVF9TWU1CT0woYXRoMTFrX2RlYnVnX21hc2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MjQ6bW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnX21hc2ssIGF0aDExa19kZWJ1Z19tYXNrLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI1LU1PRFVMRV9QQVJNX0RFU0MoZGVidWdfbWFzaywgXCYjMzQ7RGVidWdnaW5nIG1hc2tcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTI3PXN0YXRpYyB1bnNpZ25lZCBpbnQgYXRoMTFrX2NyeXB0b19tb2RlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6Mjg6bW9kdWxlX3BhcmFtX25hbWVkKGNyeXB0b19tb2RlLCBhdGgxMWtfY3J5cHRvX21vZGUsIHVpbnQsIDA2NDQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG9fbW9kZSwgXCYjMzQ7Y3J5cHRvIG1vZGU6IDAtaGFyZHdhcmUsIDEtc29mdHdhcmVcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTMyPXVuc2lnbmVkIGludCBhdGgxMWtfZnJhbWVfbW9kZSA9IEFUSDExS19IV19UWFJYX05BVElWRV9XSUZJO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmM6MzM6bW9kdWxlX3BhcmFtX25hbWVkKGZyYW1lX21vZGUsIGF0aDExa19mcmFtZV9tb2RlLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM0LU1PRFVMRV9QQVJNX0RFU0MoZnJhbWVfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0zNz1ib29sIGF0aDExa19mdG1fbW9kZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjM4Om1vZHVsZV9wYXJhbV9uYW1lZChmdG1fbW9kZSwgYXRoMTFrX2Z0bV9tb2RlLCBib29sLCAwNDQ0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM5LU1PRFVMRV9QQVJNX0RFU0MoZnRtX21vZGUsIFwmIzM0O0Jvb3RzIHVwIGluIGZhY3RvcnkgdGVzdCBtb2RlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaD02MzI9c3RydWN0IGF0aDExa19kZWJ1ZyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgtNjQyLVx0dTMyIG1lbV9vZmZzZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaDo2NDM6XHR1MzIgbW9kdWxlX2lkX2JpdG1hcFtNQVhfTU9EVUxFX0lEX0JJVE1BUF9XT1JEU107XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaC02NDQtXHRzdHJ1Y3QgYXRoMTFrX2RlYnVnX2RiciAqZGJyX2RlYnVnW1dNSV9ESVJFQ1RfQlVGX01BWF07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYz0xNTU9aW50IGF0aDExa19kYnJpbmdfd21pX2NmZ19zZXR1cChzdHJ1Y3QgYXRoMTFrICphcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MTY1Olx0cGFyYW0ubW9kdWxlX2lkXHRcdD0gaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2Ni1cdHBhcmFtLmJhc2VfcGFkZHJfbG9cdD0gbG93ZXJfMzJfYml0cyhyaW5nLVx1MDAzZXJlZmlsbF9zcm5nLnBhZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTI4MT1pbnQgYXRoMTFrX2RicmluZ19idWZmZXJfcmVsZWFzZV9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjkxLVx0dTMyIG51bV9lbnRyeSwgbnVtX2J1ZmZfcmVhcGVkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyOTI6XHR1OCBwZGV2X2lkeCwgcmJtLCBtb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI5My1cdHUzMiBjb29raWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMDAtXHRwZGV2X2lkeCA9IGV2LVx1MDAzZWZpeGVkLnBkZXZfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjMwMTpcdG1vZHVsZV9pZCA9IGV2LVx1MDAzZWZpeGVkLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozMjg6XHRzd2l0Y2ggKGV2LVx1MDAzZWZpeGVkLm1vZHVsZV9pZCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMjktXHRjYXNlIFdNSV9ESVJFQ1RfQlVGX1NQRUNUUkFMOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzM3LVx0XHRhdGgxMWtfd2FybihhYiwgXCYjMzQ7UmVjdiBkbWEgYnVmZmVyIHJlbGVhc2UgZXYgb24gdW5zdXBwIG1vZHVsZSAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzM4Olx0XHRcdCAgICBldi1cdTAwM2VmaXhlZC5tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMzktXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozNzc6XHRcdGF0aDExa19kZWJ1Z2ZzX2FkZF9kYnJpbmdfZW50cnkoYXIsIG1vZHVsZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc4LVx0XHRcdFx0XHRcdEFUSDExS19EQkdfREJSX0VWRU5UX1JYLCBzcm5nKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5NC1cdFx0bWVtc2V0KGJ1ZmYtXHUwMDNlcGF5bG9hZCwgMCwgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjM5NTpcdFx0YXRoMTFrX2RicmluZ19idWZzX3JlcGxlbmlzaChhciwgcmluZywgYnVmZiwgbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzk2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jPTc0ND1zdGF0aWMgc3NpemVfdCBhdGgxMWtfd3JpdGVfZndfZGJnbG9nKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3MS1cdFx0fVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmM6NzcyOlx0XHRhci1cdTAwM2VkZWJ1Zy5tb2R1bGVfaWRfYml0bWFwW21vZF9pZF9pbmRleF0gPSB1cHBlcl8zMl9iaXRzKHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3My1cdFx0aWYgKCFpc19lbmQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYy03ODUtXHRkYmdsb2cudmFsdWUgPSBsb3dlcl8zMl9iaXRzKHZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jOjc4NjpcdHJldCA9IGF0aDExa193bWlfZndfZGJnbG9nX2NmZyhhciwgYXItXHUwMDNlZGVidWcubW9kdWxlX2lkX2JpdG1hcCwgXHUwMDI2ZGJnbG9nKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc4Ny1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaD0xMzY9ZW51bSBhdGgxMWtfZGJnX2FnZ3JfbW9kZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgtMTQxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg6MTQyOmVudW0gZndfZGJnbG9nX3dsYW5fbW9kdWxlX2lkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0My1cdFdMQU5fTU9EVUxFX0lEX01JTiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg9MjUwPXN0cnVjdCBhdGgxMWtfZndfZGJnbG9nIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNTUtXHRcdFx0dTE2IGxvZ19sZXZlbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NjpcdFx0XHQvKiBtb2R1bGVfaWQgdmFsdWVzIGFyZSBnaXZlbiBpbiAgZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NzpcdFx0XHR1MTYgbW9kdWxlX2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgtMjU4LVx0XHR9O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg6MjU5Olx0XHQvKiB2YWx1ZSBpcyBlaXRoZXIgbG9nX2xldmVsXHUwMDI2bW9kdWxlX2lkL3ZkZXZfaWQvdmRldl9pZF9iaXRtYXAvbG9nX2xldmVsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNjAtXHRcdCAqIGFjY29yZGluZyB0byBwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz0zOTg9aHR0X3ByaW50X2h3X3N0YXRzX3dkX3RpbWVvdXRfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNC1cdHUzMiBidWZfbGVuID0gQVRIMTFLX0hUVF9TVEFUU19CVUZfU0laRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MDU6XHRjaGFyIGh3X21vZHVsZV9uYW1lW0hUVF9TVEFUU19NQVhfSFdfTU9EVUxFX05BTUVfTEVOICYjNDM7IDFdID0ge307XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNy1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O0hUVF9IV19TVEFUU19XRF9USU1FT1VUX1RMVjpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjQwODpcdG1lbWNweShod19tb2R1bGVfbmFtZSwgXHUwMDI2KGh0dF9zdGF0c19idWYtXHUwMDNlaHdfbW9kdWxlX25hbWVbMF0pLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwOS1cdCAgICAgICBIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NDEwOlx0bGVuICYjNDM7PSBzY25wcmludGYoYnVmICYjNDM7IGxlbiwgYnVmX2xlbiAtIGxlbiwgXCYjMzQ7aHdfbW9kdWxlX25hbWUgPSAlc1xcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTE6XHRcdFx0IGh3X21vZHVsZV9uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy00MTItXHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtjb3VudCA9ICV1XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz01MTA9c3RhdGljIGlubGluZSB2b2lkIGh0dF9wcmludF90eF90aWRfc3RhdHNfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTU0OS1cdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VsYXN0X3NjaGVkdWxlZF90c21wKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTA6XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtwYXVzZV9tb2R1bGVfaWQgPSAldVxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTE6XHRcdFx0IGh0dF9zdGF0c19idWYtXHUwMDNlcGF1c2VfbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTI6XHRsZW4gJiM0Mzs9IHNjbnByaW50ZihidWYgJiM0MzsgbGVuLCBidWZfbGVuIC0gbGVuLCBcJiMzNDtibG9ja19tb2R1bGVfaWQgPSAldVxcblxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo1NTM6XHRcdFx0IGh0dF9zdGF0c19idWYtXHUwMDNlYmxvY2tfbW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy01NTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jPTU2Mz1zdGF0aWMgaW5saW5lIHZvaWQgaHR0X3ByaW50X3R4X3RpZF9zdGF0c192MV90bHYoY29uc3Qgdm9pZCAqdGFnX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNjAyLVx0XHRcdCBodHRfc3RhdHNfYnVmLVx1MDAzZWxhc3Rfc2NoZWR1bGVkX3RzbXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwMzpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O3BhdXNlX21vZHVsZV9pZCA9ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNDpcdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VwYXVzZV9tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNTpcdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2Jsb2NrX21vZHVsZV9pZCA9ICV1XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNjpcdFx0XHQgaHR0X3N0YXRzX2J1Zi1cdTAwM2VibG9ja19tb2R1bGVfaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwNy1cdGxlbiAmIzQzOz0gc2NucHJpbnRmKGJ1ZiAmIzQzOyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFwmIzM0O2FsbG93X25fZmxhZ3MgPSAweCV4XFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaD0yNzY9c3RydWN0IGh0dF9od19zdGF0c193ZF90aW1lb3V0X3RsdiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc3LVx0LyogU3RvcmVkIGFzIGxpdHRsZSBlbmRpYW4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDoyNzg6XHR1OCBod19tb2R1bGVfbmFtZVtIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc5LVx0dTMyIGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaD0zMzg9c3RydWN0IGh0dF90eF90aWRfc3RhdHNfdGx2IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzUxLVx0dTMyIGxhc3Rfc2NoZWR1bGVkX3RzbXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzUyOlx0dTMyIHBhdXNlX21vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNTM6XHR1MzIgYmxvY2tfbW9kdWxlX2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM1NC1cdHUzMiB0aWRfdHhfYWlydGltZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzYzPXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3YxX3RsdiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM3Ni1cdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjM3NzpcdHUzMiBwYXVzZV9tb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mzc4Olx0dTMyIGJsb2NrX21vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaC0zNzktXHR1MzIgdGlkX3R4X2FpcnRpbWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzA3PXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE3LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMxODptb2R1bGVfaW5pdChhdGgxMWtfcGNpX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYz0xMzIwPXN0YXRpYyB2b2lkIGF0aDExa19wY2lfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6MTMyNTptb2R1bGVfZXhpdChhdGgxMWtfcGNpX2V4aXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmM9Mjg9RVhQT1JUX1NZTUJPTChhdGgxMWtfY29sZF9ib290X2NhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jOjI5Om1vZHVsZV9wYXJhbV9uYW1lZChjb2xkX2Jvb3RfY2FsLCBhdGgxMWtfY29sZF9ib290X2NhbCwgYm9vbCwgMDY0NCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMwLU1PRFVMRV9QQVJNX0RFU0MoY29sZF9ib290X2NhbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTQ1NzQ9aW50IGF0aDExa193bWlfcGRldl9kbWFfcmluZ19jZmcoc3RydWN0IGF0aDExayAqYXIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy00NTg5LVx0Y21kLVx1MDAzZXBkZXZfaWRcdFx0PSBwYXJhbS1cdTAwM2VwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo0NTkwOlx0Y21kLVx1MDAzZW1vZHVsZV9pZFx0XHQ9IHBhcmFtLVx1MDAzZW1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNDU5MS1cdGNtZC1cdTAwM2ViYXNlX3BhZGRyX2xvXHQ9IHBhcmFtLVx1MDAzZWJhc2VfcGFkZHJfbG87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz00OTg0PXN0YXRpYyBpbnQgYXRoMTFrX3dtaV90bHZfZG1hX3JpbmdfY2FwcyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxNi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jYXBzX3BhcnNlLVx1MDAzZW5fZG1hX3JpbmdfY2FwczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NTAxNzpcdFx0aWYgKGRtYV9jYXBzW2ldLm1vZHVsZV9pZCBcdTAwM2U9IFdNSV9ESVJFQ1RfQlVGX01BWCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE4Olx0XHRcdGF0aDExa193YXJuKGFiLCBcJiMzNDtJbnZhbGlkIG1vZHVsZSBpZCAlZFxcblwmIzM0OywgZG1hX2NhcHNbaV0ubW9kdWxlX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxOS1cdFx0XHRyZXQgPSAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NTAyMzpcdFx0ZGlyX2J1ZmZfY2Fwc1tpXS5pZCA9IGRtYV9jYXBzW2ldLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAyNC1cdFx0ZGlyX2J1ZmZfY2Fwc1tpXS5wZGV2X2lkID0gRFBfSFcyU1dfTUFDSUQoZG1hX2NhcHNbaV0ucGRldl9pZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTAxPWF0aDExa193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMWsgKmFyLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTEyNi1cdGNtZC1cdTAwM2V2ZGV2X2lkID0gdXRfY21kLnZkZXZfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkxMjc6XHRjbWQtXHUwMDNlbW9kdWxlX2lkID0gdXRfY21kLm1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTEyOC1cdGNtZC1cdTAwM2VudW1fYXJncyA9IHV0X2NtZC5udW1fYXJncztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxNTItXHRcdCAgIFwmIzM0O2NtZCB1bml0IHRlc3QgbW9kdWxlICVkIHZkZXYgJWQgbl9hcmdzICVkIHRva2VuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTUzOlx0XHQgICBjbWQtXHUwMDNlbW9kdWxlX2lkLCBjbWQtXHUwMDNldmRldl9pZCwgY21kLVx1MDAzZW51bV9hcmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTU0LVx0XHQgICBjbWQtXHUwMDNlZGlhZ190b2tlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTU5PWludCBhdGgxMWtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMWsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE4NC1cdHdtaV91dC52ZGV2X2lkID0gYXJ2aWYtXHUwMDNldmRldl9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE4NTpcdHdtaV91dC5tb2R1bGVfaWQgPSBERlNfVU5JVF9URVNUX01PRFVMRTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE4Ni1cdHdtaV91dC5udW1fYXJncyA9IERGU19NQVhfVEVTVF9BUkdTO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE5My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE5NDppbnQgYXRoMTFrX3dtaV9md19kYmdsb2dfY2ZnKHN0cnVjdCBhdGgxMWsgKmFyLCB1MzIgKm1vZHVsZV9pZF9iaXRtYXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTUtXHRcdFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIyNi1cdFx0Y21kLVx1MDAzZXZhbHVlID0gZGJnbG9nLVx1MDAzZXZhbHVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MjI3Olx0XHRtZW1jcHkodGx2LVx1MDAzZXZhbHVlLCBtb2R1bGVfaWRfYml0bWFwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MjI4LVx0XHQgICAgICAgTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFMgKiBzaXplb2YodTMyKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMjktXHRcdC8qIGNsZWFyIGN1cnJlbnQgY29uZmlnIHRvIGJlIHVzZWQgZm9yIG5leHQgdXNlciBjb25maWcgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTIzMDpcdFx0bWVtc2V0KG1vZHVsZV9pZF9iaXRtYXAsIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMzEtXHRcdCAgICAgICBNQVhfTU9EVUxFX0lEX0JJVE1BUF9XT1JEUyAqIHNpemVvZih1MzIpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTI1NzU9c3RydWN0IHdtaV9kbWFfcmluZ19jYXBhYmlsaXRpZXMge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3Ny1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDoyNTc4Olx0dTMyIG1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3OS1cdHUzMiBtaW5fZWxlbTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTQxMDE9c3RydWN0IHdtaV91bml0X3Rlc3RfY21kIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDMtXHR1MzIgdmRldl9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6NDEwNDpcdHUzMiBtb2R1bGVfaWQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDUtXHR1MzIgbnVtX2FyZ3M7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD01NjY4PXN0cnVjdCBhdGgxMWtfd21pX3BkZXZfZG1hX3JpbmdfY2ZnX3JlcV9jbWQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY3MC1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo1NjcxOlx0dTMyIG1vZHVsZV9pZDtcdFx0Lyogc2VlIGVudW0gd21pX2RpcmVjdF9idWZmZXJfbW9kdWxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTU2NzItXHR1MzIgYmFzZV9wYWRkcl9sbztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTU2OTA9c3RydWN0IGF0aDExa193bWlfZG1hX2J1Zl9yZWxlYXNlX2ZpeGVkX3BhcmFtIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5MS1cdHUzMiBwZGV2X2lkO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo1NjkyOlx0dTMyIG1vZHVsZV9pZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5My1cdHUzMiBudW1fYnVmX3JlbGVhc2VfZW50cnk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD02NTk0PWludCBhdGgxMWtfd21pX3NjYW5fcHJvYl9yZXFfb3VpKHN0cnVjdCBhdGgxMWsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC02NTk1LVx0XHRcdFx0IGNvbnN0IHU4IG1hY19hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjY1OTY6aW50IGF0aDExa193bWlfZndfZGJnbG9nX2NmZyhzdHJ1Y3QgYXRoMTFrICphciwgdTMyICptb2R1bGVfaWRfYml0bWFwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC02NTk3LVx0XHRcdCAgICAgc3RydWN0IGF0aDExa19md19kYmdsb2cgKmRiZ2xvZyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTc6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NDkKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiA1ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBgYXRoMTFrYCBGdXp6aW5nIEZlYXNpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHRoZSBgYXRoMTFrYCBkcml2ZXIuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDExa2AgaXMgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgYW5kIGl0JiMzOTtzIHByZXR0eSBzcGVjaWZpYyDigJMgaXQgb25seSBwbGF5cyBuaWNlbHkgd2l0aCBQQ0kgYW5kIEFIQiBoYXJkd2FyZSBwbGF0Zm9ybXMgKHRoaW5rIElQUTgwNzQsIFFDQTYzOTAsIHRob3NlIHR5cGVzKS4gSXQgKmRvZXNuJiMzOTt0KiBzdXBwb3J0IFVTQi4gVGhpcyBtZWFucyB0aGF0LCB1bmxpa2Ugc29tZSBvdGhlciBkcml2ZXJzLCBJIGNhbiYjMzk7dCBqdXN0IGVhc2lseSBzcGluIHVwIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgYW5kIGV4cGVjdCB0byBoaXQgdGhlIGNvZGUuIE5vIHNvZnR3YXJlIG1vY2tzIG9yIGVtdWxhdGlvbnMgZXhpc3QgaW4gdGhvc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciB0aGlzIGRyaXZlci4gIEl0IG5lZWRzIHNwZWNpYWwgUXVhbGNvbW0gaGFyZHdhcmUsIEFTSUNzLCBhbmQgZmlybXdhcmUgdG8gZXZlbiBwcm9iZSBhbmQgaW5pdGlhbGl6ZSBwcm9wZXJseS4KCkkmIzM5O20gYWxzbyBrZWVwaW5nIGluIG1pbmQgdGhlIHN0cnVjdHVyYWwgdW5yZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gU3BlY2lmaWNhbGx5LCB0aGUgYml0IGFib3V0IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMg4oCTIHRoZSBvbmVzIHRoYXQgZGVtYW5kIHJlYWwgQVNJQy9QQ0llIGNhcmRzIGFuZCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwLiAgVGhpcyBzZWVtcyBoaWdobHkgcmVsZXZhbnQgaGVyZS4KCkxvb2tpbmcgYXQgdGhlIHBhdGNoIGl0c2VsZiwgYWxsIHRoZSBtb2RpZmllZCBmaWxlcyBhcmUgbmVhdGx5IHR1Y2tlZCB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gOiAgYGNvcmUuaGAsIGBkZWJ1Z2ZzLmNgLCBgZHAuY2AsIGBkcF9yeC5jYCwgYGRwX3R4LmNgLCBgZHBfdHguaGAsIGBtYWMuY2AsIGFuZCBgbWFjLmhgLiAgTm9uZSBvZiB0aGVzZSBhcmUgcmVsYXRlZCB0byB2aXJ0dWFsIGRldmljZSBkcml2ZXJzLCBsaWtlIG1hYzgwMjExX2h3c2ltIG9yIHZpcnRpby1uZXQsIG9yIGV2ZW4gYSBVU0IgZHJpdmVyIHRoYXQgY291bGQgKnBvdGVudGlhbGx5KiBiZSBmYWtlZCB1c2luZyBhIHN5emthbGxlciBVU0IgcmF3IGdhZGdldC4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyB0aGF0IHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzIGxpa2UgUUVNVSBhbmQgR0NFLiBJJiMzOTtkIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgYGF0aDExa2AgZHJpdmVyIHJlbGllcyBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoQVNJQ3MgYW5kIGZpcm13YXJlKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aHVzIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTt2ZSBjaGVja2VkIHRoYXQgdGhlIGRpZmYgb25seSB0b3VjaGVzIGZpbGVzIHdpdGhpbiB0aGUgYGF0aDExa2AgZGlyZWN0b3J5LiAgRXZlcnl0aGluZyBsb29rcyBnb29kLCBzbyBJJiMzOTttIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE3OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDExayBkcml2ZXIgKFF1YWxjb21tIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciksIHdoaWNoIG9wZXJhdGVzIGV4Y2x1c2l2ZWx5IG9uIHBoeXNpY2FsIFBDSWUvQUhCIGhhcmR3YXJlIGRldmljZXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxNzowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MjIuMzc1NDgyMjI4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzNjMzMDk5OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gODAyLjExYXggd2lyZWxlc3MgZHJpdmVyKSwgd2hpY2ggb3BlcmF0ZXMgZXhjbHVzaXZlbHkgb24gcGh5c2ljYWwgUENJZS9BSEIgaGFyZHdhcmUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDoyMi4zNzU0ODY1NThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTg5Mzc0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjNTIzYjk0ZTY0ZDRkZGU1MmI5YjU0OGNiMWM2ZGMyY2FmOTljYzc0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMTc6MDA6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxcbmluZGV4IGEwZDcyNTkyM2VmMjQuLjQwODk1ZDI3NmRlNWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxcbkBAIC03MDksNiArNzA5LDExIEBAIHN0cnVjdCBhdGgxMWsge1xcbiBcXHQgKi9cXG4gXFx0c3BpbmxvY2tfdCBkYXRhX2xvY2s7XFxuIFxcbitcXHQvKiBzZXJpYWxpc2VzIG9uZSBzY2hlZHVsaW5nIHJvdW5kIHBlciBhY2Nlc3MgY2F0ZWdvcnkgYWdhaW5zdCB0aGVcXG4rXFx0ICogb3RoZXIgY29udGV4dHMgdGhhdCBkcml2ZSBpdFxcbitcXHQgKi9cXG4rXFx0c3BpbmxvY2tfdCB0eHFfbG9ja1tJRUVFODAyMTFfTlVNX0FDU107XFxuK1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGFydmlmcztcXG4gXFx0Lyogc2hvdWxkIG5ldmVyIGJlIE5VTEw7IG5lZWRlZCBmb3IgcmVndWxhciBodHQgcnggKi9cXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpyeF9jaGFubmVsO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXFxuaW5kZXggNzA5MjI2MTJkM2ZiOS4uZmZlMWY0NjZhZWZiNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jXFxuQEAgLTcxNCw2ICs3MTQsMTYgQEAgc3RhdGljIHNzaXplX3QgYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfZHBfc3RhdHMoc3RydWN0IGZpbGUgKmZpbGUsXFxuIFxcdFxcdFxcdCBcXFwiXFxcXG5NaXNjIFRyYW5zbWl0IEZhaWx1cmVzOiAlZFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0IGF0b21pY19yZWFkKFxcdTAwMjZzb2Nfc3RhdHMtXFx1MDAzZXR4X2Vyci5taXNjX2ZhaWwpKTtcXG4gXFxuK1xcdC8qIERlc2NyaXB0b3JzIHRoZSBoYXJkd2FyZSBoYXMgbm90IGNvbXBsZXRlZC4gKi9cXG4rXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFxcXCJcXFxcblBlbmRpbmcgVHggTVNEVXM6XFxcXG5cXFwiKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2VudW1fcmFkaW9zOyBpKyspIHtcXG4rXFx0XFx0c3RydWN0IGF0aDExayAqYXIgPSBhYi1cXHUwMDNlcGRldnNbaV0uYXI7XFxuK1xcbitcXHRcXHRpZiAoYXIpXFxuK1xcdFxcdFxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCBcXFwicmFkaW8lZDogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCBpLCBhdG9taWNfcmVhZChcXHUwMDI2YXItXFx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSk7XFxuK1xcdH1cXG4rXFxuIFxcdGxlbiArPSBhdGgxMWtfZGVidWdmc19kdW1wX3NvY19yaW5nX2JwX3N0YXRzKGFiLCBidWYgKyBsZW4sIHNpemUgLSBsZW4pO1xcbiBcXG4gXFx0aWYgKGxlbiBcXHUwMDNlIHNpemUpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHAuY1xcbmluZGV4IGJlNjVkNzNiOTA0YjYuLmRkYjQzNGM1MTNlMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXFxuQEAgLTc4Myw4ICs3ODMsMTQgQEAgaW50IGF0aDExa19kcF9zZXJ2aWNlX3Nybmcoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLmhhbF9wYXJhbXMtXFx1MDAzZW51bV90eF9yaW5nczsgaSsrKSB7XFxuIFxcdFxcdGlmIChCSVQoYWItXFx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVxcdTAwM2V0Y2wyd2JtX3JibV9tYXBbaV0ud2JtX3JpbmdfbnVtKSBcXHUwMDI2XFxuLVxcdFxcdCAgICBhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbZ3JwX2lkXSlcXG4tXFx0XFx0XFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihhYiwgaSk7XFxuK1xcdFxcdCAgICBhYi1cXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cXHUwMDNldHhbZ3JwX2lkXSkge1xcbitcXHRcXHRcXHR3b3JrX2RvbmUgPVxcbitcXHRcXHRcXHRcXHRhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKGFiLCBpLCBidWRnZXQpO1xcbitcXHRcXHRcXHRidWRnZXQgLT0gd29ya19kb25lO1xcbitcXHRcXHRcXHR0b3Rfd29ya19kb25lICs9IHdvcmtfZG9uZTtcXG4rXFx0XFx0XFx0aWYgKGJ1ZGdldCBcXHUwMDNjPSAwKVxcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGFiLVxcdTAwM2Vod19wYXJhbXMucmluZ19tYXNrLVxcdTAwM2VyeF9lcnJbZ3JwX2lkXSkge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcXG5pbmRleCAzMzQyNTcwN2MwODQyLi5hN2I5YmIyOTU3MjhiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xcbkBAIC0xMzc3LDYgKzEzNzcsNyBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XFxuIFxcdHUzMiB0eF9kdXJhdGlvbiA9IDA7XFxuIFxcdHU4IHRpZCA9IEhUVF9QUERVX1NUQVRTX05PTl9RT1NfVElEO1xcbitcXHR1OCBhaXJ0aW1lX3RpZDtcXG4gXFx0Ym9vbCBpc19hbXBkdSA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCEodXNyX3N0YXRzLVxcdTAwM2V0bHZfZmxhZ3MgXFx1MDAyNiBCSVQoSFRUX1BQRFVfU1RBVFNfVEFHX1VTUl9SQVRFKSkpXFxuQEAgLTE0ODUsNiArMTQ4NiwyMiBAQCBhdGgxMWtfdXBkYXRlX3Blcl9wZWVyX3R4X3N0YXRzKHN0cnVjdCBhdGgxMWsgKmFyLFxcbiBcXG4gXFx0YXJzdGEtXFx1MDAzZXR4cmF0ZS5idyA9IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncoYncpO1xcbiBcXHRhcnN0YS1cXHUwMDNldHhfZHVyYXRpb24gKz0gdHhfZHVyYXRpb247XFxuK1xcbitcXHQvKiBUaGUgYWNrL0JBIHN0YXR1cyBUTFYgbmFtZXMgdGhlIFRJRCBvbmx5IGZvciBhIFBQRFUgdGhhdCBkcmV3IGFcXG4rXFx0ICogcmVzcG9uc2U7IGZhbGwgYmFjayB0byB0aGUgY29tcGxldGlvbiBhbmQgcmF0ZSBUTFZzLCB0aGVuIHRvIEJFLlxcbitcXHQgKi9cXG4rXFx0YWlydGltZV90aWQgPSB0aWQ7XFxuK1xcdGlmIChhaXJ0aW1lX3RpZCBcXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHVzcl9zdGF0cy1cXHUwMDNldGx2X2ZsYWdzIFxcdTAwMjYgQklUKEhUVF9QUERVX1NUQVRTX1RBR19VU1JfQ09NUExUTl9DT01NT04pKVxcbitcXHRcXHRhaXJ0aW1lX3RpZCA9IHVzcl9zdGF0cy1cXHUwMDNlY21wbHRuX2Ntbi50aWRfbnVtO1xcbitcXHRpZiAoYWlydGltZV90aWQgXFx1MDAzZT0gSUVFRTgwMjExX05VTV9USURTKVxcbitcXHRcXHRhaXJ0aW1lX3RpZCA9IHVzZXJfcmF0ZS1cXHUwMDNldGlkX251bTtcXG4rXFx0aWYgKGFpcnRpbWVfdGlkIFxcdTAwM2U9IElFRUU4MDIxMV9OVU1fVElEUylcXG4rXFx0XFx0YWlydGltZV90aWQgPSAwO1xcbitcXG4rXFx0aWYgKHR4X2R1cmF0aW9uKVxcbitcXHRcXHRpZWVlODAyMTFfc3RhX3JlZ2lzdGVyX2FpcnRpbWUoc3RhLCBhaXJ0aW1lX3RpZCwgdHhfZHVyYXRpb24sIDApO1xcbitcXG4gXFx0bWVtY3B5KFxcdTAwMjZhcnN0YS1cXHUwMDNlbGFzdF90eHJhdGUsIFxcdTAwMjZhcnN0YS1cXHUwMDNldHhyYXRlLCBzaXplb2Yoc3RydWN0IHJhdGVfaW5mbykpO1xcbiBcXG4gXFx0LyogUFBEVSBzdGF0cyByZXBvcnRlZCBmb3IgbWdtdCBwYWNrZXQgZG9lc24ndCBoYXZlIHZhbGlkIHR4IGJ5dGVzLlxcbkBAIC01MjUzLDYgKzUyNzAsNyBAQCBpbnQgYXRoMTFrX2RwX3J4X3Byb2Nlc3NfbW9uX3N0YXR1cyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgbWFjX2lkLFxcbiBcXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xcbiBcXHRzdHJ1Y3QgYXRoMTFrX3BlZXIgKnBlZXI7XFxuIFxcdHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YTtcXG4rXFx0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcXG4gXFx0aW50IG51bV9idWZmc19yZWFwZWQgPSAwO1xcbiBcXHR1MzIgcnhfYnVmX3N6O1xcbiBcXHR1MTYgbG9nX3R5cGU7XFxuQEAgLTUzMDcsNiArNTMyNSw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcbitcXHRcXHRzdGEgPSBOVUxMO1xcbiBcXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YWItXFx1MDAzZWJhc2VfbG9jayk7XFxuIFxcdFxcdHBlZXIgPSBhdGgxMWtfcGVlcl9maW5kX2J5X2lkKGFiLCBwcGR1X2luZm8tXFx1MDAzZXBlZXJfaWQpO1xcbkBAIC01MzIwLDEyICs1MzM5LDI1IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXFxuIFxcbiBcXHRcXHRhcnN0YSA9IGF0aDExa19zdGFfdG9fYXJzdGEocGVlci1cXHUwMDNlc3RhKTtcXG4gXFx0XFx0YXRoMTFrX2RwX3J4X3VwZGF0ZV9wZWVyX3N0YXRzKGFyc3RhLCBwcGR1X2luZm8pO1xcbitcXHRcXHRzdGEgPSBwZWVyLVxcdTAwM2VzdGE7XFxuIFxcbiBcXHRcXHRpZiAoYXRoMTFrX2RlYnVnZnNfaXNfcGt0bG9nX3BlZXJfdmFsaWQoYXIsIHBlZXItXFx1MDAzZWFkZHIpKVxcbiBcXHRcXHRcXHR0cmFjZV9hdGgxMWtfaHR0X3J4ZGVzYyhhciwgc2tiLVxcdTAwM2VkYXRhLCBsb2dfdHlwZSwgcnhfYnVmX3N6KTtcXG4gXFxuIG5leHRfc2tiOlxcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YWItXFx1MDAzZWJhc2VfbG9jayk7XFxuK1xcbitcXHRcXHQvKiBUaGUgYWlydGltZSBhIHN0YXRpb24gc3BlbmRzIHRyYW5zbWl0dGluZyBpcyB0YWtlbiBmcm9tXFxuK1xcdFxcdCAqIHRoZSBvdGhlcnMsIHNvIGl0cyBkZWZpY2l0IGlzIGNoYXJnZWQgZm9yIGl0IHRvbywgd2l0aCB0aGVcXG4rXFx0XFx0ICogZHVyYXRpb24gdGhlIGhhcmR3YXJlIG1lYXN1cmVkIGZvciB0aGUgd2hvbGUgUFBEVSwgYXMgb25cXG4rXFx0XFx0ICogdGhlIHRyYW5zbWl0IHNpZGUuIFRoZSBUTFYgdGhhdCBuYW1lcyB0aGUgVElEIGlzIG5vdCBpblxcbitcXHRcXHQgKiB0aGUgZGVmYXVsdCBtb25pdG9yIHN0YXR1cyBmaWx0ZXIsIHNvIHRoZSBjaGFyZ2UgZ29lcyB0b1xcbitcXHRcXHQgKiBCRS4gT3V0c2lkZSBiYXNlX2xvY2ssIHdoaWNoIHR4IGNvbXBsZXRpb24gY29udGVuZHMgZm9yO1xcbitcXHRcXHQgKiBzdGEgaXMgaGVsZCBieSB0aGUgcmN1IHJlYWQgbG9jay5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChzdGEgXFx1MDAyNlxcdTAwMjYgcHBkdV9pbmZvLVxcdTAwM2VyeF9kdXJhdGlvbilcXG4rXFx0XFx0XFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgMCwgMCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHBwZHVfaW5mby1cXHUwMDNlcnhfZHVyYXRpb24pO1xcbiBcXHRcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xcbmluZGV4IGNhYzk3MGM5MjgwNmEuLjM5OTdiZDMzNjk0MmEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXFxuQEAgLTMwNSw5ICszMDUsMTAgQEAgc3RhdGljIHZvaWQgYXRoMTFrX2RwX3R4X2ZyZWVfdHhidWYoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTggbWFjX2lkLFxcbiBcXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xcbiBcXG4gXFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cXHUwMDNlZGV2LCBza2JfY2ItXFx1MDAzZXBhZGRyLCBtc2R1LVxcdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xcbi1cXHRkZXZfa2ZyZWVfc2tiX2FueShtc2R1KTtcXG4gXFxuIFxcdGFyID0gYWItXFx1MDAzZXBkZXZzW21hY19pZF0uYXI7XFxuK1xcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVxcdTAwM2VodywgbXNkdSk7XFxuK1xcbiBcXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcXHUwMDI2YXItXFx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcXG4gXFx0XFx0d2FrZV91cChcXHUwMDI2YXItXFx1MDAzZWRwLnR4X2VtcHR5X3dhaXRxKTtcXG4gfVxcbkBAIC02ODQsNyArNjg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4gXFx0XFx0dHMtXFx1MDAzZXJhdGVfc3RhdHMgPSAwO1xcbiB9XFxuIFxcbi12b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXFxuK2ludCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkLFxcbitcXHRcXHRcXHRcXHQgICAgaW50IGJ1ZGdldClcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoMTFrICphcjtcXG4gXFx0c3RydWN0IGF0aDExa19kcCAqZHAgPSBcXHUwMDI2YWItXFx1MDAzZWRwO1xcbkBAIC02OTMsOSArNjk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZHU7XFxuIFxcdHN0cnVjdCBoYWxfdHhfc3RhdHVzIHRzID0ge307XFxuIFxcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXFx1MDAyNmRwLVxcdTAwM2V0eF9yaW5nW3JpbmdfaWRdO1xcbitcXHR1bnNpZ25lZCBsb25nIHB1c2ggPSAwO1xcbitcXHRpbnQgZG9uZSA9IDA7XFxuIFxcdHUzMiAqZGVzYztcXG4gXFx0dTMyIG1zZHVfaWQ7XFxuLVxcdHU4IG1hY19pZDtcXG4rXFx0dTggbWFjX2lkLCBpO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZzdGF0dXNfcmluZy1cXHUwMDNlbG9jayk7XFxuIFxcbkBAIC03MjEsMTAgKzcyNSwxMyBAQCB2b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXFxuIFxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2c3RhdHVzX3JpbmctXFx1MDAzZWxvY2spO1xcbiBcXG4tXFx0d2hpbGUgKEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xcbitcXHR3aGlsZSAoZG9uZSBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgQVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XFxuK1xcdCAgICAgICB0eF9yaW5nLVxcdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xcbiBcXHRcXHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcXG4gXFx0XFx0dTMyIGRlc2NfaWQ7XFxuIFxcbitcXHRcXHRkb25lKys7XFxuIFxcdFxcdHR4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsID1cXG4gXFx0XFx0XFx0QVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cXHUwMDNldHhfc3RhdHVzX3RhaWwpO1xcbiBcXHRcXHR0eF9zdGF0dXMgPSBcXHUwMDI2dHhfcmluZy1cXHUwMDNldHhfc3RhdHVzW3R4X3JpbmctXFx1MDAzZXR4X3N0YXR1c190YWlsXTtcXG5AQCAtNzU1LDEyICs3NjIsMjUgQEAgdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKVxcbiBcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2dHhfcmluZy1cXHUwMDNldHhfaWRyX2xvY2spO1xcbiBcXG4gXFx0XFx0YXIgPSBhYi1cXHUwMDNlcGRldnNbbWFjX2lkXS5hcjtcXG4rXFx0XFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICsgc2tiX2dldF9xdWV1ZV9tYXBwaW5nKG1zZHUpLFxcbitcXHRcXHRcXHQgIFxcdTAwMjZwdXNoKTtcXG4gXFxuIFxcdFxcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFxcdTAwMjZhci1cXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpKVxcbiBcXHRcXHRcXHR3YWtlX3VwKFxcdTAwMjZhci1cXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xcbiBcXG4gXFx0XFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRlX21zZHUoYXIsIG1zZHUsIFxcdTAwMjZ0cyk7XFxuIFxcdH1cXG4rXFxuK1xcdC8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXNcXG4rXFx0ICogd2hhdCBhbiBhaXJ0aW1lLWxpbWl0ZWQgc3RhdGlvbiBpbiB0aGF0IGFjY2VzcyBjYXRlZ29yeSBpcyB3YWl0aW5nXFxuK1xcdCAqIG9uLiBUaGUgYXJyaXZhbHMgdGhhdCB3b3VsZCBvdGhlcndpc2Ugc3RhcnQgYSByb3VuZCBhcmUgdGhlbXNlbHZlc1xcbitcXHQgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuXFxuK1xcdCAqL1xcbitcXHRmb3JfZWFjaF9zZXRfYml0KGksIFxcdTAwMjZwdXNoLCBhYi1cXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxcbitcXHRcXHRhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhhYi1cXHUwMDNlcGRldnNbaSAvIElFRUU4MDIxMV9OVU1fQUNTXS5hcixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgaSAlIElFRUU4MDIxMV9OVU1fQUNTKTtcXG4rXFxuK1xcdHJldHVybiBkb25lO1xcbiB9XFxuIFxcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaFxcbmluZGV4IDkzMDNiNWJhNmUwMTIuLmI1Mjk2Y2RhNzNlMzAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5oXFxuQEAgLTIxLDcgKzIxLDggQEAgdm9pZCBhdGgxMWtfZHBfdHhfdXBkYXRlX3R4Y29tcGwoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBoYWxfdHhfc3RhdHVzICp0cyk7XFxuIGludCBhdGgxMWtfZHBfdHhfaHR0X2gydF92ZXJfcmVxX21zZyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKTtcXG4gaW50IGF0aDExa19kcF90eChzdHJ1Y3QgYXRoMTFrICphciwgc3RydWN0IGF0aDExa192aWYgKmFydmlmLFxcbiBcXHRcXHQgc3RydWN0IGF0aDExa19zdGEgKmFyc3RhLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4tdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKTtcXG4raW50IGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQsXFxuK1xcdFxcdFxcdFxcdCAgICBpbnQgYnVkZ2V0KTtcXG4gaW50IGF0aDExa19kcF90eF9zZW5kX3Jlb19jbWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IGRwX3J4X3RpZCAqcnhfdGlkLFxcbiBcXHRcXHRcXHQgICAgICBlbnVtIGhhbF9yZW9fY21kX3R5cGUgdHlwZSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IGF0aDExa19oYWxfcmVvX2NtZCAqY21kLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbmluZGV4IDJkNTVjZGM0ZDE2NWQuLjEyNTM1OTI2NjMxYjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmNcXG5AQCAtNjQ5OSw5ICs2NDk5LDkgQEAgc3RhdGljIGludCBhdGgxMWtfbWFjX21nbXRfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhdGgxMWtfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi1cXHRcXHRcXHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcXG4tXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbitzdGF0aWMgaW50IGF0aDExa19tYWNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuK1xcdFxcdFxcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2IgPSBBVEgxMUtfU0tCX0NCKHNrYik7XFxuIFxcdHN0cnVjdCBhdGgxMWsgKmFyID0gaHctXFx1MDAzZXByaXY7XFxuQEAgLTY1MzMsNyArNjUzMyw3IEBAIHN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdCAgICByZXQpO1xcbiBcXHRcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cXHUwMDNlaHcsIHNrYik7XFxuIFxcdFxcdH1cXG4tXFx0XFx0cmV0dXJuO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoY29udHJvbC1cXHUwMDNlc3RhKVxcbkBAIC02NTQ0LDYgKzY1NDQsNjkgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0YXRoMTFrX3dhcm4oYXItXFx1MDAzZWFiLCBcXFwiZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxcXG5cXFwiLCByZXQpO1xcbiBcXHRcXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cXHUwMDNlaHcsIHNrYik7XFxuIFxcdH1cXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuK1xcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxcbitcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0YXRoMTFrX21hY190eChodywgY29udHJvbCwgc2tiKTtcXG4rfVxcbitcXG4rc3RhdGljIGludCBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVxcdTAwM2VzdGEgfTtcXG4rXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdC8qIGllZWU4MDIxMV90eF9kZXF1ZXVlKCkgYXBwbGllcyB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBpdHNlbGYsIHNvIGFcXG4rXFx0ICogc2VsZWN0aW9uIGVuZHMgd2hlcmUgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgYmluZHMsIHdoZXJlIHRoZVxcbitcXHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xcbitcXHQgKiBoYW5kbGVyIGRvZXMgdG9kYXksIGFuZCBhZGRpdGlvbmFsbHkgd2hlbiB0aGUgaGFyZHdhcmUgcmVmdXNlcyBhXFxuK1xcdCAqIGZyYW1lLlxcbitcXHQgKi9cXG4rXFx0d2hpbGUgKChza2IgPSBpZWVlODAyMTFfdHhfZGVxdWV1ZShhci1cXHUwMDNlaHcsIHR4cSkpKSB7XFxuK1xcdFxcdHJldCA9IGF0aDExa19tYWNfdHgoYXItXFx1MDAzZWh3LCBcXHUwMDI2Y29udHJvbCwgc2tiKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJldCA9PSAtRU5PU1BDIHx8IHJldCA9PSAtRU5PTUVNKSlcXG4rXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfc2NoZWR1bGVfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcXG4re1xcbitcXHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IGFyLVxcdTAwM2VodztcXG4rXFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cTtcXG4rXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZXR4cV9sb2NrW2FjXSk7XFxuK1xcbitcXHRpZWVlODAyMTFfdHhxX3NjaGVkdWxlX3N0YXJ0KGh3LCBhYyk7XFxuK1xcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XFxuK1xcdFxcdGludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpO1xcbitcXG4rXFx0XFx0aWVlZTgwMjExX3JldHVybl90eHEoaHcsIHR4cSwgZmFsc2UpO1xcbitcXHRcXHRpZiAodW5saWtlbHkocmV0KSlcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdH1cXG4rXFx0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTtcXG4rXFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNldHhxX2xvY2tbYWNdKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxcbit7XFxuK1xcdGF0aDExa19tYWNfc2NoZWR1bGVfdHhxKGh3LVxcdTAwM2Vwcml2LCB0eHEtXFx1MDAzZWFjKTtcXG4rfVxcbitcXG4rdm9pZCBhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpXFxuK3tcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG4gdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKVxcbkBAIC0xMDA2Nyw3ICsxMDEzMCw3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTFrX29wcyA9IHtcXG4gXFx0LnR4XFx0XFx0XFx0XFx0PSBhdGgxMWtfbWFjX29wX3R4LFxcbi1cXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gaWVlZTgwMjExX2hhbmRsZV93YWtlX3R4X3F1ZXVlLFxcbitcXHQud2FrZV90eF9xdWV1ZVxcdFxcdFxcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxcbiBcXHQuc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdGFydCxcXG4gXFx0LnN0b3AgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RvcCxcXG4gXFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXFxuQEAgLTEwNTkyLDYgKzEwNjU1LDkgQEAgc3RhdGljIGludCBfX2F0aDExa19tYWNfcmVnaXN0ZXIoc3RydWN0IGF0aDExayAqYXIpXFxuIFxcdGFyLVxcdTAwM2Vody1cXHUwMDNlc3RhX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3N0YSk7XFxuIFxcbiBcXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9DUU1fUlNTSV9MSVNUKTtcXG4rXFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksIE5MODAyMTFfRVhUX0ZFQVRVUkVfQVFMKTtcXG4rXFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVxcdTAwM2Vody1cXHUwMDNld2lwaHksXFxuK1xcdFxcdFxcdCAgICAgIE5MODAyMTFfRVhUX0ZFQVRVUkVfQUlSVElNRV9GQUlSTkVTUyk7XFxuIFxcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX1NUQV9UWF9QV1IpO1xcbiBcXHRpZiAodGVzdF9iaXQoV01JX1RMVl9TRVJWSUNFX0JTU19DT0xPUl9PRkZMT0FELFxcbiBcXHRcXHQgICAgIGFyLVxcdTAwM2VhYi1cXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XFxuQEAgLTEwNzU0LDcgKzEwODIwLDcgQEAgaW50IGF0aDExa19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4gXFx0c3RydWN0IGF0aDExayAqYXI7XFxuIFxcdHN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjtcXG4gXFx0aW50IHJldDtcXG4tXFx0aW50IGk7XFxuK1xcdGludCBpLCBqO1xcbiBcXG4gXFx0aWYgKHRlc3RfYml0KEFUSDExS19GTEFHX1JFR0lTVEVSRUQsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG4gXFx0XFx0cmV0dXJuIDA7XFxuQEAgLTEwNzg4LDYgKzEwODU0LDkgQEAgaW50IGF0aDExa19tYWNfYWxsb2NhdGUoc3RydWN0IGF0aDExa19iYXNlICphYilcXG4gXFxuIFxcdFxcdHBkZXYtXFx1MDAzZWFyID0gYXI7XFxuIFxcdFxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4rXFxuK1xcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBJRUVFODAyMTFfTlVNX0FDUzsgaisrKVxcbitcXHRcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2YXItXFx1MDAzZXR4cV9sb2NrW2pdKTtcXG4gXFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmFyLVxcdTAwM2VhcnZpZnMpO1xcbiBcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2YXItXFx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XFxuIFxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcXG5pbmRleCA1OWY4M2M3MTc1ZmQxLi5kNTc3YzVjYTI0OWNjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXFxuQEAgLTE2MSw2ICsxNjEsNyBAQCBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV92ZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiB2ZGV2X2lkKVxcbiBzdHJ1Y3QgYXRoMTFrICphdGgxMWtfbWFjX2dldF9hcl9ieV9wZGV2X2lkKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHUzMiBwZGV2X2lkKTtcXG4gXFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcik7XFxuK3ZvaWQgYXRoMTFrX21hY190eF9wdXNoX3BlbmRpbmcoc3RydWN0IGF0aDExayAqYXIsIHU4IGFjKTtcXG4gdm9pZCBhdGgxMWtfbWFjX3BlZXJfY2xlYW51cF9hbGwoc3RydWN0IGF0aDExayAqYXIpO1xcbiBpbnQgYXRoMTFrX21hY190eF9tZ210X3BlbmRpbmdfZnJlZShpbnQgYnVmX2lkLCB2b2lkICpza2IsIHZvaWQgKmN0eCk7XFxuIHU4IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncodTggYncpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDoyMy45OTUwNzIyNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEyNzQzNzEwMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTFrIGRyaXZlciAoUXVhbGNvbW0gODAyLjExYXggd2lyZWxlc3MgZHJpdmVyKSwgd2hpY2ggb3BlcmF0ZXMgZXhjbHVzaXZlbHkgb24gcGh5c2ljYWwgUENJZS9BSEIgaGFyZHdhcmUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBzeXprYWxsZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM1MjNiOTRlNjRkNGRkZTUyYjliNTQ4Y2IxYzZkYzJjYWY5OWNjNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE3OjAwOjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuaW5kZXggYTBkNzI1OTIzZWYyNC4uNDA4OTVkMjc2ZGU1ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaFxuQEAgLTcwOSw2ICs3MDksMTEgQEAgc3RydWN0IGF0aDExayB7XG4gXHQgKi9cbiBcdHNwaW5sb2NrX3QgZGF0YV9sb2NrO1xuIFxuK1x0Lyogc2VyaWFsaXNlcyBvbmUgc2NoZWR1bGluZyByb3VuZCBwZXIgYWNjZXNzIGNhdGVnb3J5IGFnYWluc3QgdGhlXG4rXHQgKiBvdGhlciBjb250ZXh0cyB0aGF0IGRyaXZlIGl0XG4rXHQgKi9cbitcdHNwaW5sb2NrX3QgdHhxX2xvY2tbSUVFRTgwMjExX05VTV9BQ1NdO1xuK1xuIFx0c3RydWN0IGxpc3RfaGVhZCBhcnZpZnM7XG4gXHQvKiBzaG91bGQgbmV2ZXIgYmUgTlVMTDsgbmVlZGVkIGZvciByZWd1bGFyIGh0dCByeCAqL1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpyeF9jaGFubmVsO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbmluZGV4IDcwOTIyNjEyZDNmYjkuLmZmZTFmNDY2YWVmYjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmNcbkBAIC03MTQsNiArNzE0LDE2IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDExa19kZWJ1Z2ZzX2R1bXBfc29jX2RwX3N0YXRzKHN0cnVjdCBmaWxlICpmaWxlLFxuIFx0XHRcdCBcIlxcbk1pc2MgVHJhbnNtaXQgRmFpbHVyZXM6ICVkXFxuXCIsXG4gXHRcdFx0IGF0b21pY19yZWFkKFx1MDAyNnNvY19zdGF0cy1cdTAwM2V0eF9lcnIubWlzY19mYWlsKSk7XG4gXG4rXHQvKiBEZXNjcmlwdG9ycyB0aGUgaGFyZHdhcmUgaGFzIG5vdCBjb21wbGV0ZWQuICovXG4rXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgXCJcXG5QZW5kaW5nIFR4IE1TRFVzOlxcblwiKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZW51bV9yYWRpb3M7IGkrKykge1xuK1x0XHRzdHJ1Y3QgYXRoMTFrICphciA9IGFiLVx1MDAzZXBkZXZzW2ldLmFyO1xuK1xuK1x0XHRpZiAoYXIpXG4rXHRcdFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sIFwicmFkaW8lZDogJWRcXG5cIixcbitcdFx0XHRcdFx0IGksIGF0b21pY19yZWFkKFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSk7XG4rXHR9XG4rXG4gXHRsZW4gKz0gYXRoMTFrX2RlYnVnZnNfZHVtcF9zb2NfcmluZ19icF9zdGF0cyhhYiwgYnVmICsgbGVuLCBzaXplIC0gbGVuKTtcbiBcbiBcdGlmIChsZW4gXHUwMDNlIHNpemUpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG5pbmRleCBiZTY1ZDczYjkwNGI2Li5kZGI0MzRjNTEzZTBiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwLmNcbkBAIC03ODMsOCArNzgzLDE0IEBAIGludCBhdGgxMWtfZHBfc2VydmljZV9zcm5nKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBhYi1cdTAwM2Vod19wYXJhbXMuaGFsX3BhcmFtcy1cdTAwM2VudW1fdHhfcmluZ3M7IGkrKykge1xuIFx0XHRpZiAoQklUKGFiLVx1MDAzZWh3X3BhcmFtcy5oYWxfcGFyYW1zLVx1MDAzZXRjbDJ3Ym1fcmJtX21hcFtpXS53Ym1fcmluZ19udW0pIFx1MDAyNlxuLVx0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKVxuLVx0XHRcdGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGkpO1xuK1x0XHQgICAgYWItXHUwMDNlaHdfcGFyYW1zLnJpbmdfbWFzay1cdTAwM2V0eFtncnBfaWRdKSB7XG4rXHRcdFx0d29ya19kb25lID1cbitcdFx0XHRcdGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoYWIsIGksIGJ1ZGdldCk7XG4rXHRcdFx0YnVkZ2V0IC09IHdvcmtfZG9uZTtcbitcdFx0XHR0b3Rfd29ya19kb25lICs9IHdvcmtfZG9uZTtcbitcdFx0XHRpZiAoYnVkZ2V0IFx1MDAzYz0gMClcbitcdFx0XHRcdGdvdG8gZG9uZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGFiLVx1MDAzZWh3X3BhcmFtcy5yaW5nX21hc2stXHUwMDNlcnhfZXJyW2dycF9pZF0pIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcbmluZGV4IDMzNDI1NzA3YzA4NDIuLmE3YjliYjI5NTcyOGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfcnguY1xuQEAgLTEzNzcsNiArMTM3Nyw3IEBAIGF0aDExa191cGRhdGVfcGVyX3BlZXJfdHhfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsXG4gXHR1MTYgcmF0ZSA9IDAsIHN1Y2NfcGt0cyA9IDA7XG4gXHR1MzIgdHhfZHVyYXRpb24gPSAwO1xuIFx0dTggdGlkID0gSFRUX1BQRFVfU1RBVFNfTk9OX1FPU19USUQ7XG4rXHR1OCBhaXJ0aW1lX3RpZDtcbiBcdGJvb2wgaXNfYW1wZHUgPSBmYWxzZTtcbiBcbiBcdGlmICghKHVzcl9zdGF0cy1cdTAwM2V0bHZfZmxhZ3MgXHUwMDI2IEJJVChIVFRfUFBEVV9TVEFUU19UQUdfVVNSX1JBVEUpKSlcbkBAIC0xNDg1LDYgKzE0ODYsMjIgQEAgYXRoMTFrX3VwZGF0ZV9wZXJfcGVlcl90eF9zdGF0cyhzdHJ1Y3QgYXRoMTFrICphcixcbiBcbiBcdGFyc3RhLVx1MDAzZXR4cmF0ZS5idyA9IGF0aDExa19tYWNfYndfdG9fbWFjODAyMTFfYncoYncpO1xuIFx0YXJzdGEtXHUwMDNldHhfZHVyYXRpb24gKz0gdHhfZHVyYXRpb247XG4rXG4rXHQvKiBUaGUgYWNrL0JBIHN0YXR1cyBUTFYgbmFtZXMgdGhlIFRJRCBvbmx5IGZvciBhIFBQRFUgdGhhdCBkcmV3IGFcbitcdCAqIHJlc3BvbnNlOyBmYWxsIGJhY2sgdG8gdGhlIGNvbXBsZXRpb24gYW5kIHJhdGUgVExWcywgdGhlbiB0byBCRS5cbitcdCAqL1xuK1x0YWlydGltZV90aWQgPSB0aWQ7XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMgXHUwMDI2XHUwMDI2XG4rXHQgICAgdXNyX3N0YXRzLVx1MDAzZXRsdl9mbGFncyBcdTAwMjYgQklUKEhUVF9QUERVX1NUQVRTX1RBR19VU1JfQ09NUExUTl9DT01NT04pKVxuK1x0XHRhaXJ0aW1lX3RpZCA9IHVzcl9zdGF0cy1cdTAwM2VjbXBsdG5fY21uLnRpZF9udW07XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4rXHRcdGFpcnRpbWVfdGlkID0gdXNlcl9yYXRlLVx1MDAzZXRpZF9udW07XG4rXHRpZiAoYWlydGltZV90aWQgXHUwMDNlPSBJRUVFODAyMTFfTlVNX1RJRFMpXG4rXHRcdGFpcnRpbWVfdGlkID0gMDtcbitcbitcdGlmICh0eF9kdXJhdGlvbilcbitcdFx0aWVlZTgwMjExX3N0YV9yZWdpc3Rlcl9haXJ0aW1lKHN0YSwgYWlydGltZV90aWQsIHR4X2R1cmF0aW9uLCAwKTtcbitcbiBcdG1lbWNweShcdTAwMjZhcnN0YS1cdTAwM2VsYXN0X3R4cmF0ZSwgXHUwMDI2YXJzdGEtXHUwMDNldHhyYXRlLCBzaXplb2Yoc3RydWN0IHJhdGVfaW5mbykpO1xuIFxuIFx0LyogUFBEVSBzdGF0cyByZXBvcnRlZCBmb3IgbWdtdCBwYWNrZXQgZG9lc24ndCBoYXZlIHZhbGlkIHR4IGJ5dGVzLlxuQEAgLTUyNTMsNiArNTI3MCw3IEBAIGludCBhdGgxMWtfZHBfcnhfcHJvY2Vzc19tb25fc3RhdHVzKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCBtYWNfaWQsXG4gXHRzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHNrYl9saXN0O1xuIFx0c3RydWN0IGF0aDExa19wZWVyICpwZWVyO1xuIFx0c3RydWN0IGF0aDExa19zdGEgKmFyc3RhO1xuK1x0c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTtcbiBcdGludCBudW1fYnVmZnNfcmVhcGVkID0gMDtcbiBcdHUzMiByeF9idWZfc3o7XG4gXHR1MTYgbG9nX3R5cGU7XG5AQCAtNTMwNyw2ICs1MzI1LDcgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCxcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuK1x0XHRzdGEgPSBOVUxMO1xuIFx0XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhYi1cdTAwM2ViYXNlX2xvY2spO1xuIFx0XHRwZWVyID0gYXRoMTFrX3BlZXJfZmluZF9ieV9pZChhYiwgcHBkdV9pbmZvLVx1MDAzZXBlZXJfaWQpO1xuQEAgLTUzMjAsMTIgKzUzMzksMjUgQEAgaW50IGF0aDExa19kcF9yeF9wcm9jZXNzX21vbl9zdGF0dXMoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IG1hY19pZCxcbiBcbiBcdFx0YXJzdGEgPSBhdGgxMWtfc3RhX3RvX2Fyc3RhKHBlZXItXHUwMDNlc3RhKTtcbiBcdFx0YXRoMTFrX2RwX3J4X3VwZGF0ZV9wZWVyX3N0YXRzKGFyc3RhLCBwcGR1X2luZm8pO1xuK1x0XHRzdGEgPSBwZWVyLVx1MDAzZXN0YTtcbiBcbiBcdFx0aWYgKGF0aDExa19kZWJ1Z2ZzX2lzX3BrdGxvZ19wZWVyX3ZhbGlkKGFyLCBwZWVyLVx1MDAzZWFkZHIpKVxuIFx0XHRcdHRyYWNlX2F0aDExa19odHRfcnhkZXNjKGFyLCBza2ItXHUwMDNlZGF0YSwgbG9nX3R5cGUsIHJ4X2J1Zl9zeik7XG4gXG4gbmV4dF9za2I6XG4gXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFiLVx1MDAzZWJhc2VfbG9jayk7XG4rXG4rXHRcdC8qIFRoZSBhaXJ0aW1lIGEgc3RhdGlvbiBzcGVuZHMgdHJhbnNtaXR0aW5nIGlzIHRha2VuIGZyb21cbitcdFx0ICogdGhlIG90aGVycywgc28gaXRzIGRlZmljaXQgaXMgY2hhcmdlZCBmb3IgaXQgdG9vLCB3aXRoIHRoZVxuK1x0XHQgKiBkdXJhdGlvbiB0aGUgaGFyZHdhcmUgbWVhc3VyZWQgZm9yIHRoZSB3aG9sZSBQUERVLCBhcyBvblxuK1x0XHQgKiB0aGUgdHJhbnNtaXQgc2lkZS4gVGhlIFRMViB0aGF0IG5hbWVzIHRoZSBUSUQgaXMgbm90IGluXG4rXHRcdCAqIHRoZSBkZWZhdWx0IG1vbml0b3Igc3RhdHVzIGZpbHRlciwgc28gdGhlIGNoYXJnZSBnb2VzIHRvXG4rXHRcdCAqIEJFLiBPdXRzaWRlIGJhc2VfbG9jaywgd2hpY2ggdHggY29tcGxldGlvbiBjb250ZW5kcyBmb3I7XG4rXHRcdCAqIHN0YSBpcyBoZWxkIGJ5IHRoZSByY3UgcmVhZCBsb2NrLlxuK1x0XHQgKi9cbitcdFx0aWYgKHN0YSBcdTAwMjZcdTAwMjYgcHBkdV9pbmZvLVx1MDAzZXJ4X2R1cmF0aW9uKVxuK1x0XHRcdGllZWU4MDIxMV9zdGFfcmVnaXN0ZXJfYWlydGltZShzdGEsIDAsIDAsXG4rXHRcdFx0XHRcdFx0ICAgICAgIHBwZHVfaW5mby1cdTAwM2VyeF9kdXJhdGlvbik7XG4gXHRcdHJjdV9yZWFkX3VubG9jaygpO1xuIFxuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuaW5kZXggY2FjOTcwYzkyODA2YS4uMzk5N2JkMzM2OTQyYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kcF90eC5jXG5AQCAtMzA1LDkgKzMwNSwxMCBAQCBzdGF0aWMgdm9pZCBhdGgxMWtfZHBfdHhfZnJlZV90eGJ1ZihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1OCBtYWNfaWQsXG4gXHRza2JfY2IgPSBBVEgxMUtfU0tCX0NCKG1zZHUpO1xuIFxuIFx0ZG1hX3VubWFwX3NpbmdsZShhYi1cdTAwM2VkZXYsIHNrYl9jYi1cdTAwM2VwYWRkciwgbXNkdS1cdTAwM2VsZW4sIERNQV9UT19ERVZJQ0UpO1xuLVx0ZGV2X2tmcmVlX3NrYl9hbnkobXNkdSk7XG4gXG4gXHRhciA9IGFiLVx1MDAzZXBkZXZzW21hY19pZF0uYXI7XG4rXHRpZWVlODAyMTFfZnJlZV90eHNrYihhci1cdTAwM2VodywgbXNkdSk7XG4rXG4gXHRpZiAoYXRvbWljX2RlY19hbmRfdGVzdChcdTAwMjZhci1cdTAwM2VkcC5udW1fdHhfcGVuZGluZykpXG4gXHRcdHdha2VfdXAoXHUwMDI2YXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEpO1xuIH1cbkBAIC02ODQsNyArNjg1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kcF90eF9zdGF0dXNfcGFyc2Uoc3RydWN0IGF0aDExa19iYXNlICphYixcbiBcdFx0dHMtXHUwMDNlcmF0ZV9zdGF0cyA9IDA7XG4gfVxuIFxuLXZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbitpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbitcdFx0XHRcdCAgICBpbnQgYnVkZ2V0KVxuIHtcbiBcdHN0cnVjdCBhdGgxMWsgKmFyO1xuIFx0c3RydWN0IGF0aDExa19kcCAqZHAgPSBcdTAwMjZhYi1cdTAwM2VkcDtcbkBAIC02OTMsOSArNjk1LDExIEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdHN0cnVjdCBza19idWZmICptc2R1O1xuIFx0c3RydWN0IGhhbF90eF9zdGF0dXMgdHMgPSB7fTtcbiBcdHN0cnVjdCBkcF90eF9yaW5nICp0eF9yaW5nID0gXHUwMDI2ZHAtXHUwMDNldHhfcmluZ1tyaW5nX2lkXTtcbitcdHVuc2lnbmVkIGxvbmcgcHVzaCA9IDA7XG4rXHRpbnQgZG9uZSA9IDA7XG4gXHR1MzIgKmRlc2M7XG4gXHR1MzIgbXNkdV9pZDtcbi1cdHU4IG1hY19pZDtcbitcdHU4IG1hY19pZCwgaTtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbkBAIC03MjEsMTAgKzcyNSwxMyBAQCB2b2lkIGF0aDExa19kcF90eF9jb21wbGV0aW9uX2hhbmRsZXIoc3RydWN0IGF0aDExa19iYXNlICphYiwgaW50IHJpbmdfaWQpXG4gXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZzdGF0dXNfcmluZy1cdTAwM2Vsb2NrKTtcbiBcbi1cdHdoaWxlIChBVEgxMUtfVFhfQ09NUExfTkVYVCh0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c190YWlsKSAhPSB0eF9yaW5nLVx1MDAzZXR4X3N0YXR1c19oZWFkKSB7XG4rXHR3aGlsZSAoZG9uZSBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgIEFUSDExS19UWF9DT01QTF9ORVhUKHR4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWwpICE9XG4rXHQgICAgICAgdHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfaGVhZCkge1xuIFx0XHRzdHJ1Y3QgaGFsX3dibV9yZWxlYXNlX3JpbmcgKnR4X3N0YXR1cztcbiBcdFx0dTMyIGRlc2NfaWQ7XG4gXG4rXHRcdGRvbmUrKztcbiBcdFx0dHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCA9XG4gXHRcdFx0QVRIMTFLX1RYX0NPTVBMX05FWFQodHhfcmluZy1cdTAwM2V0eF9zdGF0dXNfdGFpbCk7XG4gXHRcdHR4X3N0YXR1cyA9IFx1MDAyNnR4X3JpbmctXHUwMDNldHhfc3RhdHVzW3R4X3JpbmctXHUwMDNldHhfc3RhdHVzX3RhaWxdO1xuQEAgLTc1NSwxMiArNzYyLDI1IEBAIHZvaWQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZClcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2dHhfcmluZy1cdTAwM2V0eF9pZHJfbG9jayk7XG4gXG4gXHRcdGFyID0gYWItXHUwMDNlcGRldnNbbWFjX2lkXS5hcjtcbitcdFx0X19zZXRfYml0KG1hY19pZCAqIElFRUU4MDIxMV9OVU1fQUNTICsgc2tiX2dldF9xdWV1ZV9tYXBwaW5nKG1zZHUpLFxuK1x0XHRcdCAgXHUwMDI2cHVzaCk7XG4gXG4gXHRcdGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSlcbiBcdFx0XHR3YWtlX3VwKFx1MDAyNmFyLVx1MDAzZWRwLnR4X2VtcHR5X3dhaXRxKTtcbiBcbiBcdFx0YXRoMTFrX2RwX3R4X2NvbXBsZXRlX21zZHUoYXIsIG1zZHUsIFx1MDAyNnRzKTtcbiBcdH1cbitcbitcdC8qIEEgY29tcGxldGlvbiByZXR1cm5zIHRoZSBhaXJ0aW1lIHRoZSBmcmFtZSB3YXMgY2hhcmdlZCwgd2hpY2ggaXNcbitcdCAqIHdoYXQgYW4gYWlydGltZS1saW1pdGVkIHN0YXRpb24gaW4gdGhhdCBhY2Nlc3MgY2F0ZWdvcnkgaXMgd2FpdGluZ1xuK1x0ICogb24uIFRoZSBhcnJpdmFscyB0aGF0IHdvdWxkIG90aGVyd2lzZSBzdGFydCBhIHJvdW5kIGFyZSB0aGVtc2VsdmVzXG4rXHQgKiBxdWV1ZWQgYmVoaW5kIHRoYXQgbGltaXQuXG4rXHQgKi9cbitcdGZvcl9lYWNoX3NldF9iaXQoaSwgXHUwMDI2cHVzaCwgYWItXHUwMDNlbnVtX3JhZGlvcyAqIElFRUU4MDIxMV9OVU1fQUNTKVxuK1x0XHRhdGgxMWtfbWFjX3R4X3B1c2hfcGVuZGluZyhhYi1cdTAwM2VwZGV2c1tpIC8gSUVFRTgwMjExX05VTV9BQ1NdLmFyLFxuK1x0XHRcdFx0XHQgICBpICUgSUVFRTgwMjExX05VTV9BQ1MpO1xuK1xuK1x0cmV0dXJuIGRvbmU7XG4gfVxuIFxuIGludCBhdGgxMWtfZHBfdHhfc2VuZF9yZW9fY21kKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBkcF9yeF90aWQgKnJ4X3RpZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbmluZGV4IDkzMDNiNWJhNmUwMTIuLmI1Mjk2Y2RhNzNlMzAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RwX3R4LmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZHBfdHguaFxuQEAgLTIxLDcgKzIxLDggQEAgdm9pZCBhdGgxMWtfZHBfdHhfdXBkYXRlX3R4Y29tcGwoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBoYWxfdHhfc3RhdHVzICp0cyk7XG4gaW50IGF0aDExa19kcF90eF9odHRfaDJ0X3Zlcl9yZXFfbXNnKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpO1xuIGludCBhdGgxMWtfZHBfdHgoc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZixcbiBcdFx0IHN0cnVjdCBhdGgxMWtfc3RhICphcnN0YSwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tdm9pZCBhdGgxMWtfZHBfdHhfY29tcGxldGlvbl9oYW5kbGVyKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsIGludCByaW5nX2lkKTtcbitpbnQgYXRoMTFrX2RwX3R4X2NvbXBsZXRpb25faGFuZGxlcihzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBpbnQgcmluZ19pZCxcbitcdFx0XHRcdCAgICBpbnQgYnVkZ2V0KTtcbiBpbnQgYXRoMTFrX2RwX3R4X3NlbmRfcmVvX2NtZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3QgZHBfcnhfdGlkICpyeF90aWQsXG4gXHRcdFx0ICAgICAgZW51bSBoYWxfcmVvX2NtZF90eXBlIHR5cGUsXG4gXHRcdFx0ICAgICAgc3RydWN0IGF0aDExa19oYWxfcmVvX2NtZCAqY21kLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jXG5pbmRleCAyZDU1Y2RjNGQxNjVkLi4xMjUzNTkyNjYzMWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuY1xuQEAgLTY0OTksOSArNjQ5OSw5IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19tZ210X3R4KHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGF0aDExa19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tXHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXG4tXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuK3N0YXRpYyBpbnQgYXRoMTFrX21hY190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHQgc3RydWN0IGllZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLFxuK1x0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdHN0cnVjdCBhdGgxMWtfc2tiX2NiICpza2JfY2IgPSBBVEgxMUtfU0tCX0NCKHNrYik7XG4gXHRzdHJ1Y3QgYXRoMTFrICphciA9IGh3LVx1MDAzZXByaXY7XG5AQCAtNjUzMyw3ICs2NTMzLDcgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdCAgICByZXQpO1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0XHR9XG4tXHRcdHJldHVybjtcbitcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdGlmIChjb250cm9sLVx1MDAzZXN0YSlcbkBAIC02NTQ0LDYgKzY1NDQsNjkgQEAgc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0YXRoMTFrX3dhcm4oYXItXHUwMDNlYWIsIFwiZmFpbGVkIHRvIHRyYW5zbWl0IGZyYW1lICVkXFxuXCIsIHJldCk7XG4gXHRcdGllZWU4MDIxMV9mcmVlX3R4c2tiKGFyLVx1MDAzZWh3LCBza2IpO1xuIFx0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rc3RhdGljIHZvaWQgYXRoMTFrX21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbitcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0YXRoMTFrX21hY190eChodywgY29udHJvbCwgc2tiKTtcbit9XG4rXG4rc3RhdGljIGludCBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKHN0cnVjdCBhdGgxMWsgKmFyLCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKVxuK3tcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCBjb250cm9sID0geyAuc3RhID0gdHhxLVx1MDAzZXN0YSB9O1xuK1x0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdGludCByZXQ7XG4rXG4rXHQvKiBpZWVlODAyMTFfdHhfZGVxdWV1ZSgpIGFwcGxpZXMgdGhlIGFpcnRpbWUgcXVldWUgbGltaXQgaXRzZWxmLCBzbyBhXG4rXHQgKiBzZWxlY3Rpb24gZW5kcyB3aGVyZSB0aGUgYWlydGltZSBxdWV1ZSBsaW1pdCBiaW5kcywgd2hlcmUgdGhlXG4rXHQgKiBoYXJkd2FyZSBxdWV1ZSBpcyBzdG9wcGVkLCBvciB3aGVuIHRoZSBxdWV1ZSBlbXB0aWVzLCBhcyB0aGUgZ2VuZXJpY1xuK1x0ICogaGFuZGxlciBkb2VzIHRvZGF5LCBhbmQgYWRkaXRpb25hbGx5IHdoZW4gdGhlIGhhcmR3YXJlIHJlZnVzZXMgYVxuK1x0ICogZnJhbWUuXG4rXHQgKi9cbitcdHdoaWxlICgoc2tiID0gaWVlZTgwMjExX3R4X2RlcXVldWUoYXItXHUwMDNlaHcsIHR4cSkpKSB7XG4rXHRcdHJldCA9IGF0aDExa19tYWNfdHgoYXItXHUwMDNlaHcsIFx1MDAyNmNvbnRyb2wsIHNrYik7XG4rXHRcdGlmICh1bmxpa2VseShyZXQgPT0gLUVOT1NQQyB8fCByZXQgPT0gLUVOT01FTSkpXG4rXHRcdFx0cmV0dXJuIHJldDtcbitcdH1cbitcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShzdHJ1Y3QgYXRoMTFrICphciwgdTggYWMpXG4re1xuK1x0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhci1cdTAwM2VodztcbitcdHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHE7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNldHhxX2xvY2tbYWNdKTtcbitcbitcdGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoaHcsIGFjKTtcbitcdHdoaWxlICgodHhxID0gaWVlZTgwMjExX25leHRfdHhxKGh3LCBhYykpKSB7XG4rXHRcdGludCByZXQgPSBhdGgxMWtfbWFjX3R4X3B1c2hfdHhxKGFyLCB0eHEpO1xuK1xuK1x0XHRpZWVlODAyMTFfcmV0dXJuX3R4cShodywgdHhxLCBmYWxzZSk7XG4rXHRcdGlmICh1bmxpa2VseShyZXQpKVxuK1x0XHRcdGJyZWFrO1xuK1x0fVxuK1x0aWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoaHcsIGFjKTtcbitcbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZXR4cV9sb2NrW2FjXSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGF0aDExa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbitcdFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSlcbit7XG4rXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShody1cdTAwM2Vwcml2LCB0eHEtXHUwMDNlYWMpO1xuK31cbitcbit2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYylcbit7XG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRhdGgxMWtfbWFjX3NjaGVkdWxlX3R4cShhciwgYWMpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuIHZvaWQgYXRoMTFrX21hY19kcmFpbl90eChzdHJ1Y3QgYXRoMTFrICphcilcbkBAIC0xMDA2Nyw3ICsxMDEzMCw3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzIGF0aDExa19vcHMgPSB7XG4gXHQudHhcdFx0XHRcdD0gYXRoMTFrX21hY19vcF90eCxcbi1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4rXHQud2FrZV90eF9xdWV1ZVx0XHRcdD0gYXRoMTFrX21hY19vcF93YWtlX3R4X3F1ZXVlLFxuIFx0LnN0YXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3Bfc3RhcnQsXG4gXHQuc3RvcCAgICAgICAgICAgICAgICAgICAgICAgICAgID0gYXRoMTFrX21hY19vcF9zdG9wLFxuIFx0LnJlY29uZmlnX2NvbXBsZXRlICAgICAgICAgICAgICA9IGF0aDExa19tYWNfb3BfcmVjb25maWdfY29tcGxldGUsXG5AQCAtMTA1OTIsNiArMTA2NTUsOSBAQCBzdGF0aWMgaW50IF9fYXRoMTFrX21hY19yZWdpc3RlcihzdHJ1Y3QgYXRoMTFrICphcilcbiBcdGFyLVx1MDAzZWh3LVx1MDAzZXN0YV9kYXRhX3NpemUgPSBzaXplb2Yoc3RydWN0IGF0aDExa19zdGEpO1xuIFxuIFx0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0NRTV9SU1NJX0xJU1QpO1xuK1x0d2lwaHlfZXh0X2ZlYXR1cmVfc2V0KGFyLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBOTDgwMjExX0VYVF9GRUFUVVJFX0FRTCk7XG4rXHR3aXBoeV9leHRfZmVhdHVyZV9zZXQoYXItXHUwMDNlaHctXHUwMDNld2lwaHksXG4rXHRcdFx0ICAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9BSVJUSU1FX0ZBSVJORVNTKTtcbiBcdHdpcGh5X2V4dF9mZWF0dXJlX3NldChhci1cdTAwM2Vody1cdTAwM2V3aXBoeSwgTkw4MDIxMV9FWFRfRkVBVFVSRV9TVEFfVFhfUFdSKTtcbiBcdGlmICh0ZXN0X2JpdChXTUlfVExWX1NFUlZJQ0VfQlNTX0NPTE9SX09GRkxPQUQsXG4gXHRcdCAgICAgYXItXHUwMDNlYWItXHUwMDNld21pX2FiLnN2Y19tYXApKSB7XG5AQCAtMTA3NTQsNyArMTA4MjAsNyBAQCBpbnQgYXRoMTFrX21hY19hbGxvY2F0ZShzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiKVxuIFx0c3RydWN0IGF0aDExayAqYXI7XG4gXHRzdHJ1Y3QgYXRoMTFrX3BkZXYgKnBkZXY7XG4gXHRpbnQgcmV0O1xuLVx0aW50IGk7XG4rXHRpbnQgaSwgajtcbiBcbiBcdGlmICh0ZXN0X2JpdChBVEgxMUtfRkxBR19SRUdJU1RFUkVELCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuIFx0XHRyZXR1cm4gMDtcbkBAIC0xMDc4OCw2ICsxMDg1NCw5IEBAIGludCBhdGgxMWtfbWFjX2FsbG9jYXRlKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIpXG4gXG4gXHRcdHBkZXYtXHUwMDNlYXIgPSBhcjtcbiBcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcbitcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgSUVFRTgwMjExX05VTV9BQ1M7IGorKylcbitcdFx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2V0eHFfbG9ja1tqXSk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZWFydmlmcyk7XG4gXHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXBwZHVfc3RhdHNfaW5mbyk7XG4gXHRcdG11dGV4X2luaXQoXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmhcbmluZGV4IDU5ZjgzYzcxNzVmZDEuLmQ1NzdjNWNhMjQ5Y2MgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5oXG5AQCAtMTYxLDYgKzE2MSw3IEBAIHN0cnVjdCBhdGgxMWsgKmF0aDExa19tYWNfZ2V0X2FyX2J5X3ZkZXZfaWQoc3RydWN0IGF0aDExa19iYXNlICphYiwgdTMyIHZkZXZfaWQpXG4gc3RydWN0IGF0aDExayAqYXRoMTFrX21hY19nZXRfYXJfYnlfcGRldl9pZChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCB1MzIgcGRldl9pZCk7XG4gXG4gdm9pZCBhdGgxMWtfbWFjX2RyYWluX3R4KHN0cnVjdCBhdGgxMWsgKmFyKTtcbit2b2lkIGF0aDExa19tYWNfdHhfcHVzaF9wZW5kaW5nKHN0cnVjdCBhdGgxMWsgKmFyLCB1OCBhYyk7XG4gdm9pZCBhdGgxMWtfbWFjX3BlZXJfY2xlYW51cF9hbGwoc3RydWN0IGF0aDExayAqYXIpO1xuIGludCBhdGgxMWtfbWFjX3R4X21nbXRfcGVuZGluZ19mcmVlKGludCBidWZfaWQsIHZvaWQgKnNrYiwgdm9pZCAqY3R4KTtcbiB1OCBhdGgxMWtfbWFjX2J3X3RvX21hYzgwMjExX2J3KHU4IGJ3KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjIzLjk5NTA3MzYwOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxOTM5OTYyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IGFuZCBUcm91Ymxlc2hvb3RpbmcgUGF0aCoqXG5cbk9rYXksIHNvIHRoZSBwYXRjaCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9gLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gd2hhdCBgYXRoMTFrYCBhY3R1YWxseSAqaXMqIGFuZCBjb25maXJtIGl0cyBhY2Nlc3NpYmlsaXR5IHdpdGhpbiBteSBlbnZpcm9ubWVudC4gSXMgdGhpcyBzb21ldGhpbmcgSSBjYW4gcmVhZGlseSB0ZXN0IHdpdGhpbiBhbiBlbXVsYXRlZCBzZXR0aW5nLCBvciBhbSBJIGRlYWxpbmcgd2l0aCBhIGRyaXZlciB0aGF0IGludHJpbnNpY2FsbHkgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUsIGxpa2UgYSBkZWRpY2F0ZWQgV2ktRmkgY2FyZD8gSSdtIHRoaW5raW5nLCBwb3RlbnRpYWxseSwgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGNhcmQ/XG5cbkhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhhdCByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIGJlIG1vcmUgbWV0aG9kaWNhbC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5zdHJ1Y3Rpb25zLCBwYXJ0aWN1bGFybHkgU2VjdGlvbiAyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBleHBsaWNpdGx5IHJ1bGVkIG91dCBkdWUgdG8gYmVpbmcgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBUaGUgdGV4dCBwb2ludHMgdG8gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gSSBxdWlja2x5IG5lZWQgdG8gYXNjZXJ0YWluIGlmIGBhdGgxMWtgIGZhbGxzIGludG8gKnRoYXQqIGNhdGVnb3J5LlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBtYWluIHF1ZXN0aW9uOiBpcyBgYXRoMTFrYCBhIHBoeXNpY2FsIFdpLUZpIGNhcmQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgc29tZXRoaW5nIGxpa2UgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4PyBUbyBkZXRlcm1pbmUgdGhpcywgSSBuZWVkIHRvIGNoZWNrIHRoZSBrZXJuZWwgaXRzZWxmLiBJJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIGZvciBBVEgxMUsncyBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIGRyaXZlciBlbmFibGVzIGFuZCwgY29uc2VxdWVudGx5LCBpdHMgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTEwMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjI3LjE4OTA3MzE3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTQwMjIwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVRIMTFLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjI6Y29uZmlnIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSA4MDIuMTFheCBjaGlwc2V0IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE0LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6MjM6Y29uZmlnIEFUSDExS19QQ0lcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTFrIFBDSSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMzpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM0LVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0MTpjb25maWcgQVRIMTFLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDItXFx0Ym9vbCBcXFwiUUNBIGF0aDExayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ5OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MC1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1NTpjb25maWcgQVRIMTFLX1NQRUNUUkFMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTU2LVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTFLX0NGUlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy02NS1cXHRib29sIFxcXCJhdGgxMWsgY2hhbm5lbCBmcmVxdWVuY3kgcmVzcG9uc2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MjcuMjQwNDgwODk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQ2Mzk2MjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGF0aDExaydzIEZ1enppbmcgTGFuZHNjYXBlKipcblxuT2theSwgc28gbGV0J3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nIGF0aDExay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYXRoMTFrIGlzIGFsbCBhYm91dCBRdWFsY29tbSdzIDgwMi4xMWF4IGNoaXBzZXRzLCBzcGVjaWZpY2FsbHkgdGhlIFBDSSBhbmQgQUhCIGludGVyZmFjZXMuIEkgd2FzIHdvbmRlcmluZyBpZiBpdCBoYWQgc29tZSBzb3J0IG9mIHZpcnR1YWwgb3IgVVNCIHN1cHBvcnQsIG1heWJlIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIGJ1dCBpdCBsb29rcyBsaWtlIHRoYXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBjb21wbGV0ZWx5IGRpc3RpbmN0LiBBbmQgbm8gVVNCIHN1cHBvcnQgZWl0aGVyLCBqdXN0IEFIQiBhbmQgUENJLCBzbyB0aGF0J3MgYSBkZWFkIGVuZC5cblxuTmV4dCwgSSB0aG91Z2h0IGFib3V0IFFFTVUgZW11bGF0aW9uLiBJcyBhdGgxMWsgZW11bGF0ZWQgYXQgYWxsIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gTm9wZS4gVGhhdCB3b3VsZCBtYWtlIGl0IG11Y2ggZWFzaWVyLlxuXG5TbyB0aGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IENhbiBzeXprYWxsZXIgZnV6eiB0aGlzPyBXZWxsLCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgdHlwaWNhbGx5IGhpdHMgbWFjODAyMTEgdGhyb3VnaCBlaXRoZXIgYG1hYzgwMjExX2h3c2ltYCBvciwgbW9yZSByZWFsaXN0aWNhbGx5LCB0aHJvdWdoIFVTQiBXaUZpIGRvbmdsZXMgdmlhIHNvbWV0aGluZyBsaWtlIHJhdy1nYWRnZXQgb3IgYSBVU0IgZnV6emVyIGFwcHJvYWNoIGxpa2Ugd2l0aCBhdGg5a19odGMsIHJ0bDgxODcsIG9yIHNvbWV0aGluZyBzaW1pbGFyLlxuXG5CdXQgd2l0aCBhdGgxMWssIGl0J3MganVzdCBBSEIgYW5kIFBDSSwgbGlrZSB3aXRoIHRoZSBJUFE4MDc0LCBRQ0E2MzkwLCBvciBXQ042ODU1LiBXZSdyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBhY2Nlc3MgdG8gUXVhbGNvbW0ncyBwaHlzaWNhbCBoYXJkd2FyZSBvciBBU0lDcy4gVGhhdCdzIGEgZGlmZmVyZW50IGJhbGxnYW1lLlxuXG5Pa2F5LCBiYWNrIHRvIHRoZSBkcmF3aW5nIGJvYXJkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuIEknbSBnb2luZyB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYXRoMTFrIGNvZGViYXNlIGFnYWluLCBwYXJ0aWN1bGFybHkgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gcHJvYmVzIG9yIGJ1cyBpbXBsZW1lbnRhdGlvbnMsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYSBVU0Igb3IgdmlydHVhbCBjb21wb25lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzI5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjMwLjcwNDQ0NjE2MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzMzODQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYz0xMzQzPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGF0aDExa19haGJfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9haGIuYy0xMzUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvYWhiLmM6MTM1Mzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGF0aDExa19haGJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2FoYi5jLTEzNTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yMz1FWFBPUlRfU1lNQk9MKGF0aDExa19kZWJ1Z19tYXNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyNDptb2R1bGVfcGFyYW1fbmFtZWQoZGVidWdfbWFzaywgYXRoMTFrX2RlYnVnX21hc2ssIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTI1LU1PRFVMRV9QQVJNX0RFU0MoZGVidWdfbWFzaywgXFxcIkRlYnVnZ2luZyBtYXNrXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0yNz1zdGF0aWMgdW5zaWduZWQgaW50IGF0aDExa19jcnlwdG9fbW9kZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzoyODptb2R1bGVfcGFyYW1fbmFtZWQoY3J5cHRvX21vZGUsIGF0aDExa19jcnlwdG9fbW9kZSwgdWludCwgMDY0NCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMtMjktTU9EVUxFX1BBUk1fREVTQyhjcnlwdG9fbW9kZSwgXFxcImNyeXB0byBtb2RlOiAwLWhhcmR3YXJlLCAxLXNvZnR3YXJlXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYz0zMj11bnNpZ25lZCBpbnQgYXRoMTFrX2ZyYW1lX21vZGUgPSBBVEgxMUtfSFdfVFhSWF9OQVRJVkVfV0lGSTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYzozMzptb2R1bGVfcGFyYW1fbmFtZWQoZnJhbWVfbW9kZSwgYXRoMTFrX2ZyYW1lX21vZGUsIHVpbnQsIDA2NDQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jLTM0LU1PRFVMRV9QQVJNX0RFU0MoZnJhbWVfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jPTM3PWJvb2wgYXRoMTFrX2Z0bV9tb2RlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jOjM4Om1vZHVsZV9wYXJhbV9uYW1lZChmdG1fbW9kZSwgYXRoMTFrX2Z0bV9tb2RlLCBib29sLCAwNDQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYy0zOS1NT0RVTEVfUEFSTV9ERVNDKGZ0bV9tb2RlLCBcXFwiQm9vdHMgdXAgaW4gZmFjdG9yeSB0ZXN0IG1vZGVcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oPTYzMj1zdHJ1Y3QgYXRoMTFrX2RlYnVnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTY0Mi1cXHR1MzIgbWVtX29mZnNldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaDo2NDM6XFx0dTMyIG1vZHVsZV9pZF9iaXRtYXBbTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFNdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvY29yZS5oLTY0NC1cXHRzdHJ1Y3QgYXRoMTFrX2RlYnVnX2RiciAqZGJyX2RlYnVnW1dNSV9ESVJFQ1RfQlVGX01BWF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jPTE1NT1pbnQgYXRoMTFrX2RicmluZ193bWlfY2ZnX3NldHVwKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0xNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoxNjU6XFx0cGFyYW0ubW9kdWxlX2lkXFx0XFx0PSBpZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTE2Ni1cXHRwYXJhbS5iYXNlX3BhZGRyX2xvXFx0PSBsb3dlcl8zMl9iaXRzKHJpbmctXFx1MDAzZXJlZmlsbF9zcm5nLnBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM9MjgxPWludCBhdGgxMWtfZGJyaW5nX2J1ZmZlcl9yZWxlYXNlX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTI5MS1cXHR1MzIgbnVtX2VudHJ5LCBudW1fYnVmZl9yZWFwZWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzoyOTI6XFx0dTggcGRldl9pZHgsIHJibSwgbW9kdWxlX2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMjkzLVxcdHUzMiBjb29raWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMwMC1cXHRwZGV2X2lkeCA9IGV2LVxcdTAwM2VmaXhlZC5wZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzAxOlxcdG1vZHVsZV9pZCA9IGV2LVxcdTAwM2VmaXhlZC5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMDItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMyNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jOjMyODpcXHRzd2l0Y2ggKGV2LVxcdTAwM2VmaXhlZC5tb2R1bGVfaWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMyOS1cXHRjYXNlIFdNSV9ESVJFQ1RfQlVGX1NQRUNUUkFMOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYy0zMzctXFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJSZWN2IGRtYSBidWZmZXIgcmVsZWFzZSBldiBvbiB1bnN1cHAgbW9kdWxlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6MzM4OlxcdFxcdFxcdCAgICBldi1cXHUwMDNlZml4ZWQubW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTMzOS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmMtMzc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGJyaW5nLmM6Mzc3OlxcdFxcdGF0aDExa19kZWJ1Z2ZzX2FkZF9kYnJpbmdfZW50cnkoYXIsIG1vZHVsZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM3OC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMUtfREJHX0RCUl9FVkVOVF9SWCwgc3JuZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5NC1cXHRcXHRtZW1zZXQoYnVmZi1cXHUwMDNlcGF5bG9hZCwgMCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kYnJpbmcuYzozOTU6XFx0XFx0YXRoMTFrX2RicmluZ19idWZzX3JlcGxlbmlzaChhciwgcmluZywgYnVmZiwgbW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RicmluZy5jLTM5Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYz03NDQ9c3RhdGljIHNzaXplX3QgYXRoMTFrX3dyaXRlX2Z3X2RiZ2xvZyhzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc3MS1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmM6NzcyOlxcdFxcdGFyLVxcdTAwM2VkZWJ1Zy5tb2R1bGVfaWRfYml0bWFwW21vZF9pZF9pbmRleF0gPSB1cHBlcl8zMl9iaXRzKHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYy03NzMtXFx0XFx0aWYgKCFpc19lbmQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5jLTc4NS1cXHRkYmdsb2cudmFsdWUgPSBsb3dlcl8zMl9iaXRzKHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYzo3ODY6XFx0cmV0ID0gYXRoMTFrX3dtaV9md19kYmdsb2dfY2ZnKGFyLCBhci1cXHUwMDNlZGVidWcubW9kdWxlX2lkX2JpdG1hcCwgXFx1MDAyNmRiZ2xvZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMtNzg3LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oPTEzNj1lbnVtIGF0aDExa19kYmdfYWdncl9tb2RlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoxNDI6ZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTE0My1cXHRXTEFOX01PRFVMRV9JRF9NSU4gPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmg9MjUwPXN0cnVjdCBhdGgxMWtfZndfZGJnbG9nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oLTI1NS1cXHRcXHRcXHR1MTYgbG9nX2xldmVsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oOjI1NjpcXHRcXHRcXHQvKiBtb2R1bGVfaWQgdmFsdWVzIGFyZSBnaXZlbiBpbiAgZW51bSBmd19kYmdsb2dfd2xhbl9tb2R1bGVfaWQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoyNTc6XFx0XFx0XFx0dTE2IG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNTgtXFx0XFx0fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaDoyNTk6XFx0XFx0LyogdmFsdWUgaXMgZWl0aGVyIGxvZ19sZXZlbFxcdTAwMjZtb2R1bGVfaWQvdmRldl9pZC92ZGV2X2lkX2JpdG1hcC9sb2dfbGV2ZWxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaC0yNjAtXFx0XFx0ICogYWNjb3JkaW5nIHRvIHBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM9Mzk4PWh0dF9wcmludF9od19zdGF0c193ZF90aW1lb3V0X3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwNC1cXHR1MzIgYnVmX2xlbiA9IEFUSDExS19IVFRfU1RBVFNfQlVGX1NJWkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjQwNTpcXHRjaGFyIGh3X21vZHVsZV9uYW1lW0hUVF9TVEFUU19NQVhfSFdfTU9EVUxFX05BTUVfTEVOICsgMV0gPSB7fTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy00MDctXFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFxcXCJIVFRfSFdfU1RBVFNfV0RfVElNRU9VVF9UTFY6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NDA4OlxcdG1lbWNweShod19tb2R1bGVfbmFtZSwgXFx1MDAyNihodHRfc3RhdHNfYnVmLVxcdTAwM2Vod19tb2R1bGVfbmFtZVswXSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTQwOS1cXHQgICAgICAgSFRUX1NUQVRTX01BWF9IV19NT0RVTEVfTkFNRV9MRU4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTA6XFx0bGVuICs9IHNjbnByaW50ZihidWYgKyBsZW4sIGJ1Zl9sZW4gLSBsZW4sIFxcXCJod19tb2R1bGVfbmFtZSA9ICVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo0MTE6XFx0XFx0XFx0IGh3X21vZHVsZV9uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNDEyLVxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiY291bnQgPSAldVxcXFxuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYz01MTA9c3RhdGljIGlubGluZSB2b2lkIGh0dF9wcmludF90eF90aWRfc3RhdHNfdGx2KGNvbnN0IHZvaWQgKnRhZ19idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmMtNTQ5LVxcdFxcdFxcdCBodHRfc3RhdHNfYnVmLVxcdTAwM2VsYXN0X3NjaGVkdWxlZF90c21wKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUwOlxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwicGF1c2VfbW9kdWxlX2lkID0gJXVcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjU1MTpcXHRcXHRcXHQgaHR0X3N0YXRzX2J1Zi1cXHUwMDNlcGF1c2VfbW9kdWxlX2lkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUyOlxcdGxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBidWZfbGVuIC0gbGVuLCBcXFwiYmxvY2tfbW9kdWxlX2lkID0gJXVcXFxcblxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM6NTUzOlxcdFxcdFxcdCBodHRfc3RhdHNfYnVmLVxcdTAwM2VibG9ja19tb2R1bGVfaWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYy01NTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmM9NTYzPXN0YXRpYyBpbmxpbmUgdm9pZCBodHRfcHJpbnRfdHhfdGlkX3N0YXRzX3YxX3Rsdihjb25zdCB2b2lkICp0YWdfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwMi1cXHRcXHRcXHQgaHR0X3N0YXRzX2J1Zi1cXHUwMDNlbGFzdF9zY2hlZHVsZWRfdHNtcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwMzpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcInBhdXNlX21vZHVsZV9pZCA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo2MDQ6XFx0XFx0XFx0IGh0dF9zdGF0c19idWYtXFx1MDAzZXBhdXNlX21vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jOjYwNTpcXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImJsb2NrX21vZHVsZV9pZCA9ICV1XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuYzo2MDY6XFx0XFx0XFx0IGh0dF9zdGF0c19idWYtXFx1MDAzZWJsb2NrX21vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5jLTYwNy1cXHRsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgYnVmX2xlbiAtIGxlbiwgXFxcImFsbG93X25fZmxhZ3MgPSAweCV4XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oPTI3Nj1zdHJ1Y3QgaHR0X2h3X3N0YXRzX3dkX3RpbWVvdXRfdGx2IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMjc3LVxcdC8qIFN0b3JlZCBhcyBsaXR0bGUgZW5kaWFuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oOjI3ODpcXHR1OCBod19tb2R1bGVfbmFtZVtIVFRfU1RBVFNfTUFYX0hXX01PRFVMRV9OQU1FX0xFTl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTI3OS1cXHR1MzIgY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzM4PXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzUxLVxcdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNTI6XFx0dTMyIHBhdXNlX21vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6MzUzOlxcdHUzMiBibG9ja19tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM1NC1cXHR1MzIgdGlkX3R4X2FpcnRpbWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg9MzYzPXN0cnVjdCBodHRfdHhfdGlkX3N0YXRzX3YxX3RsdiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmgtMzc2LVxcdHUzMiBsYXN0X3NjaGVkdWxlZF90c21wO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmc19odHRfc3RhdHMuaDozNzc6XFx0dTMyIHBhdXNlX21vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnNfaHR0X3N0YXRzLmg6Mzc4OlxcdHUzMiBibG9ja19tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzX2h0dF9zdGF0cy5oLTM3OS1cXHR1MzIgdGlkX3R4X2FpcnRpbWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jPTEzMDc9c3RhdGljIGludCBhdGgxMWtfcGNpX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMxNy19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYzoxMzE4Om1vZHVsZV9pbml0KGF0aDExa19wY2lfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9wY2kuYy0xMzE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9MTMyMD1zdGF0aWMgdm9pZCBhdGgxMWtfcGNpX2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtMTMyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jOjEzMjU6bW9kdWxlX2V4aXQoYXRoMTFrX3BjaV9leGl0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTEzMjYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jPTI4PUVYUE9SVF9TWU1CT0woYXRoMTFrX2NvbGRfYm9vdF9jYWwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcW1pLmM6Mjk6bW9kdWxlX3BhcmFtX25hbWVkKGNvbGRfYm9vdF9jYWwsIGF0aDExa19jb2xkX2Jvb3RfY2FsLCBib29sLCAwNjQ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3FtaS5jLTMwLU1PRFVMRV9QQVJNX0RFU0MoY29sZF9ib290X2NhbCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9NDU3ND1pbnQgYXRoMTFrX3dtaV9wZGV2X2RtYV9yaW5nX2NmZyhzdHJ1Y3QgYXRoMTFrICphcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNDU4OS1cXHRjbWQtXFx1MDAzZXBkZXZfaWRcXHRcXHQ9IHBhcmFtLVxcdTAwM2VwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6NDU5MDpcXHRjbWQtXFx1MDAzZW1vZHVsZV9pZFxcdFxcdD0gcGFyYW0tXFx1MDAzZW1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTQ1OTEtXFx0Y21kLVxcdTAwM2ViYXNlX3BhZGRyX2xvXFx0PSBwYXJhbS1cXHUwMDNlYmFzZV9wYWRkcl9sbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9NDk4ND1zdGF0aWMgaW50IGF0aDExa193bWlfdGx2X2RtYV9yaW5nX2NhcHMoc3RydWN0IGF0aDExa19iYXNlICphYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtNTAxNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NhcHNfcGFyc2UtXFx1MDAzZW5fZG1hX3JpbmdfY2FwczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE3OlxcdFxcdGlmIChkbWFfY2Fwc1tpXS5tb2R1bGVfaWQgXFx1MDAzZT0gV01JX0RJUkVDVF9CVUZfTUFYKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDE4OlxcdFxcdFxcdGF0aDExa193YXJuKGFiLCBcXFwiSW52YWxpZCBtb2R1bGUgaWQgJWRcXFxcblxcXCIsIGRtYV9jYXBzW2ldLm1vZHVsZV9pZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy01MDE5LVxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTUwMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo1MDIzOlxcdFxcdGRpcl9idWZmX2NhcHNbaV0uaWQgPSBkbWFfY2Fwc1tpXS5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy01MDI0LVxcdFxcdGRpcl9idWZmX2NhcHNbaV0ucGRldl9pZCA9IERQX0hXMlNXX01BQ0lEKGRtYV9jYXBzW2ldLnBkZXZfaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTAxPWF0aDExa193bWlfc2VuZF91bml0X3Rlc3RfY21kKHN0cnVjdCBhdGgxMWsgKmFyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTI2LVxcdGNtZC1cXHUwMDNldmRldl9pZCA9IHV0X2NtZC52ZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTEyNzpcXHRjbWQtXFx1MDAzZW1vZHVsZV9pZCA9IHV0X2NtZC5tb2R1bGVfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTI4LVxcdGNtZC1cXHUwMDNlbnVtX2FyZ3MgPSB1dF9jbWQubnVtX2FyZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxNTItXFx0XFx0ICAgXFxcImNtZCB1bml0IHRlc3QgbW9kdWxlICVkIHZkZXYgJWQgbl9hcmdzICVkIHRva2VuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTE1MzpcXHRcXHQgICBjbWQtXFx1MDAzZW1vZHVsZV9pZCwgY21kLVxcdTAwM2V2ZGV2X2lkLCBjbWQtXFx1MDAzZW51bV9hcmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTE1NC1cXHRcXHQgICBjbWQtXFx1MDAzZWRpYWdfdG9rZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz05MTU5PWludCBhdGgxMWtfd21pX3NpbXVsYXRlX3JhZGFyKHN0cnVjdCBhdGgxMWsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MTg0LVxcdHdtaV91dC52ZGV2X2lkID0gYXJ2aWYtXFx1MDAzZXZkZXZfaWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTg1OlxcdHdtaV91dC5tb2R1bGVfaWQgPSBERlNfVU5JVF9URVNUX01PRFVMRTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxODYtXFx0d21pX3V0Lm51bV9hcmdzID0gREZTX01BWF9URVNUX0FSR1M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MTk0OmludCBhdGgxMWtfd21pX2Z3X2RiZ2xvZ19jZmcoc3RydWN0IGF0aDExayAqYXIsIHUzMiAqbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkxOTUtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MjI2LVxcdFxcdGNtZC1cXHUwMDNldmFsdWUgPSBkYmdsb2ctXFx1MDAzZXZhbHVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6OTIyNzpcXHRcXHRtZW1jcHkodGx2LVxcdTAwM2V2YWx1ZSwgbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkyMjgtXFx0XFx0ICAgICAgIE1BWF9NT0RVTEVfSURfQklUTUFQX1dPUkRTICogc2l6ZW9mKHUzMikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIyOS1cXHRcXHQvKiBjbGVhciBjdXJyZW50IGNvbmZpZyB0byBiZSB1c2VkIGZvciBuZXh0IHVzZXIgY29uZmlnICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo5MjMwOlxcdFxcdG1lbXNldChtb2R1bGVfaWRfYml0bWFwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTIzMS1cXHRcXHQgICAgICAgTUFYX01PRFVMRV9JRF9CSVRNQVBfV09SRFMgKiBzaXplb2YodTMyKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTI1NzU9c3RydWN0IHdtaV9kbWFfcmluZ19jYXBhYmlsaXRpZXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC0yNTc3LVxcdHUzMiBwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6MjU3ODpcXHR1MzIgbW9kdWxlX2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtMjU3OS1cXHR1MzIgbWluX2VsZW07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oPTQxMDE9c3RydWN0IHdtaV91bml0X3Rlc3RfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNDEwMy1cXHR1MzIgdmRldl9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjQxMDQ6XFx0dTMyIG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTQxMDUtXFx0dTMyIG51bV9hcmdzO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaD01NjY4PXN0cnVjdCBhdGgxMWtfd21pX3BkZXZfZG1hX3JpbmdfY2ZnX3JlcV9jbWQge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaC01NjcwLVxcdHUzMiBwZGV2X2lkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg6NTY3MTpcXHR1MzIgbW9kdWxlX2lkO1xcdFxcdC8qIHNlZSBlbnVtIHdtaV9kaXJlY3RfYnVmZmVyX21vZHVsZSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY3Mi1cXHR1MzIgYmFzZV9wYWRkcl9sbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9NTY5MD1zdHJ1Y3QgYXRoMTFrX3dtaV9kbWFfYnVmX3JlbGVhc2VfZml4ZWRfcGFyYW0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmgtNTY5MS1cXHR1MzIgcGRldl9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oOjU2OTI6XFx0dTMyIG1vZHVsZV9pZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTU2OTMtXFx0dTMyIG51bV9idWZfcmVsZWFzZV9lbnRyeTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmg9NjU5ND1pbnQgYXRoMTFrX3dtaV9zY2FuX3Byb2JfcmVxX291aShzdHJ1Y3QgYXRoMTFrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTY1OTUtXFx0XFx0XFx0XFx0IGNvbnN0IHU4IG1hY19hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuaDo2NTk2OmludCBhdGgxMWtfd21pX2Z3X2RiZ2xvZ19jZmcoc3RydWN0IGF0aDExayAqYXIsIHUzMiAqbW9kdWxlX2lkX2JpdG1hcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5oLTY1OTctXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYXRoMTFrX2Z3X2RiZ2xvZyAqZGJnbG9nKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTc6MDA6MzAuNzUxNzg5MzYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk4Njk2NjExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIGBhdGgxMWtgIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgcG90ZW50aWFsIGZvciBmdXp6aW5nIHRoZSBgYXRoMTFrYCBkcml2ZXIuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDExa2AgaXMgYSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWF4IGRyaXZlciwgYW5kIGl0J3MgcHJldHR5IHNwZWNpZmljIOKAkyBpdCBvbmx5IHBsYXlzIG5pY2VseSB3aXRoIFBDSSBhbmQgQUhCIGhhcmR3YXJlIHBsYXRmb3JtcyAodGhpbmsgSVBRODA3NCwgUUNBNjM5MCwgdGhvc2UgdHlwZXMpLiBJdCAqZG9lc24ndCogc3VwcG9ydCBVU0IuIFRoaXMgbWVhbnMgdGhhdCwgdW5saWtlIHNvbWUgb3RoZXIgZHJpdmVycywgSSBjYW4ndCBqdXN0IGVhc2lseSBzcGluIHVwIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQgYW5kIGV4cGVjdCB0byBoaXQgdGhlIGNvZGUuIE5vIHNvZnR3YXJlIG1vY2tzIG9yIGVtdWxhdGlvbnMgZXhpc3QgaW4gdGhvc2Ugc3RhbmRhcmQgZW52aXJvbm1lbnRzIGZvciB0aGlzIGRyaXZlci4gIEl0IG5lZWRzIHNwZWNpYWwgUXVhbGNvbW0gaGFyZHdhcmUsIEFTSUNzLCBhbmQgZmlybXdhcmUgdG8gZXZlbiBwcm9iZSBhbmQgaW5pdGlhbGl6ZSBwcm9wZXJseS5cblxuSSdtIGFsc28ga2VlcGluZyBpbiBtaW5kIHRoZSBzdHJ1Y3R1cmFsIHVucmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIFNwZWNpZmljYWxseSwgdGhlIGJpdCBhYm91dCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIOKAkyB0aGUgb25lcyB0aGF0IGRlbWFuZCByZWFsIEFTSUMvUENJZSBjYXJkcyBhbmQgYXJlbid0IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIHNldHVwLiAgVGhpcyBzZWVtcyBoaWdobHkgcmVsZXZhbnQgaGVyZS5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2ggaXRzZWxmLCBhbGwgdGhlIG1vZGlmaWVkIGZpbGVzIGFyZSBuZWF0bHkgdHVja2VkIHVuZGVyIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2A6ICBgY29yZS5oYCwgYGRlYnVnZnMuY2AsIGBkcC5jYCwgYGRwX3J4LmNgLCBgZHBfdHguY2AsIGBkcF90eC5oYCwgYG1hYy5jYCwgYW5kIGBtYWMuaGAuICBOb25lIG9mIHRoZXNlIGFyZSByZWxhdGVkIHRvIHZpcnR1YWwgZGV2aWNlIGRyaXZlcnMsIGxpa2UgbWFjODAyMTFfaHdzaW0gb3IgdmlydGlvLW5ldCwgb3IgZXZlbiBhIFVTQiBkcml2ZXIgdGhhdCBjb3VsZCAqcG90ZW50aWFsbHkqIGJlIGZha2VkIHVzaW5nIGEgc3l6a2FsbGVyIFVTQiByYXcgZ2FkZ2V0LlxuXG5UaGVyZWZvcmUsIG15IGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgY29kZSBpbiB0aGlzIHBhdGNoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcyBsaWtlIFFFTVUgYW5kIEdDRS4gSSdkIHNldCBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgdG8gZW1wdHksIGFuZCBgRW5hYmxlQ29uZmlnc2AgdG8gZW1wdHkuICBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGUgYGF0aDExa2AgZHJpdmVyIHJlbGllcyBvbiBwcm9wcmlldGFyeSBRdWFsY29tbSBoYXJkd2FyZSAoQVNJQ3MgYW5kIGZpcm13YXJlKSBub3QgZW11bGF0ZWQgaW4gdGhlIHVzdWFsIGZ1enppbmcgZW52aXJvbm1lbnRzLCB0aHVzIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkndmUgY2hlY2tlZCB0aGF0IHRoZSBkaWZmIG9ubHkgdG91Y2hlcyBmaWxlcyB3aXRoaW4gdGhlIGBhdGgxMWtgIGRpcmVjdG9yeS4gIEV2ZXJ5dGhpbmcgbG9va3MgZ29vZCwgc28gSSdtIGdvaW5nIHRvIHByb2NlZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzU0OSwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxNzowMDozNi43Mzg3NTc3NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMWsgZHJpdmVyIChRdWFsY29tbSA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIpLCB3aGljaCBvcGVyYXRlcyBleGNsdXNpdmVseSBvbiBwaHlzaWNhbCBQQ0llL0FIQiBoYXJkd2FyZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE3OjAwOjM2LjczODc4Mzk1MloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowvzgbh[1] Phase: Running StartedAt: 2026-09-08 17:00:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvzgbh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 17:00:48 +0000 UTC FinishedAt: 2026-09-08 17:00:51 +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,}