Name: series-workflowqltf5 Phase: Failed StartedAt: 2026-08-04 18:06:29 +0000 UTC FinishedAt: 2026-08-04 18:49:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqltf5[0] Phase: Succeeded StartedAt: 2026-08-04 18:06:29 +0000 UTC FinishedAt: 2026-08-04 18:49:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqltf5[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 18:06:29 +0000 UTC FinishedAt: 2026-08-04 18:49:29 +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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQxMWI4YjIzZTZlZDUxMDZkNjllZTcxYzk1Y2M4MWVjYmIwNzg3ZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjQ4OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbmluZGV4IDI2MmEyMDQ1MzA5YjEuLjVjMGVlNzQ4MDhjZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0xMzkxLDggJiM0MzsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfaGFsX3NybmdfZGVpbml0O1xuIFxuLVx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbmluZGV4IDhmYTBlOTBiNDUzMTYuLjQ3Mzg1NWRlZDhhNzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguY1xuQEAgLTc1MSw2ICYjNDM7NzUxLDkgQEAgaW50IGF0aDEya19kcF9yeF9hbXBkdV9zdG9wKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0YXJzdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5LFxuIFx0XHRcdFx0ICBhaHN0YS1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbiBcdGlmICghYXJzdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDk5YmY1Y2Y3OWQxMDIuLjhjZWRjZGIyNGQzZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTk4MSw5ICYjNDM7MTk4MSwxNiBAQCB2b2lkIGF0aDEya19tYWNfaGFuZGxlX2JlYWNvbl9taXNzKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0ICogKGRvbmUgYnkgbWFjODAyMTEpIHN1Y2NlZWRzIGJ1dCBiZWFjb25zIGRvIG5vdCByZXN1bWUgdGhlbiBpdFxuIFx0ICogZG9lc24mIzM5O3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBvcGVyYXRpb24uIFF1ZXVlIGNvbm5lY3Rpb24gbG9zcyB3b3JrXG4gXHQgKiB3aGljaCBjYW4gYmUgY2FuY2VsbGVkIHdoZW4gYmVhY29uIGlzIHJlY2VpdmVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogU2tpcCBmb3IgTUxPIGJlY2F1c2UgY29ubmVjdGlvbl9sb3NzX3dvcmsgZGlzY29ubmVjdHMgdGhlIGVudGlyZVxuJiM0MztcdCAqIFZJRiBiYXNlZCBvbiBhIHNpbmdsZSBsaW5rJiMzOTtzIGJlYWNvbiBtaXNzLCBhbmQgaXRzIGNhbmNlbGxhdGlvblxuJiM0MztcdCAqIG1lY2hhbmlzbSAoYmVhY29uIHJlY2VwdGlvbiB2aWEgV01JKSBpcyB1bnJlbGlhYmxlLiBUaGUgbWFjODAyMTFcbiYjNDM7XHQgKiBwcm9iZSB0cmlnZ2VyZWQgYnkgaWVlZTgwMjExX2JlYWNvbl9sb3NzKCkgYWJvdmUgaXMgc3VmZmljaWVudFxuJiM0MztcdCAqIHRvIGRldGVjdCByZWFsIEFQIHVucmVhY2hhYmlsaXR5LlxuIFx0ICovXG4tXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcdTAwMjZhcnZpZi1cdTAwM2Vjb25uZWN0aW9uX2xvc3Nfd29yayxcbi1cdFx0XHRcdCAgICAgQVRIMTJLX0NPTk5FQ1RJT05fTE9TU19IWik7XG4mIzQzO1x0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKVxuJiM0MztcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXJ2aWYtXHUwMDNlY29ubmVjdGlvbl9sb3NzX3dvcmssXG4mIzQzO1x0XHRcdFx0XHQgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTQzNDEsMTIgJiM0Mzs0MzQ4LDIyIEBAIGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTtcbiBcdHVuc2lnbmVkIGxvbmcgdG9fcmVtb3ZlID0gb2xkX2xpbmtzIFx1MDAyNiB+bmV3X2xpbmtzO1xuIFx0dW5zaWduZWQgbG9uZyB0b19hZGQgPSB+b2xkX2xpbmtzIFx1MDAyNiBuZXdfbGlua3M7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcbiBcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0dTggbGlua19pZDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbiYjNDM7XHRpZiAob2xkX2xpbmtzKSB7XG4mIzQzO1x0XHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFx1MDAyNmV4aXN0aW5nLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcbiYjNDM7XHRcdFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cdTAwM2V3aXBoeSwgYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4mIzQzO1x0XHRcdGlmIChhcnZpZiBcdTAwMjZcdTAwMjYgYXJ2aWYtXHUwMDNlYXIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YXJ2aWYtXHUwMDNlYXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0YXRoMTJrX2dlbmVyaWNfZGJnKEFUSDEyS19EQkdfTUFDLFxuIFx0XHRcdCAgIFwmIzM0O21hYyB2aWYgbGluayBjaGFuZ2VkIGZvciBNTEQgJXBNIG9sZF9saW5rcyAweCV4IG5ld19saW5rcyAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHZpZi1cdTAwM2VhZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7XG5AQCAtNTc3Myw2ICYjNDM7NTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuJiM0MztcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRjaGFuX2xpc3QgPSBremFsbG9jX29ianMoKmNoYW5fbGlzdCwgaHdfcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzKTtcbiBcdGlmICghY2hhbl9saXN0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC02MDI1LDYgJiM0Mzs2MDQ3LDkgQEAgc3RhdGljIGludCBhdGgxMmtfY2xlYXJfcGVlcl9rZXlzKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwLVx1MDAzZWRwX2xvY2spO1xuIFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBhZGRyKTtcbiBcdGlmICghcGVlciB8fCAhcGVlci1cdTAwM2VkcF9wZWVyKSB7XG5AQCAtNjEwMCw2ICYjNDM7NjEyNSw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXRfa2V5KHN0cnVjdCBhdGgxMmsgKmFyLCBlbnVtIHNldF9rZXlfY21kIGNtZCxcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHAtXHUwMDNlZHBfbG9jayk7XG4gXG4gXHRcdGlmIChjbWQgPT0gU0VUX0tFWSkge1xuJiM0MztcdFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIDA7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2Nhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHBlZXJfYWRkcik7XG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuQEAgLTcxMDAsNyAmIzQzOzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHR3aXBoeV93b3JrX2NhbmNlbChhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSwgXHUwMDI2YXJzdGEtXHUwMDNldXBkYXRlX3drKTtcbiBcbi1cdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcbiYjNDM7XHRpZiAoYWh2aWYtXHUwMDNldmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhdGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpIHtcbiBcdFx0YXRoMTJrX2Jzc19kaXNhc3NvYyhhciwgYXJ2aWYpO1xuIFx0XHRyZXQgPSBhdGgxMmtfbWFjX3ZkZXZfc3RvcChhcnZpZik7XG4gXHRcdGlmIChyZXQpXG5AQCAtNzg2MSw2ICYjNDM7Nzg4OSwxMCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAqIE1MTyBjYXNlLiBPdGhlciBjYXNlcyB3b3VsZCBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmUuXG4gXHRcdCAqL1xuIFx0XHRhYiA9IGFoLVx1MDAzZXJhZGlvWzBdLmFiO1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4mIzQzO1x0XHRcdHJldCA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGFiLVx1MDAzZWFnLVx1MDAzZW51bV9kZXZpY2VzID09IDEpIHtcbiBcdFx0XHRyZXQgPSBhdGgxMmtfbWFjX3NlbGVjdF9saW5rcyhhYiwgdmlmLCBodywgXHUwMDI2c2VsZWN0ZWRfbGlua3MpO1xuIFx0XHRcdGlmIChyZXQpIHtcbkBAIC0xMjY2MSw2ICYjNDM7MTI2OTMsOSBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfZmx1c2goc3RydWN0IGF0aDEyayAqYXIpXG4gXHRsb25nIHRpbWVfbGVmdDtcbiBcdGludCByZXQgPSAwO1xuIFxuJiM0MztcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbiYjNDM7XHRcdHJldHVybiAtRVNIVVRET1dOO1xuJiM0MztcbiBcdHRpbWVfbGVmdCA9IHdhaXRfZXZlbnRfdGltZW91dChhci1cdTAwM2VkcC50eF9lbXB0eV93YWl0cSxcbiBcdFx0XHRcdCAgICAgICAoYXRvbWljX3JlYWQoXHUwMDI2YXItXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpID09IDApLFxuIFx0XHRcdFx0ICAgICAgIEFUSDEyS19GTFVTSF9USU1FT1VUKTtcbkBAIC0xMzU1OSw2ICYjNDM7MTM1OTQsOCBAQCBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4gXHRcdGFiID0gYXItXHUwMDNlYWI7XG4gXG4mIzQzO1x0XHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncyk7XG4mIzQzO1xuIFx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7cGRldiAlZCBzdWNjZXNzZnVsbHkgcmVjb3ZlcmVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBhci1cdTAwM2VwZGV2LVx1MDAzZXBkZXZfaWQpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbmluZGV4IDgwZWRlYmYwZTM2NGIuLmQ2NGU2MjE5MmNkN2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbkBAIC0zNzYsMTIgJiM0MzszNzYsMTggQEAgaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3RcbiBcdHVuc2lnbmVkIGxvbmcgbGlua3M7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiBcdHU4IGxpbmtfaWQ7XG4mIzQzO1x0aW50IGk7XG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4gXG4gXHRpZiAoIXN0YS1cdTAwM2VtbG8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3RydWN0IGF0aDEya19wZWVyX2RlbGV0ZV93YWl0ICp3YWl0cyBfX2ZyZWUoa2ZyZWUpID1cbiBcdFx0XHRcdGt6YWxsb2Nfb2Jqcygqd2FpdHMsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUyk7XG4gXHRpZiAoIXdhaXRzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MTFiOGIyM2U2ZWQ1MTA2ZDY5ZWU3MWM5NWNjODFlY2JiMDc4N2UyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxODo0ODo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggMjYyYTIwNDUzMDliMS4uNWMwZWU3NDgwOGNkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKQEAgLTEzOTEsOCAmIzQzOzEzOTEsNiBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3JlY29uZmlndXJlX29uX2NyYXNoKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfaGFsX3NybmdfZGVpbml0OwogCi0JY2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpOwotCiAJcmV0dXJuIDA7CiAKIGVycl9oYWxfc3JuZ19kZWluaXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMKaW5kZXggOGZhMGU5MGI0NTMxNi4uNDczODU1ZGVkOGE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguYwpAQCAtNzUxLDYgJiM0Mzs3NTEsOSBAQCBpbnQgYXRoMTJrX2RwX3J4X2FtcGR1X3N0b3Aoc3RydWN0IGF0aDEyayAqYXIsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSk7CiAKJiM0MzsJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJYXJzdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSwKIAkJCQkgIGFoc3RhLSZndDtsaW5rW2xpbmtfaWRdKTsKIAlpZiAoIWFyc3RhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggOTliZjVjZjc5ZDEwMi4uOGNlZGNkYjI0ZDNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC0xOTgxLDkgJiM0MzsxOTgxLDE2IEBAIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX21pc3Moc3RydWN0IGF0aDEyayAqYXIsCiAJICogKGRvbmUgYnkgbWFjODAyMTEpIHN1Y2NlZWRzIGJ1dCBiZWFjb25zIGRvIG5vdCByZXN1bWUgdGhlbiBpdAogCSAqIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgb3BlcmF0aW9uLiBRdWV1ZSBjb25uZWN0aW9uIGxvc3Mgd29yawogCSAqIHdoaWNoIGNhbiBiZSBjYW5jZWxsZWQgd2hlbiBiZWFjb24gaXMgcmVjZWl2ZWQuCiYjNDM7CSAqCiYjNDM7CSAqIFNraXAgZm9yIE1MTyBiZWNhdXNlIGNvbm5lY3Rpb25fbG9zc193b3JrIGRpc2Nvbm5lY3RzIHRoZSBlbnRpcmUKJiM0MzsJICogVklGIGJhc2VkIG9uIGEgc2luZ2xlIGxpbmsmIzM5O3MgYmVhY29uIG1pc3MsIGFuZCBpdHMgY2FuY2VsbGF0aW9uCiYjNDM7CSAqIG1lY2hhbmlzbSAoYmVhY29uIHJlY2VwdGlvbiB2aWEgV01JKSBpcyB1bnJlbGlhYmxlLiBUaGUgbWFjODAyMTEKJiM0MzsJICogcHJvYmUgdHJpZ2dlcmVkIGJ5IGllZWU4MDIxMV9iZWFjb25fbG9zcygpIGFib3ZlIGlzIHN1ZmZpY2llbnQKJiM0MzsJICogdG8gZGV0ZWN0IHJlYWwgQVAgdW5yZWFjaGFiaWxpdHkuCiAJICovCi0JaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthcnZpZi0mZ3Q7Y29ubmVjdGlvbl9sb3NzX3dvcmssCi0JCQkJICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTsKJiM0MzsJaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKQomIzQzOwkJaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthcnZpZi0mZ3Q7Y29ubmVjdGlvbl9sb3NzX3dvcmssCiYjNDM7CQkJCQkgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopOwogfQogCiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQpAQCAtNDM0MSwxMiAmIzQzOzQzNDgsMjIgQEAgYXRoMTJrX21hY19vcF9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTsKIAl1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyAmYW1wOyB+bmV3X2xpbmtzOwogCXVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyAmYW1wOyBuZXdfbGlua3M7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZXhpc3RpbmcgPSBvbGRfbGlua3M7CiAJc3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfaHdfdG9fYWgoaHcpOwogCXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmOwogCXU4IGxpbmtfaWQ7CiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCiYjNDM7CWlmIChvbGRfbGlua3MpIHsKJiM0MzsJCWZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgJmFtcDtleGlzdGluZywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7CiYjNDM7CQkJYXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody0mZ3Q7d2lwaHksIGFodmlmLSZndDtsaW5rW2xpbmtfaWRdKTsKJiM0MzsJCQlpZiAoYXJ2aWYgJmFtcDsmYW1wOyBhcnZpZi0mZ3Q7YXIgJmFtcDsmYW1wOwomIzQzOwkJCSAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgJmFtcDthcnZpZi0mZ3Q7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCWF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX01BQywKIAkJCSAgICYjMzQ7bWFjIHZpZiBsaW5rIGNoYW5nZWQgZm9yIE1MRCAlcE0gb2xkX2xpbmtzIDB4JXggbmV3X2xpbmtzIDB4JXhcbiYjMzQ7LAogCQkJICAgdmlmLSZndDthZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7CkBAIC01NzczLDYgJiM0Mzs1NzkwLDExIEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCiYjNDM7CWZvcl9lYWNoX2FyKGFoLCBhciwgaSkgewomIzQzOwkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkKJiM0MzsJCQlyZXR1cm4gLUVCVVNZOwomIzQzOwl9CiYjNDM7CiAJY2hhbl9saXN0ID0ga3phbGxvY19vYmpzKCpjaGFuX2xpc3QsIGh3X3JlcS0mZ3Q7cmVxLm5fY2hhbm5lbHMpOwogCWlmICghY2hhbl9saXN0KQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTYwMjUsNiAmIzQzOzYwNDcsOSBAQCBzdGF0aWMgaW50IGF0aDEya19jbGVhcl9wZWVyX2tleXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSk7CiAKJiM0MzsJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZHAtJmd0O2RwX2xvY2spOwogCXBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfdmRldl9hbmRfYWRkcihkcCwgYXJ2aWYtJmd0O3ZkZXZfaWQsIGFkZHIpOwogCWlmICghcGVlciB8fCAhcGVlci0mZ3Q7ZHBfcGVlcikgewpAQCAtNjEwMCw2ICYjNDM7NjEyNSw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXRfa2V5KHN0cnVjdCBhdGgxMmsgKmFyLCBlbnVtIHNldF9rZXlfY21kIGNtZCwKIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDtkcC0mZ3Q7ZHBfbG9jayk7CiAKIAkJaWYgKGNtZCA9PSBTRVRfS0VZKSB7CiYjNDM7CQkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJCQlyZXR1cm4gMDsKIAkJCWF0aDEya193YXJuKGFiLCAmIzM0O2Nhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXG4mIzM0OywKIAkJCQkgICAgcGVlcl9hZGRyKTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKQEAgLTcxMDAsNyAmIzQzOzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsCiAKIAl3aXBoeV93b3JrX2NhbmNlbChhci0mZ3Q7YWgtJmd0O2h3LSZndDt3aXBoeSwgJmFtcDthcnN0YS0mZ3Q7dXBkYXRlX3drKTsKIAotCWlmIChhaHZpZi0mZ3Q7dmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBKSB7CiYjNDM7CWlmIChhaHZpZi0mZ3Q7dmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBICZhbXA7JmFtcDsKJiM0MzsJICAgICF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpIHsKIAkJYXRoMTJrX2Jzc19kaXNhc3NvYyhhciwgYXJ2aWYpOwogCQlyZXQgPSBhdGgxMmtfbWFjX3ZkZXZfc3RvcChhcnZpZik7CiAJCWlmIChyZXQpCkBAIC03ODYxLDYgJiM0Mzs3ODg5LDEwIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJICogTUxPIGNhc2UuIE90aGVyIGNhc2VzIHdvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIGZ1dHVyZS4KIAkJICovCiAJCWFiID0gYWgtJmd0O3JhZGlvWzBdLmFiOwomIzQzOwkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKSB7CiYjNDM7CQkJcmV0ID0gMDsKJiM0MzsJCQlnb3RvIGV4aXQ7CiYjNDM7CQl9CiAJCWlmIChhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzID09IDEpIHsKIAkJCXJldCA9IGF0aDEya19tYWNfc2VsZWN0X2xpbmtzKGFiLCB2aWYsIGh3LCAmYW1wO3NlbGVjdGVkX2xpbmtzKTsKIAkJCWlmIChyZXQpIHsKQEAgLTEyNjYxLDYgJiM0MzsxMjY5Myw5IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19mbHVzaChzdHJ1Y3QgYXRoMTJrICphcikKIAlsb25nIHRpbWVfbGVmdDsKIAlpbnQgcmV0ID0gMDsKIAomIzQzOwlpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIC1FU0hVVERPV047CiYjNDM7CiAJdGltZV9sZWZ0ID0gd2FpdF9ldmVudF90aW1lb3V0KGFyLSZndDtkcC50eF9lbXB0eV93YWl0cSwKIAkJCQkgICAgICAgKGF0b21pY19yZWFkKCZhbXA7YXItJmd0O2RwLm51bV90eF9wZW5kaW5nKSA9PSAwKSwKIAkJCQkgICAgICAgQVRIMTJLX0ZMVVNIX1RJTUVPVVQpOwpAQCAtMTM1NTksNiAmIzQzOzEzNTk0LDggQEAgYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHsKIAkJYWIgPSBhci0mZ3Q7YWI7CiAKJiM0MzsJCWNsZWFyX2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgJmFtcDthYi0mZ3Q7ZGV2X2ZsYWdzKTsKJiM0MzsKIAkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O3BkZXYgJWQgc3VjY2Vzc2Z1bGx5IHJlY292ZXJlZFxuJiMzNDssCiAJCQkgICAgYXItJmd0O3BkZXYtJmd0O3BkZXZfaWQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCmluZGV4IDgwZWRlYmYwZTM2NGIuLmQ2NGU2MjE5MmNkN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCkBAIC0zNzYsMTIgJiM0MzszNzYsMTggQEAgaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3QKIAl1bnNpZ25lZCBsb25nIGxpbmtzOwogCXN0cnVjdCBhdGgxMmsgKmFyOwogCXU4IGxpbmtfaWQ7CiYjNDM7CWludCBpOwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtJmd0O2h3LSZndDt3aXBoeSk7CiAKIAlpZiAoIXN0YS0mZ3Q7bWxvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHsKJiM0MzsJCWlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlzdHJ1Y3QgYXRoMTJrX3BlZXJfZGVsZXRlX3dhaXQgKndhaXRzIF9fZnJlZShrZnJlZSkgPQogCQkJCWt6YWxsb2Nfb2Jqcygqd2FpdHMsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUyk7CiAJaWYgKCF3YWl0cykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIFRlc3RhYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBidW5jaCBvZiBjaGVja3MgZm9yIHRoZXNlIHJlY292ZXJ5IGFuZCBjcmFzaCBmbGFncywgYEFUSDEyS19GTEFHX1JFQ09WRVJZYCBhbmQgYEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNIYCwgd2l0aGluIHZhcmlvdXMgTUFDIG9wZXJhdGlvbnMuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rc2AsIGBhdGgxMmtfbWFjX29wX2h3X3NjYW5gLCBhbmQgc28gb24uIEFsc28sIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW92ZWQgdGhlIGNsZWFyaW5nIG9mIHRoZSBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGZsYWcgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24gZW50aXJlbHksIGBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlYC4gSW50ZXJlc3RpbmcuLi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIEkgYWN0dWFsbHkgKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHk/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cnkgUUVNVSwgc2luY2UgdGhhdCYjMzk7cyBvZnRlbiBteSBnby10byBmb3Iga2VybmVsIGRyaXZlciB3b3JrLiBCdXQsIHdhaXQsIHRoaXMgaXMgYW4gYGF0aDEya2AgZHJpdmVyLiBJdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgc3VwcG9ydHMgUENJIGFuZCBBSEIgZGV2aWNlcy4gSG1tbS4uLiBkb2VzIFFFTVUgZXZlbiBlbXVsYXRlIGBhdGgxMmtgIGhhcmR3YXJlPyBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGRvZXNuJiMzOTt0LiBRRU1VIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCYjMzk7cyBhICpnZW5lcmFsKiBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgZG9lc24mIzM5O3QgZGlyZWN0bHkgbWFwIHRvIHRoZSBgYXRoMTJrYCBkcml2ZXIuCgpPa2F5LCBuZXh0IG9wdGlvbi4uLiBob3cgYWJvdXQgc3l6a2FsbGVyPyBJdCYjMzk7cyBncmVhdCBmb3IgZnV6emluZy4gU2FkbHksIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIHRoZSBoYXJkd2FyZSBmb3IgYXRoMTJrLCBvciBhdCBsZWFzdCBubyBleHBsaWNpdCBzdXBwb3J0IGZvciBpdC4gV2FpdCwgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBVU0IgZnV6emluZywgYW5kIFBDSSBmdXp6aW5nIHRocm91Z2ggdlBDSS4gSG93ZXZlciwgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyIGlzIHF1aXRlIGxpbWl0ZWQsIGFuZCB1c3VhbGx5LCB3ZSBhdm9pZCB2ZW5kb3Itc3BlY2lmaWMgUENJL1BDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLgoKSGFuZyBvbi4uLiBJIG5lZWQgdG8gcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLi4uCgomIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFscmlnaHQsIGlzIGBhdGgxMmtgIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLCBzbyB0aGF0IHdvdWxkIGFwcGx5LgoKQWxyaWdodCwgb25lIGxhc3QgY2hlY2ssIGlzIGl0IGEgUENJIGRyaXZlcj8gWWVzLgoKU28sIHJlYWxpc3RpY2FsbHksIGJhc2VkIG9uIHRoZSBjdXJyZW50IHNldHVwLCB0aGlzIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGEgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBzY2VuYXJpby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBfX21heWJlX3VudXNlZCBhdGgxMmtfcGNpX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4MTk6aW50IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODIwLVx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3BjaV9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4NDY6XHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4NDg6RVhQT1JUX1NZTUJPTChhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNzY9dm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmgtMTc4LVx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3BjaV9kcml2ZXIgKmRyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XHRyZXQgPSBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihBVEgxMktfREVWSUNFX0ZBTUlMWV9XSUZJNyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMjAyLVx0XHRcdFx0XHQgXHUwMDI2YXRoMTJrX3dpZmk3X3BjaV9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjYKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAyOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIFBDSSBkcml2ZXIgaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZy4gSXQmIzM5O3MgdGllZCB0byBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlLCB3aGljaCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7cGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4mIzM0OyBTdGFuZGFyZCBRRU1VLCBhbmQgaW5kZWVkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgYXJlbiYjMzk7dCBnb2luZyB0byBjdXQgaXQuIFRoZXJlJiMzOTtzIG5vIGVtdWxhdGlvbiBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBTbywgeWVhaCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRob3VnaC4gTm8gaGFybSBpbiBiZWluZyB0aG9yb3VnaC4gSXMgdGhlcmUgYW55IHRyaWNrZXJ5IHdpdGggYG1hYzgwMjExX2h3c2ltYCB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gTm9wZSwgaXQmIzM5O3MgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciwgbm90IHJlbGV2YW50IGhlcmUuIExvb2tpbmcgZGVlcGVyLCB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgaGl0dGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAqVGhhdCogc2VhbHMgdGhlIGRlYWwuIFRoZSBndWlkZWxpbmVzIEkmIzM5O20gZm9sbG93aW5nIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAg4oCTIGVzcGVjaWFsbHkgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSB0aGlzIHZlbmRvci1zcGVjaWZpYyBRdWFsY29tbSBXaS1GaSA3IChQQ0llL0FIQikgZHJpdmVyIOKAkyB0aGVuIGl0JiMzOTtzIGEgbm8tZ28uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBoZXJlLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiBJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDg6NTkuOTQxMTkwMzUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNzg1NTcwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDg6NTkuOTQxMTk1OTAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEwMDA2Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDExYjhiMjNlNmVkNTEwNmQ2OWVlNzFjOTVjYzgxZWNiYjA3ODdlMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjQ4OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5pbmRleCAyNjJhMjA0NTMwOWIxLi41YzBlZTc0ODA4Y2QxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMTM5MSw4ICsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGVycl9oYWxfc3JuZ19kZWluaXQ7XFxuIFxcbi1cXHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKTtcXG4tXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jXFxuaW5kZXggOGZhMGU5MGI0NTMxNi4uNDczODU1ZGVkOGE3NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcXG5AQCAtNzUxLDYgKzc1MSw5IEBAIGludCBhdGgxMmtfZHBfcnhfYW1wZHVfc3RvcChzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5KTtcXG4gXFxuK1xcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGFyc3RhID0gd2lwaHlfZGVyZWZlcmVuY2UoYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgYWhzdGEtXFx1MDAzZWxpbmtbbGlua19pZF0pO1xcbiBcXHRpZiAoIWFyc3RhKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDk5YmY1Y2Y3OWQxMDIuLjhjZWRjZGIyNGQzZmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5AQCAtMTk4MSw5ICsxOTgxLDE2IEBAIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX21pc3Moc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdCAqIChkb25lIGJ5IG1hYzgwMjExKSBzdWNjZWVkcyBidXQgYmVhY29ucyBkbyBub3QgcmVzdW1lIHRoZW4gaXRcXG4gXFx0ICogZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIG9wZXJhdGlvbi4gUXVldWUgY29ubmVjdGlvbiBsb3NzIHdvcmtcXG4gXFx0ICogd2hpY2ggY2FuIGJlIGNhbmNlbGxlZCB3aGVuIGJlYWNvbiBpcyByZWNlaXZlZC5cXG4rXFx0ICpcXG4rXFx0ICogU2tpcCBmb3IgTUxPIGJlY2F1c2UgY29ubmVjdGlvbl9sb3NzX3dvcmsgZGlzY29ubmVjdHMgdGhlIGVudGlyZVxcbitcXHQgKiBWSUYgYmFzZWQgb24gYSBzaW5nbGUgbGluaydzIGJlYWNvbiBtaXNzLCBhbmQgaXRzIGNhbmNlbGxhdGlvblxcbitcXHQgKiBtZWNoYW5pc20gKGJlYWNvbiByZWNlcHRpb24gdmlhIFdNSSkgaXMgdW5yZWxpYWJsZS4gVGhlIG1hYzgwMjExXFxuK1xcdCAqIHByb2JlIHRyaWdnZXJlZCBieSBpZWVlODAyMTFfYmVhY29uX2xvc3MoKSBhYm92ZSBpcyBzdWZmaWNpZW50XFxuK1xcdCAqIHRvIGRldGVjdCByZWFsIEFQIHVucmVhY2hhYmlsaXR5LlxcbiBcXHQgKi9cXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXFx1MDAyNmFydmlmLVxcdTAwM2Vjb25uZWN0aW9uX2xvc3Nfd29yayxcXG4tXFx0XFx0XFx0XFx0ICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTtcXG4rXFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKVxcbitcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2YXJ2aWYtXFx1MDAzZWNvbm5lY3Rpb25fbG9zc193b3JrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbkBAIC00MzQxLDEyICs0MzQ4LDIyIEBAIGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih2aWYpO1xcbiBcXHR1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyBcXHUwMDI2IH5uZXdfbGlua3M7XFxuIFxcdHVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyBcXHUwMDI2IG5ld19saW5rcztcXG4rXFx0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcXG4gXFx0c3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfaHdfdG9fYWgoaHcpO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcXG4gXFx0dTggbGlua19pZDtcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuIFxcbitcXHRpZiAob2xkX2xpbmtzKSB7XFxuK1xcdFxcdGZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgXFx1MDAyNmV4aXN0aW5nLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcXG4rXFx0XFx0XFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cXHUwMDNld2lwaHksIGFodmlmLVxcdTAwM2VsaW5rW2xpbmtfaWRdKTtcXG4rXFx0XFx0XFx0aWYgKGFydmlmIFxcdTAwMjZcXHUwMDI2IGFydmlmLVxcdTAwM2VhciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhcnZpZi1cXHUwMDNlYXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRhdGgxMmtfZ2VuZXJpY19kYmcoQVRIMTJLX0RCR19NQUMsXFxuIFxcdFxcdFxcdCAgIFxcXCJtYWMgdmlmIGxpbmsgY2hhbmdlZCBmb3IgTUxEICVwTSBvbGRfbGlua3MgMHgleCBuZXdfbGlua3MgMHgleFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgdmlmLVxcdTAwM2VhZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7XFxuQEAgLTU3NzMsNiArNTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXFx1MDAzZXdpcGh5KTtcXG4gXFxuK1xcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xcbitcXHRcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpXFxuK1xcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuK1xcdH1cXG4rXFxuIFxcdGNoYW5fbGlzdCA9IGt6YWxsb2Nfb2JqcygqY2hhbl9saXN0LCBod19yZXEtXFx1MDAzZXJlcS5uX2NoYW5uZWxzKTtcXG4gXFx0aWYgKCFjaGFuX2xpc3QpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC02MDI1LDYgKzYwNDcsOSBAQCBzdGF0aWMgaW50IGF0aDEya19jbGVhcl9wZWVyX2tleXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSk7XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRwLVxcdTAwM2VkcF9sb2NrKTtcXG4gXFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cXHUwMDNldmRldl9pZCwgYWRkcik7XFxuIFxcdGlmICghcGVlciB8fCAhcGVlci1cXHUwMDNlZHBfcGVlcikge1xcbkBAIC02MTAwLDYgKzYxMjUsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc2V0X2tleShzdHJ1Y3QgYXRoMTJrICphciwgZW51bSBzZXRfa2V5X2NtZCBjbWQsXFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcbiBcXHRcXHRpZiAoY21kID09IFNFVF9LRVkpIHtcXG4rXFx0XFx0XFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImNhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcGVlcl9hZGRyKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbkBAIC03MTAwLDcgKzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcbiBcXHR3aXBoeV93b3JrX2NhbmNlbChhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyc3RhLVxcdTAwM2V1cGRhdGVfd2spO1xcbiBcXG4tXFx0aWYgKGFodmlmLVxcdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcXG4rXFx0aWYgKGFodmlmLVxcdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbiBcXHRcXHRhdGgxMmtfYnNzX2Rpc2Fzc29jKGFyLCBhcnZpZik7XFxuIFxcdFxcdHJldCA9IGF0aDEya19tYWNfdmRldl9zdG9wKGFydmlmKTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtNzg2MSw2ICs3ODg5LDEwIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0ICogTUxPIGNhc2UuIE90aGVyIGNhc2VzIHdvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIGZ1dHVyZS5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGFiID0gYWgtXFx1MDAzZXJhZGlvWzBdLmFiO1xcbitcXHRcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbitcXHRcXHRcXHRyZXQgPSAwO1xcbitcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKGFiLVxcdTAwM2VhZy1cXHUwMDNlbnVtX2RldmljZXMgPT0gMSkge1xcbiBcXHRcXHRcXHRyZXQgPSBhdGgxMmtfbWFjX3NlbGVjdF9saW5rcyhhYiwgdmlmLCBodywgXFx1MDAyNnNlbGVjdGVkX2xpbmtzKTtcXG4gXFx0XFx0XFx0aWYgKHJldCkge1xcbkBAIC0xMjY2MSw2ICsxMjY5Myw5IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19mbHVzaChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0bG9uZyB0aW1lX2xlZnQ7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gLUVTSFVURE9XTjtcXG4rXFxuIFxcdHRpbWVfbGVmdCA9IHdhaXRfZXZlbnRfdGltZW91dChhci1cXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEsXFxuIFxcdFxcdFxcdFxcdCAgICAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmFyLVxcdTAwM2VkcC5udW1fdHhfcGVuZGluZykgPT0gMCksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBBVEgxMktfRkxVU0hfVElNRU9VVCk7XFxuQEAgLTEzNTU5LDYgKzEzNTk0LDggQEAgYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XFxuIFxcdFxcdGFiID0gYXItXFx1MDAzZWFiO1xcbiBcXG4rXFx0XFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuK1xcbiBcXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJwZGV2ICVkIHN1Y2Nlc3NmdWxseSByZWNvdmVyZWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBhci1cXHUwMDNlcGRldi1cXHUwMDNlcGRldl9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuaW5kZXggODBlZGViZjBlMzY0Yi4uZDY0ZTYyMTkyY2Q3ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuQEAgLTM3NiwxMiArMzc2LDE4IEBAIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0XFxuIFxcdHVuc2lnbmVkIGxvbmcgbGlua3M7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbiBcXHR1OCBsaW5rX2lkO1xcbitcXHRpbnQgaTtcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiBcXG4gXFx0aWYgKCFzdGEtXFx1MDAzZW1sbylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHtcXG4rXFx0XFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0c3RydWN0IGF0aDEya19wZWVyX2RlbGV0ZV93YWl0ICp3YWl0cyBfX2ZyZWUoa2ZyZWUpID1cXG4gXFx0XFx0XFx0XFx0a3phbGxvY19vYmpzKCp3YWl0cywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKTtcXG4gXFx0aWYgKCF3YWl0cylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MDEuMTUxODczMDU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU5Njc4Njk2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDExYjhiMjNlNmVkNTEwNmQ2OWVlNzFjOTVjYzgxZWNiYjA3ODdlMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTg6NDg6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCAyNjJhMjA0NTMwOWIxLi41YzBlZTc0ODA4Y2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTM5MSw4ICsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfaGFsX3NybmdfZGVpbml0O1xuIFxuLVx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbmluZGV4IDhmYTBlOTBiNDUzMTYuLjQ3Mzg1NWRlZDhhNzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguY1xuQEAgLTc1MSw2ICs3NTEsOSBAQCBpbnQgYXRoMTJrX2RwX3J4X2FtcGR1X3N0b3Aoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5KTtcbiBcbitcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRhcnN0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4gXHRcdFx0XHQgIGFoc3RhLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuIFx0aWYgKCFhcnN0YSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOTliZjVjZjc5ZDEwMi4uOGNlZGNkYjI0ZDNmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xOTgxLDkgKzE5ODEsMTYgQEAgdm9pZCBhdGgxMmtfbWFjX2hhbmRsZV9iZWFjb25fbWlzcyhzdHJ1Y3QgYXRoMTJrICphcixcbiBcdCAqIChkb25lIGJ5IG1hYzgwMjExKSBzdWNjZWVkcyBidXQgYmVhY29ucyBkbyBub3QgcmVzdW1lIHRoZW4gaXRcbiBcdCAqIGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBvcGVyYXRpb24uIFF1ZXVlIGNvbm5lY3Rpb24gbG9zcyB3b3JrXG4gXHQgKiB3aGljaCBjYW4gYmUgY2FuY2VsbGVkIHdoZW4gYmVhY29uIGlzIHJlY2VpdmVkLlxuK1x0ICpcbitcdCAqIFNraXAgZm9yIE1MTyBiZWNhdXNlIGNvbm5lY3Rpb25fbG9zc193b3JrIGRpc2Nvbm5lY3RzIHRoZSBlbnRpcmVcbitcdCAqIFZJRiBiYXNlZCBvbiBhIHNpbmdsZSBsaW5rJ3MgYmVhY29uIG1pc3MsIGFuZCBpdHMgY2FuY2VsbGF0aW9uXG4rXHQgKiBtZWNoYW5pc20gKGJlYWNvbiByZWNlcHRpb24gdmlhIFdNSSkgaXMgdW5yZWxpYWJsZS4gVGhlIG1hYzgwMjExXG4rXHQgKiBwcm9iZSB0cmlnZ2VyZWQgYnkgaWVlZTgwMjExX2JlYWNvbl9sb3NzKCkgYWJvdmUgaXMgc3VmZmljaWVudFxuK1x0ICogdG8gZGV0ZWN0IHJlYWwgQVAgdW5yZWFjaGFiaWxpdHkuXG4gXHQgKi9cbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoaHcsIFx1MDAyNmFydmlmLVx1MDAzZWNvbm5lY3Rpb25fbG9zc193b3JrLFxuLVx0XHRcdFx0ICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTtcbitcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSlcbitcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXJ2aWYtXHUwMDNlY29ubmVjdGlvbl9sb3NzX3dvcmssXG4rXHRcdFx0XHRcdCAgICAgQVRIMTJLX0NPTk5FQ1RJT05fTE9TU19IWik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdmlmX3N0YV9jb25uZWN0aW9uX2xvc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtNDM0MSwxMiArNDM0OCwyMiBAQCBhdGgxMmtfbWFjX29wX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHZpZik7XG4gXHR1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyBcdTAwMjYgfm5ld19saW5rcztcbiBcdHVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyBcdTAwMjYgbmV3X2xpbmtzO1xuK1x0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcbiBcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0dTggbGlua19pZDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbitcdGlmIChvbGRfbGlua3MpIHtcbitcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZleGlzdGluZywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7XG4rXHRcdFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cdTAwM2V3aXBoeSwgYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4rXHRcdFx0aWYgKGFydmlmIFx1MDAyNlx1MDAyNiBhcnZpZi1cdTAwM2VhciBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFydmlmLVx1MDAzZWFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0YXRoMTJrX2dlbmVyaWNfZGJnKEFUSDEyS19EQkdfTUFDLFxuIFx0XHRcdCAgIFwibWFjIHZpZiBsaW5rIGNoYW5nZWQgZm9yIE1MRCAlcE0gb2xkX2xpbmtzIDB4JXggbmV3X2xpbmtzIDB4JXhcXG5cIixcbiBcdFx0XHQgICB2aWYtXHUwMDNlYWRkciwgb2xkX2xpbmtzLCBuZXdfbGlua3MpO1xuQEAgLTU3NzMsNiArNTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuK1x0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4rXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0XHRyZXR1cm4gLUVCVVNZO1xuK1x0fVxuK1xuIFx0Y2hhbl9saXN0ID0ga3phbGxvY19vYmpzKCpjaGFuX2xpc3QsIGh3X3JlcS1cdTAwM2VyZXEubl9jaGFubmVscyk7XG4gXHRpZiAoIWNoYW5fbGlzdClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtNjAyNSw2ICs2MDQ3LDkgQEAgc3RhdGljIGludCBhdGgxMmtfY2xlYXJfcGVlcl9rZXlzKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4rXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwLVx1MDAzZWRwX2xvY2spO1xuIFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBhZGRyKTtcbiBcdGlmICghcGVlciB8fCAhcGVlci1cdTAwM2VkcF9wZWVyKSB7XG5AQCAtNjEwMCw2ICs2MTI1LDggQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX3NldF9rZXkoc3RydWN0IGF0aDEyayAqYXIsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkcC1cdTAwM2VkcF9sb2NrKTtcbiBcbiBcdFx0aWYgKGNtZCA9PSBTRVRfS0VZKSB7XG4rXHRcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwiY2Fubm90IGluc3RhbGwga2V5IGZvciBub24tZXhpc3RlbnQgcGVlciAlcE1cXG5cIixcbiBcdFx0XHRcdCAgICBwZWVyX2FkZHIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbkBAIC03MTAwLDcgKzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHR3aXBoeV93b3JrX2NhbmNlbChhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSwgXHUwMDI2YXJzdGEtXHUwMDNldXBkYXRlX3drKTtcbiBcbi1cdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcbitcdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4gXHRcdGF0aDEya19ic3NfZGlzYXNzb2MoYXIsIGFydmlmKTtcbiBcdFx0cmV0ID0gYXRoMTJrX21hY192ZGV2X3N0b3AoYXJ2aWYpO1xuIFx0XHRpZiAocmV0KVxuQEAgLTc4NjEsNiArNzg4OSwxMCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAqIE1MTyBjYXNlLiBPdGhlciBjYXNlcyB3b3VsZCBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmUuXG4gXHRcdCAqL1xuIFx0XHRhYiA9IGFoLVx1MDAzZXJhZGlvWzBdLmFiO1xuK1x0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpIHtcbitcdFx0XHRyZXQgPSAwO1xuK1x0XHRcdGdvdG8gZXhpdDtcbitcdFx0fVxuIFx0XHRpZiAoYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXMgPT0gMSkge1xuIFx0XHRcdHJldCA9IGF0aDEya19tYWNfc2VsZWN0X2xpbmtzKGFiLCB2aWYsIGh3LCBcdTAwMjZzZWxlY3RlZF9saW5rcyk7XG4gXHRcdFx0aWYgKHJldCkge1xuQEAgLTEyNjYxLDYgKzEyNjkzLDkgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2ZsdXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0bG9uZyB0aW1lX2xlZnQ7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0cmV0dXJuIC1FU0hVVERPV047XG4rXG4gXHR0aW1lX2xlZnQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoYXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEsXG4gXHRcdFx0XHQgICAgICAgKGF0b21pY19yZWFkKFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSA9PSAwKSxcbiBcdFx0XHRcdCAgICAgICBBVEgxMktfRkxVU0hfVElNRU9VVCk7XG5AQCAtMTM1NTksNiArMTM1OTQsOCBAQCBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4gXHRcdGFiID0gYXItXHUwMDNlYWI7XG4gXG4rXHRcdGNsZWFyX2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbitcbiBcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwicGRldiAlZCBzdWNjZXNzZnVsbHkgcmVjb3ZlcmVkXFxuXCIsXG4gXHRcdFx0ICAgIGFyLVx1MDAzZXBkZXYtXHUwMDNlcGRldl9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuaW5kZXggODBlZGViZjBlMzY0Yi4uZDY0ZTYyMTkyY2Q3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuQEAgLTM3NiwxMiArMzc2LDE4IEBAIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0XG4gXHR1bnNpZ25lZCBsb25nIGxpbmtzO1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4gXHR1OCBsaW5rX2lkO1xuK1x0aW50IGk7XG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4gXG4gXHRpZiAoIXN0YS1cdTAwM2VtbG8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4rXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHN0cnVjdCBhdGgxMmtfcGVlcl9kZWxldGVfd2FpdCAqd2FpdHMgX19mcmVlKGtmcmVlKSA9XG4gXHRcdFx0XHRremFsbG9jX29ianMoKndhaXRzLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpO1xuIFx0aWYgKCF3YWl0cylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjQ5OjAxLjE1MTg3NDM4OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTUxNjcwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYXRoMTJrYCBkcml2ZXIuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGJ1bmNoIG9mIGNoZWNrcyBmb3IgdGhlc2UgcmVjb3ZlcnkgYW5kIGNyYXNoIGZsYWdzLCBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGFuZCBgQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0hgLCB3aXRoaW4gdmFyaW91cyBNQUMgb3BlcmF0aW9ucy4gSSBzZWUgaXQncyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfbWFjX29wX2NoYW5nZV92aWZfbGlua3NgLCBgYXRoMTJrX21hY19vcF9od19zY2FuYCwgYW5kIHNvIG9uLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgbW92ZWQgdGhlIGNsZWFyaW5nIG9mIHRoZSBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGZsYWcgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24gZW50aXJlbHksIGBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlYC4gSW50ZXJlc3RpbmcuLi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseT8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyeSBRRU1VLCBzaW5jZSB0aGF0J3Mgb2Z0ZW4gbXkgZ28tdG8gZm9yIGtlcm5lbCBkcml2ZXIgd29yay4gQnV0LCB3YWl0LCB0aGlzIGlzIGFuIGBhdGgxMmtgIGRyaXZlci4gSXQncyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgc3VwcG9ydHMgUENJIGFuZCBBSEIgZGV2aWNlcy4gSG1tbS4uLiBkb2VzIFFFTVUgZXZlbiBlbXVsYXRlIGBhdGgxMmtgIGhhcmR3YXJlPyBJJ20gcHJldHR5IHN1cmUgaXQgZG9lc24ndC4gUUVNVSBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQncyBhICpnZW5lcmFsKiBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgZG9lc24ndCBkaXJlY3RseSBtYXAgdG8gdGhlIGBhdGgxMmtgIGRyaXZlci5cblxuT2theSwgbmV4dCBvcHRpb24uLi4gaG93IGFib3V0IHN5emthbGxlcj8gSXQncyBncmVhdCBmb3IgZnV6emluZy4gU2FkbHksIHN5emthbGxlciBkb2Vzbid0IGhhdmUgdGhlIGhhcmR3YXJlIGZvciBhdGgxMmssIG9yIGF0IGxlYXN0IG5vIGV4cGxpY2l0IHN1cHBvcnQgZm9yIGl0LiBXYWl0LCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IFVTQiBmdXp6aW5nLCBhbmQgUENJIGZ1enppbmcgdGhyb3VnaCB2UENJLiBIb3dldmVyLCBQQ0kgZnV6emluZyBpbiBzeXprYWxsZXIgaXMgcXVpdGUgbGltaXRlZCwgYW5kIHVzdWFsbHksIHdlIGF2b2lkIHZlbmRvci1zcGVjaWZpYyBQQ0kvUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbkhhbmcgb24uLi4gSSBuZWVkIHRvIHJlZmVyIGJhY2sgdG8gdGhlIGluc3RydWN0aW9ucy4uLlxuXG5cIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuQWxyaWdodCwgaXMgYGF0aDEya2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBhIFF1YWxjb21tIFdpLUZpIGRyaXZlciwgc28gdGhhdCB3b3VsZCBhcHBseS5cblxuQWxyaWdodCwgb25lIGxhc3QgY2hlY2ssIGlzIGl0IGEgUENJIGRyaXZlcj8gWWVzLlxuXG5TbywgcmVhbGlzdGljYWxseSwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dXAsIHRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQ4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MTAuNDY3MDQzNDA5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDYxOTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE5OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjQ5OjEwLjY2MTY2ODgzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NTgwNTA3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBQQ0kgZHJpdmVyIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZy4gSXQncyB0aWVkIHRvIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNjcmVhbXMgXCJwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LlwiIFN0YW5kYXJkIFFFTVUsIGFuZCBpbmRlZWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBhcmVuJ3QgZ29pbmcgdG8gY3V0IGl0LiBUaGVyZSdzIG5vIGVtdWxhdGlvbiBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBTbywgeWVhaCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEknbSBsZWFuaW5nIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRob3VnaC4gTm8gaGFybSBpbiBiZWluZyB0aG9yb3VnaC4gSXMgdGhlcmUgYW55IHRyaWNrZXJ5IHdpdGggYG1hYzgwMjExX2h3c2ltYCB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gTm9wZSwgaXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBub3QgcmVsZXZhbnQgaGVyZS4gTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCdzIGNoYW5nZXMgYXJlIGhpdHRpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYC4gKlRoYXQqIHNlYWxzIHRoZSBkZWFsLiBUaGUgZ3VpZGVsaW5lcyBJJ20gZm9sbG93aW5nIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cCDigJMgZXNwZWNpYWxseSByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50LCBsaWtlIHRoaXMgdmVuZG9yLXNwZWNpZmljIFF1YWxjb21tIFdpLUZpIDcgKFBDSWUvQUhCKSBkcml2ZXIg4oCTIHRoZW4gaXQncyBhIG5vLWdvLiBXZSdyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBoZXJlLlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGFzc2Vzc21lbnQgaXMgY2xlYXI6IEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjYsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MTcuMTE5NzIyMDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqltf5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 18:06:29 +0000 UTC FinishedAt: 2026-08-04 18:49:18 +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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQxMWI4YjIzZTZlZDUxMDZkNjllZTcxYzk1Y2M4MWVjYmIwNzg3ZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjQ4OjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbmluZGV4IDI2MmEyMDQ1MzA5YjEuLjVjMGVlNzQ4MDhjZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbkBAIC0xMzkxLDggJiM0MzsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfaGFsX3NybmdfZGVpbml0O1xuIFxuLVx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbmluZGV4IDhmYTBlOTBiNDUzMTYuLjQ3Mzg1NWRlZDhhNzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguY1xuQEAgLTc1MSw2ICYjNDM7NzUxLDkgQEAgaW50IGF0aDEya19kcF9yeF9hbXBkdV9zdG9wKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0YXJzdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5LFxuIFx0XHRcdFx0ICBhaHN0YS1cdTAwM2VsaW5rW2xpbmtfaWRdKTtcbiBcdGlmICghYXJzdGEpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbmluZGV4IDk5YmY1Y2Y3OWQxMDIuLjhjZWRjZGIyNGQzZmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtMTk4MSw5ICYjNDM7MTk4MSwxNiBAQCB2b2lkIGF0aDEya19tYWNfaGFuZGxlX2JlYWNvbl9taXNzKHN0cnVjdCBhdGgxMmsgKmFyLFxuIFx0ICogKGRvbmUgYnkgbWFjODAyMTEpIHN1Y2NlZWRzIGJ1dCBiZWFjb25zIGRvIG5vdCByZXN1bWUgdGhlbiBpdFxuIFx0ICogZG9lc24mIzM5O3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBvcGVyYXRpb24uIFF1ZXVlIGNvbm5lY3Rpb24gbG9zcyB3b3JrXG4gXHQgKiB3aGljaCBjYW4gYmUgY2FuY2VsbGVkIHdoZW4gYmVhY29uIGlzIHJlY2VpdmVkLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogU2tpcCBmb3IgTUxPIGJlY2F1c2UgY29ubmVjdGlvbl9sb3NzX3dvcmsgZGlzY29ubmVjdHMgdGhlIGVudGlyZVxuJiM0MztcdCAqIFZJRiBiYXNlZCBvbiBhIHNpbmdsZSBsaW5rJiMzOTtzIGJlYWNvbiBtaXNzLCBhbmQgaXRzIGNhbmNlbGxhdGlvblxuJiM0MztcdCAqIG1lY2hhbmlzbSAoYmVhY29uIHJlY2VwdGlvbiB2aWEgV01JKSBpcyB1bnJlbGlhYmxlLiBUaGUgbWFjODAyMTFcbiYjNDM7XHQgKiBwcm9iZSB0cmlnZ2VyZWQgYnkgaWVlZTgwMjExX2JlYWNvbl9sb3NzKCkgYWJvdmUgaXMgc3VmZmljaWVudFxuJiM0MztcdCAqIHRvIGRldGVjdCByZWFsIEFQIHVucmVhY2hhYmlsaXR5LlxuIFx0ICovXG4tXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcdTAwMjZhcnZpZi1cdTAwM2Vjb25uZWN0aW9uX2xvc3Nfd29yayxcbi1cdFx0XHRcdCAgICAgQVRIMTJLX0NPTk5FQ1RJT05fTE9TU19IWik7XG4mIzQzO1x0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKVxuJiM0MztcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXJ2aWYtXHUwMDNlY29ubmVjdGlvbl9sb3NzX3dvcmssXG4mIzQzO1x0XHRcdFx0XHQgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTQzNDEsMTIgJiM0Mzs0MzQ4LDIyIEBAIGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTtcbiBcdHVuc2lnbmVkIGxvbmcgdG9fcmVtb3ZlID0gb2xkX2xpbmtzIFx1MDAyNiB+bmV3X2xpbmtzO1xuIFx0dW5zaWduZWQgbG9uZyB0b19hZGQgPSB+b2xkX2xpbmtzIFx1MDAyNiBuZXdfbGlua3M7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcbiBcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0dTggbGlua19pZDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbiYjNDM7XHRpZiAob2xkX2xpbmtzKSB7XG4mIzQzO1x0XHRmb3JfZWFjaF9zZXRfYml0KGxpbmtfaWQsIFx1MDAyNmV4aXN0aW5nLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcbiYjNDM7XHRcdFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cdTAwM2V3aXBoeSwgYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4mIzQzO1x0XHRcdGlmIChhcnZpZiBcdTAwMjZcdTAwMjYgYXJ2aWYtXHUwMDNlYXIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YXJ2aWYtXHUwMDNlYXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0YXRoMTJrX2dlbmVyaWNfZGJnKEFUSDEyS19EQkdfTUFDLFxuIFx0XHRcdCAgIFwmIzM0O21hYyB2aWYgbGluayBjaGFuZ2VkIGZvciBNTEQgJXBNIG9sZF9saW5rcyAweCV4IG5ld19saW5rcyAweCV4XFxuXCYjMzQ7LFxuIFx0XHRcdCAgIHZpZi1cdTAwM2VhZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7XG5AQCAtNTc3Myw2ICYjNDM7NTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuJiM0MztcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVCVVNZO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRjaGFuX2xpc3QgPSBremFsbG9jX29ianMoKmNoYW5fbGlzdCwgaHdfcmVxLVx1MDAzZXJlcS5uX2NoYW5uZWxzKTtcbiBcdGlmICghY2hhbl9saXN0KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC02MDI1LDYgJiM0Mzs2MDQ3LDkgQEAgc3RhdGljIGludCBhdGgxMmtfY2xlYXJfcGVlcl9rZXlzKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4mIzQzO1x0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwLVx1MDAzZWRwX2xvY2spO1xuIFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBhZGRyKTtcbiBcdGlmICghcGVlciB8fCAhcGVlci1cdTAwM2VkcF9wZWVyKSB7XG5AQCAtNjEwMCw2ICYjNDM7NjEyNSw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXRfa2V5KHN0cnVjdCBhdGgxMmsgKmFyLCBlbnVtIHNldF9rZXlfY21kIGNtZCxcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2ZHAtXHUwMDNlZHBfbG9jayk7XG4gXG4gXHRcdGlmIChjbWQgPT0gU0VUX0tFWSkge1xuJiM0MztcdFx0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG4mIzQzO1x0XHRcdFx0cmV0dXJuIDA7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2Nhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXFxuXCYjMzQ7LFxuIFx0XHRcdFx0ICAgIHBlZXJfYWRkcik7XG4gXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuQEAgLTcxMDAsNyAmIzQzOzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHR3aXBoeV93b3JrX2NhbmNlbChhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSwgXHUwMDI2YXJzdGEtXHUwMDNldXBkYXRlX3drKTtcbiBcbi1cdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcbiYjNDM7XHRpZiAoYWh2aWYtXHUwMDNldmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhdGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpIHtcbiBcdFx0YXRoMTJrX2Jzc19kaXNhc3NvYyhhciwgYXJ2aWYpO1xuIFx0XHRyZXQgPSBhdGgxMmtfbWFjX3ZkZXZfc3RvcChhcnZpZik7XG4gXHRcdGlmIChyZXQpXG5AQCAtNzg2MSw2ICYjNDM7Nzg4OSwxMCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAqIE1MTyBjYXNlLiBPdGhlciBjYXNlcyB3b3VsZCBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmUuXG4gXHRcdCAqL1xuIFx0XHRhYiA9IGFoLVx1MDAzZXJhZGlvWzBdLmFiO1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4mIzQzO1x0XHRcdHJldCA9IDA7XG4mIzQzO1x0XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGFiLVx1MDAzZWFnLVx1MDAzZW51bV9kZXZpY2VzID09IDEpIHtcbiBcdFx0XHRyZXQgPSBhdGgxMmtfbWFjX3NlbGVjdF9saW5rcyhhYiwgdmlmLCBodywgXHUwMDI2c2VsZWN0ZWRfbGlua3MpO1xuIFx0XHRcdGlmIChyZXQpIHtcbkBAIC0xMjY2MSw2ICYjNDM7MTI2OTMsOSBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfZmx1c2goc3RydWN0IGF0aDEyayAqYXIpXG4gXHRsb25nIHRpbWVfbGVmdDtcbiBcdGludCByZXQgPSAwO1xuIFxuJiM0MztcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbiYjNDM7XHRcdHJldHVybiAtRVNIVVRET1dOO1xuJiM0MztcbiBcdHRpbWVfbGVmdCA9IHdhaXRfZXZlbnRfdGltZW91dChhci1cdTAwM2VkcC50eF9lbXB0eV93YWl0cSxcbiBcdFx0XHRcdCAgICAgICAoYXRvbWljX3JlYWQoXHUwMDI2YXItXHUwMDNlZHAubnVtX3R4X3BlbmRpbmcpID09IDApLFxuIFx0XHRcdFx0ICAgICAgIEFUSDEyS19GTFVTSF9USU1FT1VUKTtcbkBAIC0xMzU1OSw2ICYjNDM7MTM1OTQsOCBAQCBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4gXHRcdGFiID0gYXItXHUwMDNlYWI7XG4gXG4mIzQzO1x0XHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncyk7XG4mIzQzO1xuIFx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7cGRldiAlZCBzdWNjZXNzZnVsbHkgcmVjb3ZlcmVkXFxuXCYjMzQ7LFxuIFx0XHRcdCAgICBhci1cdTAwM2VwZGV2LVx1MDAzZXBkZXZfaWQpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbmluZGV4IDgwZWRlYmYwZTM2NGIuLmQ2NGU2MjE5MmNkN2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmNcbkBAIC0zNzYsMTIgJiM0MzszNzYsMTggQEAgaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3RcbiBcdHVuc2lnbmVkIGxvbmcgbGlua3M7XG4gXHRzdHJ1Y3QgYXRoMTJrICphcjtcbiBcdHU4IGxpbmtfaWQ7XG4mIzQzO1x0aW50IGk7XG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4gXG4gXHRpZiAoIXN0YS1cdTAwM2VtbG8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xuJiM0MztcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuJiM0MztcdFx0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3RydWN0IGF0aDEya19wZWVyX2RlbGV0ZV93YWl0ICp3YWl0cyBfX2ZyZWUoa2ZyZWUpID1cbiBcdFx0XHRcdGt6YWxsb2Nfb2Jqcygqd2FpdHMsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUyk7XG4gXHRpZiAoIXdhaXRzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MTFiOGIyM2U2ZWQ1MTA2ZDY5ZWU3MWM5NWNjODFlY2JiMDc4N2UyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxODo0ODo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggMjYyYTIwNDUzMDliMS4uNWMwZWU3NDgwOGNkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKQEAgLTEzOTEsOCAmIzQzOzEzOTEsNiBAQCBzdGF0aWMgaW50IGF0aDEya19jb3JlX3JlY29uZmlndXJlX29uX2NyYXNoKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpCiAJaWYgKHJldCkKIAkJZ290byBlcnJfaGFsX3NybmdfZGVpbml0OwogCi0JY2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpOwotCiAJcmV0dXJuIDA7CiAKIGVycl9oYWxfc3JuZ19kZWluaXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMKaW5kZXggOGZhMGU5MGI0NTMxNi4uNDczODU1ZGVkOGE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguYwpAQCAtNzUxLDYgJiM0Mzs3NTEsOSBAQCBpbnQgYXRoMTJrX2RwX3J4X2FtcGR1X3N0b3Aoc3RydWN0IGF0aDEyayAqYXIsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSk7CiAKJiM0MzsJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJYXJzdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSwKIAkJCQkgIGFoc3RhLSZndDtsaW5rW2xpbmtfaWRdKTsKIAlpZiAoIWFyc3RhKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggOTliZjVjZjc5ZDEwMi4uOGNlZGNkYjI0ZDNmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCkBAIC0xOTgxLDkgJiM0MzsxOTgxLDE2IEBAIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX21pc3Moc3RydWN0IGF0aDEyayAqYXIsCiAJICogKGRvbmUgYnkgbWFjODAyMTEpIHN1Y2NlZWRzIGJ1dCBiZWFjb25zIGRvIG5vdCByZXN1bWUgdGhlbiBpdAogCSAqIGRvZXNuJiMzOTt0IG1ha2Ugc2Vuc2UgdG8gY29udGludWUgb3BlcmF0aW9uLiBRdWV1ZSBjb25uZWN0aW9uIGxvc3Mgd29yawogCSAqIHdoaWNoIGNhbiBiZSBjYW5jZWxsZWQgd2hlbiBiZWFjb24gaXMgcmVjZWl2ZWQuCiYjNDM7CSAqCiYjNDM7CSAqIFNraXAgZm9yIE1MTyBiZWNhdXNlIGNvbm5lY3Rpb25fbG9zc193b3JrIGRpc2Nvbm5lY3RzIHRoZSBlbnRpcmUKJiM0MzsJICogVklGIGJhc2VkIG9uIGEgc2luZ2xlIGxpbmsmIzM5O3MgYmVhY29uIG1pc3MsIGFuZCBpdHMgY2FuY2VsbGF0aW9uCiYjNDM7CSAqIG1lY2hhbmlzbSAoYmVhY29uIHJlY2VwdGlvbiB2aWEgV01JKSBpcyB1bnJlbGlhYmxlLiBUaGUgbWFjODAyMTEKJiM0MzsJICogcHJvYmUgdHJpZ2dlcmVkIGJ5IGllZWU4MDIxMV9iZWFjb25fbG9zcygpIGFib3ZlIGlzIHN1ZmZpY2llbnQKJiM0MzsJICogdG8gZGV0ZWN0IHJlYWwgQVAgdW5yZWFjaGFiaWxpdHkuCiAJICovCi0JaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthcnZpZi0mZ3Q7Y29ubmVjdGlvbl9sb3NzX3dvcmssCi0JCQkJICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTsKJiM0MzsJaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKQomIzQzOwkJaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthcnZpZi0mZ3Q7Y29ubmVjdGlvbl9sb3NzX3dvcmssCiYjNDM7CQkJCQkgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopOwogfQogCiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQpAQCAtNDM0MSwxMiAmIzQzOzQzNDgsMjIgQEAgYXRoMTJrX21hY19vcF9jaGFuZ2VfdmlmX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCXN0cnVjdCBhdGgxMmtfdmlmICphaHZpZiA9IGF0aDEya192aWZfdG9fYWh2aWYodmlmKTsKIAl1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyAmYW1wOyB+bmV3X2xpbmtzOwogCXVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyAmYW1wOyBuZXdfbGlua3M7CiYjNDM7CXVuc2lnbmVkIGxvbmcgZXhpc3RpbmcgPSBvbGRfbGlua3M7CiAJc3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfaHdfdG9fYWgoaHcpOwogCXN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmOwogCXU4IGxpbmtfaWQ7CiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCiYjNDM7CWlmIChvbGRfbGlua3MpIHsKJiM0MzsJCWZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgJmFtcDtleGlzdGluZywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7CiYjNDM7CQkJYXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody0mZ3Q7d2lwaHksIGFodmlmLSZndDtsaW5rW2xpbmtfaWRdKTsKJiM0MzsJCQlpZiAoYXJ2aWYgJmFtcDsmYW1wOyBhcnZpZi0mZ3Q7YXIgJmFtcDsmYW1wOwomIzQzOwkJCSAgICB0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgJmFtcDthcnZpZi0mZ3Q7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCWF0aDEya19nZW5lcmljX2RiZyhBVEgxMktfREJHX01BQywKIAkJCSAgICYjMzQ7bWFjIHZpZiBsaW5rIGNoYW5nZWQgZm9yIE1MRCAlcE0gb2xkX2xpbmtzIDB4JXggbmV3X2xpbmtzIDB4JXhcbiYjMzQ7LAogCQkJICAgdmlmLSZndDthZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7CkBAIC01NzczLDYgJiM0Mzs1NzkwLDExIEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShody0mZ3Q7d2lwaHkpOwogCiYjNDM7CWZvcl9lYWNoX2FyKGFoLCBhciwgaSkgewomIzQzOwkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FyLSZndDthYi0mZ3Q7ZGV2X2ZsYWdzKSkKJiM0MzsJCQlyZXR1cm4gLUVCVVNZOwomIzQzOwl9CiYjNDM7CiAJY2hhbl9saXN0ID0ga3phbGxvY19vYmpzKCpjaGFuX2xpc3QsIGh3X3JlcS0mZ3Q7cmVxLm5fY2hhbm5lbHMpOwogCWlmICghY2hhbl9saXN0KQogCQlyZXR1cm4gLUVOT01FTTsKQEAgLTYwMjUsNiAmIzQzOzYwNDcsOSBAQCBzdGF0aWMgaW50IGF0aDEya19jbGVhcl9wZWVyX2tleXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsCiAKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLSZndDt3aXBoeSk7CiAKJiM0MzsJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7ZHAtJmd0O2RwX2xvY2spOwogCXBlZXIgPSBhdGgxMmtfZHBfbGlua19wZWVyX2ZpbmRfYnlfdmRldl9hbmRfYWRkcihkcCwgYXJ2aWYtJmd0O3ZkZXZfaWQsIGFkZHIpOwogCWlmICghcGVlciB8fCAhcGVlci0mZ3Q7ZHBfcGVlcikgewpAQCAtNjEwMCw2ICYjNDM7NjEyNSw4IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19zZXRfa2V5KHN0cnVjdCBhdGgxMmsgKmFyLCBlbnVtIHNldF9rZXlfY21kIGNtZCwKIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDtkcC0mZ3Q7ZHBfbG9jayk7CiAKIAkJaWYgKGNtZCA9PSBTRVRfS0VZKSB7CiYjNDM7CQkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJCQlyZXR1cm4gMDsKIAkJCWF0aDEya193YXJuKGFiLCAmIzM0O2Nhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXG4mIzM0OywKIAkJCQkgICAgcGVlcl9hZGRyKTsKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKQEAgLTcxMDAsNyAmIzQzOzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsCiAKIAl3aXBoeV93b3JrX2NhbmNlbChhci0mZ3Q7YWgtJmd0O2h3LSZndDt3aXBoeSwgJmFtcDthcnN0YS0mZ3Q7dXBkYXRlX3drKTsKIAotCWlmIChhaHZpZi0mZ3Q7dmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBKSB7CiYjNDM7CWlmIChhaHZpZi0mZ3Q7dmRldl90eXBlID09IFdNSV9WREVWX1RZUEVfU1RBICZhbXA7JmFtcDsKJiM0MzsJICAgICF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpIHsKIAkJYXRoMTJrX2Jzc19kaXNhc3NvYyhhciwgYXJ2aWYpOwogCQlyZXQgPSBhdGgxMmtfbWFjX3ZkZXZfc3RvcChhcnZpZik7CiAJCWlmIChyZXQpCkBAIC03ODYxLDYgJiM0Mzs3ODg5LDEwIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJICogTUxPIGNhc2UuIE90aGVyIGNhc2VzIHdvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIGZ1dHVyZS4KIAkJICovCiAJCWFiID0gYWgtJmd0O3JhZGlvWzBdLmFiOwomIzQzOwkJaWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCAmYW1wO2FiLSZndDtkZXZfZmxhZ3MpKSB7CiYjNDM7CQkJcmV0ID0gMDsKJiM0MzsJCQlnb3RvIGV4aXQ7CiYjNDM7CQl9CiAJCWlmIChhYi0mZ3Q7YWctJmd0O251bV9kZXZpY2VzID09IDEpIHsKIAkJCXJldCA9IGF0aDEya19tYWNfc2VsZWN0X2xpbmtzKGFiLCB2aWYsIGh3LCAmYW1wO3NlbGVjdGVkX2xpbmtzKTsKIAkJCWlmIChyZXQpIHsKQEAgLTEyNjYxLDYgJiM0MzsxMjY5Myw5IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19mbHVzaChzdHJ1Y3QgYXRoMTJrICphcikKIAlsb25nIHRpbWVfbGVmdDsKIAlpbnQgcmV0ID0gMDsKIAomIzQzOwlpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsICZhbXA7YXItJmd0O2FiLSZndDtkZXZfZmxhZ3MpKQomIzQzOwkJcmV0dXJuIC1FU0hVVERPV047CiYjNDM7CiAJdGltZV9sZWZ0ID0gd2FpdF9ldmVudF90aW1lb3V0KGFyLSZndDtkcC50eF9lbXB0eV93YWl0cSwKIAkJCQkgICAgICAgKGF0b21pY19yZWFkKCZhbXA7YXItJmd0O2RwLm51bV90eF9wZW5kaW5nKSA9PSAwKSwKIAkJCQkgICAgICAgQVRIMTJLX0ZMVVNIX1RJTUVPVVQpOwpAQCAtMTM1NTksNiAmIzQzOzEzNTk0LDggQEAgYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHsKIAkJYWIgPSBhci0mZ3Q7YWI7CiAKJiM0MzsJCWNsZWFyX2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgJmFtcDthYi0mZ3Q7ZGV2X2ZsYWdzKTsKJiM0MzsKIAkJYXRoMTJrX3dhcm4oYXItJmd0O2FiLCAmIzM0O3BkZXYgJWQgc3VjY2Vzc2Z1bGx5IHJlY292ZXJlZFxuJiMzNDssCiAJCQkgICAgYXItJmd0O3BkZXYtJmd0O3BkZXZfaWQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCmluZGV4IDgwZWRlYmYwZTM2NGIuLmQ2NGU2MjE5MmNkN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jCkBAIC0zNzYsMTIgJiM0MzszNzYsMTggQEAgaW50IGF0aDEya19wZWVyX21sb19saW5rX3BlZXJzX2RlbGV0ZShzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYsIHN0cnVjdCBhdGgxMmtfc3QKIAl1bnNpZ25lZCBsb25nIGxpbmtzOwogCXN0cnVjdCBhdGgxMmsgKmFyOwogCXU4IGxpbmtfaWQ7CiYjNDM7CWludCBpOwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoYWgtJmd0O2h3LSZndDt3aXBoeSk7CiAKIAlpZiAoIXN0YS0mZ3Q7bWxvKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHsKJiM0MzsJCWlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgJmFtcDthci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpCiYjNDM7CQkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlzdHJ1Y3QgYXRoMTJrX3BlZXJfZGVsZXRlX3dhaXQgKndhaXRzIF9fZnJlZShrZnJlZSkgPQogCQkJCWt6YWxsb2Nfb2Jqcygqd2FpdHMsIElFRUU4MDIxMV9NTERfTUFYX05VTV9MSU5LUyk7CiAJaWYgKCF3YWl0cykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIFRlc3RhYmlsaXR5IG9mIGFuIGF0aDEyayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGF0aDEya2AgZHJpdmVyLiBJdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBidW5jaCBvZiBjaGVja3MgZm9yIHRoZXNlIHJlY292ZXJ5IGFuZCBjcmFzaCBmbGFncywgYEFUSDEyS19GTEFHX1JFQ09WRVJZYCBhbmQgYEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNIYCwgd2l0aGluIHZhcmlvdXMgTUFDIG9wZXJhdGlvbnMuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHNldmVyYWwgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rc2AsIGBhdGgxMmtfbWFjX29wX2h3X3NjYW5gLCBhbmQgc28gb24uIEFsc28sIGl0IGxvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW92ZWQgdGhlIGNsZWFyaW5nIG9mIHRoZSBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGZsYWcgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24gZW50aXJlbHksIGBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlYC4gSW50ZXJlc3RpbmcuLi4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIEkgYWN0dWFsbHkgKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHk/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0cnkgUUVNVSwgc2luY2UgdGhhdCYjMzk7cyBvZnRlbiBteSBnby10byBmb3Iga2VybmVsIGRyaXZlciB3b3JrLiBCdXQsIHdhaXQsIHRoaXMgaXMgYW4gYGF0aDEya2AgZHJpdmVyLiBJdCYjMzk7cyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgc3VwcG9ydHMgUENJIGFuZCBBSEIgZGV2aWNlcy4gSG1tbS4uLiBkb2VzIFFFTVUgZXZlbiBlbXVsYXRlIGBhdGgxMmtgIGhhcmR3YXJlPyBJJiMzOTttIHByZXR0eSBzdXJlIGl0IGRvZXNuJiMzOTt0LiBRRU1VIGRvZXMgaGF2ZSBgbWFjODAyMTFfaHdzaW1gLCBidXQgdGhhdCYjMzk7cyBhICpnZW5lcmFsKiBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgZG9lc24mIzM5O3QgZGlyZWN0bHkgbWFwIHRvIHRoZSBgYXRoMTJrYCBkcml2ZXIuCgpPa2F5LCBuZXh0IG9wdGlvbi4uLiBob3cgYWJvdXQgc3l6a2FsbGVyPyBJdCYjMzk7cyBncmVhdCBmb3IgZnV6emluZy4gU2FkbHksIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIHRoZSBoYXJkd2FyZSBmb3IgYXRoMTJrLCBvciBhdCBsZWFzdCBubyBleHBsaWNpdCBzdXBwb3J0IGZvciBpdC4gV2FpdCwgc3l6a2FsbGVyIGRvZXMgc3VwcG9ydCBVU0IgZnV6emluZywgYW5kIFBDSSBmdXp6aW5nIHRocm91Z2ggdlBDSS4gSG93ZXZlciwgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyIGlzIHF1aXRlIGxpbWl0ZWQsIGFuZCB1c3VhbGx5LCB3ZSBhdm9pZCB2ZW5kb3Itc3BlY2lmaWMgUENJL1BDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLgoKSGFuZyBvbi4uLiBJIG5lZWQgdG8gcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLi4uCgomIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFscmlnaHQsIGlzIGBhdGgxMmtgIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGEgUXVhbGNvbW0gV2ktRmkgZHJpdmVyLCBzbyB0aGF0IHdvdWxkIGFwcGx5LgoKQWxyaWdodCwgb25lIGxhc3QgY2hlY2ssIGlzIGl0IGEgUENJIGRyaXZlcj8gWWVzLgoKU28sIHJlYWxpc3RpY2FsbHksIGJhc2VkIG9uIHRoZSBjdXJyZW50IHNldHVwLCB0aGlzIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGEgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBzY2VuYXJpby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfcmVnaXN0ZXJfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBfX21heWJlX3VudXNlZCBhdGgxMmtfcGNpX3BtX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4MTk6aW50IGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODIwLVx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3BjaV9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4NDY6XHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTg0Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjE4NDg6RVhQT1JUX1NZTUJPTChhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuaD0xNzY9dm9pZCBhdGgxMmtfcGNpX3Bvd2VyX2Rvd24oc3RydWN0IGF0aDEya19iYXNlICphYiwgYm9vbCBpc19zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmgtMTc4LVx0XHRcdCAgICAgICBzdHJ1Y3QgYXRoMTJrX3BjaV9kcml2ZXIgKmRyaXZlcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMjAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XHRyZXQgPSBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihBVEgxMktfREVWSUNFX0ZBTUlMWV9XSUZJNyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvcGNpLmMtMjAyLVx0XHRcdFx0XHQgXHUwMDI2YXRoMTJrX3dpZmk3X3BjaV9kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjYKCQkJCQkJCW91dHB1dDogOTUKCQkJCQkJCXRob3VnaHRzOiAyOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIFBDSSBkcml2ZXIgaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIGluc3RpbmN0IGlzIHRlbGxpbmcgbWUgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZy4gSXQmIzM5O3MgdGllZCB0byBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlLCB3aGljaCBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7cGh5c2ljYWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4mIzM0OyBTdGFuZGFyZCBRRU1VLCBhbmQgaW5kZWVkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgYXJlbiYjMzk7dCBnb2luZyB0byBjdXQgaXQuIFRoZXJlJiMzOTtzIG5vIGVtdWxhdGlvbiBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBTbywgeWVhaCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkmIzM5O20gbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRob3VnaC4gTm8gaGFybSBpbiBiZWluZyB0aG9yb3VnaC4gSXMgdGhlcmUgYW55IHRyaWNrZXJ5IHdpdGggYG1hYzgwMjExX2h3c2ltYCB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gTm9wZSwgaXQmIzM5O3MgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciwgbm90IHJlbGV2YW50IGhlcmUuIExvb2tpbmcgZGVlcGVyLCB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcyBhcmUgaGl0dGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9gLiAqVGhhdCogc2VhbHMgdGhlIGRlYWwuIFRoZSBndWlkZWxpbmVzIEkmIzM5O20gZm9sbG93aW5nIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQmIzM5O3MgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAg4oCTIGVzcGVjaWFsbHkgcmVxdWlyaW5nIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgbGlrZSB0aGlzIHZlbmRvci1zcGVjaWZpYyBRdWFsY29tbSBXaS1GaSA3IChQQ0llL0FIQikgZHJpdmVyIOKAkyB0aGVuIGl0JiMzOTtzIGEgbm8tZ28uIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBoZXJlLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBhc3Nlc3NtZW50IGlzIGNsZWFyOiBJJiMzOTttIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyB0eXBpY2FsIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDg6NTkuOTQxMTkwMzUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNzg1NTcwMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDg6NTkuOTQxMTk1OTAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEwMDA2Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNDExYjhiMjNlNmVkNTEwNmQ2OWVlNzFjOTVjYzgxZWNiYjA3ODdlMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDE4OjQ4OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5pbmRleCAyNjJhMjA0NTMwOWIxLi41YzBlZTc0ODA4Y2QxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcXG5AQCAtMTM5MSw4ICsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGVycl9oYWxfc3JuZ19kZWluaXQ7XFxuIFxcbi1cXHRjbGVhcl9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKTtcXG4tXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9kcF9yeC5jXFxuaW5kZXggOGZhMGU5MGI0NTMxNi4uNDczODU1ZGVkOGE3NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcXG5AQCAtNzUxLDYgKzc1MSw5IEBAIGludCBhdGgxMmtfZHBfcnhfYW1wZHVfc3RvcChzdHJ1Y3QgYXRoMTJrICphcixcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5KTtcXG4gXFxuK1xcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGFyc3RhID0gd2lwaHlfZGVyZWZlcmVuY2UoYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgYWhzdGEtXFx1MDAzZWxpbmtbbGlua19pZF0pO1xcbiBcXHRpZiAoIWFyc3RhKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbmluZGV4IDk5YmY1Y2Y3OWQxMDIuLjhjZWRjZGIyNGQzZmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG5AQCAtMTk4MSw5ICsxOTgxLDE2IEBAIHZvaWQgYXRoMTJrX21hY19oYW5kbGVfYmVhY29uX21pc3Moc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcdCAqIChkb25lIGJ5IG1hYzgwMjExKSBzdWNjZWVkcyBidXQgYmVhY29ucyBkbyBub3QgcmVzdW1lIHRoZW4gaXRcXG4gXFx0ICogZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbnRpbnVlIG9wZXJhdGlvbi4gUXVldWUgY29ubmVjdGlvbiBsb3NzIHdvcmtcXG4gXFx0ICogd2hpY2ggY2FuIGJlIGNhbmNlbGxlZCB3aGVuIGJlYWNvbiBpcyByZWNlaXZlZC5cXG4rXFx0ICpcXG4rXFx0ICogU2tpcCBmb3IgTUxPIGJlY2F1c2UgY29ubmVjdGlvbl9sb3NzX3dvcmsgZGlzY29ubmVjdHMgdGhlIGVudGlyZVxcbitcXHQgKiBWSUYgYmFzZWQgb24gYSBzaW5nbGUgbGluaydzIGJlYWNvbiBtaXNzLCBhbmQgaXRzIGNhbmNlbGxhdGlvblxcbitcXHQgKiBtZWNoYW5pc20gKGJlYWNvbiByZWNlcHRpb24gdmlhIFdNSSkgaXMgdW5yZWxpYWJsZS4gVGhlIG1hYzgwMjExXFxuK1xcdCAqIHByb2JlIHRyaWdnZXJlZCBieSBpZWVlODAyMTFfYmVhY29uX2xvc3MoKSBhYm92ZSBpcyBzdWZmaWNpZW50XFxuK1xcdCAqIHRvIGRldGVjdCByZWFsIEFQIHVucmVhY2hhYmlsaXR5LlxcbiBcXHQgKi9cXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXFx1MDAyNmFydmlmLVxcdTAwM2Vjb25uZWN0aW9uX2xvc3Nfd29yayxcXG4tXFx0XFx0XFx0XFx0ICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTtcXG4rXFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCh2aWYpKVxcbitcXHRcXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGh3LCBcXHUwMDI2YXJ2aWYtXFx1MDAzZWNvbm5lY3Rpb25fbG9zc193b3JrLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIEFUSDEyS19DT05ORUNUSU9OX0xPU1NfSFopO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3ZpZl9zdGFfY29ubmVjdGlvbl9sb3NzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbkBAIC00MzQxLDEyICs0MzQ4LDIyIEBAIGF0aDEya19tYWNfb3BfY2hhbmdlX3ZpZl9saW5rcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0c3RydWN0IGF0aDEya192aWYgKmFodmlmID0gYXRoMTJrX3ZpZl90b19haHZpZih2aWYpO1xcbiBcXHR1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyBcXHUwMDI2IH5uZXdfbGlua3M7XFxuIFxcdHVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyBcXHUwMDI2IG5ld19saW5rcztcXG4rXFx0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcXG4gXFx0c3RydWN0IGF0aDEya19odyAqYWggPSBhdGgxMmtfaHdfdG9fYWgoaHcpO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcXG4gXFx0dTggbGlua19pZDtcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVxcdTAwM2V3aXBoeSk7XFxuIFxcbitcXHRpZiAob2xkX2xpbmtzKSB7XFxuK1xcdFxcdGZvcl9lYWNoX3NldF9iaXQobGlua19pZCwgXFx1MDAyNmV4aXN0aW5nLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpIHtcXG4rXFx0XFx0XFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cXHUwMDNld2lwaHksIGFodmlmLVxcdTAwM2VsaW5rW2xpbmtfaWRdKTtcXG4rXFx0XFx0XFx0aWYgKGFydmlmIFxcdTAwMjZcXHUwMDI2IGFydmlmLVxcdTAwM2VhciBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhcnZpZi1cXHUwMDNlYXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbiBcXHRhdGgxMmtfZ2VuZXJpY19kYmcoQVRIMTJLX0RCR19NQUMsXFxuIFxcdFxcdFxcdCAgIFxcXCJtYWMgdmlmIGxpbmsgY2hhbmdlZCBmb3IgTUxEICVwTSBvbGRfbGlua3MgMHgleCBuZXdfbGlua3MgMHgleFxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgdmlmLVxcdTAwM2VhZGRyLCBvbGRfbGlua3MsIG5ld19saW5rcyk7XFxuQEAgLTU3NzMsNiArNTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXFx1MDAzZXdpcGh5KTtcXG4gXFxuK1xcdGZvcl9lYWNoX2FyKGFoLCBhciwgaSkge1xcbitcXHRcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhci1cXHUwMDNlYWItXFx1MDAzZWRldl9mbGFncykpXFxuK1xcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuK1xcdH1cXG4rXFxuIFxcdGNoYW5fbGlzdCA9IGt6YWxsb2Nfb2JqcygqY2hhbl9saXN0LCBod19yZXEtXFx1MDAzZXJlcS5uX2NoYW5uZWxzKTtcXG4gXFx0aWYgKCFjaGFuX2xpc3QpXFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbkBAIC02MDI1LDYgKzYwNDcsOSBAQCBzdGF0aWMgaW50IGF0aDEya19jbGVhcl9wZWVyX2tleXMoc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWYsXFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSk7XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSlcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmRwLVxcdTAwM2VkcF9sb2NrKTtcXG4gXFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cXHUwMDNldmRldl9pZCwgYWRkcik7XFxuIFxcdGlmICghcGVlciB8fCAhcGVlci1cXHUwMDNlZHBfcGVlcikge1xcbkBAIC02MTAwLDYgKzYxMjUsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc2V0X2tleShzdHJ1Y3QgYXRoMTJrICphciwgZW51bSBzZXRfa2V5X2NtZCBjbWQsXFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZkcC1cXHUwMDNlZHBfbG9jayk7XFxuIFxcbiBcXHRcXHRpZiAoY21kID09IFNFVF9LRVkpIHtcXG4rXFx0XFx0XFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncykpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAwO1xcbiBcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImNhbm5vdCBpbnN0YWxsIGtleSBmb3Igbm9uLWV4aXN0ZW50IHBlZXIgJXBNXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgICAgcGVlcl9hZGRyKTtcXG4gXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbkBAIC03MTAwLDcgKzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXFxuIFxcbiBcXHR3aXBoeV93b3JrX2NhbmNlbChhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyc3RhLVxcdTAwM2V1cGRhdGVfd2spO1xcbiBcXG4tXFx0aWYgKGFodmlmLVxcdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcXG4rXFx0aWYgKGFodmlmLVxcdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXFx1MDAyNmFyLVxcdTAwM2VhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbiBcXHRcXHRhdGgxMmtfYnNzX2Rpc2Fzc29jKGFyLCBhcnZpZik7XFxuIFxcdFxcdHJldCA9IGF0aDEya19tYWNfdmRldl9zdG9wKGFydmlmKTtcXG4gXFx0XFx0aWYgKHJldClcXG5AQCAtNzg2MSw2ICs3ODg5LDEwIEBAIGludCBhdGgxMmtfbWFjX29wX3N0YV9zdGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0ICogTUxPIGNhc2UuIE90aGVyIGNhc2VzIHdvdWxkIGJlIGhhbmRsZWQgaW4gdGhlIGZ1dHVyZS5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGFiID0gYWgtXFx1MDAzZXJhZGlvWzBdLmFiO1xcbitcXHRcXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFxcdTAwMjZhYi1cXHUwMDNlZGV2X2ZsYWdzKSkge1xcbitcXHRcXHRcXHRyZXQgPSAwO1xcbitcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuK1xcdFxcdH1cXG4gXFx0XFx0aWYgKGFiLVxcdTAwM2VhZy1cXHUwMDNlbnVtX2RldmljZXMgPT0gMSkge1xcbiBcXHRcXHRcXHRyZXQgPSBhdGgxMmtfbWFjX3NlbGVjdF9saW5rcyhhYiwgdmlmLCBodywgXFx1MDAyNnNlbGVjdGVkX2xpbmtzKTtcXG4gXFx0XFx0XFx0aWYgKHJldCkge1xcbkBAIC0xMjY2MSw2ICsxMjY5Myw5IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19mbHVzaChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0bG9uZyB0aW1lX2xlZnQ7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXG4rXFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRyZXR1cm4gLUVTSFVURE9XTjtcXG4rXFxuIFxcdHRpbWVfbGVmdCA9IHdhaXRfZXZlbnRfdGltZW91dChhci1cXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEsXFxuIFxcdFxcdFxcdFxcdCAgICAgICAoYXRvbWljX3JlYWQoXFx1MDAyNmFyLVxcdTAwM2VkcC5udW1fdHhfcGVuZGluZykgPT0gMCksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBBVEgxMktfRkxVU0hfVElNRU9VVCk7XFxuQEAgLTEzNTU5LDYgKzEzNTk0LDggQEAgYXRoMTJrX21hY19vcF9yZWNvbmZpZ19jb21wbGV0ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XFxuIFxcdFxcdGFiID0gYXItXFx1MDAzZWFiO1xcbiBcXG4rXFx0XFx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcXHUwMDI2YWItXFx1MDAzZWRldl9mbGFncyk7XFxuK1xcbiBcXHRcXHRhdGgxMmtfd2Fybihhci1cXHUwMDNlYWIsIFxcXCJwZGV2ICVkIHN1Y2Nlc3NmdWxseSByZWNvdmVyZWRcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgICBhci1cXHUwMDNlcGRldi1cXHUwMDNlcGRldl9pZCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuaW5kZXggODBlZGViZjBlMzY0Yi4uZDY0ZTYyMTkyY2Q3ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXFxuQEAgLTM3NiwxMiArMzc2LDE4IEBAIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0XFxuIFxcdHVuc2lnbmVkIGxvbmcgbGlua3M7XFxuIFxcdHN0cnVjdCBhdGgxMmsgKmFyO1xcbiBcXHR1OCBsaW5rX2lkO1xcbitcXHRpbnQgaTtcXG4gXFxuIFxcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGFoLVxcdTAwM2Vody1cXHUwMDNld2lwaHkpO1xcbiBcXG4gXFx0aWYgKCFzdGEtXFx1MDAzZW1sbylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRmb3JfZWFjaF9hcihhaCwgYXIsIGkpIHtcXG4rXFx0XFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcXHUwMDI2YXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0c3RydWN0IGF0aDEya19wZWVyX2RlbGV0ZV93YWl0ICp3YWl0cyBfX2ZyZWUoa2ZyZWUpID1cXG4gXFx0XFx0XFx0XFx0a3phbGxvY19vYmpzKCp3YWl0cywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKTtcXG4gXFx0aWYgKCF3YWl0cylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MDEuMTUxODczMDU5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTU5Njc4Njk2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDExYjhiMjNlNmVkNTEwNmQ2OWVlNzFjOTVjYzgxZWNiYjA3ODdlMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTg6NDg6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5pbmRleCAyNjJhMjA0NTMwOWIxLi41YzBlZTc0ODA4Y2QxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTM5MSw4ICsxMzkxLDYgQEAgc3RhdGljIGludCBhdGgxMmtfY29yZV9yZWNvbmZpZ3VyZV9vbl9jcmFzaChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuIFx0aWYgKHJldClcbiBcdFx0Z290byBlcnJfaGFsX3NybmdfZGVpbml0O1xuIFxuLVx0Y2xlYXJfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpO1xuLVxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyX2hhbF9zcm5nX2RlaW5pdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbmluZGV4IDhmYTBlOTBiNDUzMTYuLjQ3Mzg1NWRlZDhhNzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2RwX3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZHBfcnguY1xuQEAgLTc1MSw2ICs3NTEsOSBAQCBpbnQgYXRoMTJrX2RwX3J4X2FtcGR1X3N0b3Aoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5KTtcbiBcbitcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRhcnN0YSA9IHdpcGh5X2RlcmVmZXJlbmNlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4gXHRcdFx0XHQgIGFoc3RhLVx1MDAzZWxpbmtbbGlua19pZF0pO1xuIFx0aWYgKCFhcnN0YSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggOTliZjVjZjc5ZDEwMi4uOGNlZGNkYjI0ZDNmZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcbkBAIC0xOTgxLDkgKzE5ODEsMTYgQEAgdm9pZCBhdGgxMmtfbWFjX2hhbmRsZV9iZWFjb25fbWlzcyhzdHJ1Y3QgYXRoMTJrICphcixcbiBcdCAqIChkb25lIGJ5IG1hYzgwMjExKSBzdWNjZWVkcyBidXQgYmVhY29ucyBkbyBub3QgcmVzdW1lIHRoZW4gaXRcbiBcdCAqIGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb250aW51ZSBvcGVyYXRpb24uIFF1ZXVlIGNvbm5lY3Rpb24gbG9zcyB3b3JrXG4gXHQgKiB3aGljaCBjYW4gYmUgY2FuY2VsbGVkIHdoZW4gYmVhY29uIGlzIHJlY2VpdmVkLlxuK1x0ICpcbitcdCAqIFNraXAgZm9yIE1MTyBiZWNhdXNlIGNvbm5lY3Rpb25fbG9zc193b3JrIGRpc2Nvbm5lY3RzIHRoZSBlbnRpcmVcbitcdCAqIFZJRiBiYXNlZCBvbiBhIHNpbmdsZSBsaW5rJ3MgYmVhY29uIG1pc3MsIGFuZCBpdHMgY2FuY2VsbGF0aW9uXG4rXHQgKiBtZWNoYW5pc20gKGJlYWNvbiByZWNlcHRpb24gdmlhIFdNSSkgaXMgdW5yZWxpYWJsZS4gVGhlIG1hYzgwMjExXG4rXHQgKiBwcm9iZSB0cmlnZ2VyZWQgYnkgaWVlZTgwMjExX2JlYWNvbl9sb3NzKCkgYWJvdmUgaXMgc3VmZmljaWVudFxuK1x0ICogdG8gZGV0ZWN0IHJlYWwgQVAgdW5yZWFjaGFiaWxpdHkuXG4gXHQgKi9cbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoaHcsIFx1MDAyNmFydmlmLVx1MDAzZWNvbm5lY3Rpb25fbG9zc193b3JrLFxuLVx0XHRcdFx0ICAgICBBVEgxMktfQ09OTkVDVElPTl9MT1NTX0haKTtcbitcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQodmlmKSlcbitcdFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXJ2aWYtXHUwMDNlY29ubmVjdGlvbl9sb3NzX3dvcmssXG4rXHRcdFx0XHRcdCAgICAgQVRIMTJLX0NPTk5FQ1RJT05fTE9TU19IWik7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfdmlmX3N0YV9jb25uZWN0aW9uX2xvc3Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtNDM0MSwxMiArNDM0OCwyMiBAQCBhdGgxMmtfbWFjX29wX2NoYW5nZV92aWZfbGlua3Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWYgPSBhdGgxMmtfdmlmX3RvX2FodmlmKHZpZik7XG4gXHR1bnNpZ25lZCBsb25nIHRvX3JlbW92ZSA9IG9sZF9saW5rcyBcdTAwMjYgfm5ld19saW5rcztcbiBcdHVuc2lnbmVkIGxvbmcgdG9fYWRkID0gfm9sZF9saW5rcyBcdTAwMjYgbmV3X2xpbmtzO1xuK1x0dW5zaWduZWQgbG9uZyBleGlzdGluZyA9IG9sZF9saW5rcztcbiBcdHN0cnVjdCBhdGgxMmtfaHcgKmFoID0gYXRoMTJrX2h3X3RvX2FoKGh3KTtcbiBcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0dTggbGlua19pZDtcbiBcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGh3LVx1MDAzZXdpcGh5KTtcbiBcbitcdGlmIChvbGRfbGlua3MpIHtcbitcdFx0Zm9yX2VhY2hfc2V0X2JpdChsaW5rX2lkLCBcdTAwMjZleGlzdGluZywgSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTKSB7XG4rXHRcdFx0YXJ2aWYgPSB3aXBoeV9kZXJlZmVyZW5jZShody1cdTAwM2V3aXBoeSwgYWh2aWYtXHUwMDNlbGlua1tsaW5rX2lkXSk7XG4rXHRcdFx0aWYgKGFydmlmIFx1MDAyNlx1MDAyNiBhcnZpZi1cdTAwM2VhciBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgdGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFydmlmLVx1MDAzZWFyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0YXRoMTJrX2dlbmVyaWNfZGJnKEFUSDEyS19EQkdfTUFDLFxuIFx0XHRcdCAgIFwibWFjIHZpZiBsaW5rIGNoYW5nZWQgZm9yIE1MRCAlcE0gb2xkX2xpbmtzIDB4JXggbmV3X2xpbmtzIDB4JXhcXG5cIixcbiBcdFx0XHQgICB2aWYtXHUwMDNlYWRkciwgb2xkX2xpbmtzLCBuZXdfbGlua3MpO1xuQEAgLTU3NzMsNiArNTc5MCwxMSBAQCBpbnQgYXRoMTJrX21hY19vcF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoaHctXHUwMDNld2lwaHkpO1xuIFxuK1x0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4rXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0XHRyZXR1cm4gLUVCVVNZO1xuK1x0fVxuK1xuIFx0Y2hhbl9saXN0ID0ga3phbGxvY19vYmpzKCpjaGFuX2xpc3QsIGh3X3JlcS1cdTAwM2VyZXEubl9jaGFubmVscyk7XG4gXHRpZiAoIWNoYW5fbGlzdClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtNjAyNSw2ICs2MDQ3LDkgQEAgc3RhdGljIGludCBhdGgxMmtfY2xlYXJfcGVlcl9rZXlzKHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmLFxuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXG4rXHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmRwLVx1MDAzZWRwX2xvY2spO1xuIFx0cGVlciA9IGF0aDEya19kcF9saW5rX3BlZXJfZmluZF9ieV92ZGV2X2FuZF9hZGRyKGRwLCBhcnZpZi1cdTAwM2V2ZGV2X2lkLCBhZGRyKTtcbiBcdGlmICghcGVlciB8fCAhcGVlci1cdTAwM2VkcF9wZWVyKSB7XG5AQCAtNjEwMCw2ICs2MTI1LDggQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX3NldF9rZXkoc3RydWN0IGF0aDEyayAqYXIsIGVudW0gc2V0X2tleV9jbWQgY21kLFxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZkcC1cdTAwM2VkcF9sb2NrKTtcbiBcbiBcdFx0aWYgKGNtZCA9PSBTRVRfS0VZKSB7XG4rXHRcdFx0aWYgKHRlc3RfYml0KEFUSDEyS19GTEFHX1JFQ09WRVJZLCBcdTAwMjZhYi1cdTAwM2VkZXZfZmxhZ3MpKVxuK1x0XHRcdFx0cmV0dXJuIDA7XG4gXHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwiY2Fubm90IGluc3RhbGwga2V5IGZvciBub24tZXhpc3RlbnQgcGVlciAlcE1cXG5cIixcbiBcdFx0XHRcdCAgICBwZWVyX2FkZHIpO1xuIFx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbkBAIC03MTAwLDcgKzcxMjcsOCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfc3RhdGlvbl9yZW1vdmUoc3RydWN0IGF0aDEyayAqYXIsXG4gXG4gXHR3aXBoeV93b3JrX2NhbmNlbChhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSwgXHUwMDI2YXJzdGEtXHUwMDNldXBkYXRlX3drKTtcbiBcbi1cdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEpIHtcbitcdGlmIChhaHZpZi1cdTAwM2V2ZGV2X3R5cGUgPT0gV01JX1ZERVZfVFlQRV9TVEEgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCBcdTAwMjZhci1cdTAwM2VhYi1cdTAwM2VkZXZfZmxhZ3MpKSB7XG4gXHRcdGF0aDEya19ic3NfZGlzYXNzb2MoYXIsIGFydmlmKTtcbiBcdFx0cmV0ID0gYXRoMTJrX21hY192ZGV2X3N0b3AoYXJ2aWYpO1xuIFx0XHRpZiAocmV0KVxuQEAgLTc4NjEsNiArNzg4OSwxMCBAQCBpbnQgYXRoMTJrX21hY19vcF9zdGFfc3RhdGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdCAqIE1MTyBjYXNlLiBPdGhlciBjYXNlcyB3b3VsZCBiZSBoYW5kbGVkIGluIHRoZSBmdXR1cmUuXG4gXHRcdCAqL1xuIFx0XHRhYiA9IGFoLVx1MDAzZXJhZGlvWzBdLmFiO1xuK1x0XHRpZiAodGVzdF9iaXQoQVRIMTJLX0ZMQUdfUkVDT1ZFUlksIFx1MDAyNmFiLVx1MDAzZWRldl9mbGFncykpIHtcbitcdFx0XHRyZXQgPSAwO1xuK1x0XHRcdGdvdG8gZXhpdDtcbitcdFx0fVxuIFx0XHRpZiAoYWItXHUwMDNlYWctXHUwMDNlbnVtX2RldmljZXMgPT0gMSkge1xuIFx0XHRcdHJldCA9IGF0aDEya19tYWNfc2VsZWN0X2xpbmtzKGFiLCB2aWYsIGh3LCBcdTAwMjZzZWxlY3RlZF9saW5rcyk7XG4gXHRcdFx0aWYgKHJldCkge1xuQEAgLTEyNjYxLDYgKzEyNjkzLDkgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2ZsdXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0bG9uZyB0aW1lX2xlZnQ7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbitcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0cmV0dXJuIC1FU0hVVERPV047XG4rXG4gXHR0aW1lX2xlZnQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoYXItXHUwMDNlZHAudHhfZW1wdHlfd2FpdHEsXG4gXHRcdFx0XHQgICAgICAgKGF0b21pY19yZWFkKFx1MDAyNmFyLVx1MDAzZWRwLm51bV90eF9wZW5kaW5nKSA9PSAwKSxcbiBcdFx0XHRcdCAgICAgICBBVEgxMktfRkxVU0hfVElNRU9VVCk7XG5AQCAtMTM1NTksNiArMTM1OTQsOCBAQCBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4gXHRcdGFiID0gYXItXHUwMDNlYWI7XG4gXG4rXHRcdGNsZWFyX2JpdChBVEgxMktfRkxBR19SRUNPVkVSWSwgXHUwMDI2YWItXHUwMDNlZGV2X2ZsYWdzKTtcbitcbiBcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwicGRldiAlZCBzdWNjZXNzZnVsbHkgcmVjb3ZlcmVkXFxuXCIsXG4gXHRcdFx0ICAgIGFyLVx1MDAzZXBkZXYtXHUwMDNlcGRldl9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wZWVyLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuaW5kZXggODBlZGViZjBlMzY0Yi4uZDY0ZTYyMTkyY2Q3ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGVlci5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BlZXIuY1xuQEAgLTM3NiwxMiArMzc2LDE4IEBAIGludCBhdGgxMmtfcGVlcl9tbG9fbGlua19wZWVyc19kZWxldGUoc3RydWN0IGF0aDEya192aWYgKmFodmlmLCBzdHJ1Y3QgYXRoMTJrX3N0XG4gXHR1bnNpZ25lZCBsb25nIGxpbmtzO1xuIFx0c3RydWN0IGF0aDEyayAqYXI7XG4gXHR1OCBsaW5rX2lkO1xuK1x0aW50IGk7XG4gXG4gXHRsb2NrZGVwX2Fzc2VydF93aXBoeShhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSk7XG4gXG4gXHRpZiAoIXN0YS1cdTAwM2VtbG8pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0Zm9yX2VhY2hfYXIoYWgsIGFyLCBpKSB7XG4rXHRcdGlmICh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2YXItXHUwMDNlYWItXHUwMDNlZGV2X2ZsYWdzKSlcbitcdFx0XHRyZXR1cm4gMDtcbitcdH1cbitcbiBcdHN0cnVjdCBhdGgxMmtfcGVlcl9kZWxldGVfd2FpdCAqd2FpdHMgX19mcmVlKGtmcmVlKSA9XG4gXHRcdFx0XHRremFsbG9jX29ianMoKndhaXRzLCBJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1MpO1xuIFx0aWYgKCF3YWl0cylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjQ5OjAxLjE1MTg3NDM4OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMTUxNjcwNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBhbiBhdGgxMmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgYXRoMTJrYCBkcml2ZXIuIEl0IHNlZW1zIHRvIGJlIGFkZGluZyBhIGJ1bmNoIG9mIGNoZWNrcyBmb3IgdGhlc2UgcmVjb3ZlcnkgYW5kIGNyYXNoIGZsYWdzLCBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGFuZCBgQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0hgLCB3aXRoaW4gdmFyaW91cyBNQUMgb3BlcmF0aW9ucy4gSSBzZWUgaXQncyB0b3VjaGluZyBzZXZlcmFsIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfbWFjX29wX2NoYW5nZV92aWZfbGlua3NgLCBgYXRoMTJrX21hY19vcF9od19zY2FuYCwgYW5kIHNvIG9uLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXkndmUgbW92ZWQgdGhlIGNsZWFyaW5nIG9mIHRoZSBgQVRIMTJLX0ZMQUdfUkVDT1ZFUllgIGZsYWcgdG8gYSBkaWZmZXJlbnQgZnVuY3Rpb24gZW50aXJlbHksIGBhdGgxMmtfbWFjX29wX3JlY29uZmlnX2NvbXBsZXRlYC4gSW50ZXJlc3RpbmcuLi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gSSBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseT8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHRyeSBRRU1VLCBzaW5jZSB0aGF0J3Mgb2Z0ZW4gbXkgZ28tdG8gZm9yIGtlcm5lbCBkcml2ZXIgd29yay4gQnV0LCB3YWl0LCB0aGlzIGlzIGFuIGBhdGgxMmtgIGRyaXZlci4gSXQncyBzcGVjaWZpY2FsbHkgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcy4gSXQgc3VwcG9ydHMgUENJIGFuZCBBSEIgZGV2aWNlcy4gSG1tbS4uLiBkb2VzIFFFTVUgZXZlbiBlbXVsYXRlIGBhdGgxMmtgIGhhcmR3YXJlPyBJJ20gcHJldHR5IHN1cmUgaXQgZG9lc24ndC4gUUVNVSBkb2VzIGhhdmUgYG1hYzgwMjExX2h3c2ltYCwgYnV0IHRoYXQncyBhICpnZW5lcmFsKiBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgZG9lc24ndCBkaXJlY3RseSBtYXAgdG8gdGhlIGBhdGgxMmtgIGRyaXZlci5cblxuT2theSwgbmV4dCBvcHRpb24uLi4gaG93IGFib3V0IHN5emthbGxlcj8gSXQncyBncmVhdCBmb3IgZnV6emluZy4gU2FkbHksIHN5emthbGxlciBkb2Vzbid0IGhhdmUgdGhlIGhhcmR3YXJlIGZvciBhdGgxMmssIG9yIGF0IGxlYXN0IG5vIGV4cGxpY2l0IHN1cHBvcnQgZm9yIGl0LiBXYWl0LCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IFVTQiBmdXp6aW5nLCBhbmQgUENJIGZ1enppbmcgdGhyb3VnaCB2UENJLiBIb3dldmVyLCBQQ0kgZnV6emluZyBpbiBzeXprYWxsZXIgaXMgcXVpdGUgbGltaXRlZCwgYW5kIHVzdWFsbHksIHdlIGF2b2lkIHZlbmRvci1zcGVjaWZpYyBQQ0kvUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUuXG5cbkhhbmcgb24uLi4gSSBuZWVkIHRvIHJlZmVyIGJhY2sgdG8gdGhlIGluc3RydWN0aW9ucy4uLlxuXG5cIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuQWxyaWdodCwgaXMgYGF0aDEya2AgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXI/IFllcywgaXQncyBhIFF1YWxjb21tIFdpLUZpIGRyaXZlciwgc28gdGhhdCB3b3VsZCBhcHBseS5cblxuQWxyaWdodCwgb25lIGxhc3QgY2hlY2ssIGlzIGl0IGEgUENJIGRyaXZlcj8gWWVzLlxuXG5TbywgcmVhbGlzdGljYWxseSwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2V0dXAsIHRoaXMgaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUgYSBcIldvcnRoRnV6emluZz1mYWxzZVwiIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzQ4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MTAuNDY3MDQzNDA5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NDYxOTQ4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTgxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgX19tYXliZV91bnVzZWQgYXRoMTJrX3BjaV9wbV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODE5OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBhdGgxMmtfcGNpX2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xODQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0NjpcXHRyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlcihwY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM6MTg0ODpFWFBPUlRfU1lNQk9MKGF0aDEya19wY2lfcmVnaXN0ZXJfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4NDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oPTE3Nj12b2lkIGF0aDEya19wY2lfcG93ZXJfZG93bihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBib29sIGlzX3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmg6MTc3OmludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5oLTE3OC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGF0aDEya19wY2lfZHJpdmVyICpkcml2ZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYz0xOTc9aW50IGF0aDEya193aWZpN19wY2lfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYzoyMDE6XFx0cmV0ID0gYXRoMTJrX3BjaV9yZWdpc3Rlcl9kcml2ZXIoQVRIMTJLX0RFVklDRV9GQU1JTFlfV0lGSTcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9wY2kuYy0yMDItXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZhdGgxMmtfd2lmaTdfcGNpX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE4OjQ5OjEwLjY2MTY2ODgzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0NTgwNTA3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBQQ0kgZHJpdmVyIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgd29ydGggdGhlIGVmZm9ydCBmb3IgZnV6emluZy4gSXQncyB0aWVkIHRvIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IHNjcmVhbXMgXCJwaHlzaWNhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LlwiIFN0YW5kYXJkIFFFTVUsIGFuZCBpbmRlZWQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFLCBhcmVuJ3QgZ29pbmcgdG8gY3V0IGl0LiBUaGVyZSdzIG5vIGVtdWxhdGlvbiBvZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiBTbywgeWVhaCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEknbSBsZWFuaW5nIHRvd2FyZHMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrIHRob3VnaC4gTm8gaGFybSBpbiBiZWluZyB0aG9yb3VnaC4gSXMgdGhlcmUgYW55IHRyaWNrZXJ5IHdpdGggYG1hYzgwMjExX2h3c2ltYCB0aGF0IG1pZ2h0IHByb3ZpZGUgYSBiYWNrZG9vcj8gTm9wZSwgaXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBub3QgcmVsZXZhbnQgaGVyZS4gTG9va2luZyBkZWVwZXIsIHRoZSBwYXRjaCdzIGNoYW5nZXMgYXJlIGhpdHRpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYC4gKlRoYXQqIHNlYWxzIHRoZSBkZWFsLiBUaGUgZ3VpZGVsaW5lcyBJJ20gZm9sbG93aW5nIGFyZSBwcmV0dHkgY2xlYXIgb24gdGhpczogaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXQncyBpbXBvc3NpYmxlIHRvIHRyaWdnZXIgaW4gYSB2aXJ0dWFsaXplZCBzZXR1cCDigJMgZXNwZWNpYWxseSByZXF1aXJpbmcgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIGVudmlyb25tZW50LCBsaWtlIHRoaXMgdmVuZG9yLXNwZWNpZmljIFF1YWxjb21tIFdpLUZpIDcgKFBDSWUvQUhCKSBkcml2ZXIg4oCTIHRoZW4gaXQncyBhIG5vLWdvLiBXZSdyZSB0YWxraW5nIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBoZXJlLlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGFzc2Vzc21lbnQgaXMgY2xlYXI6IEknbSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjYsIk91dHB1dFRva2VucyI6OTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTg6NDk6MTcuMTE5NzIyMDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIHR5cGljYWwgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgdHlwaWNhbCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqltf5[1] Phase: Running StartedAt: 2026-08-04 18:49:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqltf5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-04 18:49:29 +0000 UTC FinishedAt: 2026-08-04 18:49:34 +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,}