Name: series-workflowzdb2w Phase: Failed StartedAt: 2026-07-27 00:47:32 +0000 UTC FinishedAt: 2026-07-27 01:05:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdb2w[0] Phase: Succeeded StartedAt: 2026-07-27 00:47:32 +0000 UTC FinishedAt: 2026-07-27 01:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdb2w[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 00:47:32 +0000 UTC FinishedAt: 2026-07-27 01:04:49 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0KSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDE6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNzE4NTY2Yjc4NTNiMjIxZWJiM2YzNjBjNzU2NmI2MzU0MWY2OWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDE6MDI6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uY1xuaW5kZXggY2IwYWUwNjUwOTA1YzYuLjdlZDE3ZmFjZWQ1NDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXG5AQCAtMTA3LDcgJiM0MzsxMDcsNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG4gc3RhdGljIHZvaWQgcWVkZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG4gc3RhdGljIHZvaWQgcWVkZV9saW5rX3VwZGF0ZSh2b2lkICpkZXYsIHN0cnVjdCBxZWRfbGlua19vdXRwdXQgKmxpbmspO1xuIHN0YXRpYyB2b2lkIHFlZGVfc2NoZWR1bGVfcmVjb3ZlcnlfaGFuZGxlcih2b2lkICpkZXYpO1xuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpO1xuJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX2h3X2Vycl9oYW5kbGVyKHZvaWQgKmRldixcbiBcdFx0XHRcdFx0IGVudW0gcWVkX2h3X2Vycl90eXBlIGVycl90eXBlKTtcbiBzdGF0aWMgdm9pZCBxZWRlX2dldF9ldGhfdGx2X2RhdGEodm9pZCAqZWRldiwgdm9pZCAqZGF0YSk7XG5AQCAtMTA0MywyMSAmIzQzOzEwNDMsNiBAQCB2b2lkIF9fcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmVkZXYtXHUwMDNlcWVkZV9sb2NrKTtcbiB9XG4gXG4tLyogVGhpcyB2ZXJzaW9uIG9mIHRoZSBsb2NrIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBSVE5MIGxvY2sgaXMgYWxzb1xuLSAqIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgaW50ZXJuYWwgcWVkZSBsb2NrLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHFlZGVfbG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4te1xuLVx0cnRubF9sb2NrKCk7XG4tXHRfX3FlZGVfbG9jayhlZGV2KTtcbi19XG4tXG4tc3RhdGljIHZvaWQgcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuLXtcbi1cdF9fcWVkZV91bmxvY2soZWRldik7XG4tXHRydG5sX3VubG9jaygpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBxZWRlX3BlcmlvZGljX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCBxZWRlX2RldiAqZWRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcWVkZV9kZXYsXG5AQCAtMTA5NCw2ICYjNDM7MTA3OSw4IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHQgKi9cbiBcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgXHUwMDI2ZWRldi1cdTAwM2VzcF9mbGFncykpIHtcbiYjNDM7XHRcdGJvb2wgcmVsb2FkZWQ7XG4mIzQzO1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZWRldi1cdTAwM2VwZXJpb2RpY190YXNrKTtcbiAjaWZkZWYgQ09ORklHX1FFRF9TUklPVlxuIFx0XHQvKiBTUklPViBtdXN0IGJlIGRpc2FibGVkIG91dHNpZGUgdGhlIGxvY2sgdG8gYXZvaWQgYSBkZWFkbG9jay5cbkBAIC0xMTAyLDkgJiM0MzsxMDg5LDE3IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdGlmIChwY2lfbnVtX3ZmKGVkZXYtXHUwMDNlcGRldikpXG4gXHRcdFx0cWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi1cdTAwM2VwZGV2LCAwKTtcbiAjZW5kaWZcbi1cdFx0cWVkZV9sb2NrKGVkZXYpO1xuLVx0XHRxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7XG4tXHRcdHFlZGVfdW5sb2NrKGVkZXYpO1xuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0XHRfX3FlZGVfbG9jayhlZGV2KTtcbiYjNDM7XHRcdHJlbG9hZGVkID0gcWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpO1xuJiM0MztcdFx0X19xZWRlX3VubG9jayhlZGV2KTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgdWRwX3R1bm5lbCBjb3JlIHN5bmNocm9ub3VzbHkgY2FsbHMgYmFjayBpbnRvXG4mIzQzO1x0XHQgKiBxZWRlX3VkcF90dW5uZWxfc3luYygpLCB3aGljaCB0YWtlcyB0aGUgcWVkZSBsb2NrLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAocmVsb2FkZWQpXG4mIzQzO1x0XHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiBcdH1cbiBcbiBcdF9fcWVkZV9sb2NrKGVkZXYpO1xuQEAgLTI2NDUsOSAmIzQzOzI2NDAsMTMgQEAgc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9mYWlsZWQoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0XHRlZGV2LVx1MDAzZW9wcy1cdTAwM2Vjb21tb24tXHUwMDNlc2V0X3Bvd2VyX3N0YXRlKGVkZXYtXHUwMDNlY2RldiwgUENJX0QzaG90KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbiYjNDM7LyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xuJiM0MzsgKiB1ZHBfdHVubmVsIHBvcnRzIG5lZWQgdG8gYmUgcmUtc3luY2VkIGJ5IHRoZSBjYWxsZXIuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIHtcbiBcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cdTAwM2VzdGF0ZTtcbiYjNDM7XHRib29sIHJlbG9hZGVkID0gZmFsc2U7XG4gXHRpbnQgcmM7XG4gXG4gXHREUF9OT1RJQ0UoZWRldiwgXCYjMzQ7U3RhcnRpbmcgYSByZWNvdmVyeSBwcm9jZXNzXFxuXCYjMzQ7KTtcbkBAIC0yNjc3LDE3ICYjNDM7MjY3NiwxOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0XHRcdGdvdG8gZXJyO1xuIFxuIFx0XHRxZWRlX2NvbmZpZ19yeF9tb2RlKGVkZXYtXHUwMDNlbmRldik7XG4tXHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuJiM0MztcdFx0cmVsb2FkZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0ZWRldi1cdTAwM2VzdGF0ZSA9IGN1cnJfc3RhdGU7XG4gXG4gXHREUF9OT1RJQ0UoZWRldiwgXCYjMzQ7UmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcblwmIzM0Oyk7XG4gXG4tXHRyZXR1cm47XG4mIzQzO1x0cmV0dXJuIHJlbG9hZGVkO1xuIFxuIGVycjpcbiBcdHFlZGVfcmVjb3ZlcnlfZmFpbGVkKGVkZXYpO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzcxODU2NmI3ODUzYjIyMWViYjNmMzYwYzc1NjZiNjM1NDFmNjlhMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDAxOjAyOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYwppbmRleCBjYjBhZTA2NTA5MDVjNi4uN2VkMTdmYWNlZDU0MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jCkBAIC0xMDcsNyAmIzQzOzEwNyw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKIHN0YXRpYyB2b2lkIHFlZGVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogc3RhdGljIHZvaWQgcWVkZV9saW5rX3VwZGF0ZSh2b2lkICpkZXYsIHN0cnVjdCBxZWRfbGlua19vdXRwdXQgKmxpbmspOwogc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9yZWNvdmVyeV9oYW5kbGVyKHZvaWQgKmRldik7Ci1zdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTsKJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTsKIHN0YXRpYyB2b2lkIHFlZGVfc2NoZWR1bGVfaHdfZXJyX2hhbmRsZXIodm9pZCAqZGV2LAogCQkJCQkgZW51bSBxZWRfaHdfZXJyX3R5cGUgZXJyX3R5cGUpOwogc3RhdGljIHZvaWQgcWVkZV9nZXRfZXRoX3Rsdl9kYXRhKHZvaWQgKmVkZXYsIHZvaWQgKmRhdGEpOwpAQCAtMTA0MywyMSAmIzQzOzEwNDMsNiBAQCB2b2lkIF9fcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KQogCW11dGV4X3VubG9jaygmYW1wO2VkZXYtJmd0O3FlZGVfbG9jayk7CiB9CiAKLS8qIFRoaXMgdmVyc2lvbiBvZiB0aGUgbG9jayBzaG91bGQgYmUgdXNlZCB3aGVuIGFjcXVpcmluZyB0aGUgUlROTCBsb2NrIGlzIGFsc28KLSAqIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgaW50ZXJuYWwgcWVkZSBsb2NrLgotICovCi1zdGF0aWMgdm9pZCBxZWRlX2xvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KQotewotCXJ0bmxfbG9jaygpOwotCV9fcWVkZV9sb2NrKGVkZXYpOwotfQotCi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCi17Ci0JX19xZWRlX3VubG9jayhlZGV2KTsKLQlydG5sX3VubG9jaygpOwotfQotCiBzdGF0aWMgdm9pZCBxZWRlX3BlcmlvZGljX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBxZWRlX2RldiAqZWRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcWVkZV9kZXYsCkBAIC0xMDk0LDYgJiM0MzsxMDc5LDggQEAgc3RhdGljIHZvaWQgcWVkZV9zcF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkgKi8KIAogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgJmFtcDtlZGV2LSZndDtzcF9mbGFncykpIHsKJiM0MzsJCWJvb2wgcmVsb2FkZWQ7CiYjNDM7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2VkZXYtJmd0O3BlcmlvZGljX3Rhc2spOwogI2lmZGVmIENPTkZJR19RRURfU1JJT1YKIAkJLyogU1JJT1YgbXVzdCBiZSBkaXNhYmxlZCBvdXRzaWRlIHRoZSBsb2NrIHRvIGF2b2lkIGEgZGVhZGxvY2suCkBAIC0xMTAyLDkgJiM0MzsxMDg5LDE3IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWlmIChwY2lfbnVtX3ZmKGVkZXYtJmd0O3BkZXYpKQogCQkJcWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi0mZ3Q7cGRldiwgMCk7CiAjZW5kaWYKLQkJcWVkZV9sb2NrKGVkZXYpOwotCQlxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7Ci0JCXFlZGVfdW5sb2NrKGVkZXYpOwomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlfX3FlZGVfbG9jayhlZGV2KTsKJiM0MzsJCXJlbG9hZGVkID0gcWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpOwomIzQzOwkJX19xZWRlX3VubG9jayhlZGV2KTsKJiM0MzsKJiM0MzsJCS8qIFRoZSB1ZHBfdHVubmVsIGNvcmUgc3luY2hyb25vdXNseSBjYWxscyBiYWNrIGludG8KJiM0MzsJCSAqIHFlZGVfdWRwX3R1bm5lbF9zeW5jKCksIHdoaWNoIHRha2VzIHRoZSBxZWRlIGxvY2suCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChyZWxvYWRlZCkKJiM0MzsJCQl1ZHBfdHVubmVsX25pY19yZXNldF9udGYoZWRldi0mZ3Q7bmRldik7CiYjNDM7CQlydG5sX3VubG9jaygpOwogCX0KIAogCV9fcWVkZV9sb2NrKGVkZXYpOwpAQCAtMjY0NSw5ICYjNDM7MjY0MCwxMyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2ZhaWxlZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCiAJCWVkZXYtJmd0O29wcy0mZ3Q7Y29tbW9uLSZndDtzZXRfcG93ZXJfc3RhdGUoZWRldi0mZ3Q7Y2RldiwgUENJX0QzaG90KTsKIH0KIAotc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKJiM0MzsvKiBSZXR1cm5zIHRydWUgaWYgYW4gb3BlbiBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWxvYWRlZCBhbmQgaXRzCiYjNDM7ICogdWRwX3R1bm5lbCBwb3J0cyBuZWVkIHRvIGJlIHJlLXN5bmNlZCBieSB0aGUgY2FsbGVyLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCiB7CiAJdTMyIGN1cnJfc3RhdGUgPSBlZGV2LSZndDtzdGF0ZTsKJiM0MzsJYm9vbCByZWxvYWRlZCA9IGZhbHNlOwogCWludCByYzsKIAogCURQX05PVElDRShlZGV2LCAmIzM0O1N0YXJ0aW5nIGEgcmVjb3ZlcnkgcHJvY2Vzc1xuJiMzNDspOwpAQCAtMjY3NywxNyAmIzQzOzI2NzYsMTggQEAgc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKIAkJCWdvdG8gZXJyOwogCiAJCXFlZGVfY29uZmlnX3J4X21vZGUoZWRldi0mZ3Q7bmRldik7Ci0JCXVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LSZndDtuZGV2KTsKJiM0MzsJCXJlbG9hZGVkID0gdHJ1ZTsKIAl9CiAKIAllZGV2LSZndDtzdGF0ZSA9IGN1cnJfc3RhdGU7CiAKIAlEUF9OT1RJQ0UoZWRldiwgJiMzNDtSZWNvdmVyeSBoYW5kbGluZyBpcyBkb25lXG4mIzM0Oyk7CiAKLQlyZXR1cm47CiYjNDM7CXJldHVybiByZWxvYWRlZDsKIAogZXJyOgogCXFlZGVfcmVjb3ZlcnlfZmFpbGVkKGVkZXYpOwomIzQzOwlyZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIHFlZGVfYXRvbWljX2h3X2Vycl9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNgoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDM3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcWVkZSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBgcWVkZV9yZWNvdmVyeV9oYW5kbGVyYCBhbmQgYHFlZGVfc3BfdGFza2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHFlZGVfbWFpbi5jYCBmaWxlLiBSaWdodCBhd2F5LCBteSByYWRhciBnb2VzIHVwIOKAkyB0aGlzIGlzIGEgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgTW9kdWxlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGVpciBFdGhlcm5ldCBOSUNzLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCBzb21lIGdlbmVyaWMgb3IgZW11bGF0ZWQgZGV2aWNlLgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgYXMgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaWYgdGhleSByZWx5IG9uIHBoeXNpY2FsIFBDSWUgY2FyZHMgdGhhdCBhcmVuJiMzOTt0IHByb3Blcmx5IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgYSBodWdlIGNsdWUuIEFuZCBpdCYjMzk7cyBpbXBvcnRhbnQuCgpMZXQmIzM5O3Mgc2VlLi4uIGBxZWRlYCBpcyBwYXJ0IG9mIHRoZSBgcWVkYCBmYW1pbHksIHJpZ2h0PyBUaGUgY29yZSBtb2R1bGUgaXMgYHFlZGAsIHRoZSBFdGhlcm5ldCBkcml2ZXIgaXMgYHFlZGVgLiBUaGUgcHJvbXB0ICpsaXRlcmFsbHkqIGxpc3RzIGBxZWRgIGFzIGFuIGV4YW1wbGUgb2YgYSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQmluZ28hIFRoaXMgaXMgYSBRTG9naWMgRmFzdExpblEgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSwgYW5kIHRoYXQgaXMgYSBrZXkgaW5kaWNhdG9yIHRoYXQgdGhpcyBpcyB1bnN1aXRhYmxlLgoKSSYjMzk7bSBjb25maXJtaW5nIGl0LiBSZS1yZWFkaW5nIHRoZSBwcm9tcHQsIGBxZWRgIGlzIHJpZ2h0IHRoZXJlIG9uIHRoZSBsaXN0LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBsb2dpYyBpcyB0aWdodC4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgcWVkZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCBOSUNzLCB3aGljaCByZWxpZXMgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBzaG91bGQgbm90IGJlIGZ1enplZC4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIuCgpPa2F5LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHggRXRoZXJuZXQpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHggRXRoZXJuZXQpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAxOjAyOjQ5LjU3NjE1NDY1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjI3Nzc1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0KSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAxOjAyOjQ5LjU3NjE2MDE2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1MjA3NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzcxODU2NmI3ODUzYjIyMWViYjNmMzYwYzc1NjZiNjM1NDFmNjlhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwMTowMjo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXFxuaW5kZXggY2IwYWUwNjUwOTA1YzYuLjdlZDE3ZmFjZWQ1NDJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcXG5AQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuIHN0YXRpYyB2b2lkIHFlZGVfbGlua191cGRhdGUodm9pZCAqZGV2LCBzdHJ1Y3QgcWVkX2xpbmtfb3V0cHV0ICpsaW5rKTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9yZWNvdmVyeV9oYW5kbGVyKHZvaWQgKmRldik7XFxuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpO1xcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9od19lcnJfaGFuZGxlcih2b2lkICpkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCBlbnVtIHFlZF9od19lcnJfdHlwZSBlcnJfdHlwZSk7XFxuIHN0YXRpYyB2b2lkIHFlZGVfZ2V0X2V0aF90bHZfZGF0YSh2b2lkICplZGV2LCB2b2lkICpkYXRhKTtcXG5AQCAtMTA0MywyMSArMTA0Myw2IEBAIHZvaWQgX19xZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZWRldi1cXHUwMDNlcWVkZV9sb2NrKTtcXG4gfVxcbiBcXG4tLyogVGhpcyB2ZXJzaW9uIG9mIHRoZSBsb2NrIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBSVE5MIGxvY2sgaXMgYWxzb1xcbi0gKiBuZWVkZWQgaW4gYWRkaXRpb24gdG8gdGhlIGludGVybmFsIHFlZGUgbG9jay5cXG4tICovXFxuLXN0YXRpYyB2b2lkIHFlZGVfbG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLXtcXG4tXFx0cnRubF9sb2NrKCk7XFxuLVxcdF9fcWVkZV9sb2NrKGVkZXYpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLXtcXG4tXFx0X19xZWRlX3VubG9jayhlZGV2KTtcXG4tXFx0cnRubF91bmxvY2soKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgcWVkZV9wZXJpb2RpY190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHFlZGVfZGV2LFxcbkBAIC0xMDk0LDYgKzEwNzksOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHQgKi9cXG4gXFxuIFxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgXFx1MDAyNmVkZXYtXFx1MDAzZXNwX2ZsYWdzKSkge1xcbitcXHRcXHRib29sIHJlbG9hZGVkO1xcbitcXG4gXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZlZGV2LVxcdTAwM2VwZXJpb2RpY190YXNrKTtcXG4gI2lmZGVmIENPTkZJR19RRURfU1JJT1ZcXG4gXFx0XFx0LyogU1JJT1YgbXVzdCBiZSBkaXNhYmxlZCBvdXRzaWRlIHRoZSBsb2NrIHRvIGF2b2lkIGEgZGVhZGxvY2suXFxuQEAgLTExMDIsOSArMTA4OSwxNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAocGNpX251bV92ZihlZGV2LVxcdTAwM2VwZGV2KSlcXG4gXFx0XFx0XFx0cWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi1cXHUwMDNlcGRldiwgMCk7XFxuICNlbmRpZlxcbi1cXHRcXHRxZWRlX2xvY2soZWRldik7XFxuLVxcdFxcdHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihlZGV2KTtcXG4tXFx0XFx0cWVkZV91bmxvY2soZWRldik7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHRcXHRfX3FlZGVfbG9jayhlZGV2KTtcXG4rXFx0XFx0cmVsb2FkZWQgPSBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7XFxuK1xcdFxcdF9fcWVkZV91bmxvY2soZWRldik7XFxuK1xcbitcXHRcXHQvKiBUaGUgdWRwX3R1bm5lbCBjb3JlIHN5bmNocm9ub3VzbHkgY2FsbHMgYmFjayBpbnRvXFxuK1xcdFxcdCAqIHFlZGVfdWRwX3R1bm5lbF9zeW5jKCksIHdoaWNoIHRha2VzIHRoZSBxZWRlIGxvY2suXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAocmVsb2FkZWQpXFxuK1xcdFxcdFxcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4gXFx0fVxcbiBcXG4gXFx0X19xZWRlX2xvY2soZWRldik7XFxuQEAgLTI2NDUsOSArMjY0MCwxMyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2ZhaWxlZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdFxcdGVkZXYtXFx1MDAzZW9wcy1cXHUwMDNlY29tbW9uLVxcdTAwM2VzZXRfcG93ZXJfc3RhdGUoZWRldi1cXHUwMDNlY2RldiwgUENJX0QzaG90KTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldilcXG4rLyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xcbisgKiB1ZHBfdHVubmVsIHBvcnRzIG5lZWQgdG8gYmUgcmUtc3luY2VkIGJ5IHRoZSBjYWxsZXIuXFxuKyAqL1xcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxcbiB7XFxuIFxcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cXHUwMDNlc3RhdGU7XFxuK1xcdGJvb2wgcmVsb2FkZWQgPSBmYWxzZTtcXG4gXFx0aW50IHJjO1xcbiBcXG4gXFx0RFBfTk9USUNFKGVkZXYsIFxcXCJTdGFydGluZyBhIHJlY292ZXJ5IHByb2Nlc3NcXFxcblxcXCIpO1xcbkBAIC0yNjc3LDE3ICsyNjc2LDE4IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4gXFx0XFx0cWVkZV9jb25maWdfcnhfbW9kZShlZGV2LVxcdTAwM2VuZGV2KTtcXG4tXFx0XFx0dWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKGVkZXYtXFx1MDAzZW5kZXYpO1xcbitcXHRcXHRyZWxvYWRlZCA9IHRydWU7XFxuIFxcdH1cXG4gXFxuIFxcdGVkZXYtXFx1MDAzZXN0YXRlID0gY3Vycl9zdGF0ZTtcXG4gXFxuIFxcdERQX05PVElDRShlZGV2LCBcXFwiUmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXR1cm47XFxuK1xcdHJldHVybiByZWxvYWRlZDtcXG4gXFxuIGVycjpcXG4gXFx0cWVkZV9yZWNvdmVyeV9mYWlsZWQoZWRldik7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMTowMjo1MC4xMzIwMjg0ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MTA2ODk4OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNzE4NTY2Yjc4NTNiMjIxZWJiM2YzNjBjNzU2NmI2MzU0MWY2OWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDE6MDI6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXG5pbmRleCBjYjBhZTA2NTA5MDVjNi4uN2VkMTdmYWNlZDU0MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcbkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQgcWVkZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuIHN0YXRpYyB2b2lkIHFlZGVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuIHN0YXRpYyB2b2lkIHFlZGVfbGlua191cGRhdGUodm9pZCAqZGV2LCBzdHJ1Y3QgcWVkX2xpbmtfb3V0cHV0ICpsaW5rKTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX3JlY292ZXJ5X2hhbmRsZXIodm9pZCAqZGV2KTtcbi1zdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX2h3X2Vycl9oYW5kbGVyKHZvaWQgKmRldixcbiBcdFx0XHRcdFx0IGVudW0gcWVkX2h3X2Vycl90eXBlIGVycl90eXBlKTtcbiBzdGF0aWMgdm9pZCBxZWRlX2dldF9ldGhfdGx2X2RhdGEodm9pZCAqZWRldiwgdm9pZCAqZGF0YSk7XG5AQCAtMTA0MywyMSArMTA0Myw2IEBAIHZvaWQgX19xZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4gXHRtdXRleF91bmxvY2soXHUwMDI2ZWRldi1cdTAwM2VxZWRlX2xvY2spO1xuIH1cbiBcbi0vKiBUaGlzIHZlcnNpb24gb2YgdGhlIGxvY2sgc2hvdWxkIGJlIHVzZWQgd2hlbiBhY3F1aXJpbmcgdGhlIFJUTkwgbG9jayBpcyBhbHNvXG4tICogbmVlZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBpbnRlcm5hbCBxZWRlIGxvY2suXG4tICovXG4tc3RhdGljIHZvaWQgcWVkZV9sb2NrKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi17XG4tXHRydG5sX2xvY2soKTtcbi1cdF9fcWVkZV9sb2NrKGVkZXYpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4te1xuLVx0X19xZWRlX3VubG9jayhlZGV2KTtcbi1cdHJ0bmxfdW5sb2NrKCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHFlZGVfcGVyaW9kaWNfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IHFlZGVfZGV2ICplZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBxZWRlX2RldixcbkBAIC0xMDk0LDYgKzEwNzksOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0ICovXG4gXG4gXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KFFFREVfU1BfUkVDT1ZFUlksIFx1MDAyNmVkZXYtXHUwMDNlc3BfZmxhZ3MpKSB7XG4rXHRcdGJvb2wgcmVsb2FkZWQ7XG4rXG4gXHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZlZGV2LVx1MDAzZXBlcmlvZGljX3Rhc2spO1xuICNpZmRlZiBDT05GSUdfUUVEX1NSSU9WXG4gXHRcdC8qIFNSSU9WIG11c3QgYmUgZGlzYWJsZWQgb3V0c2lkZSB0aGUgbG9jayB0byBhdm9pZCBhIGRlYWRsb2NrLlxuQEAgLTExMDIsOSArMTA4OSwxNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAocGNpX251bV92ZihlZGV2LVx1MDAzZXBkZXYpKVxuIFx0XHRcdHFlZGVfc3Jpb3ZfY29uZmlndXJlKGVkZXYtXHUwMDNlcGRldiwgMCk7XG4gI2VuZGlmXG4tXHRcdHFlZGVfbG9jayhlZGV2KTtcbi1cdFx0cWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpO1xuLVx0XHRxZWRlX3VubG9jayhlZGV2KTtcbitcdFx0cnRubF9sb2NrKCk7XG4rXHRcdF9fcWVkZV9sb2NrKGVkZXYpO1xuK1x0XHRyZWxvYWRlZCA9IHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihlZGV2KTtcbitcdFx0X19xZWRlX3VubG9jayhlZGV2KTtcbitcbitcdFx0LyogVGhlIHVkcF90dW5uZWwgY29yZSBzeW5jaHJvbm91c2x5IGNhbGxzIGJhY2sgaW50b1xuK1x0XHQgKiBxZWRlX3VkcF90dW5uZWxfc3luYygpLCB3aGljaCB0YWtlcyB0aGUgcWVkZSBsb2NrLlxuK1x0XHQgKi9cbitcdFx0aWYgKHJlbG9hZGVkKVxuK1x0XHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuK1x0XHRydG5sX3VubG9jaygpO1xuIFx0fVxuIFxuIFx0X19xZWRlX2xvY2soZWRldik7XG5AQCAtMjY0NSw5ICsyNjQwLDEzIEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfZmFpbGVkKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbiBcdFx0ZWRldi1cdTAwM2VvcHMtXHUwMDNlY29tbW9uLVx1MDAzZXNldF9wb3dlcl9zdGF0ZShlZGV2LVx1MDAzZWNkZXYsIFBDSV9EM2hvdCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4rLyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xuKyAqIHVkcF90dW5uZWwgcG9ydHMgbmVlZCB0byBiZSByZS1zeW5jZWQgYnkgdGhlIGNhbGxlci5cbisgKi9cbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIHtcbiBcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cdTAwM2VzdGF0ZTtcbitcdGJvb2wgcmVsb2FkZWQgPSBmYWxzZTtcbiBcdGludCByYztcbiBcbiBcdERQX05PVElDRShlZGV2LCBcIlN0YXJ0aW5nIGEgcmVjb3ZlcnkgcHJvY2Vzc1xcblwiKTtcbkBAIC0yNjc3LDE3ICsyNjc2LDE4IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4gXHRcdFx0Z290byBlcnI7XG4gXG4gXHRcdHFlZGVfY29uZmlnX3J4X21vZGUoZWRldi1cdTAwM2VuZGV2KTtcbi1cdFx0dWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKGVkZXYtXHUwMDNlbmRldik7XG4rXHRcdHJlbG9hZGVkID0gdHJ1ZTtcbiBcdH1cbiBcbiBcdGVkZXYtXHUwMDNlc3RhdGUgPSBjdXJyX3N0YXRlO1xuIFxuIFx0RFBfTk9USUNFKGVkZXYsIFwiUmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcblwiKTtcbiBcbi1cdHJldHVybjtcbitcdHJldHVybiByZWxvYWRlZDtcbiBcbiBlcnI6XG4gXHRxZWRlX3JlY292ZXJ5X2ZhaWxlZChlZGV2KTtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDE6MDI6NTAuMTMyMDI5OTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNjg3NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcWVkZSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgYHFlZGVfcmVjb3ZlcnlfaGFuZGxlcmAgYW5kIGBxZWRlX3NwX3Rhc2tgIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBxZWRlX21haW4uY2AgZmlsZS4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cCDigJMgdGhpcyBpcyBhIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBDb3JlIE1vZHVsZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlaXIgRXRoZXJuZXQgTklDcy4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCBzb21lIGdlbmVyaWMgb3IgZW11bGF0ZWQgZGV2aWNlLlxuXG5Ob3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyAqbm90KiBzdWl0YWJsZSBmb3IgZnV6emluZyBpZiB0aGV5IHJlbHkgb24gcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBwcm9wZXJseSBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIGNsdWUuIEFuZCBpdCdzIGltcG9ydGFudC5cblxuTGV0J3Mgc2VlLi4uIGBxZWRlYCBpcyBwYXJ0IG9mIHRoZSBgcWVkYCBmYW1pbHksIHJpZ2h0PyBUaGUgY29yZSBtb2R1bGUgaXMgYHFlZGAsIHRoZSBFdGhlcm5ldCBkcml2ZXIgaXMgYHFlZGVgLiBUaGUgcHJvbXB0ICpsaXRlcmFsbHkqIGxpc3RzIGBxZWRgIGFzIGFuIGV4YW1wbGUgb2YgYSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQmluZ28hIFRoaXMgaXMgYSBRTG9naWMgRmFzdExpblEgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSwgYW5kIHRoYXQgaXMgYSBrZXkgaW5kaWNhdG9yIHRoYXQgdGhpcyBpcyB1bnN1aXRhYmxlLlxuXG5JJ20gY29uZmlybWluZyBpdC4gUmUtcmVhZGluZyB0aGUgcHJvbXB0LCBgcWVkYCBpcyByaWdodCB0aGVyZSBvbiB0aGUgbGlzdC4gSSd2ZSBnb3QgdG8gZW5zdXJlIHRoZSBsb2dpYyBpcyB0aWdodC5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBxZWRlYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0IE5JQ3MsIHdoaWNoIHJlbGllcyBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIHNob3VsZCBub3QgYmUgZnV6emVkLiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhci5cblxuT2theSwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM2LCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDE6MDI6NTYuMjM4OTA5MzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowzdb2w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 00:47:32 +0000 UTC FinishedAt: 2026-07-27 01:02:58 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0KSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDE6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNzE4NTY2Yjc4NTNiMjIxZWJiM2YzNjBjNzU2NmI2MzU0MWY2OWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDE6MDI6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uY1xuaW5kZXggY2IwYWUwNjUwOTA1YzYuLjdlZDE3ZmFjZWQ1NDJhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXG5AQCAtMTA3LDcgJiM0MzsxMDcsNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG4gc3RhdGljIHZvaWQgcWVkZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG4gc3RhdGljIHZvaWQgcWVkZV9saW5rX3VwZGF0ZSh2b2lkICpkZXYsIHN0cnVjdCBxZWRfbGlua19vdXRwdXQgKmxpbmspO1xuIHN0YXRpYyB2b2lkIHFlZGVfc2NoZWR1bGVfcmVjb3ZlcnlfaGFuZGxlcih2b2lkICpkZXYpO1xuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpO1xuJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX2h3X2Vycl9oYW5kbGVyKHZvaWQgKmRldixcbiBcdFx0XHRcdFx0IGVudW0gcWVkX2h3X2Vycl90eXBlIGVycl90eXBlKTtcbiBzdGF0aWMgdm9pZCBxZWRlX2dldF9ldGhfdGx2X2RhdGEodm9pZCAqZWRldiwgdm9pZCAqZGF0YSk7XG5AQCAtMTA0MywyMSAmIzQzOzEwNDMsNiBAQCB2b2lkIF9fcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmVkZXYtXHUwMDNlcWVkZV9sb2NrKTtcbiB9XG4gXG4tLyogVGhpcyB2ZXJzaW9uIG9mIHRoZSBsb2NrIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBSVE5MIGxvY2sgaXMgYWxzb1xuLSAqIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgaW50ZXJuYWwgcWVkZSBsb2NrLlxuLSAqL1xuLXN0YXRpYyB2b2lkIHFlZGVfbG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4te1xuLVx0cnRubF9sb2NrKCk7XG4tXHRfX3FlZGVfbG9jayhlZGV2KTtcbi19XG4tXG4tc3RhdGljIHZvaWQgcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuLXtcbi1cdF9fcWVkZV91bmxvY2soZWRldik7XG4tXHRydG5sX3VubG9jaygpO1xuLX1cbi1cbiBzdGF0aWMgdm9pZCBxZWRlX3BlcmlvZGljX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCBxZWRlX2RldiAqZWRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcWVkZV9kZXYsXG5AQCAtMTA5NCw2ICYjNDM7MTA3OSw4IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHQgKi9cbiBcbiBcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgXHUwMDI2ZWRldi1cdTAwM2VzcF9mbGFncykpIHtcbiYjNDM7XHRcdGJvb2wgcmVsb2FkZWQ7XG4mIzQzO1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZWRldi1cdTAwM2VwZXJpb2RpY190YXNrKTtcbiAjaWZkZWYgQ09ORklHX1FFRF9TUklPVlxuIFx0XHQvKiBTUklPViBtdXN0IGJlIGRpc2FibGVkIG91dHNpZGUgdGhlIGxvY2sgdG8gYXZvaWQgYSBkZWFkbG9jay5cbkBAIC0xMTAyLDkgJiM0MzsxMDg5LDE3IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRcdGlmIChwY2lfbnVtX3ZmKGVkZXYtXHUwMDNlcGRldikpXG4gXHRcdFx0cWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi1cdTAwM2VwZGV2LCAwKTtcbiAjZW5kaWZcbi1cdFx0cWVkZV9sb2NrKGVkZXYpO1xuLVx0XHRxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7XG4tXHRcdHFlZGVfdW5sb2NrKGVkZXYpO1xuJiM0MztcdFx0cnRubF9sb2NrKCk7XG4mIzQzO1x0XHRfX3FlZGVfbG9jayhlZGV2KTtcbiYjNDM7XHRcdHJlbG9hZGVkID0gcWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpO1xuJiM0MztcdFx0X19xZWRlX3VubG9jayhlZGV2KTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBUaGUgdWRwX3R1bm5lbCBjb3JlIHN5bmNocm9ub3VzbHkgY2FsbHMgYmFjayBpbnRvXG4mIzQzO1x0XHQgKiBxZWRlX3VkcF90dW5uZWxfc3luYygpLCB3aGljaCB0YWtlcyB0aGUgcWVkZSBsb2NrLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAocmVsb2FkZWQpXG4mIzQzO1x0XHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuJiM0MztcdFx0cnRubF91bmxvY2soKTtcbiBcdH1cbiBcbiBcdF9fcWVkZV9sb2NrKGVkZXYpO1xuQEAgLTI2NDUsOSAmIzQzOzI2NDAsMTMgQEAgc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9mYWlsZWQoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0XHRlZGV2LVx1MDAzZW9wcy1cdTAwM2Vjb21tb24tXHUwMDNlc2V0X3Bvd2VyX3N0YXRlKGVkZXYtXHUwMDNlY2RldiwgUENJX0QzaG90KTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbiYjNDM7LyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xuJiM0MzsgKiB1ZHBfdHVubmVsIHBvcnRzIG5lZWQgdG8gYmUgcmUtc3luY2VkIGJ5IHRoZSBjYWxsZXIuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIHtcbiBcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cdTAwM2VzdGF0ZTtcbiYjNDM7XHRib29sIHJlbG9hZGVkID0gZmFsc2U7XG4gXHRpbnQgcmM7XG4gXG4gXHREUF9OT1RJQ0UoZWRldiwgXCYjMzQ7U3RhcnRpbmcgYSByZWNvdmVyeSBwcm9jZXNzXFxuXCYjMzQ7KTtcbkBAIC0yNjc3LDE3ICYjNDM7MjY3NiwxOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIFx0XHRcdGdvdG8gZXJyO1xuIFxuIFx0XHRxZWRlX2NvbmZpZ19yeF9tb2RlKGVkZXYtXHUwMDNlbmRldik7XG4tXHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuJiM0MztcdFx0cmVsb2FkZWQgPSB0cnVlO1xuIFx0fVxuIFxuIFx0ZWRldi1cdTAwM2VzdGF0ZSA9IGN1cnJfc3RhdGU7XG4gXG4gXHREUF9OT1RJQ0UoZWRldiwgXCYjMzQ7UmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcblwmIzM0Oyk7XG4gXG4tXHRyZXR1cm47XG4mIzQzO1x0cmV0dXJuIHJlbG9hZGVkO1xuIFxuIGVycjpcbiBcdHFlZGVfcmVjb3ZlcnlfZmFpbGVkKGVkZXYpO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzcxODU2NmI3ODUzYjIyMWViYjNmMzYwYzc1NjZiNjM1NDFmNjlhMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDAxOjAyOjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYwppbmRleCBjYjBhZTA2NTA5MDVjNi4uN2VkMTdmYWNlZDU0MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jCkBAIC0xMDcsNyAmIzQzOzEwNyw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKIHN0YXRpYyB2b2lkIHFlZGVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogc3RhdGljIHZvaWQgcWVkZV9saW5rX3VwZGF0ZSh2b2lkICpkZXYsIHN0cnVjdCBxZWRfbGlua19vdXRwdXQgKmxpbmspOwogc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9yZWNvdmVyeV9oYW5kbGVyKHZvaWQgKmRldik7Ci1zdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTsKJiM0MztzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTsKIHN0YXRpYyB2b2lkIHFlZGVfc2NoZWR1bGVfaHdfZXJyX2hhbmRsZXIodm9pZCAqZGV2LAogCQkJCQkgZW51bSBxZWRfaHdfZXJyX3R5cGUgZXJyX3R5cGUpOwogc3RhdGljIHZvaWQgcWVkZV9nZXRfZXRoX3Rsdl9kYXRhKHZvaWQgKmVkZXYsIHZvaWQgKmRhdGEpOwpAQCAtMTA0MywyMSAmIzQzOzEwNDMsNiBAQCB2b2lkIF9fcWVkZV91bmxvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KQogCW11dGV4X3VubG9jaygmYW1wO2VkZXYtJmd0O3FlZGVfbG9jayk7CiB9CiAKLS8qIFRoaXMgdmVyc2lvbiBvZiB0aGUgbG9jayBzaG91bGQgYmUgdXNlZCB3aGVuIGFjcXVpcmluZyB0aGUgUlROTCBsb2NrIGlzIGFsc28KLSAqIG5lZWRlZCBpbiBhZGRpdGlvbiB0byB0aGUgaW50ZXJuYWwgcWVkZSBsb2NrLgotICovCi1zdGF0aWMgdm9pZCBxZWRlX2xvY2soc3RydWN0IHFlZGVfZGV2ICplZGV2KQotewotCXJ0bmxfbG9jaygpOwotCV9fcWVkZV9sb2NrKGVkZXYpOwotfQotCi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCi17Ci0JX19xZWRlX3VubG9jayhlZGV2KTsKLQlydG5sX3VubG9jaygpOwotfQotCiBzdGF0aWMgdm9pZCBxZWRlX3BlcmlvZGljX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBxZWRlX2RldiAqZWRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcWVkZV9kZXYsCkBAIC0xMDk0LDYgJiM0MzsxMDc5LDggQEAgc3RhdGljIHZvaWQgcWVkZV9zcF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkgKi8KIAogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgJmFtcDtlZGV2LSZndDtzcF9mbGFncykpIHsKJiM0MzsJCWJvb2wgcmVsb2FkZWQ7CiYjNDM7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2VkZXYtJmd0O3BlcmlvZGljX3Rhc2spOwogI2lmZGVmIENPTkZJR19RRURfU1JJT1YKIAkJLyogU1JJT1YgbXVzdCBiZSBkaXNhYmxlZCBvdXRzaWRlIHRoZSBsb2NrIHRvIGF2b2lkIGEgZGVhZGxvY2suCkBAIC0xMTAyLDkgJiM0MzsxMDg5LDE3IEBAIHN0YXRpYyB2b2lkIHFlZGVfc3BfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWlmIChwY2lfbnVtX3ZmKGVkZXYtJmd0O3BkZXYpKQogCQkJcWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi0mZ3Q7cGRldiwgMCk7CiAjZW5kaWYKLQkJcWVkZV9sb2NrKGVkZXYpOwotCQlxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7Ci0JCXFlZGVfdW5sb2NrKGVkZXYpOwomIzQzOwkJcnRubF9sb2NrKCk7CiYjNDM7CQlfX3FlZGVfbG9jayhlZGV2KTsKJiM0MzsJCXJlbG9hZGVkID0gcWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpOwomIzQzOwkJX19xZWRlX3VubG9jayhlZGV2KTsKJiM0MzsKJiM0MzsJCS8qIFRoZSB1ZHBfdHVubmVsIGNvcmUgc3luY2hyb25vdXNseSBjYWxscyBiYWNrIGludG8KJiM0MzsJCSAqIHFlZGVfdWRwX3R1bm5lbF9zeW5jKCksIHdoaWNoIHRha2VzIHRoZSBxZWRlIGxvY2suCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChyZWxvYWRlZCkKJiM0MzsJCQl1ZHBfdHVubmVsX25pY19yZXNldF9udGYoZWRldi0mZ3Q7bmRldik7CiYjNDM7CQlydG5sX3VubG9jaygpOwogCX0KIAogCV9fcWVkZV9sb2NrKGVkZXYpOwpAQCAtMjY0NSw5ICYjNDM7MjY0MCwxMyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2ZhaWxlZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCiAJCWVkZXYtJmd0O29wcy0mZ3Q7Y29tbW9uLSZndDtzZXRfcG93ZXJfc3RhdGUoZWRldi0mZ3Q7Y2RldiwgUENJX0QzaG90KTsKIH0KIAotc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKJiM0MzsvKiBSZXR1cm5zIHRydWUgaWYgYW4gb3BlbiBkZXZpY2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWxvYWRlZCBhbmQgaXRzCiYjNDM7ICogdWRwX3R1bm5lbCBwb3J0cyBuZWVkIHRvIGJlIHJlLXN5bmNlZCBieSB0aGUgY2FsbGVyLgomIzQzOyAqLwomIzQzO3N0YXRpYyBib29sIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpCiB7CiAJdTMyIGN1cnJfc3RhdGUgPSBlZGV2LSZndDtzdGF0ZTsKJiM0MzsJYm9vbCByZWxvYWRlZCA9IGZhbHNlOwogCWludCByYzsKIAogCURQX05PVElDRShlZGV2LCAmIzM0O1N0YXJ0aW5nIGEgcmVjb3ZlcnkgcHJvY2Vzc1xuJiMzNDspOwpAQCAtMjY3NywxNyAmIzQzOzI2NzYsMTggQEAgc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKIAkJCWdvdG8gZXJyOwogCiAJCXFlZGVfY29uZmlnX3J4X21vZGUoZWRldi0mZ3Q7bmRldik7Ci0JCXVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LSZndDtuZGV2KTsKJiM0MzsJCXJlbG9hZGVkID0gdHJ1ZTsKIAl9CiAKIAllZGV2LSZndDtzdGF0ZSA9IGN1cnJfc3RhdGU7CiAKIAlEUF9OT1RJQ0UoZWRldiwgJiMzNDtSZWNvdmVyeSBoYW5kbGluZyBpcyBkb25lXG4mIzM0Oyk7CiAKLQlyZXR1cm47CiYjNDM7CXJldHVybiByZWxvYWRlZDsKIAogZXJyOgogCXFlZGVfcmVjb3ZlcnlfZmFpbGVkKGVkZXYpOwomIzQzOwlyZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyB2b2lkIHFlZGVfYXRvbWljX2h3X2Vycl9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldikKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzNgoJCQkJCQkJb3V0cHV0OiA2MwoJCQkJCQkJdGhvdWdodHM6IDM3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgcWVkZSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggYWZmZWN0aW5nIHRoZSBgcWVkZV9yZWNvdmVyeV9oYW5kbGVyYCBhbmQgYHFlZGVfc3BfdGFza2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUgYHFlZGVfbWFpbi5jYCBmaWxlLiBSaWdodCBhd2F5LCBteSByYWRhciBnb2VzIHVwIOKAkyB0aGlzIGlzIGEgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgTW9kdWxlIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGVpciBFdGhlcm5ldCBOSUNzLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCBzb21lIGdlbmVyaWMgb3IgZW11bGF0ZWQgZGV2aWNlLgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBjYWxscyBvdXQgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAgYXMgKm5vdCogc3VpdGFibGUgZm9yIGZ1enppbmcgaWYgdGhleSByZWx5IG9uIHBoeXNpY2FsIFBDSWUgY2FyZHMgdGhhdCBhcmVuJiMzOTt0IHByb3Blcmx5IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgYSBodWdlIGNsdWUuIEFuZCBpdCYjMzk7cyBpbXBvcnRhbnQuCgpMZXQmIzM5O3Mgc2VlLi4uIGBxZWRlYCBpcyBwYXJ0IG9mIHRoZSBgcWVkYCBmYW1pbHksIHJpZ2h0PyBUaGUgY29yZSBtb2R1bGUgaXMgYHFlZGAsIHRoZSBFdGhlcm5ldCBkcml2ZXIgaXMgYHFlZGVgLiBUaGUgcHJvbXB0ICpsaXRlcmFsbHkqIGxpc3RzIGBxZWRgIGFzIGFuIGV4YW1wbGUgb2YgYSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQmluZ28hIFRoaXMgaXMgYSBRTG9naWMgRmFzdExpblEgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSwgYW5kIHRoYXQgaXMgYSBrZXkgaW5kaWNhdG9yIHRoYXQgdGhpcyBpcyB1bnN1aXRhYmxlLgoKSSYjMzk7bSBjb25maXJtaW5nIGl0LiBSZS1yZWFkaW5nIHRoZSBwcm9tcHQsIGBxZWRgIGlzIHJpZ2h0IHRoZXJlIG9uIHRoZSBsaXN0LiBJJiMzOTt2ZSBnb3QgdG8gZW5zdXJlIHRoZSBsb2dpYyBpcyB0aWdodC4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgcWVkZWAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCBOSUNzLCB3aGljaCByZWxpZXMgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBzaG91bGQgbm90IGJlIGZ1enplZC4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXIuCgpPa2F5LCBsZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHggRXRoZXJuZXQpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHFlZGUgZHJpdmVyIChRTG9naWMgRmFzdExpblEgNHh4eHggRXRoZXJuZXQpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAxOjAyOjQ5LjU3NjE1NDY1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NjI3Nzc1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxZWRlIGRyaXZlciAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0KSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAxOjAyOjQ5LjU3NjE2MDE2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU1MjA3NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzcxODU2NmI3ODUzYjIyMWViYjNmMzYwYzc1NjZiNjM1NDFmNjlhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAwMTowMjo0OCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXFxuaW5kZXggY2IwYWUwNjUwOTA1YzYuLjdlZDE3ZmFjZWQ1NDJhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcXG5AQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldik7XFxuIHN0YXRpYyB2b2lkIHFlZGVfbGlua191cGRhdGUodm9pZCAqZGV2LCBzdHJ1Y3QgcWVkX2xpbmtfb3V0cHV0ICpsaW5rKTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9yZWNvdmVyeV9oYW5kbGVyKHZvaWQgKmRldik7XFxuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpO1xcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcXG4gc3RhdGljIHZvaWQgcWVkZV9zY2hlZHVsZV9od19lcnJfaGFuZGxlcih2b2lkICpkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCBlbnVtIHFlZF9od19lcnJfdHlwZSBlcnJfdHlwZSk7XFxuIHN0YXRpYyB2b2lkIHFlZGVfZ2V0X2V0aF90bHZfZGF0YSh2b2lkICplZGV2LCB2b2lkICpkYXRhKTtcXG5AQCAtMTA0MywyMSArMTA0Myw2IEBAIHZvaWQgX19xZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZWRldi1cXHUwMDNlcWVkZV9sb2NrKTtcXG4gfVxcbiBcXG4tLyogVGhpcyB2ZXJzaW9uIG9mIHRoZSBsb2NrIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNxdWlyaW5nIHRoZSBSVE5MIGxvY2sgaXMgYWxzb1xcbi0gKiBuZWVkZWQgaW4gYWRkaXRpb24gdG8gdGhlIGludGVybmFsIHFlZGUgbG9jay5cXG4tICovXFxuLXN0YXRpYyB2b2lkIHFlZGVfbG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLXtcXG4tXFx0cnRubF9sb2NrKCk7XFxuLVxcdF9fcWVkZV9sb2NrKGVkZXYpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLXtcXG4tXFx0X19xZWRlX3VubG9jayhlZGV2KTtcXG4tXFx0cnRubF91bmxvY2soKTtcXG4tfVxcbi1cXG4gc3RhdGljIHZvaWQgcWVkZV9wZXJpb2RpY190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4ge1xcbiBcXHRzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHFlZGVfZGV2LFxcbkBAIC0xMDk0LDYgKzEwNzksOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHQgKi9cXG4gXFxuIFxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUUVERV9TUF9SRUNPVkVSWSwgXFx1MDAyNmVkZXYtXFx1MDAzZXNwX2ZsYWdzKSkge1xcbitcXHRcXHRib29sIHJlbG9hZGVkO1xcbitcXG4gXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZlZGV2LVxcdTAwM2VwZXJpb2RpY190YXNrKTtcXG4gI2lmZGVmIENPTkZJR19RRURfU1JJT1ZcXG4gXFx0XFx0LyogU1JJT1YgbXVzdCBiZSBkaXNhYmxlZCBvdXRzaWRlIHRoZSBsb2NrIHRvIGF2b2lkIGEgZGVhZGxvY2suXFxuQEAgLTExMDIsOSArMTA4OSwxNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHRcXHRpZiAocGNpX251bV92ZihlZGV2LVxcdTAwM2VwZGV2KSlcXG4gXFx0XFx0XFx0cWVkZV9zcmlvdl9jb25maWd1cmUoZWRldi1cXHUwMDNlcGRldiwgMCk7XFxuICNlbmRpZlxcbi1cXHRcXHRxZWRlX2xvY2soZWRldik7XFxuLVxcdFxcdHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihlZGV2KTtcXG4tXFx0XFx0cWVkZV91bmxvY2soZWRldik7XFxuK1xcdFxcdHJ0bmxfbG9jaygpO1xcbitcXHRcXHRfX3FlZGVfbG9jayhlZGV2KTtcXG4rXFx0XFx0cmVsb2FkZWQgPSBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoZWRldik7XFxuK1xcdFxcdF9fcWVkZV91bmxvY2soZWRldik7XFxuK1xcbitcXHRcXHQvKiBUaGUgdWRwX3R1bm5lbCBjb3JlIHN5bmNocm9ub3VzbHkgY2FsbHMgYmFjayBpbnRvXFxuK1xcdFxcdCAqIHFlZGVfdWRwX3R1bm5lbF9zeW5jKCksIHdoaWNoIHRha2VzIHRoZSBxZWRlIGxvY2suXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAocmVsb2FkZWQpXFxuK1xcdFxcdFxcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0cnRubF91bmxvY2soKTtcXG4gXFx0fVxcbiBcXG4gXFx0X19xZWRlX2xvY2soZWRldik7XFxuQEAgLTI2NDUsOSArMjY0MCwxMyBAQCBzdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2ZhaWxlZChzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdFxcdGVkZXYtXFx1MDAzZW9wcy1cXHUwMDNlY29tbW9uLVxcdTAwM2VzZXRfcG93ZXJfc3RhdGUoZWRldi1cXHUwMDNlY2RldiwgUENJX0QzaG90KTtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgcWVkZV9yZWNvdmVyeV9oYW5kbGVyKHN0cnVjdCBxZWRlX2RldiAqZWRldilcXG4rLyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xcbisgKiB1ZHBfdHVubmVsIHBvcnRzIG5lZWQgdG8gYmUgcmUtc3luY2VkIGJ5IHRoZSBjYWxsZXIuXFxuKyAqL1xcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxcbiB7XFxuIFxcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cXHUwMDNlc3RhdGU7XFxuK1xcdGJvb2wgcmVsb2FkZWQgPSBmYWxzZTtcXG4gXFx0aW50IHJjO1xcbiBcXG4gXFx0RFBfTk9USUNFKGVkZXYsIFxcXCJTdGFydGluZyBhIHJlY292ZXJ5IHByb2Nlc3NcXFxcblxcXCIpO1xcbkBAIC0yNjc3LDE3ICsyNjc2LDE4IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuIFxcdFxcdFxcdGdvdG8gZXJyO1xcbiBcXG4gXFx0XFx0cWVkZV9jb25maWdfcnhfbW9kZShlZGV2LVxcdTAwM2VuZGV2KTtcXG4tXFx0XFx0dWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKGVkZXYtXFx1MDAzZW5kZXYpO1xcbitcXHRcXHRyZWxvYWRlZCA9IHRydWU7XFxuIFxcdH1cXG4gXFxuIFxcdGVkZXYtXFx1MDAzZXN0YXRlID0gY3Vycl9zdGF0ZTtcXG4gXFxuIFxcdERQX05PVElDRShlZGV2LCBcXFwiUmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcXFxuXFxcIik7XFxuIFxcbi1cXHRyZXR1cm47XFxuK1xcdHJldHVybiByZWxvYWRlZDtcXG4gXFxuIGVycjpcXG4gXFx0cWVkZV9yZWNvdmVyeV9mYWlsZWQoZWRldik7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMTowMjo1MC4xMzIwMjg0ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2MTA2ODk4OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNzE4NTY2Yjc4NTNiMjIxZWJiM2YzNjBjNzU2NmI2MzU0MWY2OWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDE6MDI6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfbWFpbi5jXG5pbmRleCBjYjBhZTA2NTA5MDVjNi4uN2VkMTdmYWNlZDU0MmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9tYWluLmNcbkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHZvaWQgcWVkZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuIHN0YXRpYyB2b2lkIHFlZGVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xuIHN0YXRpYyB2b2lkIHFlZGVfbGlua191cGRhdGUodm9pZCAqZGV2LCBzdHJ1Y3QgcWVkX2xpbmtfb3V0cHV0ICpsaW5rKTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX3JlY292ZXJ5X2hhbmRsZXIodm9pZCAqZGV2KTtcbi1zdGF0aWMgdm9pZCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KTtcbiBzdGF0aWMgdm9pZCBxZWRlX3NjaGVkdWxlX2h3X2Vycl9oYW5kbGVyKHZvaWQgKmRldixcbiBcdFx0XHRcdFx0IGVudW0gcWVkX2h3X2Vycl90eXBlIGVycl90eXBlKTtcbiBzdGF0aWMgdm9pZCBxZWRlX2dldF9ldGhfdGx2X2RhdGEodm9pZCAqZWRldiwgdm9pZCAqZGF0YSk7XG5AQCAtMTA0MywyMSArMTA0Myw2IEBAIHZvaWQgX19xZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4gXHRtdXRleF91bmxvY2soXHUwMDI2ZWRldi1cdTAwM2VxZWRlX2xvY2spO1xuIH1cbiBcbi0vKiBUaGlzIHZlcnNpb24gb2YgdGhlIGxvY2sgc2hvdWxkIGJlIHVzZWQgd2hlbiBhY3F1aXJpbmcgdGhlIFJUTkwgbG9jayBpcyBhbHNvXG4tICogbmVlZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBpbnRlcm5hbCBxZWRlIGxvY2suXG4tICovXG4tc3RhdGljIHZvaWQgcWVkZV9sb2NrKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbi17XG4tXHRydG5sX2xvY2soKTtcbi1cdF9fcWVkZV9sb2NrKGVkZXYpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBxZWRlX3VubG9jayhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4te1xuLVx0X19xZWRlX3VubG9jayhlZGV2KTtcbi1cdHJ0bmxfdW5sb2NrKCk7XG4tfVxuLVxuIHN0YXRpYyB2b2lkIHFlZGVfcGVyaW9kaWNfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IHFlZGVfZGV2ICplZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBxZWRlX2RldixcbkBAIC0xMDk0LDYgKzEwNzksOCBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0ICovXG4gXG4gXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KFFFREVfU1BfUkVDT1ZFUlksIFx1MDAyNmVkZXYtXHUwMDNlc3BfZmxhZ3MpKSB7XG4rXHRcdGJvb2wgcmVsb2FkZWQ7XG4rXG4gXHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZlZGV2LVx1MDAzZXBlcmlvZGljX3Rhc2spO1xuICNpZmRlZiBDT05GSUdfUUVEX1NSSU9WXG4gXHRcdC8qIFNSSU9WIG11c3QgYmUgZGlzYWJsZWQgb3V0c2lkZSB0aGUgbG9jayB0byBhdm9pZCBhIGRlYWRsb2NrLlxuQEAgLTExMDIsOSArMTA4OSwxNyBAQCBzdGF0aWMgdm9pZCBxZWRlX3NwX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAocGNpX251bV92ZihlZGV2LVx1MDAzZXBkZXYpKVxuIFx0XHRcdHFlZGVfc3Jpb3ZfY29uZmlndXJlKGVkZXYtXHUwMDNlcGRldiwgMCk7XG4gI2VuZGlmXG4tXHRcdHFlZGVfbG9jayhlZGV2KTtcbi1cdFx0cWVkZV9yZWNvdmVyeV9oYW5kbGVyKGVkZXYpO1xuLVx0XHRxZWRlX3VubG9jayhlZGV2KTtcbitcdFx0cnRubF9sb2NrKCk7XG4rXHRcdF9fcWVkZV9sb2NrKGVkZXYpO1xuK1x0XHRyZWxvYWRlZCA9IHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihlZGV2KTtcbitcdFx0X19xZWRlX3VubG9jayhlZGV2KTtcbitcbitcdFx0LyogVGhlIHVkcF90dW5uZWwgY29yZSBzeW5jaHJvbm91c2x5IGNhbGxzIGJhY2sgaW50b1xuK1x0XHQgKiBxZWRlX3VkcF90dW5uZWxfc3luYygpLCB3aGljaCB0YWtlcyB0aGUgcWVkZSBsb2NrLlxuK1x0XHQgKi9cbitcdFx0aWYgKHJlbG9hZGVkKVxuK1x0XHRcdHVkcF90dW5uZWxfbmljX3Jlc2V0X250ZihlZGV2LVx1MDAzZW5kZXYpO1xuK1x0XHRydG5sX3VubG9jaygpO1xuIFx0fVxuIFxuIFx0X19xZWRlX2xvY2soZWRldik7XG5AQCAtMjY0NSw5ICsyNjQwLDEzIEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfZmFpbGVkKHN0cnVjdCBxZWRlX2RldiAqZWRldilcbiBcdFx0ZWRldi1cdTAwM2VvcHMtXHUwMDNlY29tbW9uLVx1MDAzZXNldF9wb3dlcl9zdGF0ZShlZGV2LVx1MDAzZWNkZXYsIFBDSV9EM2hvdCk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4rLyogUmV0dXJucyB0cnVlIGlmIGFuIG9wZW4gZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVsb2FkZWQgYW5kIGl0c1xuKyAqIHVkcF90dW5uZWwgcG9ydHMgbmVlZCB0byBiZSByZS1zeW5jZWQgYnkgdGhlIGNhbGxlci5cbisgKi9cbitzdGF0aWMgYm9vbCBxZWRlX3JlY292ZXJ5X2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIHtcbiBcdHUzMiBjdXJyX3N0YXRlID0gZWRldi1cdTAwM2VzdGF0ZTtcbitcdGJvb2wgcmVsb2FkZWQgPSBmYWxzZTtcbiBcdGludCByYztcbiBcbiBcdERQX05PVElDRShlZGV2LCBcIlN0YXJ0aW5nIGEgcmVjb3ZlcnkgcHJvY2Vzc1xcblwiKTtcbkBAIC0yNjc3LDE3ICsyNjc2LDE4IEBAIHN0YXRpYyB2b2lkIHFlZGVfcmVjb3ZlcnlfaGFuZGxlcihzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4gXHRcdFx0Z290byBlcnI7XG4gXG4gXHRcdHFlZGVfY29uZmlnX3J4X21vZGUoZWRldi1cdTAwM2VuZGV2KTtcbi1cdFx0dWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKGVkZXYtXHUwMDNlbmRldik7XG4rXHRcdHJlbG9hZGVkID0gdHJ1ZTtcbiBcdH1cbiBcbiBcdGVkZXYtXHUwMDNlc3RhdGUgPSBjdXJyX3N0YXRlO1xuIFxuIFx0RFBfTk9USUNFKGVkZXYsIFwiUmVjb3ZlcnkgaGFuZGxpbmcgaXMgZG9uZVxcblwiKTtcbiBcbi1cdHJldHVybjtcbitcdHJldHVybiByZWxvYWRlZDtcbiBcbiBlcnI6XG4gXHRxZWRlX3JlY292ZXJ5X2ZhaWxlZChlZGV2KTtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgcWVkZV9hdG9taWNfaHdfZXJyX2hhbmRsZXIoc3RydWN0IHFlZGVfZGV2ICplZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDE6MDI6NTAuMTMyMDI5OTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNjg3NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgcWVkZSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgYHFlZGVfcmVjb3ZlcnlfaGFuZGxlcmAgYW5kIGBxZWRlX3NwX3Rhc2tgIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGBxZWRlX21haW4uY2AgZmlsZS4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cCDigJMgdGhpcyBpcyBhIFFMb2dpYyBGYXN0TGluUSA0eHh4eCBDb3JlIE1vZHVsZSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgdGhlaXIgRXRoZXJuZXQgTklDcy4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCBzb21lIGdlbmVyaWMgb3IgZW11bGF0ZWQgZGV2aWNlLlxuXG5Ob3csIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGNhbGxzIG91dCBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YCBhcyAqbm90KiBzdWl0YWJsZSBmb3IgZnV6emluZyBpZiB0aGV5IHJlbHkgb24gcGh5c2ljYWwgUENJZSBjYXJkcyB0aGF0IGFyZW4ndCBwcm9wZXJseSBlbXVsYXRlZCBieSBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIGNsdWUuIEFuZCBpdCdzIGltcG9ydGFudC5cblxuTGV0J3Mgc2VlLi4uIGBxZWRlYCBpcyBwYXJ0IG9mIHRoZSBgcWVkYCBmYW1pbHksIHJpZ2h0PyBUaGUgY29yZSBtb2R1bGUgaXMgYHFlZGAsIHRoZSBFdGhlcm5ldCBkcml2ZXIgaXMgYHFlZGVgLiBUaGUgcHJvbXB0ICpsaXRlcmFsbHkqIGxpc3RzIGBxZWRgIGFzIGFuIGV4YW1wbGUgb2YgYSBkcml2ZXIgdGhhdCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZS4gQmluZ28hIFRoaXMgaXMgYSBRTG9naWMgRmFzdExpblEgZHJpdmVyLCB3aGljaCByZXF1aXJlcyBzcGVjaWZpYyBoYXJkd2FyZSwgYW5kIHRoYXQgaXMgYSBrZXkgaW5kaWNhdG9yIHRoYXQgdGhpcyBpcyB1bnN1aXRhYmxlLlxuXG5JJ20gY29uZmlybWluZyBpdC4gUmUtcmVhZGluZyB0aGUgcHJvbXB0LCBgcWVkYCBpcyByaWdodCB0aGVyZSBvbiB0aGUgbGlzdC4gSSd2ZSBnb3QgdG8gZW5zdXJlIHRoZSBsb2dpYyBpcyB0aWdodC5cblxuVGhlcmVmb3JlLCBzaW5jZSB0aGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBxZWRlYCBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IEV0aGVybmV0IE5JQ3MsIHdoaWNoIHJlbGllcyBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCB0aGlzIHNob3VsZCBub3QgYmUgZnV6emVkLiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhci5cblxuT2theSwgbGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTM2LCJPdXRwdXRUb2tlbnMiOjYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzc4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDE6MDI6NTYuMjM4OTA5MzM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcWVkZSBkcml2ZXIgKFFMb2dpYyBGYXN0TGluUSA0eHh4eCBFdGhlcm5ldCksIHdoaWNoIHJlcXVpcmVzIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowzdb2w[1] Phase: Running StartedAt: 2026-07-27 01:04:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdb2w[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-27 01:04:49 +0000 UTC FinishedAt: 2026-07-27 01:04:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}