Name: series-workflowd2w9d Phase: Failed StartedAt: 2026-08-03 08:23:56 +0000 UTC FinishedAt: 2026-08-03 08:53:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2w9d[0] Phase: Succeeded StartedAt: 2026-08-03 08:23:56 +0000 UTC FinishedAt: 2026-08-03 08:53:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2w9d[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 08:23:56 +0000 UTC FinishedAt: 2026-08-03 08:53:34 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYWJjYzY5MDY5MGY2ZGM2MmFlMTBlODcxMTQ0MWE3Nzg1ZDJlOGM3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODo1MzowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgJiM0MzsyNCw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0cmFjZXBvaW50LmhcJiMzNDtcbiBcbi1cbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcdFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxuIFxuICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVU1x0XHRcdDB4MVxuQEAgLTI5MSw3ICYjNDM7MjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE1LDcgJiM0MzszMTMsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjMsNyAmIzQzOzM2MCw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdFx0ICAgICAgIHUzMiBpZHgpXG5AQCAtMzkxLDcgJiM0MzszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNyw3ICYjNDM7NDEyLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjgsNyAmIzQzOzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHRcdCAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXG4ge1xuQEAgLTQ3NCw3ICYjNDM7NDY3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgyLDE0ICYjNDM7NDc0LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjcsMTQgJiM0Mzs1MTcsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbiBcdHJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxuIFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKVxuIHtcbkBAIC01ODMsNyAmIzQzOzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC02MDEsNyAmIzQzOzU4OCw2IEBAIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0cmV0dXJuIHdvcms7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmspXG5AQCAtNjcwLDcgJiM0Mzs2NTYsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRyZXR1cm4gZmxvd2lkO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5AQCAtNjg0LDcgJiM0Mzs2NjksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC03MTcsNyAmIzQzOzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcbiBcdHJldHVybiBmbG93aWQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cdTAwM2VmbG93O1xuQEAgLTc5MSw3ICYjNDM7Nzc0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTgwNCw3ICYjNDM7Nzg2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTgxOSw3ICYjNDM7ODAwLDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTg0Nyw3ICYjNDM7ODI3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlKVxuQEAgLTg1Nyw3ICYjNDM7ODM2LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg2Niw3ICYjNDM7ODQ0LDYgQEAgYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg3NSw3ICYjNDM7ODUyLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtODk1LDcgJiM0Mzs4NzEsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC05MjgsNyAmIzQzOzkwMyw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0XHRcdCBza2IsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTEwMDYsNyAmIzQzOzk4MCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC0xMDI0LDcgJiM0Mzs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiB7XG5AQCAtMTAzNCw3ICYjNDM7MTAwNiw2IEBAIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIFx0XHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsXG4gXHRcdFx0ICAgICB1MzIgY291bnQpXG5AQCAtMTEwOCw3ICYjNDM7MTA3OSw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMTE4LDcgJiM0MzsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmICYjNDM7PSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMTI4LDcgJiM0MzsxMDk3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9ldmVudGJ1ZiAmIzQzOz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMTcxLDcgJiM0MzsxMTM5LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHNrYik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTEyODksNyAmIzQzOzEyNTYsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0XHQgICAgICAgdm9pZCAqYnVmKVxuQEAgLTEzMTksNyAmIzQzOzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzY4LDcgJiM0MzsxMzMzLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxuIHtcbkBAIC0xNDAwLDcgJiM0MzsxMzY0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRnb3RvIGFnYWluO1xuIH1cbiBcbi1cbiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuQEAgLTE0MzIsNyAmIzQzOzEzOTUsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjQ4LDcgJiM0MzsxNjEwLDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdGlmICghbXNnYnVmLVx1MDAzZWZsb3cpXG4gXHRcdGdvdG8gZmFpbDtcbiBcbi1cbiBcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O0ZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcXG5cJiMzNDssXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2ODgsNyAmIzQzOzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0cmV0dXJuIC1FTk9NRU07XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNhYmNjNjkwNjkwZjZkYzYyYWUxMGU4NzExNDQxYTc3ODVkMmU4YzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDA4OjUzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTI0LDcgJiM0MzsyNCw2IEBACiAjaW5jbHVkZSAmIzM0O2J1cy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dHJhY2Vwb2ludC5oJiMzNDsKIAotCiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQJCW1zZWNzX3RvX2ppZmZpZXMoMjAwMCkKIAogI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTCQkJMHgxCkBAIC0yOTEsNyAmIzQzOzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHsKIAogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7CiAKLQogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICoKIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcywKIAkJCSBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0zMTUsNyAmIzQzOzMxMyw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcywKIAlyZXR1cm4gcGt0aWRzOwogfQogCi0KIHN0YXRpYyBpbnQKIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcywKQEAgLTM2Myw3ICYjNDM7MzYwLDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKgogYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCiAJCSAgICAgICB1MzIgaWR4KQpAQCAtMzkxLDcgJiM0MzszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcywKIAlyZXR1cm4gTlVMTDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcykKQEAgLTQxNyw3ICYjNDM7NDEyLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LAogCWtmcmVlKHBrdGlkcyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAlpZiAobXNnYnVmLSZndDtyeF9wa3RpZHMpCkBAIC00MjgsNyAmIzQzOzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiAJCQkJCSAgIG1zZ2J1Zi0mZ3Q7dHhfcGt0aWRzKTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKQogewpAQCAtNDc0LDcgJiM0Mzs0NjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJcmV0dXJuIGVycjsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dhaXQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewogCXJldHVybiB3YWl0X2V2ZW50X3RpbWVvdXQobXNnYnVmLSZndDtpb2N0bF9yZXNwX3dhaXQsCkBAIC00ODIsMTQgJiM0Mzs0NzQsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAkJCQkgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewogCW1zZ2J1Zi0mZ3Q7Y3RsX2NvbXBsZXRlZCA9IHRydWU7CiAJd2FrZV91cCgmYW1wO21zZ2J1Zi0mZ3Q7aW9jdGxfcmVzcF93YWl0KTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycikKIHsKQEAgLTUyNywxNCAmIzQzOzUxNywxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKQogewogCXJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpOwogfQogCi0KIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsCiAJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKQogewpAQCAtNTgzLDcgJiM0Mzs1NzEsNiBAQCBzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIHRydWU7CiB9CiAKLQogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewpAQCAtNjAxLDcgJiM0Mzs1ODgsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAlyZXR1cm4gd29yazsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKQpAQCAtNjcwLDcgJiM0Mzs2NTYsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIGZsb3dpZDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CkBAIC02ODQsNyAmIzQzOzY2OSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCX0KIH0KIAotCiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsCiAJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC03MTcsNyAmIzQzOzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCwKIAlyZXR1cm4gZmxvd2lkOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi0mZ3Q7ZmxvdzsKQEAgLTc5MSw3ICYjNDM7Nzc0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpCiAJYnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmOwpAQCAtODA0LDcgJiM0Mzs3ODYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmtlcikKIAl9CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAkJCQkJYm9vbCBmb3JjZSkKIHsKQEAgLTgxOSw3ICYjNDM7ODAwLDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewpAQCAtODQ3LDcgJiM0Mzs4MjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpCkBAIC04NTcsNyAmIzQzOzgzNiw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlicmNtZl9mbG93cmluZ19jb25maWd1cmVfYWRkcl9tb2RlKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKQogewpAQCAtODY2LDcgJiM0Mzs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtJmd0O2Zsb3csIGlmaWR4LCBwZWVyKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIHsKQEAgLTg3NSw3ICYjNDM7ODUyLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIHBlZXIpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKQEAgLTg5NSw3ICYjNDM7ODcxLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiAJYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewpAQCAtOTI4LDcgJiM0Mzs5MDMsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAkJCSBza2IsIHRydWUpOwogfQogCi0KIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudCkKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTAwNiw3ICYjNDM7OTgwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KQogCXJldHVybiBpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKQEAgLTEwMjQsNyAmIzQzOzk5Nyw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiB7CkBAIC0xMDM0LDcgJiM0MzsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiAJCWJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJCQkgICAgIHUzMiBjb3VudCkKQEAgLTExMDgsNyAmIzQzOzEwNzksNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJcmV0dXJuIGk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMTE4LDcgJiM0MzsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAltc2didWYtJmd0O2N1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50OwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMTI4LDcgJiM0MzsxMDk3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCW1zZ2J1Zi0mZ3Q7Y3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTE3MSw3ICYjNDM7MTEzOSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CkBAIC0xMjg5LDcgJiM0MzsxMjU2LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShtc2didWYsIGZsb3dpZCwgdHJ1ZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCQkJCQkgICAgICAgdm9pZCAqYnVmKQpAQCAtMTMxOSw3ICYjNDM7MTI4NSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CiAJc3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi0mZ3Q7ZHJ2cjsKQEAgLTEzNjgsNyAmIzQzOzEzMzMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKQogewpAQCAtMTQwMCw3ICYjNDM7MTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAkJZ290byBhZ2FpbjsKIH0KIAotCiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwpAQCAtMTQzMiw3ICYjNDM7MTM5NSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKLQogdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLSZndDtwcm90by0mZ3Q7cGQ7CkBAIC0xNjQ4LDcgJiM0MzsxNjEwLDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIAlpZiAoIW1zZ2J1Zi0mZ3Q7ZmxvdykKIAkJZ290byBmYWlsOwogCi0KIAlicmNtZl9kYmcoTVNHQlVGLCAmIzM0O0ZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcbiYjMzQ7LAogCQkgIG1zZ2J1Zi0mZ3Q7bWF4X3J4YnVmcG9zdCwgbXNnYnVmLSZndDttYXhfZXZlbnRidWYsCiAJCSAgbXNnYnVmLSZndDttYXhfaW9jdGxyZXNwYnVmKTsKQEAgLTE2ODgsNyAmIzQzOzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKQogCXJldHVybiAtRU5PTUVNOwogfQogCi0KIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKQogewogCXN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE4MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgYnJjbWZtYWMvbXNnYnVmLmMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gcmVtb3ZlIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJsYW5rIGxpbmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZmlsZS4gQWZ0ZXIgcXVpY2tseSBleGFtaW5pbmcgdGhlIGRpZmYsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIHN0eWxpc3RpYyBjaGFuZ2Ugb25seS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY29kZSBjaGFuZ2VzIHRvIHRoZSBiZWhhdmlvciBvZiBhbnkgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcy4gSSBjYW4gc2VlIHRoZSByZW1vdmFsIG9mIHRoZSBibGFuayBsaW5lcyBiZXR3ZWVuIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgd2hpY2ggd29uJiMzOTt0IGltcGFjdCBob3cgdGhlIGNvZGUgcnVucyBvciBiZWhhdmVzLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgZXhwb3NlIGFueSBidWdzIGR1cmluZyBmdXp6aW5nLiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBjb3NtZXRpYy4gQ29uc2lkZXJpbmcgdGhlIGV4cGVydGlzZSBpbiB0aGlzIGFyZWEgaXMgb2Ygc2lnbmlmaWNhbnQgcXVhbGl0eSwgdGhpcyBpcyBhbiBlYXN5IGRlY2lzaW9uLiBCZWNhdXNlIG9mIHRoaXMsIEkmIzM5O20gY29tZm9ydGFibGUgcmV0dXJuaW5nIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODo1MzowOS40MzgyMjEwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxNDkzMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuNDM4MjM0MDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzg1MjEwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYWJjYzY5MDY5MGY2ZGM2MmFlMTBlODcxMTQ0MWE3Nzg1ZDJlOGM3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDg6NTM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXFxuaW5kZXggMDY5YmE3MDE2NjU0ZS4uYTY5MTk2ZjI3YjJiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG5AQCAtMjQsNyArMjQsNiBAQFxcbiAjaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0cmFjZXBvaW50LmhcXFwiXFxuIFxcbi1cXG4gI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUXFx0XFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxcbiBcXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTXFx0XFx0XFx0MHgxXFxuQEAgLTI5MSw3ICsyOTAsNiBAQCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XFxuIFxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKTtcXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKlxcbiBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXFxuIFxcdFxcdFxcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXFxuQEAgLTMxNSw3ICszMTMsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXFxuIFxcdHJldHVybiBwa3RpZHM7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50XFxuIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbkBAIC0zNjMsNyArMzYwLDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcXG4gXFx0XFx0ICAgICAgIHUzMiBpZHgpXFxuQEAgLTM5MSw3ICszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMpXFxuQEAgLTQxNyw3ICs0MTIsNiBAQCBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdGtmcmVlKHBrdGlkcyk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdGlmIChtc2didWYtXFx1MDAzZXJ4X3BrdGlkcylcXG5AQCAtNDI4LDcgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdFxcdFxcdFxcdFxcdCAgIG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKVxcbiB7XFxuQEAgLTQ3NCw3ICs0NjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dhaXQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdHJldHVybiB3YWl0X2V2ZW50X3RpbWVvdXQobXNnYnVmLVxcdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXFxuQEAgLTQ4MiwxNCArNDc0LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdFxcdFxcdFxcdCAgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4ge1xcbiBcXHRtc2didWYtXFx1MDAzZWN0bF9jb21wbGV0ZWQgPSB0cnVlO1xcbiBcXHR3YWtlX3VwKFxcdTAwMjZtc2didWYtXFx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0ICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXFxuIHtcXG5AQCAtNTI3LDE0ICs1MTcsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXFxuIHtcXG4gXFx0cmV0dXJuIGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKGRydnIsIGlmaWR4LCBjbWQsIGJ1ZiwgbGVuLCBmd2Vycik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJjbWZfaWYgKippZnApXFxuIHtcXG5AQCAtNTgzLDcgKzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4ge1xcbkBAIC02MDEsNyArNTg4LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdHJldHVybiB3b3JrO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHUzMlxcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcXG5AQCAtNjcwLDcgKzY1Niw2IEBAIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0cmV0dXJuIGZsb3dpZDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5AQCAtNjg0LDcgKzY2OSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtNzE3LDcgKzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIGZsb3dpZDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cXHUwMDNlZmxvdztcXG5AQCAtNzkxLDcgKzc3NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5AQCAtODA0LDcgKzc4Niw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxcbiBcXHRcXHRcXHRcXHRcXHRib29sIGZvcmNlKVxcbiB7XFxuQEAgLTgxOSw3ICs4MDAsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuQEAgLTg0Nyw3ICs4MjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpXFxuQEAgLTg1Nyw3ICs4MzYsNiBAQCBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdGJyY21mX2Zsb3dyaW5nX2NvbmZpZ3VyZV9hZGRyX21vZGUobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgYWRkcl9tb2RlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiB7XFxuQEAgLTg2Niw3ICs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcXG4gXFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlX3BlZXIobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfYWRkX3RkbHNfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiB7XFxuQEAgLTg3NSw3ICs4NTIsNiBAQCBicmNtZl9tc2didWZfYWRkX3RkbHNfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiBcXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG5AQCAtODk1LDcgKzg3MSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2lvY3RsX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTkyOCw3ICs5MDMsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4gXFx0XFx0XFx0IHNrYiwgdHJ1ZSk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTAwNiw3ICs5ODAsNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXFxuIFxcdHJldHVybiBpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG5AQCAtMTAyNCw3ICs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0fVxcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIHtcXG5AQCAtMTAzNCw3ICsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzJcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRcXHRcXHQgICAgIHUzMiBjb3VudClcXG5AQCAtMTEwOCw3ICsxMDc5LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMTE4LDcgKzEwODgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiBcXHRtc2didWYtXFx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMTI4LDcgKzEwOTcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTE3MSw3ICsxMTM5LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTEyODksNyArMTI1Niw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgdm9pZCAqYnVmKVxcbkBAIC0xMzE5LDcgKzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXFx1MDAzZWRydnI7XFxuQEAgLTEzNjgsNyArMTMzMyw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxcbiB7XFxuQEAgLTE0MDAsNyArMTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0Z290byBhZ2FpbjtcXG4gfVxcbiBcXG4tXFxuIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuQEAgLTE0MzIsNyArMTM5NSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuQEAgLTE2NDgsNyArMTYxMCw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuIFxcdGlmICghbXNnYnVmLVxcdTAwM2VmbG93KVxcbiBcXHRcXHRnb3RvIGZhaWw7XFxuIFxcbi1cXG4gXFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIkZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgbXNnYnVmLVxcdTAwM2VtYXhfcnhidWZwb3N0LCBtc2didWYtXFx1MDAzZW1heF9ldmVudGJ1ZixcXG4gXFx0XFx0ICBtc2didWYtXFx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xcbkBAIC0xNjg4LDcgKzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiBcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4tXFxuIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuODE4MTA2OTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzYzNTAzNzEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2FiY2M2OTA2OTBmNmRjNjJhZTEwZTg3MTE0NDFhNzc4NWQyZThjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDg6NTM6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgKzI0LDYgQEBcbiAjaW5jbHVkZSBcImJ1cy5oXCJcbiAjaW5jbHVkZSBcInRyYWNlcG9pbnQuaFwiXG4gXG4tXG4gI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUXHRcdG1zZWNzX3RvX2ppZmZpZXMoMjAwMClcbiBcbiAjZGVmaW5lIE1TR0JVRl9UWVBFX0dFTl9TVEFUVVNcdFx0XHQweDFcbkBAIC0yOTEsNyArMjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE1LDcgKzMxMyw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcbiBcdHJldHVybiBwa3RpZHM7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnRcbiBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxuQEAgLTM2Myw3ICszNjAsNiBAQCBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG4gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXG4gXHRcdCAgICAgICB1MzIgaWR4KVxuQEAgLTM5MSw3ICszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNyw3ICs0MTIsNiBAQCBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRrZnJlZShwa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdGlmIChtc2didWYtXHUwMDNlcnhfcGt0aWRzKVxuQEAgLTQyOCw3ICs0MjIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0XHRcdFx0XHQgICBtc2didWYtXHUwMDNldHhfcGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKVxuIHtcbkBAIC00NzQsNyArNDY3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgyLDE0ICs0NzQsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdFx0XHRcdCAgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVCk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdG1zZ2J1Zi1cdTAwM2VjdGxfY29tcGxldGVkID0gdHJ1ZTtcbiBcdHdha2VfdXAoXHUwMDI2bXNnYnVmLVx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCk7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXG4ge1xuQEAgLTUyNywxNCArNTE3LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NldF9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcbiB7XG4gXHRyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaGRycHVsbChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBib29sIGRvX2Z3cyxcbiBcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcClcbiB7XG5AQCAtNTgzLDcgKzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC02MDEsNyArNTg4LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRyZXR1cm4gd29yaztcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcbkBAIC02NzAsNyArNjU2LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTY4NCw3ICs2NjksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC03MTcsNyArNzAxLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4ge1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVx1MDAzZWZsb3c7XG5AQCAtNzkxLDcgKzc3NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbkBAIC04MDQsNyArNzg2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTgxOSw3ICs4MDAsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtODQ3LDcgKzgyNyw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcbkBAIC04NTcsNyArODM2LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg2Niw3ICs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZV9wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiB7XG5AQCAtODc1LDcgKzg1Miw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTg5NSw3ICs4NzEsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC05MjgsNyArOTAzLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRcdFx0IHNrYiwgdHJ1ZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVx1MDAzZWRydnI7XG5AQCAtMTAwNiw3ICs5ODAsNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG5AQCAtMTAyNCw3ICs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiB7XG5AQCAtMTAzNCw3ICsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4gXHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdFx0XHQgICAgIHUzMiBjb3VudClcbkBAIC0xMTA4LDcgKzEwNzksNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHR1MzIgY291bnQ7XG5AQCAtMTExOCw3ICsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmICs9IGNvdW50O1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTExMjgsNyArMTA5Nyw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYgKz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMTcxLDcgKzExMzksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtMTI4OSw3ICsxMjU2LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1ZilcbkBAIC0xMzE5LDcgKzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzY4LDcgKzEzMzMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4ge1xuQEAgLTE0MDAsNyArMTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xNDMyLDcgKzEzOTUsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjQ4LDcgKzE2MTAsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0aWYgKCFtc2didWYtXHUwMDNlZmxvdylcbiBcdFx0Z290byBmYWlsO1xuIFxuLVxuIFx0YnJjbWZfZGJnKE1TR0JVRiwgXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCIsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2ODgsNyArMTY0OSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4tXG4gdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuODE4MTA5MjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzYzNTAxMDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBicmNtZm1hYy9tc2didWYuYyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gcmVtb3ZlIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJsYW5rIGxpbmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZmlsZS4gQWZ0ZXIgcXVpY2tseSBleGFtaW5pbmcgdGhlIGRpZmYsIGl0J3MgY2xlYXIgdGhhdCB0aGlzIGlzIGEgc3R5bGlzdGljIGNoYW5nZSBvbmx5LiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjb2RlIGNoYW5nZXMgdG8gdGhlIGJlaGF2aW9yIG9mIGFueSBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBJIGNhbiBzZWUgdGhlIHJlbW92YWwgb2YgdGhlIGJsYW5rIGxpbmVzIGJldHdlZW4gZnVuY3Rpb24gZGVjbGFyYXRpb25zLCB3aGljaCB3b24ndCBpbXBhY3QgaG93IHRoZSBjb2RlIHJ1bnMgb3IgYmVoYXZlcy4gVGhlcmVmb3JlLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgZXhwb3NlIGFueSBidWdzIGR1cmluZyBmdXp6aW5nLiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBjb3NtZXRpYy4gQ29uc2lkZXJpbmcgdGhlIGV4cGVydGlzZSBpbiB0aGlzIGFyZWEgaXMgb2Ygc2lnbmlmaWNhbnQgcXVhbGl0eSwgdGhpcyBpcyBhbiBlYXN5IGRlY2lzaW9uLiBCZWNhdXNlIG9mIHRoaXMsIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjUzOjIzLjQ1MzEyMjY2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2w9d[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 08:23:56 +0000 UTC FinishedAt: 2026-08-03 08:53:24 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA4OjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYWJjYzY5MDY5MGY2ZGM2MmFlMTBlODcxMTQ0MWE3Nzg1ZDJlOGM3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwODo1MzowOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgJiM0MzsyNCw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0cmFjZXBvaW50LmhcJiMzNDtcbiBcbi1cbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcdFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxuIFxuICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVU1x0XHRcdDB4MVxuQEAgLTI5MSw3ICYjNDM7MjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE1LDcgJiM0MzszMTMsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjMsNyAmIzQzOzM2MCw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdFx0ICAgICAgIHUzMiBpZHgpXG5AQCAtMzkxLDcgJiM0MzszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNyw3ICYjNDM7NDEyLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjgsNyAmIzQzOzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHRcdCAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXG4ge1xuQEAgLTQ3NCw3ICYjNDM7NDY3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgyLDE0ICYjNDM7NDc0LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjcsMTQgJiM0Mzs1MTcsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbiBcdHJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxuIFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKVxuIHtcbkBAIC01ODMsNyAmIzQzOzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC02MDEsNyAmIzQzOzU4OCw2IEBAIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0cmV0dXJuIHdvcms7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmspXG5AQCAtNjcwLDcgJiM0Mzs2NTYsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRyZXR1cm4gZmxvd2lkO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5AQCAtNjg0LDcgJiM0Mzs2NjksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC03MTcsNyAmIzQzOzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcbiBcdHJldHVybiBmbG93aWQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cdTAwM2VmbG93O1xuQEAgLTc5MSw3ICYjNDM7Nzc0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTgwNCw3ICYjNDM7Nzg2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTgxOSw3ICYjNDM7ODAwLDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTg0Nyw3ICYjNDM7ODI3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlKVxuQEAgLTg1Nyw3ICYjNDM7ODM2LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg2Niw3ICYjNDM7ODQ0LDYgQEAgYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg3NSw3ICYjNDM7ODUyLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtODk1LDcgJiM0Mzs4NzEsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC05MjgsNyAmIzQzOzkwMyw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0XHRcdCBza2IsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTEwMDYsNyAmIzQzOzk4MCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC0xMDI0LDcgJiM0Mzs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiB7XG5AQCAtMTAzNCw3ICYjNDM7MTAwNiw2IEBAIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIFx0XHRicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKG1zZ2J1Zik7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsXG4gXHRcdFx0ICAgICB1MzIgY291bnQpXG5AQCAtMTEwOCw3ICYjNDM7MTA3OSw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMTE4LDcgJiM0MzsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmICYjNDM7PSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMTI4LDcgJiM0MzsxMDk3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9ldmVudGJ1ZiAmIzQzOz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMTcxLDcgJiM0MzsxMTM5LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHNrYik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTEyODksNyAmIzQzOzEyNTYsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0XHQgICAgICAgdm9pZCAqYnVmKVxuQEAgLTEzMTksNyAmIzQzOzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzY4LDcgJiM0MzsxMzMzLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxuIHtcbkBAIC0xNDAwLDcgJiM0MzsxMzY0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRnb3RvIGFnYWluO1xuIH1cbiBcbi1cbiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuQEAgLTE0MzIsNyAmIzQzOzEzOTUsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjQ4LDcgJiM0MzsxNjEwLDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdGlmICghbXNnYnVmLVx1MDAzZWZsb3cpXG4gXHRcdGdvdG8gZmFpbDtcbiBcbi1cbiBcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O0ZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcXG5cJiMzNDssXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2ODgsNyAmIzQzOzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0cmV0dXJuIC1FTk9NRU07XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNhYmNjNjkwNjkwZjZkYzYyYWUxMGU4NzExNDQxYTc3ODVkMmU4YzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDA4OjUzOjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTI0LDcgJiM0MzsyNCw2IEBACiAjaW5jbHVkZSAmIzM0O2J1cy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dHJhY2Vwb2ludC5oJiMzNDsKIAotCiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQJCW1zZWNzX3RvX2ppZmZpZXMoMjAwMCkKIAogI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTCQkJMHgxCkBAIC0yOTEsNyAmIzQzOzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHsKIAogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zik7CiAKLQogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICoKIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcywKIAkJCSBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0zMTUsNyAmIzQzOzMxMyw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcywKIAlyZXR1cm4gcGt0aWRzOwogfQogCi0KIHN0YXRpYyBpbnQKIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcywKQEAgLTM2Myw3ICYjNDM7MzYwLDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKgogYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCiAJCSAgICAgICB1MzIgaWR4KQpAQCAtMzkxLDcgJiM0MzszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcywKIAlyZXR1cm4gTlVMTDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LAogCQkJICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcykKQEAgLTQxNyw3ICYjNDM7NDEyLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LAogCWtmcmVlKHBrdGlkcyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAlpZiAobXNnYnVmLSZndDtyeF9wa3RpZHMpCkBAIC00MjgsNyAmIzQzOzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiAJCQkJCSAgIG1zZ2J1Zi0mZ3Q7dHhfcGt0aWRzKTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKQogewpAQCAtNDc0LDcgJiM0Mzs0NjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJcmV0dXJuIGVycjsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dhaXQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewogCXJldHVybiB3YWl0X2V2ZW50X3RpbWVvdXQobXNnYnVmLSZndDtpb2N0bF9yZXNwX3dhaXQsCkBAIC00ODIsMTQgJiM0Mzs0NzQsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAkJCQkgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewogCW1zZ2J1Zi0mZ3Q7Y3RsX2NvbXBsZXRlZCA9IHRydWU7CiAJd2FrZV91cCgmYW1wO21zZ2J1Zi0mZ3Q7aW9jdGxfcmVzcF93YWl0KTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycikKIHsKQEAgLTUyNywxNCAmIzQzOzUxNywxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKQogewogCXJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpOwogfQogCi0KIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsCiAJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKQogewpAQCAtNTgzLDcgJiM0Mzs1NzEsNiBAQCBzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIHRydWU7CiB9CiAKLQogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogewpAQCAtNjAxLDcgJiM0Mzs1ODgsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAlyZXR1cm4gd29yazsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKQpAQCAtNjcwLDcgJiM0Mzs2NTYsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIGZsb3dpZDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CkBAIC02ODQsNyAmIzQzOzY2OSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCX0KIH0KIAotCiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsCiAJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC03MTcsNyAmIzQzOzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCwKIAlyZXR1cm4gZmxvd2lkOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi0mZ3Q7ZmxvdzsKQEAgLTc5MSw3ICYjNDM7Nzc0LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpCiAJYnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmOwpAQCAtODA0LDcgJiM0Mzs3ODYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmtlcikKIAl9CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAkJCQkJYm9vbCBmb3JjZSkKIHsKQEAgLTgxOSw3ICYjNDM7ODAwLDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewpAQCAtODQ3LDcgJiM0Mzs4MjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpCkBAIC04NTcsNyAmIzQzOzgzNiw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlicmNtZl9mbG93cmluZ19jb25maWd1cmVfYWRkcl9tb2RlKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKQogewpAQCAtODY2LDcgJiM0Mzs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtJmd0O2Zsb3csIGlmaWR4LCBwZWVyKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIHsKQEAgLTg3NSw3ICYjNDM7ODUyLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIHBlZXIpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKQEAgLTg5NSw3ICYjNDM7ODcxLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiAJYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewpAQCAtOTI4LDcgJiM0Mzs5MDMsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAkJCSBza2IsIHRydWUpOwogfQogCi0KIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudCkKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTAwNiw3ICYjNDM7OTgwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KQogCXJldHVybiBpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKQEAgLTEwMjQsNyAmIzQzOzk5Nyw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiB7CkBAIC0xMDM0LDcgJiM0MzsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiAJCWJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJCQkgICAgIHUzMiBjb3VudCkKQEAgLTExMDgsNyAmIzQzOzEwNzksNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJcmV0dXJuIGk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMTE4LDcgJiM0MzsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAltc2didWYtJmd0O2N1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50OwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMTI4LDcgJiM0MzsxMDk3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCW1zZ2J1Zi0mZ3Q7Y3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTE3MSw3ICYjNDM7MTEzOSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CkBAIC0xMjg5LDcgJiM0MzsxMjU2LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShtc2didWYsIGZsb3dpZCwgdHJ1ZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCQkJCQkgICAgICAgdm9pZCAqYnVmKQpAQCAtMTMxOSw3ICYjNDM7MTI4NSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CiAJc3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi0mZ3Q7ZHJ2cjsKQEAgLTEzNjgsNyAmIzQzOzEzMzMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKQogewpAQCAtMTQwMCw3ICYjNDM7MTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAkJZ290byBhZ2FpbjsKIH0KIAotCiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwpAQCAtMTQzMiw3ICYjNDM7MTM5NSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKLQogdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLSZndDtwcm90by0mZ3Q7cGQ7CkBAIC0xNjQ4LDcgJiM0MzsxNjEwLDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIAlpZiAoIW1zZ2J1Zi0mZ3Q7ZmxvdykKIAkJZ290byBmYWlsOwogCi0KIAlicmNtZl9kYmcoTVNHQlVGLCAmIzM0O0ZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcbiYjMzQ7LAogCQkgIG1zZ2J1Zi0mZ3Q7bWF4X3J4YnVmcG9zdCwgbXNnYnVmLSZndDttYXhfZXZlbnRidWYsCiAJCSAgbXNnYnVmLSZndDttYXhfaW9jdGxyZXNwYnVmKTsKQEAgLTE2ODgsNyAmIzQzOzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKQogCXJldHVybiAtRU5PTUVNOwogfQogCi0KIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKQogewogCXN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDg6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE4MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgYnJjbWZtYWMvbXNnYnVmLmMgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gcmVtb3ZlIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJsYW5rIGxpbmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZmlsZS4gQWZ0ZXIgcXVpY2tseSBleGFtaW5pbmcgdGhlIGRpZmYsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhpcyBpcyBhIHN0eWxpc3RpYyBjaGFuZ2Ugb25seS4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY29kZSBjaGFuZ2VzIHRvIHRoZSBiZWhhdmlvciBvZiBhbnkgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcy4gSSBjYW4gc2VlIHRoZSByZW1vdmFsIG9mIHRoZSBibGFuayBsaW5lcyBiZXR3ZWVuIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgd2hpY2ggd29uJiMzOTt0IGltcGFjdCBob3cgdGhlIGNvZGUgcnVucyBvciBiZWhhdmVzLiBUaGVyZWZvcmUsIHRoZXJlJiMzOTtzIG5vIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgZXhwb3NlIGFueSBidWdzIGR1cmluZyBmdXp6aW5nLiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBjb3NtZXRpYy4gQ29uc2lkZXJpbmcgdGhlIGV4cGVydGlzZSBpbiB0aGlzIGFyZWEgaXMgb2Ygc2lnbmlmaWNhbnQgcXVhbGl0eSwgdGhpcyBpcyBhbiBlYXN5IGRlY2lzaW9uLiBCZWNhdXNlIG9mIHRoaXMsIEkmIzM5O20gY29tZm9ydGFibGUgcmV0dXJuaW5nIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwODo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBlbXB0eSBsaW5lcyBpbiB0aGUgc291cmNlIGNvZGUgYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwODo1MzowOS40MzgyMjEwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAxNDkzMDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuNDM4MjM0MDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzg1MjEwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYWJjYzY5MDY5MGY2ZGM2MmFlMTBlODcxMTQ0MWE3Nzg1ZDJlOGM3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMDg6NTM6MDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXFxuaW5kZXggMDY5YmE3MDE2NjU0ZS4uYTY5MTk2ZjI3YjJiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG5AQCAtMjQsNyArMjQsNiBAQFxcbiAjaW5jbHVkZSBcXFwiYnVzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJ0cmFjZXBvaW50LmhcXFwiXFxuIFxcbi1cXG4gI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUXFx0XFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxcbiBcXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTXFx0XFx0XFx0MHgxXFxuQEAgLTI5MSw3ICsyOTAsNiBAQCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7XFxuIFxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKTtcXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKlxcbiBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXFxuIFxcdFxcdFxcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXFxuQEAgLTMxNSw3ICszMTMsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXFxuIFxcdHJldHVybiBwa3RpZHM7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50XFxuIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbkBAIC0zNjMsNyArMzYwLDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcXG4gXFx0XFx0ICAgICAgIHUzMiBpZHgpXFxuQEAgLTM5MSw3ICszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMpXFxuQEAgLTQxNyw3ICs0MTIsNiBAQCBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuIFxcdGtmcmVlKHBrdGlkcyk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdGlmIChtc2didWYtXFx1MDAzZXJ4X3BrdGlkcylcXG5AQCAtNDI4LDcgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdFxcdFxcdFxcdFxcdCAgIG1zZ2J1Zi1cXHUwMDNldHhfcGt0aWRzKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKVxcbiB7XFxuQEAgLTQ3NCw3ICs0NjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dhaXQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdHJldHVybiB3YWl0X2V2ZW50X3RpbWVvdXQobXNnYnVmLVxcdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXFxuQEAgLTQ4MiwxNCArNDc0LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdFxcdFxcdFxcdCAgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4ge1xcbiBcXHRtc2didWYtXFx1MDAzZWN0bF9jb21wbGV0ZWQgPSB0cnVlO1xcbiBcXHR3YWtlX3VwKFxcdTAwMjZtc2didWYtXFx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0ICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXFxuIHtcXG5AQCAtNTI3LDE0ICs1MTcsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXFxuIHtcXG4gXFx0cmV0dXJuIGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKGRydnIsIGlmaWR4LCBjbWQsIGJ1ZiwgbGVuLCBmd2Vycik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJjbWZfaWYgKippZnApXFxuIHtcXG5AQCAtNTgzLDcgKzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4ge1xcbkBAIC02MDEsNyArNTg4LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdHJldHVybiB3b3JrO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHUzMlxcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcXG5AQCAtNjcwLDcgKzY1Niw2IEBAIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0cmV0dXJuIGZsb3dpZDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5AQCAtNjg0LDcgKzY2OSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtNzE3LDcgKzcwMSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIGZsb3dpZDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cXHUwMDNlZmxvdztcXG5AQCAtNzkxLDcgKzc3NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5AQCAtODA0LDcgKzc4Niw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxcbiBcXHRcXHRcXHRcXHRcXHRib29sIGZvcmNlKVxcbiB7XFxuQEAgLTgxOSw3ICs4MDAsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuQEAgLTg0Nyw3ICs4MjcsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpXFxuQEAgLTg1Nyw3ICs4MzYsNiBAQCBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdGJyY21mX2Zsb3dyaW5nX2NvbmZpZ3VyZV9hZGRyX21vZGUobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgYWRkcl9tb2RlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiB7XFxuQEAgLTg2Niw3ICs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcXG4gXFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlX3BlZXIobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfYWRkX3RkbHNfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiB7XFxuQEAgLTg3NSw3ICs4NTIsNiBAQCBicmNtZl9tc2didWZfYWRkX3RkbHNfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiBcXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG5AQCAtODk1LDcgKzg3MSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2lvY3RsX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHRicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3QobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTkyOCw3ICs5MDMsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4gXFx0XFx0XFx0IHNrYiwgdHJ1ZSk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTAwNiw3ICs5ODAsNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXFxuIFxcdHJldHVybiBpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG5AQCAtMTAyNCw3ICs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0fVxcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIHtcXG5AQCAtMTAzNCw3ICsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzJcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRcXHRcXHQgICAgIHUzMiBjb3VudClcXG5AQCAtMTEwOCw3ICsxMDc5LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMTE4LDcgKzEwODgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiBcXHRtc2didWYtXFx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMTI4LDcgKzEwOTcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTE3MSw3ICsxMTM5LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTEyODksNyArMTI1Niw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgdm9pZCAqYnVmKVxcbkBAIC0xMzE5LDcgKzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0YnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhtc2didWYsIGZsb3dpZCk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXFx1MDAzZWRydnI7XFxuQEAgLTEzNjgsNyArMTMzMyw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9jb21tb25yaW5nICpjb21tb25yaW5nKVxcbiB7XFxuQEAgLTE0MDAsNyArMTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0Z290byBhZ2FpbjtcXG4gfVxcbiBcXG4tXFxuIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2J1cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuQEAgLTE0MzIsNyArMTM5NSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gdm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmID0gKHN0cnVjdCBicmNtZl9tc2didWYgKilkcnZyLVxcdTAwM2Vwcm90by1cXHUwMDNlcGQ7XFxuQEAgLTE2NDgsNyArMTYxMCw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuIFxcdGlmICghbXNnYnVmLVxcdTAwM2VmbG93KVxcbiBcXHRcXHRnb3RvIGZhaWw7XFxuIFxcbi1cXG4gXFx0YnJjbWZfZGJnKE1TR0JVRiwgXFxcIkZlZWRpbmcgYnVmZmVycywgcnggZGF0YSAlZCwgcnggZXZlbnQgJWQsIHJ4IGlvY3RsIHJlc3AgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgbXNnYnVmLVxcdTAwM2VtYXhfcnhidWZwb3N0LCBtc2didWYtXFx1MDAzZW1heF9ldmVudGJ1ZixcXG4gXFx0XFx0ICBtc2didWYtXFx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xcbkBAIC0xNjg4LDcgKzE2NDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiBcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4tXFxuIHZvaWQgYnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuODE4MTA2OTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzYzNTAzNzEyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2FiY2M2OTA2OTBmNmRjNjJhZTEwZTg3MTE0NDFhNzc4NWQyZThjN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDg6NTM6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IDA2OWJhNzAxNjY1NGUuLmE2OTE5NmYyN2IyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgKzI0LDYgQEBcbiAjaW5jbHVkZSBcImJ1cy5oXCJcbiAjaW5jbHVkZSBcInRyYWNlcG9pbnQuaFwiXG4gXG4tXG4gI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUXHRcdG1zZWNzX3RvX2ppZmZpZXMoMjAwMClcbiBcbiAjZGVmaW5lIE1TR0JVRl9UWVBFX0dFTl9TVEFUVVNcdFx0XHQweDFcbkBAIC0yOTEsNyArMjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE1LDcgKzMxMyw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcbiBcdHJldHVybiBwa3RpZHM7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnRcbiBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxuQEAgLTM2Myw3ICszNjAsNiBAQCBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXG4gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXG4gXHRcdCAgICAgICB1MzIgaWR4KVxuQEAgLTM5MSw3ICszODcsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNyw3ICs0MTIsNiBAQCBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRrZnJlZShwa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdGlmIChtc2didWYtXHUwMDNlcnhfcGt0aWRzKVxuQEAgLTQyOCw3ICs0MjIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0XHRcdFx0XHQgICBtc2didWYtXHUwMDNldHhfcGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuKVxuIHtcbkBAIC00NzQsNyArNDY3LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgyLDE0ICs0NzQsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdFx0XHRcdCAgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVCk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdG1zZ2J1Zi1cdTAwM2VjdGxfY29tcGxldGVkID0gdHJ1ZTtcbiBcdHdha2VfdXAoXHUwMDI2bXNnYnVmLVx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCk7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXG4ge1xuQEAgLTUyNywxNCArNTE3LDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NldF9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcbiB7XG4gXHRyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaGRycHVsbChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBib29sIGRvX2Z3cyxcbiBcdFx0XHRcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcClcbiB7XG5AQCAtNTgzLDcgKzU3MSw2IEBAIHN0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKlxuIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC02MDEsNyArNTg4LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRyZXR1cm4gd29yaztcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcbkBAIC02NzAsNyArNjU2LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTY4NCw3ICs2NjksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC03MTcsNyArNzAxLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4ge1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVx1MDAzZWZsb3c7XG5AQCAtNzkxLDcgKzc3NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbkBAIC04MDQsNyArNzg2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTgxOSw3ICs4MDAsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtODQ3LDcgKzgyNyw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcbkBAIC04NTcsNyArODM2LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg2Niw3ICs4NDQsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZV9wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiB7XG5AQCAtODc1LDcgKzg1Miw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTg5NSw3ICs4NzEsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC05MjgsNyArOTAzLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRcdFx0IHNrYiwgdHJ1ZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVx1MDAzZWRydnI7XG5AQCAtMTAwNiw3ICs5ODAsNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG5AQCAtMTAyNCw3ICs5OTcsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiB7XG5AQCAtMTAzNCw3ICsxMDA2LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4gXHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdFx0XHQgICAgIHUzMiBjb3VudClcbkBAIC0xMTA4LDcgKzEwNzksNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHR1MzIgY291bnQ7XG5AQCAtMTExOCw3ICsxMDg4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfaW9jdGxyZXNwYnVmICs9IGNvdW50O1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTExMjgsNyArMTA5Nyw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdG1zZ2J1Zi1cdTAwM2VjdXJfZXZlbnRidWYgKz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMTcxLDcgKzExMzksNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtMTI4OSw3ICsxMjU2LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1ZilcbkBAIC0xMzE5LDcgKzEyODUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzY4LDcgKzEzMzMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4ge1xuQEAgLTE0MDAsNyArMTM2NCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xNDMyLDcgKzEzOTUsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjQ4LDcgKzE2MTAsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0aWYgKCFtc2didWYtXHUwMDNlZmxvdylcbiBcdFx0Z290byBmYWlsO1xuIFxuLVxuIFx0YnJjbWZfZGJnKE1TR0JVRiwgXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCIsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2ODgsNyArMTY0OSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4tXG4gdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDg6NTM6MDkuODE4MTA5MjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzYzNTAxMDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBicmNtZm1hYy9tc2didWYuYyBQYXRjaCoqXG5cbk9rYXksIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IGFwcGVhcnMgdG8gcmVtb3ZlIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJsYW5rIGxpbmVzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY2AgZmlsZS4gQWZ0ZXIgcXVpY2tseSBleGFtaW5pbmcgdGhlIGRpZmYsIGl0J3MgY2xlYXIgdGhhdCB0aGlzIGlzIGEgc3R5bGlzdGljIGNoYW5nZSBvbmx5LiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjb2RlIGNoYW5nZXMgdG8gdGhlIGJlaGF2aW9yIG9mIGFueSBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzLiBJIGNhbiBzZWUgdGhlIHJlbW92YWwgb2YgdGhlIGJsYW5rIGxpbmVzIGJldHdlZW4gZnVuY3Rpb24gZGVjbGFyYXRpb25zLCB3aGljaCB3b24ndCBpbXBhY3QgaG93IHRoZSBjb2RlIHJ1bnMgb3IgYmVoYXZlcy4gVGhlcmVmb3JlLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBiZWxpZXZlIHRoYXQgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyB2dWxuZXJhYmlsaXRpZXMgb3IgZXhwb3NlIGFueSBidWdzIGR1cmluZyBmdXp6aW5nLiBNeSBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBpcyBlbnRpcmVseSBjb3NtZXRpYy4gQ29uc2lkZXJpbmcgdGhlIGV4cGVydGlzZSBpbiB0aGlzIGFyZWEgaXMgb2Ygc2lnbmlmaWNhbnQgcXVhbGl0eSwgdGhpcyBpcyBhbiBlYXN5IGRlY2lzaW9uLiBCZWNhdXNlIG9mIHRoaXMsIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDYxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA4OjUzOjIzLjQ1MzEyMjY2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGVtcHR5IGxpbmVzIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowd2w9d[1] Phase: Running StartedAt: 2026-08-03 08:53:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd2w9d[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 08:53:34 +0000 UTC FinishedAt: 2026-08-03 08:53:39 +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,}