Name: series-workflow2rkpq Phase: Failed StartedAt: 2026-07-08 08:48:00 +0000 UTC FinishedAt: 2026-07-08 09:14:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rkpq[0] Phase: Succeeded StartedAt: 2026-07-08 08:48:00 +0000 UTC FinishedAt: 2026-07-08 09:14:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rkpq[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 08:48:00 +0000 UTC FinishedAt: 2026-07-08 09:14:26 +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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNzhmYjBiMzYwZTAzOTY3NjNjNTg4M2VkNzAzNGI5ODMwNGNhN2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwOToxNDowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oXG5pbmRleCBjZjZiNjNmNWQ5YTQ1Zi4uZTI0MzFlYTZmZGQ2ODAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcbkBAIC04LDI3ICYjNDM7OCwyNyBAQFxuICNkZWZpbmUgQklUX01BU0sobnIpXHRcdCgxVUxMIFx1MDAzY1x1MDAzYyAoKG5yKSAlIEJJVFNfUEVSX0xPTkdfTE9ORykpXG4gI2RlZmluZSBCSVRfV09SRChucilcdFx0KChucikgLyBCSVRTX1BFUl9MT05HX0xPTkcpXG4gXG4tc3RydWN0IGJpdG1hcCB7XG4mIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAge1xuIFx0dTY0IGJpdHNbMF07XG4gfTtcbiBcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cyk7XG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcbiYjNDM7dm9pZCBibXBfZnJlZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4gXG4tdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mzt2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7Ym9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiBcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4mIzQzO3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTtcbiYjNDM7dm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4mIzQzO2Jvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4gXG4tYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpO1xuLWJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc21hbGwpO1xuLXZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcbiYjNDM7Ym9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7XG4mIzQzO3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbmluZGV4IGU3ZDMyZjQ0ZDY4NzA5Li43NjMxOWE1MjlmMDJiNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbkBAIC04LDcgJiM0Mzs4LDcgQEBcbiAjZGVmaW5lIE1JRF9CSVRcdFx0KEJJVFNfUEVSX0xPTkdfTE9ORyAmIzQzOyAxKVxuICNkZWZpbmUgTEFTVF9CSVRcdChURVNUX0JJVFMgLSAxKVxuIFxuLXN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuIFxuQEAgLTE5LDcgJiM0MzsxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiBTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtNDcsNyAmIzQzOzQ3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4mIzQzO1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXG4gXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGlmICghYm1wKVxuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKVxuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcbiYjNDM7c3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTExNiw3ICYjNDM7MTE2LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3RcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuJiM0MztzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfc2V0X2JpdChpbmQsIGJtcCkpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9iaXQodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wO1xuIFxuIFx0Ym1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRpZiAoIWJtcClcbkBAIC0xOTQsNyAmIzQzOzE5NCw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYW5kKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI0MCw3ICYjNDM7MjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiBTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI4NSw3ICYjNDM7Mjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDtcbiBcbiBcdGJpZyA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c21hbGwgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0zMjksNyAmIzQzOzMyOSw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9pbnRlcnNlY3RzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcbiBcbiBcdGFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGFyZzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0zNjIsNyAmIzQzOzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfY29weSh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbmluZGV4IGVlYzI4NzFlMmIwZDEwLi5lYTFmYWM5NWI0NjFlNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbkBAIC0xMiw3ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgVEVTVF9CSVRNQVBfU1lOQ19TUElOU1x0QlBGX01BWF9MT09QU1xuICNkZWZpbmUgVEVTVF9CSVRNQVBfSVRFUlNcdDEwICogMTAwMCAqIDEwMDBcbiBcbi1zdGF0aWMgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaXRtYXA7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpdG1hcDtcbiBzdGF0aWMgdm9sYXRpbGUgdTY0IHN0YXJ0ZWQ7XG4gc3RhdGljIHZvbGF0aWxlIGJvb2wgdGVzdF9hYm9ydDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jXG5pbmRleCA4MGU4MTQ0MDFmYjllYS4uNWZmOGU2ODhkZGM3NjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcbkBAIC0xMCwxNiAmIzQzOzEwLDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGliYXJlbmEvYml0bWFwLmhcdTAwM2VcbiBcbiBfX3dlYWtcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiYjNDM7c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4mIzQzO1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXHRzaXplX3Qgc2l6ZSA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKSAqIHNpemVvZihibXAtXHUwMDNlYml0c1swXSk7XG4gXG4gXHQvKiBBc3N1bWUgbG9uZy1hbGlnbmVkIG1hc2tzLiAqL1xuIFx0aWYgKGJpdHMgJSBCSVRTX1BFUl9MT05HX0xPTkcpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0Ym1wID0gKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTtcbiYjNDM7XHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xuIFx0aWYgKCFibXApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuQEAgLTI5LDMxICYjNDM7MjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2ZyZWUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX2ZyZWUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0YXJlbmFfZnJlZShibXApO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0Ym1wLVx1MDAzZWJpdHNbQklUX1dPUkQoYml0KV0gXHUwMDI2PSB+QklUX01BU0soYml0KTtcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO2Jvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHJldHVybiBibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcdTAwMjYgQklUX01BU0soYml0KTtcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xuIFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XG5AQCAtMTE2LDcgJiM0MzsxMTYsNyBAQCB2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xNDgsNyAmIzQzOzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4mIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4mIzQzO3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzFcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuJiM0Mztib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE5MCw3ICYjNDM7MTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpXG4mIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYylcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMjAzLDcgJiM0MzsyMDMsNyBAQCB2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzclxuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuJiM0Mztib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMTksNyAmIzQzOzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqXG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKVxuJiM0Mztib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMilcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMjM1LDcgJiM0MzsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc4ZmIwYjM2MGUwMzk2NzYzYzU4ODNlZDcwMzRiOTgzMDRjYTdlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDk6MTQ6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oCmluZGV4IGNmNmI2M2Y1ZDlhNDVmLi5lMjQzMWVhNmZkZDY4MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmgKQEAgLTgsMjcgJiM0Mzs4LDI3IEBACiAjZGVmaW5lIEJJVF9NQVNLKG5yKQkJKDFVTEwgJmx0OyZsdDsgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKQogI2RlZmluZSBCSVRfV09SRChucikJCSgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKQogCi1zdHJ1Y3QgYml0bWFwIHsKJiM0MztzdHJ1Y3QgYXJlbmFfYml0bWFwIHsKIAl1NjQgYml0c1swXTsKIH07CiAKLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTsKLXZvaWQgYm1wX2ZyZWUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTsKJiM0Mzt2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKIAotdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLXZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLWJvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7Ci1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO2Jvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwogCi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpOwotdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMik7Ci1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKTsKJiM0Mzt2b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTsKJiM0Mzt2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTsKJiM0Mztib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYyk7CiAKLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTsKLWJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc21hbGwpOwotdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mztib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMik7CiYjNDM7Ym9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7CiYjNDM7dm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jCmluZGV4IGU3ZDMyZjQ0ZDY4NzA5Li43NjMxOWE1MjlmMDJiNyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jCkBAIC04LDcgJiM0Mzs4LDcgQEAKICNkZWZpbmUgTUlEX0JJVAkJKEJJVFNfUEVSX0xPTkdfTE9ORyAmIzQzOyAxKQogI2RlZmluZSBMQVNUX0JJVAkoVEVTVF9CSVRTIC0gMSkKIAotc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCkKIHsKIAl2b2xhdGlsZSB1MzIgaTsKIApAQCAtMTksNyAmIzQzOzE5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wOwogCiAJYm1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJaWYgKCFibXApCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZCkKIFNFQygmIzM0O3N5c2NhbGwmIzM0OykKIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKQogewotCXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDsKIAogCWJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCWlmICghYm1wKQpAQCAtOTcsNyAmIzQzOzk3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZCkKJiM0MztzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpCiB7CiAJaWYgKGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQoaW5kLCBibXApKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90CiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpCiYjNDM7c3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZCkKIHsKIAlpZiAoYm1wX3Rlc3RfYW5kX3NldF9iaXQoaW5kLCBibXApKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpCiBTRUMoJiMzNDtzeXNjYWxsJiMzNDspCiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKQogewotCXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDsKIAogCWJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCWlmICghYm1wKQpAQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfYml0KHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wOwogCiAJYm1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJaWYgKCFibXApCkBAIC0xOTQsNyAmIzQzOzE5NCw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwogCiAJc3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKQEAgLTI0MCw3ICYjNDM7MjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZCkKIFNFQygmIzM0O3N5c2NhbGwmIzM0OykKIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfb3Iodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwogCiAJc3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKQEAgLTI4NSw3ICYjNDM7Mjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9zdWJzZXQodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZyA9IE5VTEwsICpzbWFsbCA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDsKIAogCWJpZyA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNtYWxsID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CkBAIC0zMjksNyAmIzQzOzMyOSw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpCiBTRUMoJiMzNDtzeXNjYWxsJiMzNDspCiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDsKIAogCWFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKIAlhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CkBAIC0zNjIsNyAmIzQzOzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9jb3B5KHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7CiAKIAlhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJYXJnMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMKaW5kZXggZWVjMjg3MWUyYjBkMTAuLmVhMWZhYzk1YjQ2MWU1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBACiAjZGVmaW5lIFRFU1RfQklUTUFQX1NZTkNfU1BJTlMJQlBGX01BWF9MT09QUwogI2RlZmluZSBURVNUX0JJVE1BUF9JVEVSUwkxMCAqIDEwMDAgKiAxMDAwCiAKLXN0YXRpYyBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpdG1hcDsKJiM0MztzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7CiBzdGF0aWMgdm9sYXRpbGUgdTY0IHN0YXJ0ZWQ7CiBzdGF0aWMgdm9sYXRpbGUgYm9vbCB0ZXN0X2Fib3J0OwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jCmluZGV4IDgwZTgxNDQwMWZiOWVhLi41ZmY4ZTY4OGRkYzc2MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMKQEAgLTEwLDE2ICYjNDM7MTAsMTYgQEAKICNpbmNsdWRlICZsdDtsaWJhcmVuYS9iaXRtYXAuaCZndDsKIAogX193ZWFrCi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cykKJiM0MztzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cykKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDsKJiM0MzsJc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7CiAJc2l6ZV90IHNpemUgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cykgKiBzaXplb2YoYm1wLSZndDtiaXRzWzBdKTsKIAogCS8qIEFzc3VtZSBsb25nLWFsaWduZWQgbWFza3MuICovCiAJaWYgKGJpdHMgJSBCSVRTX1BFUl9MT05HX0xPTkcpCiAJCXJldHVybiBOVUxMOwogCi0JYm1wID0gKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTsKJiM0MzsJYm1wID0gKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTsKIAlpZiAoIWJtcCkKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTI5LDMxICYjNDM7MjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mzt2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWFyZW5hX2ZyZWUoYm1wKTsKIH0KIAogX193ZWFrCi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7dm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpOwogfQogCiBfX3dlYWsKLXZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSAmYW1wOz0gfkJJVF9NQVNLKGJpdCk7CiB9CiAKIF9fd2VhawotYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7Ym9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJcmV0dXJuIGJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSAmYW1wOyBCSVRfTUFTSyhiaXQpOwogfQogCiBfX3dlYWsKLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiB9CiAKIF9fd2VhawotYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpOwogCXUzMiBpZHggPSBCSVRfV09SRChiaXQpOwpAQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQogfQogCiBfX3dlYWsKLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mzt2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKIH0KIAogX193ZWFrCi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCkKIHsKIAlzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpOwogCXZvbGF0aWxlIHUzMiBpOwpAQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCBibXBfbGFzdF93b3JkX21hc2soc2l6ZV90IGJpdHMpCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpCiYjNDM7dm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMKIH0KIAogX193ZWFrCi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKQomIzQzO3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEKIH0KIAogX193ZWFrCi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7Ym9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIGJvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKIH0KIAogX193ZWFrCi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpCiYjNDM7dm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0yMDMsNyAmIzQzOzIwMyw3IEBAIHZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyCiB9CiAKIF9fd2VhawotYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbCkKJiM0Mztib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0yMTksNyAmIzQzOzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqCiB9CiAKIF9fd2VhawotYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpCiYjNDM7Ym9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTIzNSw3ICYjNDM7MjM1LDcgQEAgYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXIKIH0KIAogX193ZWFrCi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7dm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDEKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHJlbmFtaW5nIGBzdHJ1Y3QgYml0bWFwYCB0byBgc3RydWN0IGFyZW5hX2JpdG1hcGAsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gVGhpcyBpcyAqZXhjbHVzaXZlbHkqIGEgQlBGIHNlbGYtdGVzdCBjaGFuZ2UsIHNwZWNpZmljYWxseSBjb25maW5lZCB0byB0aGF0IGBsaWJhcmVuYWAgc2VjdGlvbi4gTm8ga2VybmVsIGNvcmUsIG5vIGRyaXZlcnMsIG5vIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIEl04oCZcyBlbnRpcmVseSBsb2NhbGl6ZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay4KCkdpdmVuIHRoaXMgc2NvcGUsIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBuYW1lcyBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSByZWZhY3Rvci4gSXTigJlzIG5vdCBhbHRlcmluZyBhbnkgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGlmZiwgYnV0IEkgYW50aWNpcGF0ZSBpdCBvbmx5IG1vZGlmaWVzIHRoZSBoZWFkZXIgZmlsZSBhbmQgdGhlIHJlc3BlY3RpdmUgc2VsZiB0ZXN0cy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vazogCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuY2AKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jYAoKWWVzLCBhcyBleHBlY3RlZCwgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSeKAmWxsIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbWFyayB0aGlzIHBhdGNoIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA3Ljg3ODI2NTIyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzgyNTMwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA3Ljg3ODI3MDk5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxODE0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc4ZmIwYjM2MGUwMzk2NzYzYzU4ODNlZDcwMzRiOTgzMDRjYTdlMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA5OjE0OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcXG5pbmRleCBjZjZiNjNmNWQ5YTQ1Zi4uZTI0MzFlYTZmZGQ2ODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxcbkBAIC04LDI3ICs4LDI3IEBAXFxuICNkZWZpbmUgQklUX01BU0sobnIpXFx0XFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKVxcbiAjZGVmaW5lIEJJVF9XT1JEKG5yKVxcdFxcdCgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKVxcbiBcXG4tc3RydWN0IGJpdG1hcCB7XFxuK3N0cnVjdCBhcmVuYV9iaXRtYXAge1xcbiBcXHR1NjQgYml0c1swXTtcXG4gfTtcXG4gXFxuLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcXG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcXG4rdm9pZCBibXBfZnJlZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuIFxcbi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi12b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLWJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbiBcXG4tdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpO1xcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcXG4tYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4tdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKTtcXG4rdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4rdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpO1xcbit2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTtcXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4rdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKTtcXG4gXFxuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTtcXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbCk7XFxuLXZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcXG4rYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7XFxuK3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXFxuaW5kZXggZTdkMzJmNDRkNjg3MDkuLjc2MzE5YTUyOWYwMmI3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXFxuQEAgLTgsNyArOCw3IEBAXFxuICNkZWZpbmUgTUlEX0JJVFxcdFxcdChCSVRTX1BFUl9MT05HX0xPTkcgKyAxKVxcbiAjZGVmaW5lIExBU1RfQklUXFx0KFRFU1RfQklUUyAtIDEpXFxuIFxcbi1zdGF0aWMgdm9pZCB0ZXN0X2JtcF9zZXRhbGwoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG4gXFxuQEAgLTE5LDcgKzE5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTQ3LDcgKzQ3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXFxuIFNFQyhcXFwic3lzY2FsbFxcXCIpXFxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xcbitcXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4gXFxuIFxcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRpZiAoIWJtcClcXG5AQCAtOTcsNyArOTcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2JpdF9vcHModm9pZClcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxcbiB7XFxuIFxcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3RcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXFxuK3N0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXFxuIHtcXG4gXFx0aWYgKGJtcF90ZXN0X2FuZF9zZXRfYml0KGluZCwgYm1wKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGlcXG4gU0VDKFxcXCJzeXNjYWxsXFxcIilcXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9iaXQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTE2Nyw3ICsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTE5NCw3ICsxOTQsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcXG4gU0VDKFxcXCJzeXNjYWxsXFxcIilcXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xcbiBcXG4gXFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRzcmMyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuQEAgLTI0MCw3ICsyNDAsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FuZCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXFxuIHtcXG4tXFx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcXG4gXFxuIFxcdHNyYzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbkBAIC0yODUsNyArMjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xcbiBcXG4gXFx0YmlnID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuIFxcdHNtYWxsID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuQEAgLTMyOSw3ICszMjksNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XFxuK1xcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcXG4gXFxuIFxcdGFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0YXJnMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbkBAIC0zNjIsNyArMzYyLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9pbnRlcnNlY3RzKHZvaWQpXFxuIFNFQyhcXFwic3lzY2FsbFxcXCIpXFxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfY29weSh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMO1xcbiBcXG4gXFx0YXJnMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jXFxuaW5kZXggZWVjMjg3MWUyYjBkMTAuLmVhMWZhYzk1YjQ2MWU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jXFxuQEAgLTEyLDcgKzEyLDcgQEBcXG4gI2RlZmluZSBURVNUX0JJVE1BUF9TWU5DX1NQSU5TXFx0QlBGX01BWF9MT09QU1xcbiAjZGVmaW5lIFRFU1RfQklUTUFQX0lURVJTXFx0MTAgKiAxMDAwICogMTAwMFxcbiBcXG4tc3RhdGljIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYml0bWFwO1xcbitzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7XFxuIHN0YXRpYyB2b2xhdGlsZSB1NjQgc3RhcnRlZDtcXG4gc3RhdGljIHZvbGF0aWxlIGJvb2wgdGVzdF9hYm9ydDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcXG5pbmRleCA4MGU4MTQ0MDFmYjllYS4uNWZmOGU2ODhkZGM3NjAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xcbkBAIC0xMCwxNiArMTAsMTYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpYmFyZW5hL2JpdG1hcC5oXFx1MDAzZVxcbiBcXG4gX193ZWFrXFxuLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKVxcbitzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcdHNpemVfdCBzaXplID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpICogc2l6ZW9mKGJtcC1cXHUwMDNlYml0c1swXSk7XFxuIFxcbiBcXHQvKiBBc3N1bWUgbG9uZy1hbGlnbmVkIG1hc2tzLiAqL1xcbiBcXHRpZiAoYml0cyAlIEJJVFNfUEVSX0xPTkdfTE9ORylcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRibXAgPSAoc3RydWN0IGJpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xcbitcXHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xcbiBcXHRpZiAoIWJtcClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbkBAIC0yOSwzMSArMjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9mcmVlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGFyZW5hX2ZyZWUoYm1wKTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLXZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGJtcC1cXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGJtcC1cXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcXHUwMDI2PSB+QklUX01BU0soYml0KTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHRyZXR1cm4gYm1wLVxcdTAwM2ViaXRzW0JJVF9XT1JEKGJpdCldIFxcdTAwMjYgQklUX01BU0soYml0KTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtNzcsNyArNzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHR1NjQgdmFsID0gQklUX01BU0soYml0KTtcXG4gXFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XFxuQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcXG4gfVxcbiBcXG4gX193ZWFrXFxuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxcbit2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMilcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxcbit2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKVxcbiB7XFxuIFxcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XFxuIFxcdHZvbGF0aWxlIHUzMiBpO1xcbkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzFcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XFxuIFxcdHZvbGF0aWxlIHUzMiBpO1xcbkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKVxcbit2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMpXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzclxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbClcXG4rYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbClcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi1ib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMilcXG4rYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA4LjQyMDg4ODM5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzNTYyNDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNzhmYjBiMzYwZTAzOTY3NjNjNTg4M2VkNzAzNGI5ODMwNGNhN2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwOToxNDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcbmluZGV4IGNmNmI2M2Y1ZDlhNDVmLi5lMjQzMWVhNmZkZDY4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxuQEAgLTgsMjcgKzgsMjcgQEBcbiAjZGVmaW5lIEJJVF9NQVNLKG5yKVx0XHQoMVVMTCBcdTAwM2NcdTAwM2MgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKVxuICNkZWZpbmUgQklUX1dPUkQobnIpXHRcdCgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKVxuIFxuLXN0cnVjdCBiaXRtYXAge1xuK3N0cnVjdCBhcmVuYV9iaXRtYXAge1xuIFx0dTY0IGJpdHNbMF07XG4gfTtcbiBcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cyk7XG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpO1xuK3ZvaWQgYm1wX2ZyZWUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuIFxuLXZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiBcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4rdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4rdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMpO1xuIFxuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTtcbi1ib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNtYWxsKTtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuK2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcbitib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKTtcbit2b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG5pbmRleCBlN2QzMmY0NGQ2ODcwOS4uNzYzMTlhNTI5ZjAyYjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG5AQCAtOCw3ICs4LDcgQEBcbiAjZGVmaW5lIE1JRF9CSVRcdFx0KEJJVFNfUEVSX0xPTkdfTE9ORyArIDEpXG4gI2RlZmluZSBMQVNUX0JJVFx0KFRFU1RfQklUUyAtIDEpXG4gXG4tc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbiBcbkBAIC0xOSw3ICsxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtNDcsNyArNDcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtOTcsNyArOTcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2JpdF9vcHModm9pZClcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcbiB7XG4gXHRpZiAoYm1wX3Rlc3RfYW5kX3NldF9iaXQoaW5kLCBibXApKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfYml0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtMTY3LDcgKzE2Nyw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfYml0KHZvaWQpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXG4gXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGlmICghYm1wKVxuQEAgLTE5NCw3ICsxOTQsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiBcbiBcdHNyYzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdHNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0yNDAsNyArMjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSA9IE5VTEwsICpzcmMyID0gTlVMTCwgKmRzdCA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI4NSw3ICsyODUsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuIFxuIFx0YmlnID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRzbWFsbCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTMyOSw3ICszMjksNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxuIFNFQyhcInN5c2NhbGxcIilcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5AQCAtMzYyLDcgKzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKVxuIFNFQyhcInN5c2NhbGxcIilcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2NvcHkodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbmluZGV4IGVlYzI4NzFlMmIwZDEwLi5lYTFmYWM5NWI0NjFlNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbkBAIC0xMiw3ICsxMiw3IEBAXG4gI2RlZmluZSBURVNUX0JJVE1BUF9TWU5DX1NQSU5TXHRCUEZfTUFYX0xPT1BTXG4gI2RlZmluZSBURVNUX0JJVE1BUF9JVEVSU1x0MTAgKiAxMDAwICogMTAwMFxuIFxuLXN0YXRpYyBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpdG1hcDtcbitzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7XG4gc3RhdGljIHZvbGF0aWxlIHU2NCBzdGFydGVkO1xuIHN0YXRpYyB2b2xhdGlsZSBib29sIHRlc3RfYWJvcnQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xuaW5kZXggODBlODE0NDAxZmI5ZWEuLjVmZjhlNjg4ZGRjNzYwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jXG5AQCAtMTAsMTYgKzEwLDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGliYXJlbmEvYml0bWFwLmhcdTAwM2VcbiBcbiBfX3dlYWtcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbitzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbitcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wO1xuIFx0c2l6ZV90IHNpemUgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cykgKiBzaXplb2YoYm1wLVx1MDAzZWJpdHNbMF0pO1xuIFxuIFx0LyogQXNzdW1lIGxvbmctYWxpZ25lZCBtYXNrcy4gKi9cbiBcdGlmIChiaXRzICUgQklUU19QRVJfTE9OR19MT05HKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbi1cdGJtcCA9IChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKilhcmVuYV9tYWxsb2Moc2l6ZSk7XG4rXHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xuIFx0aWYgKCFibXApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuQEAgLTI5LDMxICsyOSwzMSBAQCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdGFyZW5hX2ZyZWUoYm1wKTtcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcdTAwMjY9IH5CSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRyZXR1cm4gYm1wLVx1MDAzZWJpdHNbQklUX1dPUkQoYml0KV0gXHUwMDI2IEJJVF9NQVNLKGJpdCk7XG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xuIFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XG5AQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4rdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyY1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxuK3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMVxuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpXG4rdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbClcbitib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpXG4rYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4rdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA4LjQyMDg4OTk3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzU2MDA4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCdzIHJlbmFtaW5nIGBzdHJ1Y3QgYml0bWFwYCB0byBgc3RydWN0IGFyZW5hX2JpdG1hcGAsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9gIGRpcmVjdG9yeS4gVGhhdCdzIGEga2V5IHBvaW50LiBUaGlzIGlzICpleGNsdXNpdmVseSogYSBCUEYgc2VsZi10ZXN0IGNoYW5nZSwgc3BlY2lmaWNhbGx5IGNvbmZpbmVkIHRvIHRoYXQgYGxpYmFyZW5hYCBzZWN0aW9uLiBObyBrZXJuZWwgY29yZSwgbm8gZHJpdmVycywgbm8gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgaXMgYmVpbmcgdG91Y2hlZC4gSXTigJlzIGVudGlyZWx5IGxvY2FsaXplZCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLlxuXG5HaXZlbiB0aGlzIHNjb3BlLCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgbmFtZXMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgcmVmYWN0b3IuIEl04oCZcyBub3QgYWx0ZXJpbmcgYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRpZmYsIGJ1dCBJIGFudGljaXBhdGUgaXQgb25seSBtb2RpZmllcyB0aGUgaGVhZGVyIGZpbGUgYW5kIHRoZSByZXNwZWN0aXZlIHNlbGYgdGVzdHMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vazogXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY2BcblxuWWVzLCBhcyBleHBlY3RlZCwgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJ4oCZbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBtYXJrIHRoaXMgcGF0Y2ggYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDEsIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwOToxNDoxNC41NTY0OTI4MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2rkpq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 08:48:00 +0000 UTC FinishedAt: 2026-07-08 09:14:16 +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+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNzhmYjBiMzYwZTAzOTY3NjNjNTg4M2VkNzAzNGI5ODMwNGNhN2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwOToxNDowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oXG5pbmRleCBjZjZiNjNmNWQ5YTQ1Zi4uZTI0MzFlYTZmZGQ2ODAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcbkBAIC04LDI3ICYjNDM7OCwyNyBAQFxuICNkZWZpbmUgQklUX01BU0sobnIpXHRcdCgxVUxMIFx1MDAzY1x1MDAzYyAoKG5yKSAlIEJJVFNfUEVSX0xPTkdfTE9ORykpXG4gI2RlZmluZSBCSVRfV09SRChucilcdFx0KChucikgLyBCSVRTX1BFUl9MT05HX0xPTkcpXG4gXG4tc3RydWN0IGJpdG1hcCB7XG4mIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAge1xuIFx0dTY0IGJpdHNbMF07XG4gfTtcbiBcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cyk7XG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcbiYjNDM7dm9pZCBibXBfZnJlZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4gXG4tdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbi1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mzt2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7dm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiYjNDM7Ym9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiBcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4mIzQzO3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTtcbiYjNDM7dm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4mIzQzO2Jvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4gXG4tYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpO1xuLWJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc21hbGwpO1xuLXZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4mIzQzO2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcbiYjNDM7Ym9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7XG4mIzQzO3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbmluZGV4IGU3ZDMyZjQ0ZDY4NzA5Li43NjMxOWE1MjlmMDJiNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcbkBAIC04LDcgJiM0Mzs4LDcgQEBcbiAjZGVmaW5lIE1JRF9CSVRcdFx0KEJJVFNfUEVSX0xPTkdfTE9ORyAmIzQzOyAxKVxuICNkZWZpbmUgTEFTVF9CSVRcdChURVNUX0JJVFMgLSAxKVxuIFxuLXN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuIFxuQEAgLTE5LDcgJiM0MzsxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiBTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtNDcsNyAmIzQzOzQ3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4mIzQzO1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXG4gXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGlmICghYm1wKVxuQEAgLTk3LDcgJiM0Mzs5Nyw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKVxuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcbiYjNDM7c3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTExNiw3ICYjNDM7MTE2LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3RcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuJiM0MztzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfc2V0X2JpdChpbmQsIGJtcCkpXG4gXHRcdHJldHVybiBmYWxzZTtcbkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9iaXQodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wO1xuIFxuIFx0Ym1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRpZiAoIWJtcClcbkBAIC0xOTQsNyAmIzQzOzE5NCw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYW5kKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI0MCw3ICYjNDM7MjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiBTRUMoXCYjMzQ7c3lzY2FsbFwmIzM0OylcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI4NSw3ICYjNDM7Mjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDtcbiBcbiBcdGJpZyA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c21hbGwgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0zMjksNyAmIzQzOzMyOSw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4gU0VDKFwmIzM0O3N5c2NhbGxcJiMzNDspXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9pbnRlcnNlY3RzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcbiBcbiBcdGFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGFyZzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0zNjIsNyAmIzQzOzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKVxuIFNFQyhcJiMzNDtzeXNjYWxsXCYjMzQ7KVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfY29weSh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcbiYjNDM7XHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbmluZGV4IGVlYzI4NzFlMmIwZDEwLi5lYTFmYWM5NWI0NjFlNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbkBAIC0xMiw3ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgVEVTVF9CSVRNQVBfU1lOQ19TUElOU1x0QlBGX01BWF9MT09QU1xuICNkZWZpbmUgVEVTVF9CSVRNQVBfSVRFUlNcdDEwICogMTAwMCAqIDEwMDBcbiBcbi1zdGF0aWMgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaXRtYXA7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpdG1hcDtcbiBzdGF0aWMgdm9sYXRpbGUgdTY0IHN0YXJ0ZWQ7XG4gc3RhdGljIHZvbGF0aWxlIGJvb2wgdGVzdF9hYm9ydDtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jXG5pbmRleCA4MGU4MTQ0MDFmYjllYS4uNWZmOGU2ODhkZGM3NjAgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcbkBAIC0xMCwxNiAmIzQzOzEwLDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGliYXJlbmEvYml0bWFwLmhcdTAwM2VcbiBcbiBfX3dlYWtcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiYjNDM7c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4mIzQzO1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXHRzaXplX3Qgc2l6ZSA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKSAqIHNpemVvZihibXAtXHUwMDNlYml0c1swXSk7XG4gXG4gXHQvKiBBc3N1bWUgbG9uZy1hbGlnbmVkIG1hc2tzLiAqL1xuIFx0aWYgKGJpdHMgJSBCSVRTX1BFUl9MT05HX0xPTkcpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0Ym1wID0gKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTtcbiYjNDM7XHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xuIFx0aWYgKCFibXApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuQEAgLTI5LDMxICYjNDM7MjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2ZyZWUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX2ZyZWUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0YXJlbmFfZnJlZShibXApO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0Ym1wLVx1MDAzZWJpdHNbQklUX1dPUkQoYml0KV0gXHUwMDI2PSB+QklUX01BU0soYml0KTtcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO2Jvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHJldHVybiBibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcdTAwMjYgQklUX01BU0soYml0KTtcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xuIFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XG5AQCAtMTE2LDcgJiM0MzsxMTYsNyBAQCB2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiYjNDM7dm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xNDgsNyAmIzQzOzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4mIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4mIzQzO3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzFcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuJiM0Mztib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE5MCw3ICYjNDM7MTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpXG4mIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYylcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMjAzLDcgJiM0MzsyMDMsNyBAQCB2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzclxuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuJiM0Mztib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMTksNyAmIzQzOzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqXG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKVxuJiM0Mztib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMilcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMjM1LDcgJiM0MzsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4mIzQzO3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMDk6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc4ZmIwYjM2MGUwMzk2NzYzYzU4ODNlZDcwMzRiOTgzMDRjYTdlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDggMDk6MTQ6MDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oCmluZGV4IGNmNmI2M2Y1ZDlhNDVmLi5lMjQzMWVhNmZkZDY4MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmgKQEAgLTgsMjcgJiM0Mzs4LDI3IEBACiAjZGVmaW5lIEJJVF9NQVNLKG5yKQkJKDFVTEwgJmx0OyZsdDsgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKQogI2RlZmluZSBCSVRfV09SRChucikJCSgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKQogCi1zdHJ1Y3QgYml0bWFwIHsKJiM0MztzdHJ1Y3QgYXJlbmFfYml0bWFwIHsKIAl1NjQgYml0c1swXTsKIH07CiAKLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTsKLXZvaWQgYm1wX2ZyZWUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTsKJiM0Mzt2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKIAotdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLXZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLWJvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7Ci1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mzt2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO2Jvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwogCi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpOwotdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMik7Ci1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApOwotdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKTsKJiM0Mzt2b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTsKJiM0Mzt2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTsKJiM0Mztib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApOwomIzQzO3ZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYyk7CiAKLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTsKLWJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc21hbGwpOwotdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTsKJiM0Mztib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMik7CiYjNDM7Ym9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7CiYjNDM7dm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jCmluZGV4IGU3ZDMyZjQ0ZDY4NzA5Li43NjMxOWE1MjlmMDJiNyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jCkBAIC04LDcgJiM0Mzs4LDcgQEAKICNkZWZpbmUgTUlEX0JJVAkJKEJJVFNfUEVSX0xPTkdfTE9ORyAmIzQzOyAxKQogI2RlZmluZSBMQVNUX0JJVAkoVEVTVF9CSVRTIC0gMSkKIAotc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCkKIHsKIAl2b2xhdGlsZSB1MzIgaTsKIApAQCAtMTksNyAmIzQzOzE5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wOwogCiAJYm1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJaWYgKCFibXApCkBAIC00Nyw3ICYjNDM7NDcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZCkKIFNFQygmIzM0O3N5c2NhbGwmIzM0OykKIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKQogewotCXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDsKIAogCWJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCWlmICghYm1wKQpAQCAtOTcsNyAmIzQzOzk3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpCiAJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZCkKJiM0MztzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpCiB7CiAJaWYgKGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQoaW5kLCBibXApKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90CiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpCiYjNDM7c3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZCkKIHsKIAlpZiAoYm1wX3Rlc3RfYW5kX3NldF9iaXQoaW5kLCBibXApKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xMzgsNyAmIzQzOzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpCiBTRUMoJiMzNDtzeXNjYWxsJiMzNDspCiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKQogewotCXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDsKIAogCWJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCWlmICghYm1wKQpAQCAtMTY3LDcgJiM0MzsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9zZXRfYml0KHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wOwogCiAJYm1wID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJaWYgKCFibXApCkBAIC0xOTQsNyAmIzQzOzE5NCw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwogCiAJc3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKQEAgLTI0MCw3ICYjNDM7MjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZCkKIFNFQygmIzM0O3N5c2NhbGwmIzM0OykKIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfb3Iodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMOwogCiAJc3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKQEAgLTI4NSw3ICYjNDM7Mjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9zdWJzZXQodm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZyA9IE5VTEwsICpzbWFsbCA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDsKIAogCWJpZyA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwogCXNtYWxsID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CkBAIC0zMjksNyAmIzQzOzMyOSw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpCiBTRUMoJiMzNDtzeXNjYWxsJiMzNDspCiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZCkKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7CiYjNDM7CXN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDsKIAogCWFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTsKIAlhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CkBAIC0zNjIsNyAmIzQzOzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKQogU0VDKCYjMzQ7c3lzY2FsbCYjMzQ7KQogX193ZWFrIGludCB0ZXN0X2JpdG1hcF9jb3B5KHZvaWQpCiB7Ci0Jc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMOwomIzQzOwlzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7CiAKIAlhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7CiAJYXJnMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMKaW5kZXggZWVjMjg3MWUyYjBkMTAuLmVhMWZhYzk1YjQ2MWU1IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMKQEAgLTEyLDcgJiM0MzsxMiw3IEBACiAjZGVmaW5lIFRFU1RfQklUTUFQX1NZTkNfU1BJTlMJQlBGX01BWF9MT09QUwogI2RlZmluZSBURVNUX0JJVE1BUF9JVEVSUwkxMCAqIDEwMDAgKiAxMDAwCiAKLXN0YXRpYyBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpdG1hcDsKJiM0MztzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7CiBzdGF0aWMgdm9sYXRpbGUgdTY0IHN0YXJ0ZWQ7CiBzdGF0aWMgdm9sYXRpbGUgYm9vbCB0ZXN0X2Fib3J0OwogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jCmluZGV4IDgwZTgxNDQwMWZiOWVhLi41ZmY4ZTY4OGRkYzc2MCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMKQEAgLTEwLDE2ICYjNDM7MTAsMTYgQEAKICNpbmNsdWRlICZsdDtsaWJhcmVuYS9iaXRtYXAuaCZndDsKIAogX193ZWFrCi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cykKJiM0MztzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cykKIHsKLQlzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDsKJiM0MzsJc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7CiAJc2l6ZV90IHNpemUgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cykgKiBzaXplb2YoYm1wLSZndDtiaXRzWzBdKTsKIAogCS8qIEFzc3VtZSBsb25nLWFsaWduZWQgbWFza3MuICovCiAJaWYgKGJpdHMgJSBCSVRTX1BFUl9MT05HX0xPTkcpCiAJCXJldHVybiBOVUxMOwogCi0JYm1wID0gKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTsKJiM0MzsJYm1wID0gKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqKWFyZW5hX21hbGxvYyhzaXplKTsKIAlpZiAoIWJtcCkKIAkJcmV0dXJuIE5VTEw7CiAKQEAgLTI5LDMxICYjNDM7MjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mzt2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWFyZW5hX2ZyZWUoYm1wKTsKIH0KIAogX193ZWFrCi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7dm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpOwogfQogCiBfX3dlYWsKLXZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCWJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSAmYW1wOz0gfkJJVF9NQVNLKGJpdCk7CiB9CiAKIF9fd2VhawotYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7Ym9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJcmV0dXJuIGJtcC0mZ3Q7Yml0c1tCSVRfV09SRChiaXQpXSAmYW1wOyBCSVRfTUFTSyhiaXQpOwogfQogCiBfX3dlYWsKLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC03Nyw3ICYjNDM7NzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiB9CiAKIF9fd2VhawotYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mztib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpOwogCXUzMiBpZHggPSBCSVRfV09SRChiaXQpOwpAQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQogfQogCiBfX3dlYWsKLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKJiM0Mzt2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC0xMTYsNyAmIzQzOzExNiw3IEBAIHZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKIH0KIAogX193ZWFrCi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApCiB7CiAJdTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7CiAJdTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7CkBAIC0xMzEsNyAmIzQzOzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKQomIzQzO3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCkKIHsKIAlzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpOwogCXZvbGF0aWxlIHUzMiBpOwpAQCAtMTQ4LDcgJiM0MzsxNDgsNyBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHU2NCBibXBfbGFzdF93b3JkX21hc2soc2l6ZV90IGJpdHMpCiB9CiAKIF9fd2Vhawotdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpCiYjNDM7dm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMKIH0KIAogX193ZWFrCi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKQomIzQzO3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTE3NCw3ICYjNDM7MTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEKIH0KIAogX193ZWFrCi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7Ym9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0xOTAsNyAmIzQzOzE5MCw3IEBAIGJvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCkKIH0KIAogX193ZWFrCi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpCiYjNDM7dm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0yMDMsNyAmIzQzOzIwMyw3IEBAIHZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyCiB9CiAKIF9fd2VhawotYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbCkKJiM0Mztib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CkBAIC0yMTksNyAmIzQzOzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqCiB9CiAKIF9fd2VhawotYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpCiYjNDM7Ym9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpCiB7CiAJc2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTsKIAl2b2xhdGlsZSB1MzIgaTsKQEAgLTIzNSw3ICYjNDM7MjM1LDcgQEAgYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXIKIH0KIAogX193ZWFrCi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApCiYjNDM7dm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKQogewogCXNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7CiAJdm9sYXRpbGUgdTMyIGk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDEKCQkJCQkJCW91dHB1dDogNzcKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHJlbmFtaW5nIGBzdHJ1Y3QgYml0bWFwYCB0byBgc3RydWN0IGFyZW5hX2JpdG1hcGAsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gVGhpcyBpcyAqZXhjbHVzaXZlbHkqIGEgQlBGIHNlbGYtdGVzdCBjaGFuZ2UsIHNwZWNpZmljYWxseSBjb25maW5lZCB0byB0aGF0IGBsaWJhcmVuYWAgc2VjdGlvbi4gTm8ga2VybmVsIGNvcmUsIG5vIGRyaXZlcnMsIG5vIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb2RlIGlzIGJlaW5nIHRvdWNoZWQuIEl04oCZcyBlbnRpcmVseSBsb2NhbGl6ZWQgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yay4KCkdpdmVuIHRoaXMgc2NvcGUsIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBuYW1lcyBhbmQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSByZWZhY3Rvci4gSXTigJlzIG5vdCBhbHRlcmluZyBhbnkgY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGlmZiwgYnV0IEkgYW50aWNpcGF0ZSBpdCBvbmx5IG1vZGlmaWVzIHRoZSBoZWFkZXIgZmlsZSBhbmQgdGhlIHJlc3BlY3RpdmUgc2VsZiB0ZXN0cy4KCkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vazogCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhgCiogICBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X2JpdG1hcC5icGYuY2AKKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jYAoqICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jYAoKWWVzLCBhcyBleHBlY3RlZCwgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSeKAmWxsIGNhbGwgYHNldC1yZXN1bHRzYCBhbmQgbWFyayB0aGlzIHBhdGNoIGFjY29yZGluZ2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDA5OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA3Ljg3ODI2NTIyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2NzgyNTMwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA3Ljg3ODI3MDk5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQxODE0NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc4ZmIwYjM2MGUwMzk2NzYzYzU4ODNlZDcwMzRiOTgzMDRjYTdlMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDA5OjE0OjA2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcXG5pbmRleCBjZjZiNjNmNWQ5YTQ1Zi4uZTI0MzFlYTZmZGQ2ODAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxcbkBAIC04LDI3ICs4LDI3IEBAXFxuICNkZWZpbmUgQklUX01BU0sobnIpXFx0XFx0KDFVTEwgXFx1MDAzY1xcdTAwM2MgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKVxcbiAjZGVmaW5lIEJJVF9XT1JEKG5yKVxcdFxcdCgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKVxcbiBcXG4tc3RydWN0IGJpdG1hcCB7XFxuK3N0cnVjdCBhcmVuYV9iaXRtYXAge1xcbiBcXHR1NjQgYml0c1swXTtcXG4gfTtcXG4gXFxuLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcXG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK3N0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKTtcXG4rdm9pZCBibXBfZnJlZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuIFxcbi12b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi12b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuLWJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIF9fYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbit2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xcbiBcXG4tdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpO1xcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcXG4tYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4tdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKTtcXG4rdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4rdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpO1xcbit2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKTtcXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcXG4rdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKTtcXG4gXFxuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTtcXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbCk7XFxuLXZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuK2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcXG4rYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbCk7XFxuK3ZvaWQgYm1wX3ByaW50KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXFxuaW5kZXggZTdkMzJmNDRkNjg3MDkuLjc2MzE5YTUyOWYwMmI3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXFxuQEAgLTgsNyArOCw3IEBAXFxuICNkZWZpbmUgTUlEX0JJVFxcdFxcdChCSVRTX1BFUl9MT05HX0xPTkcgKyAxKVxcbiAjZGVmaW5lIExBU1RfQklUXFx0KFRFU1RfQklUUyAtIDEpXFxuIFxcbi1zdGF0aWMgdm9pZCB0ZXN0X2JtcF9zZXRhbGwoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG4gXFxuQEAgLTE5LDcgKzE5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTQ3LDcgKzQ3LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXFxuIFNFQyhcXFwic3lzY2FsbFxcXCIpXFxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfYml0X29wcyh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xcbitcXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4gXFxuIFxcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRpZiAoIWJtcClcXG5AQCAtOTcsNyArOTcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2JpdF9vcHModm9pZClcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxcbiB7XFxuIFxcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3RcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXFxuK3N0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXFxuIHtcXG4gXFx0aWYgKGJtcF90ZXN0X2FuZF9zZXRfYml0KGluZCwgYm1wKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGlcXG4gU0VDKFxcXCJzeXNjYWxsXFxcIilcXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9iaXQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTE2Nyw3ICsxNjcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX2NsZWFyX2JpdCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcbiBcXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0aWYgKCFibXApXFxuQEAgLTE5NCw3ICsxOTQsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcXG4gU0VDKFxcXCJzeXNjYWxsXFxcIilcXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xcbiBcXG4gXFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRzcmMyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuQEAgLTI0MCw3ICsyNDAsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FuZCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXFxuIHtcXG4tXFx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcXG4gXFxuIFxcdHNyYzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbkBAIC0yODUsNyArMjg1LDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnID0gTlVMTCwgKnNtYWxsID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xcbiBcXG4gXFx0YmlnID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuIFxcdHNtYWxsID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuQEAgLTMyOSw3ICszMjksNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxcbiBTRUMoXFxcInN5c2NhbGxcXFwiKVxcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZClcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XFxuK1xcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcXG4gXFxuIFxcdGFyZzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcXG4gXFx0YXJnMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbkBAIC0zNjIsNyArMzYyLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9pbnRlcnNlY3RzKHZvaWQpXFxuIFNFQyhcXFwic3lzY2FsbFxcXCIpXFxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfY29weSh2b2lkKVxcbiB7XFxuLVxcdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxID0gTlVMTCwgKmFyZzIgPSBOVUxMO1xcbiBcXG4gXFx0YXJnMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xcbiBcXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jXFxuaW5kZXggZWVjMjg3MWUyYjBkMTAuLmVhMWZhYzk1YjQ2MWU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jXFxuQEAgLTEyLDcgKzEyLDcgQEBcXG4gI2RlZmluZSBURVNUX0JJVE1BUF9TWU5DX1NQSU5TXFx0QlBGX01BWF9MT09QU1xcbiAjZGVmaW5lIFRFU1RfQklUTUFQX0lURVJTXFx0MTAgKiAxMDAwICogMTAwMFxcbiBcXG4tc3RhdGljIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYml0bWFwO1xcbitzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7XFxuIHN0YXRpYyB2b2xhdGlsZSB1NjQgc3RhcnRlZDtcXG4gc3RhdGljIHZvbGF0aWxlIGJvb2wgdGVzdF9hYm9ydDtcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcXG5pbmRleCA4MGU4MTQ0MDFmYjllYS4uNWZmOGU2ODhkZGM3NjAgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xcbkBAIC0xMCwxNiArMTAsMTYgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpYmFyZW5hL2JpdG1hcC5oXFx1MDAzZVxcbiBcXG4gX193ZWFrXFxuLXN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wX2FsbG9jKHNpemVfdCBiaXRzKVxcbitzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcXG4ge1xcbi1cXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcXG4rXFx0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XFxuIFxcdHNpemVfdCBzaXplID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpICogc2l6ZW9mKGJtcC1cXHUwMDNlYml0c1swXSk7XFxuIFxcbiBcXHQvKiBBc3N1bWUgbG9uZy1hbGlnbmVkIG1hc2tzLiAqL1xcbiBcXHRpZiAoYml0cyAlIEJJVFNfUEVSX0xPTkdfTE9ORylcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbi1cXHRibXAgPSAoc3RydWN0IGJpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xcbitcXHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xcbiBcXHRpZiAoIWJtcClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbkBAIC0yOSwzMSArMjksMzEgQEAgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9mcmVlKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGFyZW5hX2ZyZWUoYm1wKTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLXZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGJtcC1cXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgX19ibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdGJtcC1cXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcXHUwMDI2PSB+QklUX01BU0soYml0KTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX3Rlc3RfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHRyZXR1cm4gYm1wLVxcdTAwM2ViaXRzW0JJVF9XT1JEKGJpdCldIFxcdTAwMjYgQklUX01BU0soYml0KTtcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtNzcsNyArNzcsNyBAQCBib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi1ib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHR1NjQgdmFsID0gQklUX01BU0soYml0KTtcXG4gXFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XFxuQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xcbiBcXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcXG5AQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXFxuK3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcXG4gfVxcbiBcXG4gX193ZWFrXFxuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxcbit2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMilcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxcbit2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMyKVxcbiB7XFxuIFxcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XFxuIFxcdHZvbGF0aWxlIHUzMiBpO1xcbkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzFcXG4gfVxcbiBcXG4gX193ZWFrXFxuLWJvb2wgYm1wX2VtcHR5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB7XFxuIFxcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XFxuIFxcdHZvbGF0aWxlIHUzMiBpO1xcbkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjKVxcbit2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMpXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzclxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbClcXG4rYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzbWFsbClcXG4ge1xcbiBcXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xcbiBcXHR2b2xhdGlsZSB1MzIgaTtcXG5AQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgYm1wX3N1YnNldChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqXFxuIH1cXG4gXFxuIF9fd2Vha1xcbi1ib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMilcXG4rYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxcbiB9XFxuIFxcbiBfX3dlYWtcXG4tdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxcbit2b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXFxuIHtcXG4gXFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcXG4gXFx0dm9sYXRpbGUgdTMyIGk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA4LjQyMDg4ODM5OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzNTYyNDUyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzICh0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEpIGJ5IHJlbmFtaW5nIGEgc3RydWN0LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGNvcmUga2VybmVsLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyNzhmYjBiMzYwZTAzOTY3NjNjNTg4M2VkNzAzNGI5ODMwNGNhN2UxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAwOToxNDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvbGliYXJlbmEvYml0bWFwLmhcbmluZGV4IGNmNmI2M2Y1ZDlhNDVmLi5lMjQzMWVhNmZkZDY4MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9saWJhcmVuYS9iaXRtYXAuaFxuQEAgLTgsMjcgKzgsMjcgQEBcbiAjZGVmaW5lIEJJVF9NQVNLKG5yKVx0XHQoMVVMTCBcdTAwM2NcdTAwM2MgKChucikgJSBCSVRTX1BFUl9MT05HX0xPTkcpKVxuICNkZWZpbmUgQklUX1dPUkQobnIpXHRcdCgobnIpIC8gQklUU19QRVJfTE9OR19MT05HKVxuIFxuLXN0cnVjdCBiaXRtYXAge1xuK3N0cnVjdCBhcmVuYV9iaXRtYXAge1xuIFx0dTY0IGJpdHNbMF07XG4gfTtcbiBcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cyk7XG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXBfYWxsb2Moc2l6ZV90IGJpdHMpO1xuK3ZvaWQgYm1wX2ZyZWUoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuIFxuLXZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tdm9pZCBfX2JtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4tYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCk7XG4rYm9vbCBibXBfdGVzdF9hbmRfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbiBcbi12b2lkIGJtcF9jbGVhcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2FuZChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKTtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuLXZvaWQgYm1wX2NvcHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYyk7XG4rdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4rdm9pZCBibXBfb3Ioc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjMik7XG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKTtcbit2b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMpO1xuIFxuLWJvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcyKTtcbi1ib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNtYWxsKTtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApO1xuK2Jvb2wgYm1wX2ludGVyc2VjdHMoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYXJnMSwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcyKTtcbitib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKTtcbit2b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG5pbmRleCBlN2QzMmY0NGQ2ODcwOS4uNzYzMTlhNTI5ZjAyYjcgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jXG5AQCAtOCw3ICs4LDcgQEBcbiAjZGVmaW5lIE1JRF9CSVRcdFx0KEJJVFNfUEVSX0xPTkdfTE9ORyArIDEpXG4gI2RlZmluZSBMQVNUX0JJVFx0KFRFU1RfQklUUyAtIDEpXG4gXG4tc3RhdGljIHZvaWQgdGVzdF9ibXBfc2V0YWxsKHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3N0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbiBcbkBAIC0xOSw3ICsxOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfYm1wX3NldGFsbChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbGxvY19mcmVlKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtNDcsNyArNDcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2FsbG9jX2ZyZWUodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9iaXRfb3BzKHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtOTcsNyArOTcsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2JpdF9vcHModm9pZClcbiBcdHJldHVybiAtRUlOVkFMO1xuIH1cbiBcbi1zdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfc2luZ2xlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wLCBzaXplX3QgaW5kKVxuIHtcbiBcdGlmIChibXBfdGVzdF9hbmRfY2xlYXJfYml0KGluZCwgYm1wKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1xuQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2JpdG1hcF90ZXN0X2FuZF9jbGVhcl9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpbmQpXG4rc3RhdGljIGJvb2wgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X3NpbmdsZShzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcCwgc2l6ZV90IGluZClcbiB7XG4gXHRpZiAoYm1wX3Rlc3RfYW5kX3NldF9iaXQoaW5kLCBibXApKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG5AQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9zaW5nbGUoc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXAsIHNpemVfdCBpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfYml0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXA7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcDtcbiBcbiBcdGJtcCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0aWYgKCFibXApXG5AQCAtMTY3LDcgKzE2Nyw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfY2xlYXJfYml0KHZvaWQpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfdGVzdF9hbmRfc2V0X2JpdCh2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXA7XG4gXG4gXHRibXAgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdGlmICghYm1wKVxuQEAgLTE5NCw3ICsxOTQsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3Rlc3RfYW5kX3NldF9iaXQodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxID0gTlVMTCwgKnNyYzIgPSBOVUxMLCAqZHN0ID0gTlVMTDtcbiBcbiBcdHNyYzEgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbiBcdHNyYzIgPSBibXBfYWxsb2MoVEVTVF9CSVRTKTtcbkBAIC0yNDAsNyArMjQwLDcgQEAgX193ZWFrIGludCB0ZXN0X2JpdG1hcF9hbmQodm9pZClcbiBTRUMoXCJzeXNjYWxsXCIpXG4gX193ZWFrIGludCB0ZXN0X2JpdG1hcF9vcih2b2lkKVxuIHtcbi1cdHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSA9IE5VTEwsICpzcmMyID0gTlVMTCwgKmRzdCA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzEgPSBOVUxMLCAqc3JjMiA9IE5VTEwsICpkc3QgPSBOVUxMO1xuIFxuIFx0c3JjMSA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuIFx0c3JjMiA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTI4NSw3ICsyODUsNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX29yKHZvaWQpXG4gU0VDKFwic3lzY2FsbFwiKVxuIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfc3Vic2V0KHZvaWQpXG4ge1xuLVx0c3RydWN0IGJpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuK1x0c3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaWcgPSBOVUxMLCAqc21hbGwgPSBOVUxMO1xuIFxuIFx0YmlnID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRzbWFsbCA9IGJtcF9hbGxvYyhURVNUX0JJVFMpO1xuQEAgLTMyOSw3ICszMjksNyBAQCBfX3dlYWsgaW50IHRlc3RfYml0bWFwX3N1YnNldCh2b2lkKVxuIFNFQyhcInN5c2NhbGxcIilcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2ludGVyc2VjdHModm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5AQCAtMzYyLDcgKzM2Miw3IEBAIF9fd2VhayBpbnQgdGVzdF9iaXRtYXBfaW50ZXJzZWN0cyh2b2lkKVxuIFNFQyhcInN5c2NhbGxcIilcbiBfX3dlYWsgaW50IHRlc3RfYml0bWFwX2NvcHkodm9pZClcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4rXHRzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzEgPSBOVUxMLCAqYXJnMiA9IE5VTEw7XG4gXG4gXHRhcmcxID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG4gXHRhcmcyID0gYm1wX2FsbG9jKFRFU1RfQklUUyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NlbGZ0ZXN0cy90ZXN0X3BhcmFsbGVsX2JpdG1hcC5icGYuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbmluZGV4IGVlYzI4NzFlMmIwZDEwLi5lYTFmYWM5NWI0NjFlNSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zZWxmdGVzdHMvdGVzdF9wYXJhbGxlbF9iaXRtYXAuYnBmLmNcbkBAIC0xMiw3ICsxMiw3IEBAXG4gI2RlZmluZSBURVNUX0JJVE1BUF9TWU5DX1NQSU5TXHRCUEZfTUFYX0xPT1BTXG4gI2RlZmluZSBURVNUX0JJVE1BUF9JVEVSU1x0MTAgKiAxMDAwICogMTAwMFxuIFxuLXN0YXRpYyBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpdG1hcDtcbitzdGF0aWMgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpiaXRtYXA7XG4gc3RhdGljIHZvbGF0aWxlIHU2NCBzdGFydGVkO1xuIHN0YXRpYyB2b2xhdGlsZSBib29sIHRlc3RfYWJvcnQ7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY1xuaW5kZXggODBlODE0NDAxZmI5ZWEuLjVmZjhlNjg4ZGRjNzYwIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9iaXRtYXAuYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYml0bWFwLmJwZi5jXG5AQCAtMTAsMTYgKzEwLDE2IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGliYXJlbmEvYml0bWFwLmhcdTAwM2VcbiBcbiBfX3dlYWtcbi1zdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbitzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiB7XG4tXHRzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcDtcbitcdHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wO1xuIFx0c2l6ZV90IHNpemUgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cykgKiBzaXplb2YoYm1wLVx1MDAzZWJpdHNbMF0pO1xuIFxuIFx0LyogQXNzdW1lIGxvbmctYWxpZ25lZCBtYXNrcy4gKi9cbiBcdGlmIChiaXRzICUgQklUU19QRVJfTE9OR19MT05HKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbi1cdGJtcCA9IChzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKilhcmVuYV9tYWxsb2Moc2l6ZSk7XG4rXHRibXAgPSAoc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICopYXJlbmFfbWFsbG9jKHNpemUpO1xuIFx0aWYgKCFibXApXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuQEAgLTI5LDMxICsyOSwzMSBAQCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcF9hbGxvYyhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfZnJlZShzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIGJtcF9mcmVlKHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdGFyZW5hX2ZyZWUoYm1wKTtcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBfX2JtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgX19ibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSB8PSBCSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIF9fYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRibXAtXHUwMDNlYml0c1tCSVRfV09SRChiaXQpXSBcdTAwMjY9IH5CSVRfTUFTSyhiaXQpO1xuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRyZXR1cm4gYm1wLVx1MDAzZWJpdHNbQklUX1dPUkQoYml0KV0gXHUwMDI2IEJJVF9NQVNLKGJpdCk7XG4gfVxuIFxuIF9fd2Vha1xuLWJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2FuZF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC03Nyw3ICs3Nyw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfdGVzdF9hbmRfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbitib29sIGJtcF90ZXN0X2FuZF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHU2NCB2YWwgPSBCSVRfTUFTSyhiaXQpO1xuIFx0dTMyIGlkeCA9IEJJVF9XT1JEKGJpdCk7XG5AQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgYm1wX3Rlc3RfYW5kX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4gfVxuIFxuIF9fd2Vha1xuLXZvaWQgYm1wX2NsZWFyX2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbit2b2lkIGJtcF9jbGVhcl9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBibXBfY2xlYXJfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9zZXRfYml0KHUzMiBiaXQsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgYm1wX3NldF9iaXQodTMyIGJpdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpibXApXG4ge1xuIFx0dTY0IHZhbCA9IEJJVF9NQVNLKGJpdCk7XG4gXHR1MzIgaWR4ID0gQklUX1dPUkQoYml0KTtcbkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBibXBfc2V0X2JpdCh1MzIgYml0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJtcClcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfY2xlYXIoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuK3ZvaWQgYm1wX2NsZWFyKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmJtcClcbiB7XG4gXHRzaXplX3QgbndvcmRzID0gQklUU19UT19MT05HX0xPTkdTKGJpdHMpO1xuIFx0dm9sYXRpbGUgdTMyIGk7XG5AQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdTY0IGJtcF9sYXN0X3dvcmRfbWFzayhzaXplX3QgYml0cylcbiB9XG4gXG4gX193ZWFrXG4tdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4rdm9pZCBibXBfYW5kKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIGJtcF9hbmQoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqZHN0LCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKnNyY1xuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMSwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMyKVxuK3ZvaWQgYm1wX29yKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpzcmMxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNyYzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIGJtcF9vcihzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JjMVxuIH1cbiBcbiBfX3dlYWtcbi1ib29sIGJtcF9lbXB0eShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4rYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBibXBfZW1wdHkoc2l6ZV90IGJpdHMsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqYm1wKVxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9jb3B5KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmRzdCwgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzcmMpXG4rdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqc3JjKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBibXBfY29weShzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpkc3QsIHN0cnVjdCBiaXRtYXAgX19hcmVuYSAqc3JcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpzbWFsbClcbitib29sIGJtcF9zdWJzZXQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYmlnLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKnNtYWxsKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBibXBfc3Vic2V0KHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmJpZywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpcbiB9XG4gXG4gX193ZWFrXG4tYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzIpXG4rYm9vbCBibXBfaW50ZXJzZWN0cyhzaXplX3QgYml0cywgc3RydWN0IGFyZW5hX2JpdG1hcCBfX2FyZW5hICphcmcxLCBzdHJ1Y3QgYXJlbmFfYml0bWFwIF9fYXJlbmEgKmFyZzIpXG4ge1xuIFx0c2l6ZV90IG53b3JkcyA9IEJJVFNfVE9fTE9OR19MT05HUyhiaXRzKTtcbiBcdHZvbGF0aWxlIHUzMiBpO1xuQEAgLTIzNSw3ICsyMzUsNyBAQCBib29sIGJtcF9pbnRlcnNlY3RzKHNpemVfdCBiaXRzLCBzdHJ1Y3QgYml0bWFwIF9fYXJlbmEgKmFyZzEsIHN0cnVjdCBiaXRtYXAgX19hclxuIH1cbiBcbiBfX3dlYWtcbi12b2lkIGJtcF9wcmludChzaXplX3QgYml0cywgc3RydWN0IGJpdG1hcCBfX2FyZW5hICpibXApXG4rdm9pZCBibXBfcHJpbnQoc2l6ZV90IGJpdHMsIHN0cnVjdCBhcmVuYV9iaXRtYXAgX19hcmVuYSAqYm1wKVxuIHtcbiBcdHNpemVfdCBud29yZHMgPSBCSVRTX1RPX0xPTkdfTE9OR1MoYml0cyk7XG4gXHR2b2xhdGlsZSB1MzIgaTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDA5OjE0OjA4LjQyMDg4OTk3OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMzU2MDA4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCdzIHJlbmFtaW5nIGBzdHJ1Y3QgYml0bWFwYCB0byBgc3RydWN0IGFyZW5hX2JpdG1hcGAsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9gIGRpcmVjdG9yeS4gVGhhdCdzIGEga2V5IHBvaW50LiBUaGlzIGlzICpleGNsdXNpdmVseSogYSBCUEYgc2VsZi10ZXN0IGNoYW5nZSwgc3BlY2lmaWNhbGx5IGNvbmZpbmVkIHRvIHRoYXQgYGxpYmFyZW5hYCBzZWN0aW9uLiBObyBrZXJuZWwgY29yZSwgbm8gZHJpdmVycywgbm8gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgaXMgYmVpbmcgdG91Y2hlZC4gSXTigJlzIGVudGlyZWx5IGxvY2FsaXplZCB3aXRoaW4gdGhlIHRlc3RpbmcgZnJhbWV3b3JrLlxuXG5HaXZlbiB0aGlzIHNjb3BlLCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgbmFtZXMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgcmVmYWN0b3IuIEl04oCZcyBub3QgYWx0ZXJpbmcgYW55IGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRpZmYsIGJ1dCBJIGFudGljaXBhdGUgaXQgb25seSBtb2RpZmllcyB0aGUgaGVhZGVyIGZpbGUgYW5kIHRoZSByZXNwZWN0aXZlIHNlbGYgdGVzdHMuXG5cbkxldCBtZSB0YWtlIGEgcXVpY2sgbG9vazogXG4qICAgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2xpYmFyZW5hL2JpdG1hcC5oYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfYml0bWFwLmJwZi5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc2VsZnRlc3RzL3Rlc3RfcGFyYWxsZWxfYml0bWFwLmJwZi5jYFxuKiAgIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2JpdG1hcC5icGYuY2BcblxuWWVzLCBhcyBleHBlY3RlZCwgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJ4oCZbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBtYXJrIHRoaXMgcGF0Y2ggYWNjb3JkaW5nbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MDEsIk91dHB1dFRva2VucyI6NzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQwOToxNDoxNC41NTY0OTI4MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyAodG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hKSBieSByZW5hbWluZyBhIHN0cnVjdC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBjb3JlIGtlcm5lbCwgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow2rkpq[1] Phase: Running StartedAt: 2026-07-08 09:14:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2rkpq[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-08 09:14:26 +0000 UTC FinishedAt: 2026-07-08 09:14:30 +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,}