Name: series-workflow9q8gs Phase: Failed StartedAt: 2026-08-20 04:52:42 +0000 UTC FinishedAt: 2026-08-20 05:32:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9q8gs[0] Phase: Succeeded StartedAt: 2026-08-20 04:52:42 +0000 UTC FinishedAt: 2026-08-20 05:32:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9q8gs[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 04:52:42 +0000 UTC FinishedAt: 2026-08-20 05:32: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+CgkJCTx0ZD4yMDI2LzA4LzIwIDA1OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbmluZGV4IDcxNGU0N2Y2OGQ5MzIuLjk2ZTFiOTNmODEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuQEAgLTQyNyw3ICYjNDM7NDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXHRcdFx0XFxcbiBcbiAvKiBNZXNzYWdlcyBpbml0aWF0ZWQgYnkgQUYgKHJhbmdlIDB4QzAwIC0gMHhFRkYpICovXG4gI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4tTShDR1hfTElOS19FVkVOVCxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXG4mIzQzO00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuJiM0MztNKENHWF9QVFBfUlhfSU5GTyxcdDB4QzAxLCBjZ3hfcHRwX3J4X2luZm8sXHRjZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKVxuIFxuICNkZWZpbmUgTUJPWF9VUF9DUFRfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuIE0oQ1BUX0lOU1RfTE1UU1QsXHQweEQwMCwgY3B0X2luc3RfbG10c3QsIGNwdF9pbnN0X2xtdHN0X3JlcSwgbXNnX3JzcClcbkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cge1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5rX2luZm87XG4gfTtcbiBcbiYjNDM7c3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuJiM0MztcdHN0cnVjdCBtYm94X21zZ2hkciBoZHI7XG4mIzQzO1x0dTggcHRwX2VuO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xuIFx0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbiBcdHU4IHNldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2c7XG4mIzQzO1xuJiM0MztcdC8qIFNlbmQgbWJveCBtZXNzYWdlIHRvIFBGICovXG4mIzQzO1x0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XG4mIzQzO1x0aWYgKCFtc2cpIHtcbiYjNDM7XHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bXNnLVx1MDAzZXB0cF9lbiA9IGVuYWJsZTtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4mIzQzO1xuJiM0MztcdG90eDJfbWJveF9tc2dfc2VuZF91cChcdTAwMjZydnUtXHUwMDNlYWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbkBAIC04MzcsNiAmIzQzOzg1NSw4IEBAIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4mIzQzO1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuJiM0MztcbiBcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiBcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5pbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5AQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7XG4gc3RydWN0IG90eDJfdmZfY29uZmlnIHtcbiBcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGxpbmtfZXZlbnRfd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XG4gXHR1NjQgdGhyZXNoO1xuIFxuIFx0c3RydWN0IHB0cF9waW5fZGVzYyBleHR0c19jb25maWc7XG4mIzQzO1x0Ym9vbCBwdHBfZW47XG4gXHR1NjQgKCpjb252ZXJ0X3J4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpjb252ZXJ0X3R4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuY1xuaW5kZXggYzk5NWYyOTAwODU5MC4uOWU1OTZmYmQ0MjFjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBvdHgyX3BmX2lkX3RhYmxlKTtcbiBcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiAmIzQzOzk2MSwzMCBAQCBpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoc3RydWN0IG90eDJfbmljICpwZixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuJiM0MztcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG1zZ19yc3AgKnJzcClcbiYjNDM7e1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZXB0cClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuID0gbXNnLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0Lyogbm90aWZ5IFZGcyBhYm91dCBwdHAgZXZlbnQgKi9cbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVx1MDAzZXBkZXYpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWcgPSBcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldO1xuJiM0MztcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93bilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcbiBcdFx0cGYtXHUwMDNldmZfY29uZmlnc1tpXS50cnVzdGVkID0gZmFsc2U7XG4gXHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxuIFx0XHRcdFx0ICBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayk7XG4mIzQzO1x0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXG4mIzQzO1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNldG90YWxfdmZzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuJiM0MztcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XG4gXHRcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xuIFx0fVxuIH1cbkBAIC0zNDE3LDYgJiM0MzszNDQ1LDQ0IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICpyZXE7XG4mIzQzO1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4mIzQzO1x0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XG4mIzQzO1x0c3RydWN0IG90eDJfbmljICpwZjtcbiYjNDM7XHRpbnQgdmZfaWR4O1xuJiM0MztcbiYjNDM7XHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxuJiM0MztcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuJiM0MztcdHZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy1cdTAwM2VwZi1cdTAwM2V2Zl9jb25maWdzO1xuJiM0MztcdHBmID0gY29uZmlnLVx1MDAzZXBmO1xuJiM0MztcbiYjNDM7XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93biB8fCAhcGYtXHUwMDNlcHRwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBmLVx1MDAzZW1ib3gubG9jayk7XG4mIzQzO1xuJiM0MztcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4mIzQzO1x0XHRcdFx0XHQgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcbiYjNDM7XHRpZiAoIW1zZ2hkcikge1xuJiM0MztcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgVkYlZCBwdHAgaW5mbyBldmVudFxcblwmIzM0OywgdmZfaWR4KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmVxID0gKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopbXNnaGRyO1xuJiM0MztcdHJlcS1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4mIzQzO1x0cmVxLVx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcbiYjNDM7XHRyZXEtXHUwMDNlcHRwX2VuID0gcGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XG4mIzQzO1xuJiM0MztcdG90eDJfc3luY19tYm94X3VwX21zZyhcdTAwMjZwZi1cdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XG4mIzQzO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0Y2FzZSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk86XG4mIzQzO1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbiYjNDM7XHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0XHRpZiAoIXJzcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0cnNwLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4mIzQzO1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIucmMgPSAwO1xuJiM0MztcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICByc3ApO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaAppbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oCkBAIC00MjcsNyAmIzQzOzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LAkJCVwKIAogLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqLwogI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFUwkJCQkJCVwKLU0oQ0dYX0xJTktfRVZFTlQsCTB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApCiYjNDM7TShDR1hfTElOS19FVkVOVCwJMHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXAomIzQzO00oQ0dYX1BUUF9SWF9JTkZPLAkweEMwMSwgY2d4X3B0cF9yeF9pbmZvLAljZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKQogCiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTCQkJCQkJXAogTShDUFRfSU5TVF9MTVRTVCwJMHhEMDAsIGNwdF9pbnN0X2xtdHN0LCBjcHRfaW5zdF9sbXRzdF9yZXEsIG1zZ19yc3ApCkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgewogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvOwogfTsKIAomIzQzO3N0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnIHsKJiM0MzsJc3RydWN0IG1ib3hfbXNnaGRyIGhkcjsKJiM0MzsJdTggcHRwX2VuOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcgewogCXN0cnVjdCBtYm94X21zZ2hkciBoZHI7CiAJdTggc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgY2d4X25vdGlmeV91cF9wdHBfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnOwomIzQzOwomIzQzOwkvKiBTZW5kIG1ib3ggbWVzc2FnZSB0byBQRiAqLwomIzQzOwltc2cgPSBvdHgyX21ib3hfYWxsb2NfbXNnX2NneF9wdHBfcnhfaW5mbyhydnUsIHBmKTsKJiM0MzsJaWYgKCFtc2cpIHsKJiM0MzsJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltc2ctJmd0O3B0cF9lbiA9IGVuYWJsZTsKJiM0MzsKJiM0MzsJb3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oJmFtcDtydnUtJmd0O2FmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7CiYjNDM7CiYjNDM7CW90eDJfbWJveF9tc2dfc2VuZF91cCgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKQEAgLTgzNyw2ICYjNDM7ODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpCiAJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiAJCXJldHVybiAtRVBFUk07CiAKJiM0MzsJY2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpOwomIzQzOwogCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwogCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAppbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaApAQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7CiBzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgewogCXN0cnVjdCBvdHgyX25pYyAqcGY7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgcHRwX2luZm9fd29yazsKIAlib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi8KIAl1OCBtYWNbRVRIX0FMRU5dOwogCXUxNiB2bGFuOwpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBzdHJ1Y3Qgb3R4Ml9wdHAgewogCXU2NCB0aHJlc2g7CiAKIAlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZzsKJiM0MzsJYm9vbCBwdHBfZW47CiAJdTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApOwogCXU2NCAoKmNvbnZlcnRfdHhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTsKIAl1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jCmluZGV4IGM5OTVmMjkwMDg1OTAuLjllNTk2ZmJkNDIxYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwgdjImIzM0Oyk7CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7CiAKIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIGVudW0gewogCVRZUEVfUEZBRiwKQEAgLTk2MCw2ICYjNDM7OTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csCiYjNDM7CQkJCQkgc3RydWN0IG1zZ19yc3AgKnJzcCkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoIXBmLSZndDtwdHApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuID0gbXNnLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CS8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwY2lfbnVtX3ZmKHBmLSZndDtwZGV2KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXTsKJiM0MzsJCXN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrID0gJmFtcDtjb25maWctJmd0O3B0cF9pbmZvX3dvcms7CiYjNDM7CiYjNDM7CQlpZiAoY29uZmlnLSZndDtpbnRmX2Rvd24pCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICpwZiwKIAkJCQkgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpCiB7CkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZikKIAkJcGYtJmd0O3ZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlOwogCQlJTklUX0RFTEFZRURfV09SSygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yaywKIAkJCQkgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTsKJiM0MzsJCUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cGYtJmd0O3ZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yaywKJiM0MzsJCQkJICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDt0b3RhbF92ZnM7IGkmIzQzOyYjNDM7KSB7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7CiYjNDM7CQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTsKIAkJb3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7CiAJfQogfQpAQCAtMzQxNyw2ICYjNDM7MzQ0NSw0NCBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKnJlcTsKJiM0MzsJc3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7CiYjNDM7CXN0cnVjdCBtYm94X21zZ2hkciAqbXNnaGRyOwomIzQzOwlzdHJ1Y3Qgb3R4Ml9uaWMgKnBmOwomIzQzOwlpbnQgdmZfaWR4OwomIzQzOwomIzQzOwljb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLAomIzQzOwkJCSAgICAgIHB0cF9pbmZvX3dvcmsud29yayk7CiYjNDM7CXZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy0mZ3Q7cGYtJmd0O3ZmX2NvbmZpZ3M7CiYjNDM7CXBmID0gY29uZmlnLSZndDtwZjsKJiM0MzsKJiM0MzsJaWYgKGNvbmZpZy0mZ3Q7aW50Zl9kb3duIHx8ICFwZi0mZ3Q7cHRwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7CiYjNDM7CW1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKCZhbXA7cGYtJmd0O21ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsCiYjNDM7CQkJCQkgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTsKJiM0MzsJaWYgKCFtc2doZHIpIHsKJiM0MzsJCWRldl9lcnIocGYtJmd0O2RldiwgJiMzNDtGYWlsZWQgdG8gY3JlYXRlIFZGJWQgcHRwIGluZm8gZXZlbnRcbiYjMzQ7LCB2Zl9pZHgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVxID0gKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopbXNnaGRyOwomIzQzOwlyZXEtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJcmVxLSZndDtoZHIuc2lnID0gT1RYMl9NQk9YX1JFUV9TSUc7CiYjNDM7CXJlcS0mZ3Q7cHRwX2VuID0gcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuOwomIzQzOwomIzQzOwlvdHgyX21ib3hfd2FpdF9mb3JfemVybygmYW1wO3BmLSZndDttYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4KTsKJiM0MzsKJiM0MzsJb3R4Ml9zeW5jX21ib3hfdXBfbXNnKCZhbXA7cGYtJmd0O21ib3hfcGZ2ZlswXSwgdmZfaWR4KTsKJiM0MzsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMKaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jCkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsCiAJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KAogCQkJCXZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApOwogCQlyZXR1cm4gZXJyOwomIzQzOwljYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzoKJiM0MzsJCXJzcCA9IChzdHJ1Y3QgbXNnX3JzcCAqKW90eDJfbWJveF9hbGxvY19tc2coJmFtcDt2Zi0mZ3Q7bWJveC5tYm94X3VwLAomIzQzOwkJCQkJCTAsIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpOwomIzQzOwkJaWYgKCFyc3ApCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlyc3AtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHOwomIzQzOwkJcnNwLSZndDtoZHIucGNpZnVuYyA9IHJlcS0mZ3Q7cGNpZnVuYzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnJjID0gMDsKJiM0MzsJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZiwKJiM0MzsJCQkJCQkJICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLAomIzQzOwkJCQkJCQkgICByc3ApOwomIzQzOwkJcmV0dXJuIGVycjsKIAlkZWZhdWx0OgogCQlvdHgyX3JlcGx5X2ludmFsaWRfbXNnKCZhbXA7dmYtJmd0O21ib3gubWJveF91cCwgMCwgMCwgcmVxLSZndDtpZCk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIzCgkJCQkJCQlvdXRwdXQ6IDgzCgkJCQkJCQl0aG91Z2h0czogMzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgT2N0ZW9uVFgyIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBtYWlsYm94IG1lc3NhZ2UsIGBDR1hfUFRQX1JYX0lORk9gLCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLiBJdCB0b3VjaGVzIGBydnVfY2d4LmNgLCBgb3R4Ml9wZi5jYCwgYW5kIGBvdHgyX3ZmLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYyB0byBPY3Rlb25UWDIsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIGlzIHRoZSBPY3Rlb25UWDIgZHJpdmVyIGEgdmVuZG9yLXNwZWNpZmljIE5JQz8gWWVzLCBpdCBhYnNvbHV0ZWx5IGlzLiBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MmAsIHJpZ2h0IHdoZXJlIGl0IHNob3VsZCBiZS4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpczogaXMgT2N0ZW9uVFgyIGVtdWxhdGVkIGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAmIzM0O25vLiYjMzQ7IFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3Qgb2ZmZXIgdGhhdCBlbXVsYXRpb24uIFNvLCBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhLCB0aGlzIGlzIGEgY2xlYXItY3V0IGNhc2UuIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHByb21wdDogJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgWWVwLCB0aGUgT2N0ZW9uVFgyIGRyaXZlciBwZXJmZWN0bHkgYWxpZ25zIHdpdGggdGhhdCBkZXNjcmlwdGlvbi4gVGltZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDU6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA1OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNTozMjowNC43ODU0MTQ5MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQyOTgyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDU6MzI6MDQuNzg1NDIwNDM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzNzkzNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA3NmQ1NjkyYzUxZjA4NzUwNDVjMDBjNTA5MmZlMmIzYTFiNTVjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcXG5pbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbkBAIC00MjcsNyArNDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXFx0XFx0XFx0XFxcXFxcbiBcXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xcbiAjZGVmaW5lIE1CT1hfVVBfQ0dYX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1NKENHWF9MSU5LX0VWRU5ULFxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXFxuK00oQ0dYX0xJTktfRVZFTlQsXFx0MHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXFxcXFxcbitNKENHWF9QVFBfUlhfSU5GTyxcXHQweEMwMSwgY2d4X3B0cF9yeF9pbmZvLFxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXFxuIFxcbiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBNKENQVF9JTlNUX0xNVFNULFxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxcbkBAIC02NDcsNiArNjQ4LDExIEBAIHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyB7XFxuIFxcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xcbiB9O1xcbiBcXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xcbitcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbitcXHR1OCBwdHBfZW47XFxuK307XFxuK1xcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xcbiBcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbiBcXHR1OCBzZXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTgyMCw2ICs4MjAsMjQgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3Byb21pc2NfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xcbitcXG4rXFx0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cXG4rXFx0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XFxuK1xcdGlmICghbXNnKSB7XFxuK1xcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2MgbWVzc2FnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0bXNnLVxcdTAwM2VwdHBfZW4gPSBlbmFibGU7XFxuK1xcbitcXHRvdHgyX21ib3hfd2FpdF9mb3JfemVybyhcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8ubWJveF91cCwgcGYpO1xcbitcXG4rXFx0b3R4Ml9tYm94X21zZ19zZW5kX3VwKFxcdTAwMjZydnUtXFx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbkBAIC04MzcsNiArODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXFxuIFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4rXFx0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xcbitcXG4gXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbiBcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuaW5kZXggZWVjZWU2MTJiN2IyYy4uMTNiNTQyODdmYWNmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuQEAgLTI4Niw2ICsyODYsNyBAQCBlbnVtIHZmcGVybSB7XFxuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XFxuIFxcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgbGlua19ldmVudF93b3JrO1xcbitcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XFxuIFxcdGJvb2wgaW50Zl9kb3duOyAvKiBpbnRlcmZhY2Ugd2FzIGVpdGhlciBjb25maWd1cmVkIG9yIG5vdCAqL1xcbiBcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbiBcXHR1MTYgdmxhbjtcXG5AQCAtMzI0LDYgKzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XFxuIFxcdHU2NCB0aHJlc2g7XFxuIFxcbiBcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcXG4rXFx0Ym9vbCBwdHBfZW47XFxuIFxcdHU2NCAoKmNvbnZlcnRfcnhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTtcXG4gXFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xcbiBcXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG5pbmRleCBjOTk1ZjI5MDA4NTkwLi45ZTU5NmZiZDQyMWM2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XFxuIFxcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIGVudW0ge1xcbiBcXHRUWVBFX1BGQUYsXFxuQEAgLTk2MCw2ICs5NjEsMzAgQEAgaW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1zZ19yc3AgKnJzcClcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghcGYtXFx1MDAzZXB0cClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW4gPSBtc2ctXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdC8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVxcdTAwM2VwZGV2KTsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayA9IFxcdTAwMjZjb25maWctXFx1MDAzZXB0cF9pbmZvX3dvcms7XFxuK1xcbitcXHRcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpXFxuIHtcXG5AQCAtMzA0MSw2ICszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcXG4gXFx0XFx0cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlO1xcbiBcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxcbiBcXHRcXHRcXHRcXHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcXG4rXFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgb3R4Ml92Zl9wdHBfaW5mb190YXNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTMwNTUsNiArMzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKykge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7XFxuK1xcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XFxuIFxcdFxcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xcbiBcXHR9XFxuIH1cXG5AQCAtMzQxNyw2ICszNDQ1LDQ0IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlbWJveC5sb2NrKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xcbitcXHRzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgKmNvbmZpZztcXG4rXFx0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XFxuK1xcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuK1xcdGludCB2Zl9pZHg7XFxuK1xcbitcXHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxcbitcXHRcXHRcXHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xcbitcXHR2Zl9pZHggPSBjb25maWcgLSBjb25maWctXFx1MDAzZXBmLVxcdTAwM2V2Zl9jb25maWdzO1xcbitcXHRwZiA9IGNvbmZpZy1cXHUwMDNlcGY7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24gfHwgIXBmLVxcdTAwM2VwdHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbitcXG4rXFx0bXNnaGRyID0gb3R4Ml9tYm94X2FsbG9jX21zZ19yc3AoXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LFxcbitcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcXG4rXFx0aWYgKCFtc2doZHIpIHtcXG4rXFx0XFx0ZGV2X2VycihwZi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxcXG5cXFwiLCB2Zl9pZHgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHJlcSA9IChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKW1zZ2hkcjtcXG4rXFx0cmVxLVxcdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XFxuK1xcdHJlcS1cXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xcbitcXHRyZXEtXFx1MDAzZXB0cF9lbiA9IHBmLVxcdTAwM2VwdHAtXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdG90eDJfbWJveF93YWl0X2Zvcl96ZXJvKFxcdTAwMjZwZi1cXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XFxuK1xcbitcXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xcbkBAIC0xNDEsNiArMTQxLDIwIEBAIHN0YXRpYyBpbnQgb3R4MnZmX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICp2ZixcXG4gXFx0XFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoXFxuIFxcdFxcdFxcdFxcdHZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRjYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzpcXG4rXFx0XFx0cnNwID0gKHN0cnVjdCBtc2dfcnNwICopb3R4Ml9tYm94X2FsbG9jX21zZyhcXHUwMDI2dmYtXFx1MDAzZW1ib3gubWJveF91cCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XFxuK1xcdFxcdGlmICghcnNwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdFxcdHJzcC1cXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUlNQX1NJRztcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIucGNpZnVuYyA9IHJlcS1cXHUwMDNlcGNpZnVuYztcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIucmMgPSAwO1xcbitcXHRcXHRlcnIgPSBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8odmYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgcnNwKTtcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0b3R4Ml9yZXBseV9pbnZhbGlkX21zZyhcXHUwMDI2dmYtXFx1MDAzZW1ib3gubWJveF91cCwgMCwgMCwgcmVxLVxcdTAwM2VpZCk7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNTozMjowNi4yNjk4NTUwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY1NTg1MjE4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuaW5kZXggNzE0ZTQ3ZjY4ZDkzMi4uOTZlMWI5M2Y4MTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oXG5AQCAtNDI3LDcgKzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LFx0XHRcdFxcXG4gXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xuICNkZWZpbmUgTUJPWF9VUF9DR1hfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuLU0oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKVxuK00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuK00oQ0dYX1BUUF9SWF9JTkZPLFx0MHhDMDEsIGNneF9wdHBfcnhfaW5mbyxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXG4gXG4gI2RlZmluZSBNQk9YX1VQX0NQVF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4gTShDUFRfSU5TVF9MTVRTVCxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxuQEAgLTY0Nyw2ICs2NDgsMTEgQEAgc3RydWN0IGNneF9saW5rX2luZm9fbXNnIHtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xuIH07XG4gXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuK1x0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbitcdHU4IHB0cF9lbjtcbit9O1xuK1xuIHN0cnVjdCBjZ3hfcGF1c2VfZnJtX2NmZyB7XG4gXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xuIFx0dTggc2V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggODdkMjE4ODlkYzQ5ZS4uY2I5NWYzZmI2MGFlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtODIwLDYgKzgyMCwyNCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHJvbWlzY19kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xuK1xuK1x0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cbitcdG1zZyA9IG90eDJfbWJveF9hbGxvY19tc2dfY2d4X3B0cF9yeF9pbmZvKHJ2dSwgcGYpO1xuK1x0aWYgKCFtc2cpIHtcbitcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBhbGxvYyBtZXNzYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRtc2ctXHUwMDNlcHRwX2VuID0gZW5hYmxlO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rXG4rXHRvdHgyX21ib3hfbXNnX3NlbmRfdXAoXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuQEAgLTgzNyw2ICs4NTUsOCBAQCBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiBcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuK1xuIFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuIFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbmluZGV4IGVlY2VlNjEyYjdiMmMuLjEzYjU0Mjg3ZmFjZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbkBAIC0yODYsNiArMjg2LDcgQEAgZW51bSB2ZnBlcm0ge1xuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XG4gXHRzdHJ1Y3Qgb3R4Ml9uaWMgKnBmO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiArMzI1LDcgQEAgc3RydWN0IG90eDJfcHRwIHtcbiBcdHU2NCB0aHJlc2g7XG4gXG4gXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcbitcdGJvb2wgcHRwX2VuO1xuIFx0dTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqcHRwX3RzdGFtcDJuc2VjKShjb25zdCBzdHJ1Y3QgdGltZWNvdW50ZXIgKnRpbWVfY291bnRlciwgdTY0IHRpbWVzdGFtcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbmluZGV4IGM5OTVmMjkwMDg1OTAuLjllNTk2ZmJkNDIxYzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG5AQCAtNDQsNiArNDQsNyBAQCBNT0RVTEVfTElDRU5TRShcIkdQTCB2MlwiKTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XG4gXG4gc3RhdGljIHZvaWQgb3R4Ml92Zl9saW5rX2V2ZW50X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiArOTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8oc3RydWN0IG90eDJfbmljICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbXNnX3JzcCAqcnNwKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKCFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbiA9IG1zZy1cdTAwM2VwdHBfZW47XG4rXG4rXHQvKiBub3RpZnkgVkZzIGFib3V0IHB0cCBldmVudCAqL1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGNpX251bV92ZihwZi1cdTAwM2VwZGV2KTsgaSsrKSB7XG4rXHRcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXTtcbitcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbitcbitcdFx0aWYgKGNvbmZpZy1cdTAwM2VpbnRmX2Rvd24pXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhkd29yaywgbXNlY3NfdG9famlmZmllcygxMDApKTtcbitcdH1cbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgKzMwNjYsOCBAQCBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfdmZjZmdfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFx0XHRwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiBcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmssXG4gXHRcdFx0XHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcbitcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrLFxuK1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICszMDgyLDcgQEAgc3RhdGljIHZvaWQgb3R4Ml9zcmlvdl92ZmNmZ19jbGVhbnVwKHN0cnVjdCBvdHgyX25pYyAqcGYpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnM7IGkrKykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuK1x0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTtcbiBcdFx0b3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7XG4gXHR9XG4gfVxuQEAgLTM0MTcsNiArMzQ0NSw0NCBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xuK1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4rXHRzdHJ1Y3QgbWJveF9tc2doZHIgKm1zZ2hkcjtcbitcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4rXHRpbnQgdmZfaWR4O1xuK1xuK1x0Y29uZmlnID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyxcbitcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuK1x0dmZfaWR4ID0gY29uZmlnIC0gY29uZmlnLVx1MDAzZXBmLVx1MDAzZXZmX2NvbmZpZ3M7XG4rXHRwZiA9IGNvbmZpZy1cdTAwM2VwZjtcbitcbitcdGlmIChjb25maWctXHUwMDNlaW50Zl9kb3duIHx8ICFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybjtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbitcbitcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4rXHRcdFx0XHRcdCBzaXplb2YoKnJlcSksIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpO1xuK1x0aWYgKCFtc2doZHIpIHtcbitcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxuXCIsIHZmX2lkeCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XG4rXHRyZXEtXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xuK1x0cmVxLVx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcbitcdHJlcS1cdTAwM2VwdHBfZW4gPSBwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XG4rXG4rXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuK1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZW1ib3gubG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiArMTQxLDIwIEBAIHN0YXRpYyBpbnQgb3R4MnZmX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICp2ZixcbiBcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoXG4gXHRcdFx0XHR2ZiwgKHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyAqKXJlcSwgcnNwKTtcbiBcdFx0cmV0dXJuIGVycjtcbitcdGNhc2UgTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOlxuK1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbitcdFx0XHRcdFx0XHQwLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcbitcdFx0aWYgKCFyc3ApXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdHJzcC1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4rXHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4rXHRcdHJzcC1cdTAwM2VoZHIucGNpZnVuYyA9IHJlcS1cdTAwM2VwY2lmdW5jO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnJjID0gMDtcbitcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuK1x0XHRcdFx0XHRcdFx0ICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLFxuK1x0XHRcdFx0XHRcdFx0ICAgcnNwKTtcbitcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA1OjMyOjA2LjI2OTg1Njc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1ODQ4NzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG1haWxib3ggbWVzc2FnZSwgYENHWF9QVFBfUlhfSU5GT2AsIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIEl0IHRvdWNoZXMgYHJ2dV9jZ3guY2AsIGBvdHgyX3BmLmNgLCBhbmQgYG90eDJfdmYuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHNpbmNlIGl0J3MgaGFyZHdhcmUtc3BlY2lmaWMgdG8gT2N0ZW9uVFgyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIHRoZSBrZXkuIE5vdywgaXMgdGhlIE9jdGVvblRYMiBkcml2ZXIgYSB2ZW5kb3Itc3BlY2lmaWMgTklDPyBZZXMsIGl0IGFic29sdXRlbHkgaXMuIEkgY2FuIHF1aWNrbHkgY29uZmlybSB0aGF0IGl0J3MgbG9jYXRlZCB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJgLCByaWdodCB3aGVyZSBpdCBzaG91bGQgYmUuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpczogaXMgT2N0ZW9uVFgyIGVtdWxhdGVkIGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIm5vLlwiIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBvZmZlciB0aGF0IGVtdWxhdGlvbi4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBjcml0ZXJpYSwgdGhpcyBpcyBhIGNsZWFyLWN1dCBjYXNlLiBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgcmV2aXNpdCB0aGUgcHJvbXB0OiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBZZXAsIHRoZSBPY3Rlb25UWDIgZHJpdmVyIHBlcmZlY3RseSBhbGlnbnMgd2l0aCB0aGF0IGRlc2NyaXB0aW9uLiBUaW1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyMywiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA1OjMyOjEyLjgyODM0Nzg3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDU6MzI6MTIuODI4Mzc5MjUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow9q8gs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 04:52:42 +0000 UTC FinishedAt: 2026-08-20 05:32:14 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDA1OjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbmluZGV4IDcxNGU0N2Y2OGQ5MzIuLjk2ZTFiOTNmODEyMjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuQEAgLTQyNyw3ICYjNDM7NDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXHRcdFx0XFxcbiBcbiAvKiBNZXNzYWdlcyBpbml0aWF0ZWQgYnkgQUYgKHJhbmdlIDB4QzAwIC0gMHhFRkYpICovXG4gI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4tTShDR1hfTElOS19FVkVOVCxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXG4mIzQzO00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuJiM0MztNKENHWF9QVFBfUlhfSU5GTyxcdDB4QzAxLCBjZ3hfcHRwX3J4X2luZm8sXHRjZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKVxuIFxuICNkZWZpbmUgTUJPWF9VUF9DUFRfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuIE0oQ1BUX0lOU1RfTE1UU1QsXHQweEQwMCwgY3B0X2luc3RfbG10c3QsIGNwdF9pbnN0X2xtdHN0X3JlcSwgbXNnX3JzcClcbkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cge1xuIFx0c3RydWN0IGNneF9saW5rX3VzZXJfaW5mbyBsaW5rX2luZm87XG4gfTtcbiBcbiYjNDM7c3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuJiM0MztcdHN0cnVjdCBtYm94X21zZ2hkciBoZHI7XG4mIzQzO1x0dTggcHRwX2VuO1xuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xuIFx0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbiBcdHU4IHNldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2c7XG4mIzQzO1xuJiM0MztcdC8qIFNlbmQgbWJveCBtZXNzYWdlIHRvIFBGICovXG4mIzQzO1x0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XG4mIzQzO1x0aWYgKCFtc2cpIHtcbiYjNDM7XHRcdGRldl9lcnIocnZ1LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bXNnLVx1MDAzZXB0cF9lbiA9IGVuYWJsZTtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4mIzQzO1xuJiM0MztcdG90eDJfbWJveF9tc2dfc2VuZF91cChcdTAwMjZydnUtXHUwMDNlYWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiB7XG4gXHRzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTtcbkBAIC04MzcsNiAmIzQzOzg1NSw4IEBAIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIFx0aWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpXG4gXHRcdHJldHVybiAtRVBFUk07XG4gXG4mIzQzO1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuJiM0MztcbiBcdHJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LVx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXHUwMDI2Y2d4X2lkLCBcdTAwMjZsbWFjX2lkKTtcbiBcdGNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5pbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXG5AQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7XG4gc3RydWN0IG90eDJfdmZfY29uZmlnIHtcbiBcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGxpbmtfZXZlbnRfd29yaztcbiYjNDM7XHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiAmIzQzOzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XG4gXHR1NjQgdGhyZXNoO1xuIFxuIFx0c3RydWN0IHB0cF9waW5fZGVzYyBleHR0c19jb25maWc7XG4mIzQzO1x0Ym9vbCBwdHBfZW47XG4gXHR1NjQgKCpjb252ZXJ0X3J4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpjb252ZXJ0X3R4X3B0cF90c3RtcCkodTY0IHRpbWVzdGFtcCk7XG4gXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuY1xuaW5kZXggYzk5NWYyOTAwODU5MC4uOWU1OTZmYmQ0MjFjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbkBAIC00NCw2ICYjNDM7NDQsNyBAQCBNT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBvdHgyX3BmX2lkX3RhYmxlKTtcbiBcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiAmIzQzOzk2MSwzMCBAQCBpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoc3RydWN0IG90eDJfbmljICpwZixcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuJiM0MztcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4mIzQzO1x0XHRcdFx0XHQgc3RydWN0IG1zZ19yc3AgKnJzcClcbiYjNDM7e1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAoIXBmLVx1MDAzZXB0cClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuID0gbXNnLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0Lyogbm90aWZ5IFZGcyBhYm91dCBwdHAgZXZlbnQgKi9cbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVx1MDAzZXBkZXYpOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWcgPSBcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldO1xuJiM0MztcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93bilcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1xuJiM0MztcdFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcbiBcdFx0cGYtXHUwMDNldmZfY29uZmlnc1tpXS50cnVzdGVkID0gZmFsc2U7XG4gXHRcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxuIFx0XHRcdFx0ICBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayk7XG4mIzQzO1x0XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXG4mIzQzO1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGYtXHUwMDNldG90YWxfdmZzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuJiM0MztcdFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBmLVx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XG4gXHRcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xuIFx0fVxuIH1cbkBAIC0zNDE3LDYgJiM0MzszNDQ1LDQ0IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICpyZXE7XG4mIzQzO1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4mIzQzO1x0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XG4mIzQzO1x0c3RydWN0IG90eDJfbmljICpwZjtcbiYjNDM7XHRpbnQgdmZfaWR4O1xuJiM0MztcbiYjNDM7XHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxuJiM0MztcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuJiM0MztcdHZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy1cdTAwM2VwZi1cdTAwM2V2Zl9jb25maWdzO1xuJiM0MztcdHBmID0gY29uZmlnLVx1MDAzZXBmO1xuJiM0MztcbiYjNDM7XHRpZiAoY29uZmlnLVx1MDAzZWludGZfZG93biB8fCAhcGYtXHUwMDNlcHRwKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBmLVx1MDAzZW1ib3gubG9jayk7XG4mIzQzO1xuJiM0MztcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4mIzQzO1x0XHRcdFx0XHQgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcbiYjNDM7XHRpZiAoIW1zZ2hkcikge1xuJiM0MztcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgVkYlZCBwdHAgaW5mbyBldmVudFxcblwmIzM0OywgdmZfaWR4KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmVxID0gKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopbXNnaGRyO1xuJiM0MztcdHJlcS1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4mIzQzO1x0cmVxLVx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcbiYjNDM7XHRyZXEtXHUwMDNlcHRwX2VuID0gcGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbjtcbiYjNDM7XG4mIzQzO1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XG4mIzQzO1xuJiM0MztcdG90eDJfc3luY19tYm94X3VwX21zZyhcdTAwMjZwZi1cdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XG4mIzQzO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsXG4gXHRcdGVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KFxuIFx0XHRcdFx0dmYsIChzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgKilyZXEsIHJzcCk7XG4gXHRcdHJldHVybiBlcnI7XG4mIzQzO1x0Y2FzZSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk86XG4mIzQzO1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbiYjNDM7XHRcdFx0XHRcdFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XG4mIzQzO1x0XHRpZiAoIXJzcClcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0cnNwLVx1MDAzZWhkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4mIzQzO1x0XHRyc3AtXHUwMDNlaGRyLnBjaWZ1bmMgPSByZXEtXHUwMDNlcGNpZnVuYztcbiYjNDM7XHRcdHJzcC1cdTAwM2VoZHIucmMgPSAwO1xuJiM0MztcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICByc3ApO1xuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaAppbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oCkBAIC00MjcsNyAmIzQzOzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LAkJCVwKIAogLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqLwogI2RlZmluZSBNQk9YX1VQX0NHWF9NRVNTQUdFUwkJCQkJCVwKLU0oQ0dYX0xJTktfRVZFTlQsCTB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApCiYjNDM7TShDR1hfTElOS19FVkVOVCwJMHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXAomIzQzO00oQ0dYX1BUUF9SWF9JTkZPLAkweEMwMSwgY2d4X3B0cF9yeF9pbmZvLAljZ3hfcHRwX3J4X2luZm9fbXNnLCBtc2dfcnNwKQogCiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTCQkJCQkJXAogTShDUFRfSU5TVF9MTVRTVCwJMHhEMDAsIGNwdF9pbnN0X2xtdHN0LCBjcHRfaW5zdF9sbXRzdF9yZXEsIG1zZ19yc3ApCkBAIC02NDcsNiAmIzQzOzY0OCwxMSBAQCBzdHJ1Y3QgY2d4X2xpbmtfaW5mb19tc2cgewogCXN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvOwogfTsKIAomIzQzO3N0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnIHsKJiM0MzsJc3RydWN0IG1ib3hfbXNnaGRyIGhkcjsKJiM0MzsJdTggcHRwX2VuOwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcgewogCXN0cnVjdCBtYm94X21zZ2hkciBoZHI7CiAJdTggc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jCmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY2d4LmMKQEAgLTgyMCw2ICYjNDM7ODIwLDI0IEBAIGludCBydnVfbWJveF9oYW5kbGVyX2NneF9wcm9taXNjX2Rpc2FibGUoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgbXNnX3JlcSAqcmVxLAogCXJldHVybiAwOwogfQogCiYjNDM7c3RhdGljIHZvaWQgY2d4X25vdGlmeV91cF9wdHBfaW5mbyhzdHJ1Y3QgcnZ1ICpydnUsIGludCBwZiwgYm9vbCBlbmFibGUpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnOwomIzQzOwomIzQzOwkvKiBTZW5kIG1ib3ggbWVzc2FnZSB0byBQRiAqLwomIzQzOwltc2cgPSBvdHgyX21ib3hfYWxsb2NfbXNnX2NneF9wdHBfcnhfaW5mbyhydnUsIHBmKTsKJiM0MzsJaWYgKCFtc2cpIHsKJiM0MzsJCWRldl9lcnIocnZ1LSZndDtkZXYsICYjMzQ7ZmFpbGVkIHRvIGFsbG9jIG1lc3NhZ2VcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltc2ctJmd0O3B0cF9lbiA9IGVuYWJsZTsKJiM0MzsKJiM0MzsJb3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oJmFtcDtydnUtJmd0O2FmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7CiYjNDM7CiYjNDM7CW90eDJfbWJveF9tc2dfc2VuZF91cCgmYW1wO3J2dS0mZ3Q7YWZwZl93cV9pbmZvLm1ib3hfdXAsIHBmKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgcnZ1X3BmdmYgKnBmdmYgPSBydnVfZ2V0X3BmdmYocnZ1LCBwY2lmdW5jKTsKQEAgLTgzNyw2ICYjNDM7ODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpCiAJaWYgKCFpc19wZl9jZ3htYXBwZWQocnZ1LCBwZikpCiAJCXJldHVybiAtRVBFUk07CiAKJiM0MzsJY2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpOwomIzQzOwogCXJ2dV9nZXRfY2d4X2xtYWNfaWQocnZ1LSZndDtwZjJjZ3hsbWFjX21hcFtwZl0sICZhbXA7Y2d4X2lkLCAmYW1wO2xtYWNfaWQpOwogCWNneGQgPSBydnVfY2d4X3BkYXRhKGNneF9pZCwgcnZ1KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAppbmRleCBlZWNlZTYxMmI3YjJjLi4xM2I1NDI4N2ZhY2Y3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaApAQCAtMjg2LDYgJiM0MzsyODYsNyBAQCBlbnVtIHZmcGVybSB7CiBzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgewogCXN0cnVjdCBvdHgyX25pYyAqcGY7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7CiYjNDM7CXN0cnVjdCBkZWxheWVkX3dvcmsgcHRwX2luZm9fd29yazsKIAlib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi8KIAl1OCBtYWNbRVRIX0FMRU5dOwogCXUxNiB2bGFuOwpAQCAtMzI0LDYgJiM0MzszMjUsNyBAQCBzdHJ1Y3Qgb3R4Ml9wdHAgewogCXU2NCB0aHJlc2g7CiAKIAlzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZzsKJiM0MzsJYm9vbCBwdHBfZW47CiAJdTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApOwogCXU2NCAoKmNvbnZlcnRfdHhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTsKIAl1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jCmluZGV4IGM5OTVmMjkwMDg1OTAuLjllNTk2ZmJkNDIxYzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYwpAQCAtNDQsNiAmIzQzOzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwgdjImIzM0Oyk7CiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7CiAKIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiYjNDM7c3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CiAKIGVudW0gewogCVRZUEVfUEZBRiwKQEAgLTk2MCw2ICYjNDM7OTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAogCXJldHVybiAwOwogfQogCiYjNDM7aW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyhzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLAomIzQzOwkJCQkJIHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csCiYjNDM7CQkJCQkgc3RydWN0IG1zZ19yc3AgKnJzcCkKJiM0Mzt7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlpZiAoIXBmLSZndDtwdHApCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuID0gbXNnLSZndDtwdHBfZW47CiYjNDM7CiYjNDM7CS8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovCiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBwY2lfbnVtX3ZmKHBmLSZndDtwZGV2KTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCXN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXTsKJiM0MzsJCXN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrID0gJmFtcDtjb25maWctJmd0O3B0cF9pbmZvX3dvcms7CiYjNDM7CiYjNDM7CQlpZiAoY29uZmlnLSZndDtpbnRmX2Rvd24pCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoZHdvcmssIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICpwZiwKIAkJCQkgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpCiB7CkBAIC0zMDQxLDYgJiM0MzszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZikKIAkJcGYtJmd0O3ZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlOwogCQlJTklUX0RFTEFZRURfV09SSygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yaywKIAkJCQkgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTsKJiM0MzsJCUlOSVRfREVMQVlFRF9XT1JLKCZhbXA7cGYtJmd0O3ZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yaywKJiM0MzsJCQkJICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spOwogCX0KIAogCXJldHVybiAwOwpAQCAtMzA1NSw2ICYjNDM7MzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKQogCiAJZm9yIChpID0gMDsgaSAmbHQ7IHBmLSZndDt0b3RhbF92ZnM7IGkmIzQzOyYjNDM7KSB7CiAJCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BmLSZndDt2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7CiYjNDM7CQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtwZi0mZ3Q7dmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTsKIAkJb3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7CiAJfQogfQpAQCAtMzQxNyw2ICYjNDM7MzQ0NSw0NCBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQomIzQzO3sKJiM0MzsJc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKnJlcTsKJiM0MzsJc3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7CiYjNDM7CXN0cnVjdCBtYm94X21zZ2hkciAqbXNnaGRyOwomIzQzOwlzdHJ1Y3Qgb3R4Ml9uaWMgKnBmOwomIzQzOwlpbnQgdmZfaWR4OwomIzQzOwomIzQzOwljb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLAomIzQzOwkJCSAgICAgIHB0cF9pbmZvX3dvcmsud29yayk7CiYjNDM7CXZmX2lkeCA9IGNvbmZpZyAtIGNvbmZpZy0mZ3Q7cGYtJmd0O3ZmX2NvbmZpZ3M7CiYjNDM7CXBmID0gY29uZmlnLSZndDtwZjsKJiM0MzsKJiM0MzsJaWYgKGNvbmZpZy0mZ3Q7aW50Zl9kb3duIHx8ICFwZi0mZ3Q7cHRwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7CiYjNDM7CW1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKCZhbXA7cGYtJmd0O21ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsCiYjNDM7CQkJCQkgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTsKJiM0MzsJaWYgKCFtc2doZHIpIHsKJiM0MzsJCWRldl9lcnIocGYtJmd0O2RldiwgJiMzNDtGYWlsZWQgdG8gY3JlYXRlIFZGJWQgcHRwIGluZm8gZXZlbnRcbiYjMzQ7LCB2Zl9pZHgpOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVxID0gKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopbXNnaGRyOwomIzQzOwlyZXEtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJcmVxLSZndDtoZHIuc2lnID0gT1RYMl9NQk9YX1JFUV9TSUc7CiYjNDM7CXJlcS0mZ3Q7cHRwX2VuID0gcGYtJmd0O3B0cC0mZ3Q7cHRwX2VuOwomIzQzOwomIzQzOwlvdHgyX21ib3hfd2FpdF9mb3JfemVybygmYW1wO3BmLSZndDttYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4KTsKJiM0MzsKJiM0MzsJb3R4Ml9zeW5jX21ib3hfdXBfbXNnKCZhbXA7cGYtJmd0O21ib3hfcGZ2ZlswXSwgdmZfaWR4KTsKJiM0MzsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7cGYtJmd0O21ib3gubG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBvdHgyX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcykKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMKaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jCkBAIC0xNDEsNiAmIzQzOzE0MSwyMCBAQCBzdGF0aWMgaW50IG90eDJ2Zl9wcm9jZXNzX21ib3hfbXNnX3VwKHN0cnVjdCBvdHgyX25pYyAqdmYsCiAJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KAogCQkJCXZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApOwogCQlyZXR1cm4gZXJyOwomIzQzOwljYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzoKJiM0MzsJCXJzcCA9IChzdHJ1Y3QgbXNnX3JzcCAqKW90eDJfbWJveF9hbGxvY19tc2coJmFtcDt2Zi0mZ3Q7bWJveC5tYm94X3VwLAomIzQzOwkJCQkJCTAsIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpOwomIzQzOwkJaWYgKCFyc3ApCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlyc3AtJmd0O2hkci5pZCA9IE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnNpZyA9IE9UWDJfTUJPWF9SU1BfU0lHOwomIzQzOwkJcnNwLSZndDtoZHIucGNpZnVuYyA9IHJlcS0mZ3Q7cGNpZnVuYzsKJiM0MzsJCXJzcC0mZ3Q7aGRyLnJjID0gMDsKJiM0MzsJCWVyciA9IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9wdHBfcnhfaW5mbyh2ZiwKJiM0MzsJCQkJCQkJICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLAomIzQzOwkJCQkJCQkgICByc3ApOwomIzQzOwkJcmV0dXJuIGVycjsKIAlkZWZhdWx0OgogCQlvdHgyX3JlcGx5X2ludmFsaWRfbXNnKCZhbXA7dmYtJmd0O21ib3gubWJveF91cCwgMCwgMCwgcmVxLSZndDtpZCk7CiAJCXJldHVybiAtRU5PREVWOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIzCgkJCQkJCQlvdXRwdXQ6IDgzCgkJCQkJCQl0aG91Z2h0czogMzk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgT2N0ZW9uVFgyIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBhIG5ldyBtYWlsYm94IG1lc3NhZ2UsIGBDR1hfUFRQX1JYX0lORk9gLCB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLiBJdCB0b3VjaGVzIGBydnVfY2d4LmNgLCBgb3R4Ml9wZi5jYCwgYW5kIGBvdHgyX3ZmLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBzaW5jZSBpdCYjMzk7cyBoYXJkd2FyZS1zcGVjaWZpYyB0byBPY3Rlb25UWDIsIEkgbmVlZCB0byBjb25zaWRlciB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYS4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIGlzIHRoZSBPY3Rlb25UWDIgZHJpdmVyIGEgdmVuZG9yLXNwZWNpZmljIE5JQz8gWWVzLCBpdCBhYnNvbHV0ZWx5IGlzLiBJIGNhbiBxdWlja2x5IGNvbmZpcm0gdGhhdCBpdCYjMzk7cyBsb2NhdGVkIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4MmAsIHJpZ2h0IHdoZXJlIGl0IHNob3VsZCBiZS4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpczogaXMgT2N0ZW9uVFgyIGVtdWxhdGVkIGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyAmIzM0O25vLiYjMzQ7IFN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3Qgb2ZmZXIgdGhhdCBlbXVsYXRpb24uIFNvLCBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIGNyaXRlcmlhLCB0aGlzIGlzIGEgY2xlYXItY3V0IGNhc2UuIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHByb21wdDogJiMzNDtDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgWWVwLCB0aGUgT2N0ZW9uVFgyIGRyaXZlciBwZXJmZWN0bHkgYWxpZ25zIHdpdGggdGhhdCBkZXNjcmlwdGlvbi4gVGltZSB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDU6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgTklDIGRyaXZlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgc28gdGhlIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA1OjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNTozMjowNC43ODU0MTQ5MjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQyOTgyNjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDU6MzI6MDQuNzg1NDIwNDM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzNzkzNjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA3NmQ1NjkyYzUxZjA4NzUwNDVjMDBjNTA5MmZlMmIzYTFiNTVjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9tYm94LmhcXG5pbmRleCA3MTRlNDdmNjhkOTMyLi45NmUxYjkzZjgxMjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxcbkBAIC00MjcsNyArNDI3LDggQEAgTShNQ1NfQ1VTVE9NX1RBR19DRkdfR0VULCAweGEwMjEsIG1jc19jdXN0b21fdGFnX2NmZ19nZXQsXFx0XFx0XFx0XFxcXFxcbiBcXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xcbiAjZGVmaW5lIE1CT1hfVVBfQ0dYX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1NKENHWF9MSU5LX0VWRU5ULFxcdDB4QzAwLCBjZ3hfbGlua19ldmVudCwgY2d4X2xpbmtfaW5mb19tc2csIG1zZ19yc3ApXFxuK00oQ0dYX0xJTktfRVZFTlQsXFx0MHhDMDAsIGNneF9saW5rX2V2ZW50LCBjZ3hfbGlua19pbmZvX21zZywgbXNnX3JzcCkgXFxcXFxcbitNKENHWF9QVFBfUlhfSU5GTyxcXHQweEMwMSwgY2d4X3B0cF9yeF9pbmZvLFxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXFxuIFxcbiAjZGVmaW5lIE1CT1hfVVBfQ1BUX01FU1NBR0VTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBNKENQVF9JTlNUX0xNVFNULFxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxcbkBAIC02NDcsNiArNjQ4LDExIEBAIHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyB7XFxuIFxcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xcbiB9O1xcbiBcXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xcbitcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbitcXHR1OCBwdHBfZW47XFxuK307XFxuK1xcbiBzdHJ1Y3QgY2d4X3BhdXNlX2ZybV9jZmcge1xcbiBcXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xcbiBcXHR1OCBzZXQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xcbmluZGV4IDg3ZDIxODg5ZGM0OWUuLmNiOTVmM2ZiNjBhZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXFxuQEAgLTgyMCw2ICs4MjAsMjQgQEAgaW50IHJ2dV9tYm94X2hhbmRsZXJfY2d4X3Byb21pc2NfZGlzYWJsZShzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBtc2dfcmVxICpyZXEsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xcbitcXG4rXFx0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cXG4rXFx0bXNnID0gb3R4Ml9tYm94X2FsbG9jX21zZ19jZ3hfcHRwX3J4X2luZm8ocnZ1LCBwZik7XFxuK1xcdGlmICghbXNnKSB7XFxuK1xcdFxcdGRldl9lcnIocnZ1LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gYWxsb2MgbWVzc2FnZVxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4rXFx0bXNnLVxcdTAwM2VwdHBfZW4gPSBlbmFibGU7XFxuK1xcbitcXHRvdHgyX21ib3hfd2FpdF9mb3JfemVybyhcXHUwMDI2cnZ1LVxcdTAwM2VhZnBmX3dxX2luZm8ubWJveF91cCwgcGYpO1xcbitcXG4rXFx0b3R4Ml9tYm94X21zZ19zZW5kX3VwKFxcdTAwMjZydnUtXFx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxcbiB7XFxuIFxcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xcbkBAIC04MzcsNiArODU1LDggQEAgc3RhdGljIGludCBydnVfY2d4X3B0cF9yeF9jZmcoc3RydWN0IHJ2dSAqcnZ1LCB1MTYgcGNpZnVuYywgYm9vbCBlbmFibGUpXFxuIFxcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxcbiBcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiBcXG4rXFx0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xcbitcXG4gXFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXFx1MDAzZXBmMmNneGxtYWNfbWFwW3BmXSwgXFx1MDAyNmNneF9pZCwgXFx1MDAyNmxtYWNfaWQpO1xcbiBcXHRjZ3hkID0gcnZ1X2NneF9wZGF0YShjZ3hfaWQsIHJ2dSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuaW5kZXggZWVjZWU2MTJiN2IyYy4uMTNiNTQyODdmYWNmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oXFxuQEAgLTI4Niw2ICsyODYsNyBAQCBlbnVtIHZmcGVybSB7XFxuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XFxuIFxcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgbGlua19ldmVudF93b3JrO1xcbitcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XFxuIFxcdGJvb2wgaW50Zl9kb3duOyAvKiBpbnRlcmZhY2Ugd2FzIGVpdGhlciBjb25maWd1cmVkIG9yIG5vdCAqL1xcbiBcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbiBcXHR1MTYgdmxhbjtcXG5AQCAtMzI0LDYgKzMyNSw3IEBAIHN0cnVjdCBvdHgyX3B0cCB7XFxuIFxcdHU2NCB0aHJlc2g7XFxuIFxcbiBcXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcXG4rXFx0Ym9vbCBwdHBfZW47XFxuIFxcdHU2NCAoKmNvbnZlcnRfcnhfcHRwX3RzdG1wKSh1NjQgdGltZXN0YW1wKTtcXG4gXFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xcbiBcXHR1NjQgKCpwdHBfdHN0YW1wMm5zZWMpKGNvbnN0IHN0cnVjdCB0aW1lY291bnRlciAqdGltZV9jb3VudGVyLCB1NjQgdGltZXN0YW1wKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG5pbmRleCBjOTk1ZjI5MDA4NTkwLi45ZTU5NmZiZDQyMWM2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXFxuQEAgLTQ0LDYgKzQ0LDcgQEAgTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTCB2MlxcXCIpO1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XFxuIFxcbiBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcXG4gXFxuIGVudW0ge1xcbiBcXHRUWVBFX1BGQUYsXFxuQEAgLTk2MCw2ICs5NjEsMzAgQEAgaW50IG90eDJfbWJveF91cF9oYW5kbGVyX2NneF9saW5rX2V2ZW50KHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitpbnQgb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHN0cnVjdCBvdHgyX25pYyAqcGYsXFxuK1xcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnLFxcbitcXHRcXHRcXHRcXHRcXHQgc3RydWN0IG1zZ19yc3AgKnJzcClcXG4re1xcbitcXHRpbnQgaTtcXG4rXFxuK1xcdGlmICghcGYtXFx1MDAzZXB0cClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRwZi1cXHUwMDNlcHRwLVxcdTAwM2VwdHBfZW4gPSBtc2ctXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdC8qIG5vdGlmeSBWRnMgYWJvdXQgcHRwIGV2ZW50ICovXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2lfbnVtX3ZmKHBmLVxcdTAwM2VwZGV2KTsgaSsrKSB7XFxuK1xcdFxcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldO1xcbitcXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayA9IFxcdTAwMjZjb25maWctXFx1MDAzZXB0cF9pbmZvX3dvcms7XFxuK1xcbitcXHRcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24pXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKGR3b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwMCkpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1ib3hfbXNnaGRyICpyZXEpXFxuIHtcXG5AQCAtMzA0MSw2ICszMDY2LDggQEAgc3RhdGljIGludCBvdHgyX3NyaW92X3ZmY2ZnX2luaXQoc3RydWN0IG90eDJfbmljICpwZilcXG4gXFx0XFx0cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0udHJ1c3RlZCA9IGZhbHNlO1xcbiBcXHRcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ubGlua19ldmVudF93b3JrLFxcbiBcXHRcXHRcXHRcXHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcXG4rXFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLnB0cF9pbmZvX3dvcmssXFxuK1xcdFxcdFxcdFxcdCAgb3R4Ml92Zl9wdHBfaW5mb190YXNrKTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTMwNTUsNiArMzA4Miw3IEBAIHN0YXRpYyB2b2lkIG90eDJfc3Jpb3ZfdmZjZmdfY2xlYW51cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHBmLVxcdTAwM2V0b3RhbF92ZnM7IGkrKykge1xcbiBcXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBmLVxcdTAwM2V2Zl9jb25maWdzW2ldLmxpbmtfZXZlbnRfd29yayk7XFxuK1xcdFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2cGYtXFx1MDAzZXZmX2NvbmZpZ3NbaV0ucHRwX2luZm9fd29yayk7XFxuIFxcdFxcdG90eDJfc2V0X3ZmX3Blcm1pc3Npb25zKHBmLCBpLCBPVFgyX1JFU0VUX1ZGX1BFUk0pO1xcbiBcXHR9XFxuIH1cXG5AQCAtMzQxNyw2ICszNDQ1LDQ0IEBAIHN0YXRpYyB2b2lkIG90eDJfdmZfbGlua19ldmVudF90YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwZi1cXHUwMDNlbWJveC5sb2NrKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4re1xcbitcXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xcbitcXHRzdHJ1Y3Qgb3R4Ml92Zl9jb25maWcgKmNvbmZpZztcXG4rXFx0c3RydWN0IG1ib3hfbXNnaGRyICptc2doZHI7XFxuK1xcdHN0cnVjdCBvdHgyX25pYyAqcGY7XFxuK1xcdGludCB2Zl9pZHg7XFxuK1xcbitcXHRjb25maWcgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG90eDJfdmZfY29uZmlnLFxcbitcXHRcXHRcXHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xcbitcXHR2Zl9pZHggPSBjb25maWcgLSBjb25maWctXFx1MDAzZXBmLVxcdTAwM2V2Zl9jb25maWdzO1xcbitcXHRwZiA9IGNvbmZpZy1cXHUwMDNlcGY7XFxuK1xcbitcXHRpZiAoY29uZmlnLVxcdTAwM2VpbnRmX2Rvd24gfHwgIXBmLVxcdTAwM2VwdHApXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbitcXG4rXFx0bXNnaGRyID0gb3R4Ml9tYm94X2FsbG9jX21zZ19yc3AoXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0ubWJveF91cCwgdmZfaWR4LFxcbitcXHRcXHRcXHRcXHRcXHQgc2l6ZW9mKCpyZXEpLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcXG4rXFx0aWYgKCFtc2doZHIpIHtcXG4rXFx0XFx0ZGV2X2VycihwZi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxcXG5cXFwiLCB2Zl9pZHgpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuK1xcdHJlcSA9IChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKW1zZ2hkcjtcXG4rXFx0cmVxLVxcdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XFxuK1xcdHJlcS1cXHUwMDNlaGRyLnNpZyA9IE9UWDJfTUJPWF9SRVFfU0lHO1xcbitcXHRyZXEtXFx1MDAzZXB0cF9lbiA9IHBmLVxcdTAwM2VwdHAtXFx1MDAzZXB0cF9lbjtcXG4rXFxuK1xcdG90eDJfbWJveF93YWl0X2Zvcl96ZXJvKFxcdTAwMjZwZi1cXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XFxuK1xcbitcXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXFx1MDAyNnBmLVxcdTAwM2VtYm94X3BmdmZbMF0sIHZmX2lkeCk7XFxuK1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBmLVxcdTAwM2VtYm94LmxvY2spO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxcbiB7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xcbkBAIC0xNDEsNiArMTQxLDIwIEBAIHN0YXRpYyBpbnQgb3R4MnZmX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICp2ZixcXG4gXFx0XFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoXFxuIFxcdFxcdFxcdFxcdHZmLCAoc3RydWN0IGNneF9saW5rX2luZm9fbXNnICopcmVxLCByc3ApO1xcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbitcXHRjYXNlIE1CT1hfTVNHX0NHWF9QVFBfUlhfSU5GTzpcXG4rXFx0XFx0cnNwID0gKHN0cnVjdCBtc2dfcnNwICopb3R4Ml9tYm94X2FsbG9jX21zZyhcXHUwMDI2dmYtXFx1MDAzZW1ib3gubWJveF91cCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0MCwgc2l6ZW9mKHN0cnVjdCBtc2dfcnNwKSk7XFxuK1xcdFxcdGlmICghcnNwKVxcbitcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdFxcdHJzcC1cXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xcbitcXHRcXHRyc3AtXFx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUlNQX1NJRztcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIucGNpZnVuYyA9IHJlcS1cXHUwMDNlcGNpZnVuYztcXG4rXFx0XFx0cnNwLVxcdTAwM2VoZHIucmMgPSAwO1xcbitcXHRcXHRlcnIgPSBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8odmYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIChzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqKXJlcSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgcnNwKTtcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0b3R4Ml9yZXBseV9pbnZhbGlkX21zZyhcXHUwMDI2dmYtXFx1MDAzZW1ib3gubWJveF91cCwgMCwgMCwgcmVxLVxcdTAwM2VpZCk7XFxuIFxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNTozMjowNi4yNjk4NTUwNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY1NTg1MjE4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBOSUMgZHJpdmVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLCBzbyB0aGUgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzZkNTY5MmM1MWYwODc1MDQ1YzAwYzUwOTJmZTJiM2ExYjU1YzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNTozMjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuaW5kZXggNzE0ZTQ3ZjY4ZDkzMi4uOTZlMWI5M2Y4MTIyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL21ib3guaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbWJveC5oXG5AQCAtNDI3LDcgKzQyNyw4IEBAIE0oTUNTX0NVU1RPTV9UQUdfQ0ZHX0dFVCwgMHhhMDIxLCBtY3NfY3VzdG9tX3RhZ19jZmdfZ2V0LFx0XHRcdFxcXG4gXG4gLyogTWVzc2FnZXMgaW5pdGlhdGVkIGJ5IEFGIChyYW5nZSAweEMwMCAtIDB4RUZGKSAqL1xuICNkZWZpbmUgTUJPWF9VUF9DR1hfTUVTU0FHRVNcdFx0XHRcdFx0XHRcXFxuLU0oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKVxuK00oQ0dYX0xJTktfRVZFTlQsXHQweEMwMCwgY2d4X2xpbmtfZXZlbnQsIGNneF9saW5rX2luZm9fbXNnLCBtc2dfcnNwKSBcXFxuK00oQ0dYX1BUUF9SWF9JTkZPLFx0MHhDMDEsIGNneF9wdHBfcnhfaW5mbyxcdGNneF9wdHBfcnhfaW5mb19tc2csIG1zZ19yc3ApXG4gXG4gI2RlZmluZSBNQk9YX1VQX0NQVF9NRVNTQUdFU1x0XHRcdFx0XHRcdFxcXG4gTShDUFRfSU5TVF9MTVRTVCxcdDB4RDAwLCBjcHRfaW5zdF9sbXRzdCwgY3B0X2luc3RfbG10c3RfcmVxLCBtc2dfcnNwKVxuQEAgLTY0Nyw2ICs2NDgsMTEgQEAgc3RydWN0IGNneF9saW5rX2luZm9fbXNnIHtcbiBcdHN0cnVjdCBjZ3hfbGlua191c2VyX2luZm8gbGlua19pbmZvO1xuIH07XG4gXG4rc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cge1xuK1x0c3RydWN0IG1ib3hfbXNnaGRyIGhkcjtcbitcdHU4IHB0cF9lbjtcbit9O1xuK1xuIHN0cnVjdCBjZ3hfcGF1c2VfZnJtX2NmZyB7XG4gXHRzdHJ1Y3QgbWJveF9tc2doZHIgaGRyO1xuIFx0dTggc2V0O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuaW5kZXggODdkMjE4ODlkYzQ5ZS4uY2I5NWYzZmI2MGFlNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jZ3guY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NneC5jXG5AQCAtODIwLDYgKzgyMCwyNCBAQCBpbnQgcnZ1X21ib3hfaGFuZGxlcl9jZ3hfcHJvbWlzY19kaXNhYmxlKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IG1zZ19yZXEgKnJlcSxcbiBcdHJldHVybiAwO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBjZ3hfbm90aWZ5X3VwX3B0cF9pbmZvKHN0cnVjdCBydnUgKnJ2dSwgaW50IHBmLCBib29sIGVuYWJsZSlcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqbXNnO1xuK1xuK1x0LyogU2VuZCBtYm94IG1lc3NhZ2UgdG8gUEYgKi9cbitcdG1zZyA9IG90eDJfbWJveF9hbGxvY19tc2dfY2d4X3B0cF9yeF9pbmZvKHJ2dSwgcGYpO1xuK1x0aWYgKCFtc2cpIHtcbitcdFx0ZGV2X2VycihydnUtXHUwMDNlZGV2LCBcImZhaWxlZCB0byBhbGxvYyBtZXNzYWdlXFxuXCIpO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRtc2ctXHUwMDNlcHRwX2VuID0gZW5hYmxlO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rXG4rXHRvdHgyX21ib3hfbXNnX3NlbmRfdXAoXHUwMDI2cnZ1LVx1MDAzZWFmcGZfd3FfaW5mby5tYm94X3VwLCBwZik7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcnZ1X2NneF9wdHBfcnhfY2ZnKHN0cnVjdCBydnUgKnJ2dSwgdTE2IHBjaWZ1bmMsIGJvb2wgZW5hYmxlKVxuIHtcbiBcdHN0cnVjdCBydnVfcGZ2ZiAqcGZ2ZiA9IHJ2dV9nZXRfcGZ2ZihydnUsIHBjaWZ1bmMpO1xuQEAgLTgzNyw2ICs4NTUsOCBAQCBzdGF0aWMgaW50IHJ2dV9jZ3hfcHRwX3J4X2NmZyhzdHJ1Y3QgcnZ1ICpydnUsIHUxNiBwY2lmdW5jLCBib29sIGVuYWJsZSlcbiBcdGlmICghaXNfcGZfY2d4bWFwcGVkKHJ2dSwgcGYpKVxuIFx0XHRyZXR1cm4gLUVQRVJNO1xuIFxuK1x0Y2d4X25vdGlmeV91cF9wdHBfaW5mbyhydnUsIHBmLCBlbmFibGUpO1xuK1xuIFx0cnZ1X2dldF9jZ3hfbG1hY19pZChydnUtXHUwMDNlcGYyY2d4bG1hY19tYXBbcGZdLCBcdTAwMjZjZ3hfaWQsIFx1MDAyNmxtYWNfaWQpO1xuIFx0Y2d4ZCA9IHJ2dV9jZ3hfcGRhdGEoY2d4X2lkLCBydnUpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbmluZGV4IGVlY2VlNjEyYjdiMmMuLjEzYjU0Mjg3ZmFjZjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmhcbkBAIC0yODYsNiArMjg2LDcgQEAgZW51bSB2ZnBlcm0ge1xuIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyB7XG4gXHRzdHJ1Y3Qgb3R4Ml9uaWMgKnBmO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBsaW5rX2V2ZW50X3dvcms7XG4rXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHB0cF9pbmZvX3dvcms7XG4gXHRib29sIGludGZfZG93bjsgLyogaW50ZXJmYWNlIHdhcyBlaXRoZXIgY29uZmlndXJlZCBvciBub3QgKi9cbiBcdHU4IG1hY1tFVEhfQUxFTl07XG4gXHR1MTYgdmxhbjtcbkBAIC0zMjQsNiArMzI1LDcgQEAgc3RydWN0IG90eDJfcHRwIHtcbiBcdHU2NCB0aHJlc2g7XG4gXG4gXHRzdHJ1Y3QgcHRwX3Bpbl9kZXNjIGV4dHRzX2NvbmZpZztcbitcdGJvb2wgcHRwX2VuO1xuIFx0dTY0ICgqY29udmVydF9yeF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqY29udmVydF90eF9wdHBfdHN0bXApKHU2NCB0aW1lc3RhbXApO1xuIFx0dTY0ICgqcHRwX3RzdGFtcDJuc2VjKShjb25zdCBzdHJ1Y3QgdGltZWNvdW50ZXIgKnRpbWVfY291bnRlciwgdTY0IHRpbWVzdGFtcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmNcbmluZGV4IGM5OTVmMjkwMDg1OTAuLjllNTk2ZmJkNDIxYzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jXG5AQCAtNDQsNiArNDQsNyBAQCBNT0RVTEVfTElDRU5TRShcIkdQTCB2MlwiKTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgb3R4Ml9wZl9pZF90YWJsZSk7XG4gXG4gc3RhdGljIHZvaWQgb3R4Ml92Zl9saW5rX2V2ZW50X3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbitzdGF0aWMgdm9pZCBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbiBcbiBlbnVtIHtcbiBcdFRZUEVfUEZBRixcbkBAIC05NjAsNiArOTYxLDMwIEBAIGludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfbGlua19ldmVudChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuK2ludCBvdHgyX21ib3hfdXBfaGFuZGxlcl9jZ3hfcHRwX3J4X2luZm8oc3RydWN0IG90eDJfbmljICpwZixcbitcdFx0XHRcdFx0IHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICptc2csXG4rXHRcdFx0XHRcdCBzdHJ1Y3QgbXNnX3JzcCAqcnNwKVxuK3tcbitcdGludCBpO1xuK1xuK1x0aWYgKCFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0cGYtXHUwMDNlcHRwLVx1MDAzZXB0cF9lbiA9IG1zZy1cdTAwM2VwdHBfZW47XG4rXG4rXHQvKiBub3RpZnkgVkZzIGFib3V0IHB0cCBldmVudCAqL1xuK1x0Zm9yIChpID0gMDsgaSBcdTAwM2MgcGNpX251bV92ZihwZi1cdTAwM2VwZGV2KTsgaSsrKSB7XG4rXHRcdHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyAqY29uZmlnID0gXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXTtcbitcdFx0c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmsgPSBcdTAwMjZjb25maWctXHUwMDNlcHRwX2luZm9fd29yaztcbitcbitcdFx0aWYgKGNvbmZpZy1cdTAwM2VpbnRmX2Rvd24pXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhkd29yaywgbXNlY3NfdG9famlmZmllcygxMDApKTtcbitcdH1cbitcdHJldHVybiAwO1xuK31cbitcbiBzdGF0aWMgaW50IG90eDJfcHJvY2Vzc19tYm94X21zZ191cChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBtYm94X21zZ2hkciAqcmVxKVxuIHtcbkBAIC0zMDQxLDYgKzMwNjYsOCBAQCBzdGF0aWMgaW50IG90eDJfc3Jpb3ZfdmZjZmdfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmKVxuIFx0XHRwZi1cdTAwM2V2Zl9jb25maWdzW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiBcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmssXG4gXHRcdFx0XHQgIG90eDJfdmZfbGlua19ldmVudF90YXNrKTtcbitcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrLFxuK1x0XHRcdFx0ICBvdHgyX3ZmX3B0cF9pbmZvX3Rhc2spO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMzA1NSw2ICszMDgyLDcgQEAgc3RhdGljIHZvaWQgb3R4Ml9zcmlvdl92ZmNmZ19jbGVhbnVwKHN0cnVjdCBvdHgyX25pYyAqcGYpXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwZi1cdTAwM2V0b3RhbF92ZnM7IGkrKykge1xuIFx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5saW5rX2V2ZW50X3dvcmspO1xuK1x0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cGYtXHUwMDNldmZfY29uZmlnc1tpXS5wdHBfaW5mb193b3JrKTtcbiBcdFx0b3R4Ml9zZXRfdmZfcGVybWlzc2lvbnMocGYsIGksIE9UWDJfUkVTRVRfVkZfUEVSTSk7XG4gXHR9XG4gfVxuQEAgLTM0MTcsNiArMzQ0NSw0NCBAQCBzdGF0aWMgdm9pZCBvdHgyX3ZmX2xpbmtfZXZlbnRfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRtdXRleF91bmxvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgb3R4Ml92Zl9wdHBfaW5mb190YXNrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbit7XG4rXHRzdHJ1Y3QgY2d4X3B0cF9yeF9pbmZvX21zZyAqcmVxO1xuK1x0c3RydWN0IG90eDJfdmZfY29uZmlnICpjb25maWc7XG4rXHRzdHJ1Y3QgbWJveF9tc2doZHIgKm1zZ2hkcjtcbitcdHN0cnVjdCBvdHgyX25pYyAqcGY7XG4rXHRpbnQgdmZfaWR4O1xuK1xuK1x0Y29uZmlnID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBvdHgyX3ZmX2NvbmZpZyxcbitcdFx0XHQgICAgICBwdHBfaW5mb193b3JrLndvcmspO1xuK1x0dmZfaWR4ID0gY29uZmlnIC0gY29uZmlnLVx1MDAzZXBmLVx1MDAzZXZmX2NvbmZpZ3M7XG4rXHRwZiA9IGNvbmZpZy1cdTAwM2VwZjtcbitcbitcdGlmIChjb25maWctXHUwMDNlaW50Zl9kb3duIHx8ICFwZi1cdTAwM2VwdHApXG4rXHRcdHJldHVybjtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2cGYtXHUwMDNlbWJveC5sb2NrKTtcbitcbitcdG1zZ2hkciA9IG90eDJfbWJveF9hbGxvY19tc2dfcnNwKFx1MDAyNnBmLVx1MDAzZW1ib3hfcGZ2ZlswXS5tYm94X3VwLCB2Zl9pZHgsXG4rXHRcdFx0XHRcdCBzaXplb2YoKnJlcSksIHNpemVvZihzdHJ1Y3QgbXNnX3JzcCkpO1xuK1x0aWYgKCFtc2doZHIpIHtcbitcdFx0ZGV2X2VycihwZi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIGNyZWF0ZSBWRiVkIHB0cCBpbmZvIGV2ZW50XFxuXCIsIHZmX2lkeCk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwZi1cdTAwM2VtYm94LmxvY2spO1xuK1x0XHRyZXR1cm47XG4rXHR9XG4rXG4rXHRyZXEgPSAoc3RydWN0IGNneF9wdHBfcnhfaW5mb19tc2cgKiltc2doZHI7XG4rXHRyZXEtXHUwMDNlaGRyLmlkID0gTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPO1xuK1x0cmVxLVx1MDAzZWhkci5zaWcgPSBPVFgyX01CT1hfUkVRX1NJRztcbitcdHJlcS1cdTAwM2VwdHBfZW4gPSBwZi1cdTAwM2VwdHAtXHUwMDNlcHRwX2VuO1xuK1xuK1x0b3R4Ml9tYm94X3dhaXRfZm9yX3plcm8oXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLm1ib3hfdXAsIHZmX2lkeCk7XG4rXG4rXHRvdHgyX3N5bmNfbWJveF91cF9tc2coXHUwMDI2cGYtXHUwMDNlbWJveF9wZnZmWzBdLCB2Zl9pZHgpO1xuK1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBmLVx1MDAzZW1ib3gubG9jayk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgb3R4Ml9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuY1xuaW5kZXggYjAyMmY1MmM2ODQ1MC4uNjBmODEwNjIwMDdiMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmNcbkBAIC0xNDEsNiArMTQxLDIwIEBAIHN0YXRpYyBpbnQgb3R4MnZmX3Byb2Nlc3NfbWJveF9tc2dfdXAoc3RydWN0IG90eDJfbmljICp2ZixcbiBcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X2xpbmtfZXZlbnQoXG4gXHRcdFx0XHR2ZiwgKHN0cnVjdCBjZ3hfbGlua19pbmZvX21zZyAqKXJlcSwgcnNwKTtcbiBcdFx0cmV0dXJuIGVycjtcbitcdGNhc2UgTUJPWF9NU0dfQ0dYX1BUUF9SWF9JTkZPOlxuK1x0XHRyc3AgPSAoc3RydWN0IG1zZ19yc3AgKilvdHgyX21ib3hfYWxsb2NfbXNnKFx1MDAyNnZmLVx1MDAzZW1ib3gubWJveF91cCxcbitcdFx0XHRcdFx0XHQwLCBzaXplb2Yoc3RydWN0IG1zZ19yc3ApKTtcbitcdFx0aWYgKCFyc3ApXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdHJzcC1cdTAwM2VoZHIuaWQgPSBNQk9YX01TR19DR1hfUFRQX1JYX0lORk87XG4rXHRcdHJzcC1cdTAwM2VoZHIuc2lnID0gT1RYMl9NQk9YX1JTUF9TSUc7XG4rXHRcdHJzcC1cdTAwM2VoZHIucGNpZnVuYyA9IHJlcS1cdTAwM2VwY2lmdW5jO1xuK1x0XHRyc3AtXHUwMDNlaGRyLnJjID0gMDtcbitcdFx0ZXJyID0gb3R4Ml9tYm94X3VwX2hhbmRsZXJfY2d4X3B0cF9yeF9pbmZvKHZmLFxuK1x0XHRcdFx0XHRcdFx0ICAgKHN0cnVjdCBjZ3hfcHRwX3J4X2luZm9fbXNnICopcmVxLFxuK1x0XHRcdFx0XHRcdFx0ICAgcnNwKTtcbitcdFx0cmV0dXJuIGVycjtcbiBcdGRlZmF1bHQ6XG4gXHRcdG90eDJfcmVwbHlfaW52YWxpZF9tc2coXHUwMDI2dmYtXHUwMDNlbWJveC5tYm94X3VwLCAwLCAwLCByZXEtXHUwMDNlaWQpO1xuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA1OjMyOjA2LjI2OTg1Njc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU1ODQ4NzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIE9jdGVvblRYMiBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IG1haWxib3ggbWVzc2FnZSwgYENHWF9QVFBfUlhfSU5GT2AsIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIuIEl0IHRvdWNoZXMgYHJ2dV9jZ3guY2AsIGBvdHgyX3BmLmNgLCBhbmQgYG90eDJfdmYuY2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHNpbmNlIGl0J3MgaGFyZHdhcmUtc3BlY2lmaWMgdG8gT2N0ZW9uVFgyLCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWEuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBOSUMgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCdzIHRoZSBrZXkuIE5vdywgaXMgdGhlIE9jdGVvblRYMiBkcml2ZXIgYSB2ZW5kb3Itc3BlY2lmaWMgTklDPyBZZXMsIGl0IGFic29sdXRlbHkgaXMuIEkgY2FuIHF1aWNrbHkgY29uZmlybSB0aGF0IGl0J3MgbG9jYXRlZCB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDJgLCByaWdodCB3aGVyZSBpdCBzaG91bGQgYmUuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBpczogaXMgT2N0ZW9uVFgyIGVtdWxhdGVkIGluIFFFTVU/IEFuZCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBcIm5vLlwiIFN0YW5kYXJkIFFFTVUgZG9lc24ndCBvZmZlciB0aGF0IGVtdWxhdGlvbi4gU28sIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBjcml0ZXJpYSwgdGhpcyBpcyBhIGNsZWFyLWN1dCBjYXNlLiBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgcmV2aXNpdCB0aGUgcHJvbXB0OiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIiBZZXAsIHRoZSBPY3Rlb25UWDIgZHJpdmVyIHBlcmZlY3RseSBhbGlnbnMgd2l0aCB0aGF0IGRlc2NyaXB0aW9uLiBUaW1lIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyMywiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA1OjMyOjEyLjgyODM0Nzg3MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHNvIHRoZSBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDU6MzI6MTIuODI4Mzc5MjUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow9q8gs[1] Phase: Running StartedAt: 2026-08-20 05:32:24 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9q8gs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-20 05:32:24 +0000 UTC FinishedAt: 2026-08-20 05:32:28 +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,}