Name: series-workflow9sbtm Phase: Failed StartedAt: 2026-08-03 15:13:50 +0000 UTC FinishedAt: 2026-08-03 16:00:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sbtm[0] Phase: Succeeded StartedAt: 2026-08-03 15:13:50 +0000 UTC FinishedAt: 2026-08-03 16:00:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sbtm[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 15:13:50 +0000 UTC FinishedAt: 2026-08-03 16:00:47 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBkcml2ZXIsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUwZGRkYzZhODQxMTU4MTI4NWJiYjZkZmY1OWI3Yjk3MDg1NzUyYTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE1OjU5OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXG5AQCAtMTM1NSw3ICYjNDM7MTM1NSw3NyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF9jb2FsZXNjZSAqa2VybmVsX2NvYWwsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcbiYjNDM7XHQgKiBJTlRfTU9EX0NGRyByZWdpc3Rlciwgc28gUlggYW5kIFRYIG1vZGVyYXRpb24gc2hhcmUgb25lIHZhbHVlO1xuJiM0MztcdCAqIHJlcG9ydCBpdCBmb3IgYm90aC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItXHUwMDNlaW50X21vZDtcbiYjNDM7XHRlYy1cdTAwM2V0eF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItXHUwMDNlaW50X21vZDtcbiYjNDM7XHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4mIzQzO1x0ZWMtXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlID0gYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfY29hbGVzY2UgKmtlcm5lbF9jb2FsLFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4mIzQzO1x0dTMyIGludF9tb2Q7XG4mIzQzO1xuJiM0MztcdC8qIFJYIGFuZCBUWCBzaGFyZSBhIHNpbmdsZSBtb2RlcmF0aW9uIHZhbHVlLCBzbyBhZGFwdGl2ZSBtb2RlIG11c3QgYmVcbiYjNDM7XHQgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgIT0gZWMtXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O2FkYXB0aXZlLXJ4IGFuZCBhZGFwdGl2ZS10eCBtdXN0IG1hdGNoXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSkge1xuJiM0MztcdFx0LyogUmVzdW1lIHNwZWVkLWFkYXB0aXZlIG1vZGVyYXRpb24gYW5kIGFwcGx5IHRoZSB2YWx1ZSBmb3IgdGhlXG4mIzQzO1x0XHQgKiBjdXJyZW50IGxpbmsgc3BlZWQgcmlnaHQgYXdheS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcbiYjNDM7XHRcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXHUwMDNlbGlua19zcGVlZCk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdC8qIEFsbCBwZXItdmVjdG9yIElOVF9NT0RfQ0ZHIHJlZ2lzdGVycyBnZXQgdGhlIHNhbWUgdmFsdWUsIHNvXG4mIzQzO1x0XHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzICE9IGVjLVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtyeC11c2VjcyBhbmQgdHgtdXNlY3MgbXVzdCBiZSBlcXVhbFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFx1MDAzZSBMQU43NDNYX0lOVF9NT0RfTUFYKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW1cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGFkYXB0ZXItXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IGZhbHNlO1xuJiM0MztcdFx0aW50X21vZCA9IGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBpbnRfbW9kKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHMgPSB7XG4mIzQzO1x0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiYjNDM7XHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1JYIHxcbiYjNDM7XHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1RYLFxuJiM0MztcdC5nZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlLFxuJiM0MztcdC5zZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlLFxuIFx0LmdldF9kcnZpbmZvID0gbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvLFxuIFx0LmdldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwsXG4gXHQuc2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbmluZGV4IGYzMzMyNDE3MTYyZTYuLjllMWZiMWUwMjM0NjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuQEAgLTYyNywxOCAmIzQzOzYyNywxMiBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9WRUNfRU5fU0VULFxuIFx0XHRcdFx0ICBJTlRfVkVDX0VOXygwKSk7XG4gXG4mIzQzO1x0LyogVGhlIGludGVycnVwdC12ZWN0b3ItdG8tbW9kZXJhdGlvbi10aW1lciBtYXBwaW5nIGlzIHN0YXRpYywgc29cbiYjNDM7XHQgKiBwcm9ncmFtIGl0IG9uY2UgaGVyZS4gVGhlIHRpbWVyIHZhbHVlcyB0aGVtc2VsdmVzIGFyZSBzZXQgbGF0ZXJcbiYjNDM7XHQgKiAocGVyIGxpbmsgc3BlZWQpIHZpYSBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKCkuXG4mIzQzO1x0ICovXG4gXHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzEsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzQsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzcsIExBTjc0M1hfSU5UX01PRCk7XG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KSB7XG4tXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHOSwgTEFONzQzWF9JTlRfTU9EKTtcbiBcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX01BUDAsIDB4MDAwMDc2NTQpO1xuIFx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMzAzNiw2ICYjNDM7MzAzMCw0OCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdG5ldGlmX3R4X3N0b3BfYWxsX3F1ZXVlcyhuZXRkZXYpO1xuIH1cbiBcbiYjNDM7LyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqL1xuJiM0Mzt1MzIgbGFuNzQzeF9nZXRfaW50X21vZChpbnQgc3BlZWQpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKHNwZWVkKSB7XG4mIzQzO1x0Y2FzZSBTUEVFRF8yNTAwOlxuJiM0MztcdFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8yXzVHO1xuJiM0MztcdGNhc2UgU1BFRURfMTAwMDpcbiYjNDM7XHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMUc7XG4mIzQzO1x0Y2FzZSBTUEVFRF8xMDA6XG4mIzQzO1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwME07XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMTBNO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxuJiM0MzsgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvclxuJiM0MzsgKiBtYXBwaW5nIChJTlRfTU9EX01BUCkgaXMgc3RhdGljIGFuZCBpcyBzZXQgb25jZSBhdCBpbnRlcnJ1cHQgb3Blbi5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZClcbiYjNDM7e1xuJiM0MztcdC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi9cbiYjNDM7XHRpZiAoaW50X21vZCA9PSBhZGFwdGVyLVx1MDAzZWludF9tb2QpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XG4mIzQzO1x0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzIsIGludF9tb2QpO1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XG4mIzQzO1x0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzUsIGludF9tb2QpO1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XG4mIzQzO1x0XHRpZiAoYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeCkge1xuJiM0MztcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIGludF9tb2QpO1xuJiM0MztcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0YWRhcHRlci1cdTAwM2VpbnRfbW9kID0gaW50X21vZDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0XHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgbGlua19hbl9tb2RlLFxuQEAgLTMwNjcsNiAmIzQzOzMxMDMsMTQgQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgTUFDX0NSLCBtYWNfY3IpO1xuIFxuJiM0MztcdC8qIFRyYWNrIHRoZSBsaW5rIHNwZWVkIHNvIGEgbGF0ZXIgZXRodG9vbCByZXF1ZXN0IHRvIHJlLWVuYWJsZVxuJiM0MztcdCAqIGFkYXB0aXZlIG1vZGVyYXRpb24gY2FuIHJlc3RvcmUgdGhlIHNwZWVkLWJhc2VkIHZhbHVlLCBhbmQgcmVmcmVzaFxuJiM0MztcdCAqIHRoZSB0aW1lciBub3cgd2hlbiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGlzIGFjdGl2ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQgPSBzcGVlZDtcbiYjNDM7XHRpZiAoYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kKVxuJiM0MztcdFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7XG4mIzQzO1xuIFx0bGFuNzQzeF9wdHBfdXBkYXRlX2xhdGVuY3koYWRhcHRlciwgc3BlZWQpO1xuIFxuIFx0LyogRmxvdyBDb250cm9sIG9wZXJhdGlvbiAqL1xuQEAgLTM1MzIsNiAmIzQzOzM1NzYsMTMgQEAgc3RhdGljIGludCBsYW43NDN4X2hhcmR3YXJlX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbiBcdGFkYXB0ZXItXHUwMDNlaW50ci5pcnEgPSBhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlaXJxO1xuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHNwZWVkLWFkYXB0aXZlIGludGVycnVwdCBtb2RlcmF0aW9uIGJ5IGRlZmF1bHQgYW5kIHByb2dyYW1cbiYjNDM7XHQgKiB0aGUgdGltZXIgZm9yIHRoZSBkZWZhdWx0ICgxRykgdmFsdWUgdW50aWwgdGhlIGxpbmsgY29tZXMgdXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcbiYjNDM7XHRhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuJiM0MztcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcbiYjNDM7XG4gXHRyZXQgPSBsYW43NDN4X2dwaW9faW5pdChhZGFwdGVyKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oXG5pbmRleCAxNjBkOTRhN2NlZTY2Li45ZTZhYzhmZGJmMzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbkBAIC04NjEsNyAmIzQzOzg2MSwxMSBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xuICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXHQoNClcbiAjZGVmaW5lIExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMU1x0KDEpXG4gI2RlZmluZSBQQ0kxMVgxWF9VU0VEX1RYX0NIQU5ORUxTXHQoNClcbi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRFx0KDQwMClcbiYjNDM7I2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMl81R1x0XHQoNjQpXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzFHXHRcdCgxNTApXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwME1cdFx0KDMzMClcbiYjNDM7I2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTBNXHRcdCgzMzApXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EX01BWFx0XHQoODE5MSlcbiBcbiAjaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyBcdTAwM2UgTEFONzQzWF9NQVhfUlhfQ0hBTk5FTFMpXG4gI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXG5AQCAtMTA4OCw2ICYjNDM7MTA5MiwxMiBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyIHtcbiBcdHBoeV9pbnRlcmZhY2VfdFx0XHRwaHlfaW50ZXJmYWNlO1xuIFx0c3RydWN0IHBoeWxpbmtcdFx0KnBoeWxpbms7XG4gXHRzdHJ1Y3QgcGh5bGlua19jb25maWdcdHBoeWxpbmtfY29uZmlnO1xuJiM0MztcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xuJiM0MztcdHUzMlx0XHRcdGludF9tb2Q7XG4mIzQzO1x0LyogV2hlbiBzZXQsIHRoZSBtb2RlcmF0aW9uIHRpbWVyIHRyYWNrcyB0aGUgbGluayBzcGVlZCBhdXRvbWF0aWNhbGx5LiAqL1xuJiM0MztcdGJvb2xcdFx0XHR1c2VfYWRhcHRpdmVfbW9kO1xuJiM0MztcdC8qIExhc3QgbmVnb3RpYXRlZCBsaW5rIHNwZWVkLCB1c2VkIHRvIGRlcml2ZSB0aGUgYWRhcHRpdmUgdmFsdWUuICovXG4mIzQzO1x0aW50XHRcdFx0bGlua19zcGVlZDtcbiBcdGludFx0XHRcdHJ4X3RzdGFtcF9maWx0ZXI7XG4gfTtcbiBcbkBAIC0xMjA5LDUgJiM0MzsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XG4gaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTtcbiYjNDM7dm9pZCBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBpbnRfbW9kKTtcbiYjNDM7dTMyIGxhbjc0M3hfZ2V0X2ludF9tb2QoaW50IHNwZWVkKTtcbiBcbiAjZW5kaWYgLyogX0xBTjc0M1hfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxNTo1OTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYwppbmRleCA5MTk1NDE5ZWNlZTAyLi43NmI2MGIzMjcxYmU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jCkBAIC0xMzU1LDcgJiM0MzsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oYWRhcHRlci0mZ3Q7cGh5bGluaywgcGF1c2UpOwogfQogCiYjNDM7c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiYjNDM7CQkJCQlzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsCiYjNDM7CQkJCQlzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfY29hbGVzY2UgKmtlcm5lbF9jb2FsLAomIzQzOwkJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3sKJiM0MzsJc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CiYjNDM7CiYjNDM7CS8qIFRoZSBkcml2ZXIgcHJvZ3JhbXMgdGhlIHNhbWUgdmFsdWUgaW50byBldmVyeSBwZXItdmVjdG9yCiYjNDM7CSAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVyLCBzbyBSWCBhbmQgVFggbW9kZXJhdGlvbiBzaGFyZSBvbmUgdmFsdWU7CiYjNDM7CSAqIHJlcG9ydCBpdCBmb3IgYm90aC4KJiM0MzsJICovCiYjNDM7CWVjLSZndDtyeF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItJmd0O2ludF9tb2Q7CiYjNDM7CWVjLSZndDt0eF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItJmd0O2ludF9tb2Q7CiYjNDM7CWVjLSZndDt1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kOwomIzQzOwllYy0mZ3Q7dXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlID0gYWRhcHRlci0mZ3Q7dXNlX2FkYXB0aXZlX21vZDsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAomIzQzOwkJCQkJc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLAomIzQzOwkJCQkJc3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCwKJiM0MzsJCQkJCXN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwomIzQzOwl1MzIgaW50X21vZDsKJiM0MzsKJiM0MzsJLyogUlggYW5kIFRYIHNoYXJlIGEgc2luZ2xlIG1vZGVyYXRpb24gdmFsdWUsIHNvIGFkYXB0aXZlIG1vZGUgbXVzdCBiZQomIzQzOwkgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLgomIzQzOwkgKi8KJiM0MzsJaWYgKGVjLSZndDt1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgIT0gZWMtJmd0O3VzZV9hZGFwdGl2ZV90eF9jb2FsZXNjZSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDthZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChlYy0mZ3Q7dXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKSB7CiYjNDM7CQkvKiBSZXN1bWUgc3BlZWQtYWRhcHRpdmUgbW9kZXJhdGlvbiBhbmQgYXBwbHkgdGhlIHZhbHVlIGZvciB0aGUKJiM0MzsJCSAqIGN1cnJlbnQgbGluayBzcGVlZCByaWdodCBhd2F5LgomIzQzOwkJICovCiYjNDM7CQlhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTsKJiM0MzsJCWludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItJmd0O2xpbmtfc3BlZWQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLyogQWxsIHBlci12ZWN0b3IgSU5UX01PRF9DRkcgcmVnaXN0ZXJzIGdldCB0aGUgc2FtZSB2YWx1ZSwgc28KJiM0MzsJCSAqIFJYIGFuZCBUWCBtb2RlcmF0aW9uIGNhbm5vdCBkaWZmZXI7IHJlamVjdCBhIG1pc21hdGNoLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZWMtJmd0O3J4X2NvYWxlc2NlX3VzZWNzICE9IGVjLSZndDt0eF9jb2FsZXNjZV91c2VjcykgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiYjNDM7CQkJCQkgICAmIzM0O3J4LXVzZWNzIGFuZCB0eC11c2VjcyBtdXN0IGJlIGVxdWFsJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwkJaWYgKGVjLSZndDtyeF9jb2FsZXNjZV91c2VjcyAmZ3Q7IExBTjc0M1hfSU5UX01PRF9NQVgpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLAomIzQzOwkJCQkJICAgJiMzNDtjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW0mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CQlhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kID0gZmFsc2U7CiYjNDM7CQlpbnRfbW9kID0gZWMtJmd0O3J4X2NvYWxlc2NlX3VzZWNzOwomIzQzOwl9CiYjNDM7CiYjNDM7CWxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgaW50X21vZCk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW43NDN4X2V0aHRvb2xfb3BzID0gewomIzQzOwkuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfAomIzQzOwkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1JYIHwKJiM0MzsJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9UWCwKJiM0MzsJLmdldF9jb2FsZXNjZSA9IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2UsCiYjNDM7CS5zZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlLAogCS5nZXRfZHJ2aW5mbyA9IGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbywKIAkuZ2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX2dldF9tc2dsZXZlbCwKIAkuc2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYwppbmRleCBmMzMzMjQxNzE2MmU2Li45ZTFmYjFlMDIzNDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jCkBAIC02MjcsMTggJiM0Mzs2MjcsMTIgQEAgc3RhdGljIGludCBsYW43NDN4X2ludHJfb3BlbihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKQogCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCwKIAkJCQkgIElOVF9WRUNfRU5fKDApKTsKIAomIzQzOwkvKiBUaGUgaW50ZXJydXB0LXZlY3Rvci10by1tb2RlcmF0aW9uLXRpbWVyIG1hcHBpbmcgaXMgc3RhdGljLCBzbwomIzQzOwkgKiBwcm9ncmFtIGl0IG9uY2UgaGVyZS4gVGhlIHRpbWVyIHZhbHVlcyB0aGVtc2VsdmVzIGFyZSBzZXQgbGF0ZXIKJiM0MzsJICogKHBlciBsaW5rIHNwZWVkKSB2aWEgbGFuNzQzeF9jb25maWdfaW50X21vZCgpLgomIzQzOwkgKi8KIAlpZiAoIShhZGFwdGVyLSZndDtjc3IuZmxhZ3MgJmFtcDsgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzEsIExBTjc0M1hfSU5UX01PRCk7Ci0JCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgTEFONzQzWF9JTlRfTU9EKTsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzQsIExBTjc0M1hfSU5UX01PRCk7Ci0JCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgTEFONzQzWF9JTlRfTU9EKTsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzcsIExBTjc0M1hfSU5UX01PRCk7CiAJCWlmIChhZGFwdGVyLSZndDtpc19wY2kxMXgxeCkgewotCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpOwotCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBMQU43NDNYX0lOVF9NT0QpOwogCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9NQVAwLCAweDAwMDA3NjU0KTsKIAkJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7CiAJCX0gZWxzZSB7CkBAIC0zMDM2LDYgJiM0MzszMDMwLDQ4IEBAIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCW5ldGlmX3R4X3N0b3BfYWxsX3F1ZXVlcyhuZXRkZXYpOwogfQogCiYjNDM7LyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqLwomIzQzO3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCkKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoc3BlZWQpIHsKJiM0MzsJY2FzZSBTUEVFRF8yNTAwOgomIzQzOwkJcmV0dXJuIExBTjc0M1hfSU5UX01PRF8yXzVHOwomIzQzOwljYXNlIFNQRUVEXzEwMDA6CiYjNDM7CQlyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzFHOwomIzQzOwljYXNlIFNQRUVEXzEwMDoKJiM0MzsJCXJldHVybiBMQU43NDNYX0lOVF9NT0RfMTAwTTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBMQU43NDNYX0lOVF9NT0RfMTBNOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIFByb2dyYW0gdGhlIGludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGludG8gdGhlIHBlci12ZWN0b3IKJiM0MzsgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvcgomIzQzOyAqIG1hcHBpbmcgKElOVF9NT0RfTUFQKSBpcyBzdGF0aWMgYW5kIGlzIHNldCBvbmNlIGF0IGludGVycnVwdCBvcGVuLgomIzQzOyAqLwomIzQzO3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZCkKJiM0Mzt7CiYjNDM7CS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi8KJiM0MzsJaWYgKGludF9tb2QgPT0gYWRhcHRlci0mZ3Q7aW50X21vZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKCEoYWRhcHRlci0mZ3Q7Y3NyLmZsYWdzICZhbXA7IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzAsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBpbnRfbW9kKTsKJiM0MzsJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzMsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBpbnRfbW9kKTsKJiM0MzsJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzYsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBpbnRfbW9kKTsKJiM0MzsJCWlmIChhZGFwdGVyLSZndDtpc19wY2kxMXgxeCkgewomIzQzOwkJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHOCwgaW50X21vZCk7CiYjNDM7CQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBpbnRfbW9kKTsKJiM0MzsJCX0KJiM0MzsJCWFkYXB0ZXItJmd0O2ludF9tb2QgPSBpbnRfbW9kOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCQkJCQlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJCQl1bnNpZ25lZCBpbnQgbGlua19hbl9tb2RlLApAQCAtMzA2Nyw2ICYjNDM7MzEwMywxNCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAKIAlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBNQUNfQ1IsIG1hY19jcik7CiAKJiM0MzsJLyogVHJhY2sgdGhlIGxpbmsgc3BlZWQgc28gYSBsYXRlciBldGh0b29sIHJlcXVlc3QgdG8gcmUtZW5hYmxlCiYjNDM7CSAqIGFkYXB0aXZlIG1vZGVyYXRpb24gY2FuIHJlc3RvcmUgdGhlIHNwZWVkLWJhc2VkIHZhbHVlLCBhbmQgcmVmcmVzaAomIzQzOwkgKiB0aGUgdGltZXIgbm93IHdoZW4gYWRhcHRpdmUgbW9kZXJhdGlvbiBpcyBhY3RpdmUuCiYjNDM7CSAqLwomIzQzOwlhZGFwdGVyLSZndDtsaW5rX3NwZWVkID0gc3BlZWQ7CiYjNDM7CWlmIChhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kKQomIzQzOwkJbGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7CiYjNDM7CiAJbGFuNzQzeF9wdHBfdXBkYXRlX2xhdGVuY3koYWRhcHRlciwgc3BlZWQpOwogCiAJLyogRmxvdyBDb250cm9sIG9wZXJhdGlvbiAqLwpAQCAtMzUzMiw2ICYjNDM7MzU3NiwxMyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLAogCWFkYXB0ZXItJmd0O2ludHIuaXJxID0gYWRhcHRlci0mZ3Q7cGRldi0mZ3Q7aXJxOwogCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsIDB4RkZGRkZGRkYpOwogCiYjNDM7CS8qIEVuYWJsZSBzcGVlZC1hZGFwdGl2ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBieSBkZWZhdWx0IGFuZCBwcm9ncmFtCiYjNDM7CSAqIHRoZSB0aW1lciBmb3IgdGhlIGRlZmF1bHQgKDFHKSB2YWx1ZSB1bnRpbCB0aGUgbGluayBjb21lcyB1cC4KJiM0MzsJICovCiYjNDM7CWFkYXB0ZXItJmd0O3VzZV9hZGFwdGl2ZV9tb2QgPSB0cnVlOwomIzQzOwlhZGFwdGVyLSZndDtsaW5rX3NwZWVkID0gU1BFRURfVU5LTk9XTjsKJiM0MzsJbGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBMQU43NDNYX0lOVF9NT0RfMUcpOwomIzQzOwogCXJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgKaW5kZXggMTYwZDk0YTdjZWU2Ni4uOWU2YWM4ZmRiZjM3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaApAQCAtODYxLDcgJiM0Mzs4NjEsMTEgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlcjsKICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTCSg0KQogI2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFMJKDEpCiAjZGVmaW5lIFBDSTExWDFYX1VTRURfVFhfQ0hBTk5FTFMJKDQpCi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRAkoNDAwKQomIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzJfNUcJCSg2NCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xRwkJKDE1MCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xMDBNCQkoMzMwKQomIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwTQkJKDMzMCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF9NQVgJCSg4MTkxKQogCiAjaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyAmZ3Q7IExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKQogI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTCkBAIC0xMDg4LDYgJiM0MzsxMDkyLDEyIEBAIHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgewogCXBoeV9pbnRlcmZhY2VfdAkJcGh5X2ludGVyZmFjZTsKIAlzdHJ1Y3QgcGh5bGluawkJKnBoeWxpbms7CiAJc3RydWN0IHBoeWxpbmtfY29uZmlnCXBoeWxpbmtfY29uZmlnOwomIzQzOwkvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiB0aW1lciB2YWx1ZSBjdXJyZW50bHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi8KJiM0MzsJdTMyCQkJaW50X21vZDsKJiM0MzsJLyogV2hlbiBzZXQsIHRoZSBtb2RlcmF0aW9uIHRpbWVyIHRyYWNrcyB0aGUgbGluayBzcGVlZCBhdXRvbWF0aWNhbGx5LiAqLwomIzQzOwlib29sCQkJdXNlX2FkYXB0aXZlX21vZDsKJiM0MzsJLyogTGFzdCBuZWdvdGlhdGVkIGxpbmsgc3BlZWQsIHVzZWQgdG8gZGVyaXZlIHRoZSBhZGFwdGl2ZSB2YWx1ZS4gKi8KJiM0MzsJaW50CQkJbGlua19zcGVlZDsKIAlpbnQJCQlyeF90c3RhbXBfZmlsdGVyOwogfTsKIApAQCAtMTIwOSw1ICYjNDM7MTIxOSw3IEBAIHZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcik7CiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLAogCQkJCSAgICAgICBib29sIHR4X2VuYWJsZSwgYm9vbCByeF9lbmFibGUpOwogaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTsKJiM0Mzt2b2lkIGxhbjc0M3hfY29uZmlnX2ludF9tb2Qoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIGludF9tb2QpOwomIzQzO3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7CiAKICNlbmRpZiAvKiBfTEFONzQzWF9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMQU43NDN4IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW1wbGVtZW50aW5nIGV0aHRvb2wgY29hbGVzY2Ugc3VwcG9ydCBmb3IgdGhlIGBsYW43NDN4YCBkcml2ZXIuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzaW5jZSB0aGlzIGlzIGEgUENJZSBkZXZpY2UsIGlzIGl0IHJ1bm5pbmcgaW4gUUVNVSwgb3IgaXMgdGhpcyBwYXRjaCBkZWFsaW5nIHdpdGggYWN0dWFsIGhhcmR3YXJlPyBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIExBTjc0M3gsIGFzIGZhciBhcyBJIGtub3cuIEJ1dCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrIHRoZXNlIHRoaW5ncyB0byBtYWtlIHN1cmUgdGhlIGFzc3VtcHRpb25zIGFyZSB2YWxpZC4gSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgdG8gdmVyaWZ5IHRoaXMgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IFFFTVUtc3BlY2lmaWMgZW11bGF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgbGFuNzQzeGAgSSBtaWdodCBiZSBtaXNzaW5nLiBJJiMzOTtsbCBzdGFydCB3aXRoIGEgYGdyZXBwZXJgIHNlYXJjaCBmb3IgYGxhbjc0M3hgIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuNzQzeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuTUFJTlRBSU5FUlM9MTc0MTA9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjE3NDExOkY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF8qXG5NQUlOVEFJTkVSUy0xNzQxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU3LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjU4Olx0ICBjYWxsZWQgbGFuNzQzeC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT03PW9iai0kKENPTkZJR19FTkNYMjRKNjAwKSAmIzQzOz0gZW5jeDI0ajYwMC5vIGVuY3gyNGo2MDAtcmVnbWFwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19MQU43NDNYKSAmIzQzOz0gbGFuNzQzeC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMDpsYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODojaW5jbHVkZSBcJiMzNDtsYW43NDN4X21haW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjk6I2luY2x1ZGUgXCYjMzQ7bGFuNzQzeF9ldGh0b29sLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcG93ZXJfdXAoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0Olx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgtXHRcdHJlZ192YWx1ZSBcdTAwMjY9IH5PVFBfUFdSX0ROX1BXUkROX05fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM5Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTItXHRpZiAoIShyZWdfdmFsdWUgXHUwMDI2IE9UUF9QV1JfRE5fUFdSRE5fTl8pKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU0LVx0XHRyZWdfdmFsdWUgfD0gT1RQX1BXUl9ETl9QV1JETl9OXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BXUl9ETiwgcmVnX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTk6c3RhdGljIHZvaWQgbGFuNzQzeF9vdHBfc2V0X2FkZHJlc3Moc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MC1cdFx0XHRcdCAgICB1MzIgYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI6XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfQUREUl9ISUdILCAoYWRkcmVzcyBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfTE9XLCBhZGRyZXNzIFx1MDAyNiAweEZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY6c3RhdGljIHZvaWQgbGFuNzQzeF9vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9GVU5DX0NNRCwgT1RQX0ZVTkNfQ01EX1JFQURfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2OTpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzI6c3RhdGljIGludCBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg0LVx0XHR1ZGVsYXkoMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODU6XHRcdHJlZ192YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIE9UUF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg2LVx0fSB3aGlsZSAocmVnX3ZhbCBcdTAwMjYgT1RQX1NUQVRVU19CVVNZXyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjkxOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkyLVx0XHRcdCAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTAwOlx0cmV0ID0gbGFuNzQzeF9vdHBfcG93ZXJfdXAoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEwNDpcdHJldCA9IGxhbjc0M3hfb3RwX3dhaXRfdGlsbF9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTA5Olx0XHRsYW43NDN4X290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExMTpcdFx0bGFuNzQzeF9vdHBfcmVhZF9nbyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMTI6XHRcdHJldCA9IGxhbjc0M3hfb3RwX3dhaXRfdGlsbF9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMTMtXHRcdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE0LVx0XHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTE1Olx0XHRkYXRhW2ldID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUkVBRF9EQVRBKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMTYtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExODpcdGxhbjc0M3hfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTIzOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjQtXHRcdFx0ICAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMjpcdHJldCA9IGxhbjc0M3hfb3RwX3Bvd2VyX3VwKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzY6XHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTM3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQwLVx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQxOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BSR01fTU9ERSwgT1RQX1BSR01fTU9ERV9CWVRFXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE0My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbmd0aDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDQ6XHRcdGxhbjc0M3hfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQ2Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFJHTV9EQVRBLCBkYXRhW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDc6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9UU1RfQ01ELCBPVFBfVFNUX0NNRF9QUkdWUkZZXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQ4Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfQ01EX0dPLCBPVFBfQ01EX0dPX0dPXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1MDpcdFx0cmV0ID0gbGFuNzQzeF9vdHBfd2FpdF90aWxsX25vdF9idXN5KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE1MS1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1NTpcdGxhbjc0M3hfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTYwOmludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2MS1cdFx0XHQgICAgICAgdTE2IHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2OC1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlZXRoX3N5c2xvY2tfYWNxdWlyZV9jbnQgPT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE2OTpcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNzAtXHRcdFx0XHRcdCAgU1lTX0xPQ0tfUkVHX0VORVRfU1NfTE9DS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE3MTpcdFx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTcyLVx0XHRcdFx0XHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMDYtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWV0aF9zeXNsb2NrX2FjcXVpcmVfY250ID09IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMDc6XHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwODpcdFx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjA5LVx0XHRcdFx0XHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjE3OnN0YXRpYyB2b2lkIGxhbjc0M3hfaHNfb3RwX3Bvd2VyX3VwKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyMTpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIyLVx0aWYgKHJlZ192YWx1ZSBcdTAwMjYgT1RQX1BXUl9ETl9QV1JETl9OXykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyMy1cdFx0cmVnX3ZhbHVlIFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjI0Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyNS1cdFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjctXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyODpcdFx0bGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjktXHRcdHVkZWxheSgxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIzMzpzdGF0aWMgdm9pZCBsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIzNzpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM4LVx0aWYgKCEocmVnX3ZhbHVlIFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzOS1cdFx0cmVnX3ZhbHVlIHw9IE9UUF9QV1JfRE5fUFdSRE5fTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjQwOlx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0MS1cdFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDMtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0NDpcdFx0bGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDUtXHRcdHVkZWxheSgxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0OTpzdGF0aWMgdm9pZCBsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1MC1cdFx0XHRcdCAgICAgICB1MzIgYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1MjpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9BRERSX0hJR0gsIChhZGRyZXNzIFx1MDAzZVx1MDAzZSA4KSBcdTAwMjYgMHgwMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjUzOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0FERFJfTE9XLCBhZGRyZXNzIFx1MDAyNiAweEZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTY6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjU4Olx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0ZVTkNfQ01ELCBPVFBfRlVOQ19DTURfUkVBRF8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1OTpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjI6c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI3MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzItXHRcdFx0ICAgICAgIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjgwOlx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4MS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyODQ6XHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjg2Olx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkwOlx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbmd0aDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTM6XHRcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjk0LVx0XHRcdFx0XHRcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTg6XHRcdGxhbjc0M3hfaHNfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzAwOlx0XHRsYW43NDN4X2hzX290cF9yZWFkX2dvKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwMTpcdFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDItXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDU6XHRcdGRhdGFbaV0gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhTX09UUF9SRUFEX0RBVEEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwOC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzEwOlx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTEtXHRcdFx0XHRcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMxNS1wb3dlcl9kb3duOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMxNjpcdGxhbjc0M3hfaHNfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzE3Olx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzIyOnN0YXRpYyBpbnQgbGFuNzQzeF9oc19vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjMtXHRcdFx0XHR1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzMTpcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzM1Olx0bGFuNzQzeF9oc19vdHBfcG93ZXJfdXAoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzNzpcdHJldCA9IGxhbjc0M3hfaHNfb3RwX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQxLVx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQyOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fTU9ERSwgT1RQX1BSR01fTU9ERV9CWVRFXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQ3Olx0XHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0OC1cdFx0XHRcdFx0XHQgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzUyOlx0XHRsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1NDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzU1Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfVFNUX0NNRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTYtXHRcdFx0XHQgIE9UUF9UU1RfQ01EX1BSR1ZSRllfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTc6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzU5Olx0XHRyZXQgPSBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2MC1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM2MzpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY0LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjY6XHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzcwLXBvd2VyX2Rvd246XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzcxOlx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzc6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93YWl0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgyLVx0ZG8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM4MzpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MDA6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV9jb25maXJtX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDAxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDA1LVx0ZG8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQwNjpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MTg6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDE5LVx0XHRcdCAgICAgICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQyODpcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDI5LVx0aWYgKHJldHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM0LVx0XHR2YWwgfD0gKG9mZnNldCBcdTAwMjYgRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDM1Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Mzc6XHRcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM4LVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDQxOlx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEUyUF9EQVRBKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDItXHRcdGRhdGFbaV0gPSB2YWwgXHUwMDI2IDB4RkY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NDk6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ1MC1cdFx0XHRcdHUzMiBvZmZzZXQsIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDU5Olx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fY29uZmlybV9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NjAtXHRpZiAocmV0dmFsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NjQtXHR2YWwgPSBFMlBfQ01EX0VQQ19CVVNZXyB8IEUyUF9DTURfRVBDX0NNRF9FV0VOXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NjU6XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Njc6XHRyZXR2YWwgPSBsYW43NDN4X2VlcHJvbV93YWl0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2OC1cdGlmIChyZXR2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3My1cdFx0dmFsID0gZGF0YVtpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzQ6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEUyUF9EQVRBLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDc4LVx0XHR2YWwgfD0gKG9mZnNldCBcdTAwMjYgRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDc5Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0ODE6XHRcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDgyLVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDkxOnN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ5Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MDE6c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTAyLVx0XHRcdFx0ICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUxMTpcdHJldHZhbCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE1Olx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTY6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MjAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTIxOlx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUyMi1cdFx0XHRcdFx0XHQgICAgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MjctXHRcdHZhbCB8PSAob2Zmc2V0IFx1MDAyNiBIU19FMlBfQ01EX0VQQ19BRERSX01BU0tfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mjg6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX0UyUF9DTUQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTI5Olx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX2VlcHJvbV9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMC1cdFx0aWYgKHJldHZhbCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzMTpcdFx0XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzItXHRcdFx0cmV0dXJuIHJldHZhbDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzNTpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19FMlBfREFUQSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzNzpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTQ2OnN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDctXHRcdFx0XHQgICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU1NjpcdHJldHZhbCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYwOlx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjE6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTY2Olx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU2Ny1cdFx0XHRcdFx0XHQgICAgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzItXHRcdHZhbCA9IGRhdGFbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTczOlx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfREFUQSwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU3Ny1cdFx0dmFsIHw9IChvZmZzZXQgXHUwMDI2IEhTX0UyUF9DTURfRVBDX0FERFJfTUFTS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU3ODpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfRTJQX0NNRCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgwOlx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX2VlcHJvbV9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU4MTpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgyLVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTkxOnN0YXRpYyB2b2lkIGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5Mi1cdFx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU5NDpcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMTpzdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMzpcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYwNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwODpzdGF0aWMgdm9pZCBsYW43NDN4X2V0aHRvb2xfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA5LVx0XHRcdFx0XHQgdTMyIG1zZ2xldmVsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYxMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjExOlx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjE2OnN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb21fbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MTg6XHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MjY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWUsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI5Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMwLVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzMy1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM0Olx0XHRcdHJldCA9IGxhbjc0M3hfaHNfb3RwX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzNS1cdFx0XHRcdFx0XHQgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjM2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM3Olx0XHRcdHJldCA9IGxhbjc0M3hfb3RwX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzOC1cdFx0XHRcdFx0ICAgICAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0MC1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjQxOlx0XHRcdHJldCA9IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0Mi1cdFx0XHRcdFx0XHQgICAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjQzLVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjQ0Olx0XHRcdHJldCA9IGxhbjc0M3hfZWVwcm9tX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0NS1cdFx0XHRcdFx0XHQgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NTE6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWUsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU0Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjU1LVx0aW50IHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2MC1cdFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NjE6XHRcdFx0XHRyZXQgPSBsYW43NDN4X2hzX290cF93cml0ZShhZGFwdGVyLCBlZS1cdTAwM2VvZmZzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYyLVx0XHRcdFx0XHRcdFx0ICAgZWUtXHUwMDNlbGVuLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2NDpcdFx0XHRcdHJldCA9IGxhbjc0M3hfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVx1MDAzZW9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjUtXHRcdFx0XHRcdFx0XHRlZS1cdTAwM2VsZW4sIGRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjcwOlx0XHRcdFx0cmV0ID0gbGFuNzQzeF9oc19lZXByb21fd3JpdGUoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NzEtXHRcdFx0XHRcdFx0XHQgICAgICBlZS1cdTAwM2VvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3My1cdFx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Njc0Olx0XHRcdFx0cmV0ID0gbGFuNzQzeF9lZXByb21fd3JpdGUoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3NS1cdFx0XHRcdFx0XHRcdCAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODI6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9zZXQwX2h3X2NudF9zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODMtXHRcJiMzNDtSWCBGQ1MgRXJyb3JzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzA2OnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfc2V0MV9zd19jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzA3LVx0XCYjMzQ7UlggUXVldWUgMCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3MTM6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF90eF9xdWV1ZV9jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzE0LVx0XCYjMzQ7VFggUXVldWUgMCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3MjE6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9zZXQyX2h3X2NudF9zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjItXHRcJiMzNDtSWCBUb3RhbCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTc1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3NTQ6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDBfaHdfY250X2FkZHJbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NTUtXHRTVEFUX1JYX0ZDU19FUlJPUlMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTc3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3Nzg6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDJfaHdfY250X2FkZHJbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzktXHRTVEFUX1JYX1RPVEFMX0ZSQU1FUyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxMTpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3ByaXZfZmxhZ3Nfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEyLVx0XCYjMzQ7T1RQX0FDQ0VTU1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxNTpzdGF0aWMgdm9pZCBsYW43NDN4X2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTYtXHRcdFx0XHRcdHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODE4Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE5LVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTAxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hgLiBJdCYjMzk7cyBhIFBDSWUgZGV2aWNlLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBRRU1VIGVtdWxhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2QgZG8gaXMgY2hlY2sgdGhlIFFFTVUgc291cmNlIChgaHcvbmV0L2ApIGZvciBhbnkgc2lnbiBvZiBgbGFuNzQzeGAgZW11bGF0aW9uLCBidXQgSSBkb24mIzM5O3QgaGF2ZSB0aGF0IHNvdXJjZSBoYW5keSByaWdodCBub3cuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJiMzOTt0IGZ1enogcGh5c2ljYWwgUENJZSBkZXZpY2VzIHVubGVzcyB0aGV5IGFyZSBlbXVsYXRlZCBvciBoYXZlIHNvbWUgc3BlY2lhbCBzZXR1cC4gV2hpbGUgaXQgZG9lcyBmdXp6IFVTQiBhbmQgb3RoZXIgdGhpbmdzLCBQQ0llIHJlcXVpcmVzIGVpdGhlciB2aXJ0dWFsaXphdGlvbiBvciBlbXVsYXRpb24uCgpIYW5nIG9uLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBMQU43NDNYLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWE6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpBbHJpZ2h0LCBzbyBpcyB0aGUgTEFONzQzWCBhICYjMzQ7dmVuZG9yLXNwZWNpZmljJiMzNDsgUENJZSBkcml2ZXI/IFllcywgaXQmIzM5O3MgYSBNaWNyb2NoaXAgTEFONzQzeCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIHNvIHRoYXQgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgcG9pbnRzIHN0cm9uZ2x5IHRvd2FyZHMgaXQgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbm90IGJlaW5nIGVhc2lseSBmdXp6YWJsZS4gSSBuZWVkIHRvIGNvbmZpcm0gaXQmIzM5O3MgYSBQQ0kgZHJpdmVyIHRvIGJlIGNlcnRhaW4sIHRob3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTU4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoYXQgdGhvdWdodCBwcm9jZXNzIGFuZCBzdW1tYXJpemUgaXQgZnJvbSBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZSwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLiBIZXJlJiMzOTtzIG15IHRha2U6CgoqKlRoZSBWZXJpZmljYXRpb24gUHJvY2VzcyoqCgpIbW0sIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugb3IganVtcCB0byBhIGNvbmNsdXNpb24sIEkgbmVlZCB0byBwYXVzZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoZSB1bmRlcmx5aW5nIGJhc2lzIG9mIHRoaXMuIEl0JiMzOTtzIGFib3V0IGRhdGEgaW50ZWdyaXR5LiBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBob3cgZXZlcnl0aGluZyBpcyBjb25uZWN0ZWQuIEZpcnN0LCBJIGhhdmUgdG8gY2hlY2sgaG93IHNvbWV0aGluZyBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtIC0gd2hldGhlciBpdCBpcyB0aGUgZGF0YXNldCwgdGhlIHBhcmFtZXRlcnMsIHRoZSBjb2RlIG9yIHRoZSBtb2RlbC4gVW5kZXJzdGFuZGluZyBpdHMgcmVnaXN0cmF0aW9uIHByb3ZpZGVzIG5lY2Vzc2FyeSBjb250ZXh0IGJlZm9yZSBhbnkgcmVzcG9uc2UgY2FuIGJlIGZvcm11bGF0ZWQuIEkgbmVlZCB0byBlbnN1cmUgYSBzb2xpZCBmb3VuZGF0aW9uIGJlZm9yZSBJIHByb2NlZWQuIFRoaXMgcHJlbGltaW5hcnkgY2hlY2sgaXMgZnVuZGFtZW50YWw7IGl04oCZcyBhYm91dCB2ZXJpZnlpbmcgdGhlIGRhdGEmIzM5O3MgcHJvcGVyIGltcGxlbWVudGF0aW9uLiBBIGhhc3R5IGFzc3VtcHRpb24gY291bGQgYmUgZGlzYXN0cm91cy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkga25vdyAqZXhhY3RseSogd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz00MDQ0PU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsYW43NDN4X3BjaWRldl90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDA0NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbGFuNzQzeF9wY2lkZXZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNDctXHQubmFtZSAgICAgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MDU3Om1vZHVsZV9wY2lfZHJpdmVyKGxhbjc0M3hfcGNpZGV2X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3NgoJCQkJCQkJb3V0cHV0OiA4NwoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7WWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiYjMzQ7IFRoZSBuZXh0IHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyYjMzQ7IFN0YW5kYXJkIFFFTVUsIGluIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGVtdWxhdGVzIGEgYnVuY2ggb2YgbmV0d29yayBjYXJkczogdGhlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgaWdiLCB0dWxpcCwgYW5kIHNvIG9uLCBidXQgbm90IHRoZSBNaWNyb2NoaXAgTEFONzQzeC4gU28sIHJpZ2h0IGF3YXksIHRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgYSAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZCwgbm90IHNvbWV0aGluZyBlbXVsYXRlZCB3aXRoaW4gUUVNVS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIOKAkyBubyBjaGFuY2UgaXQmIzM5O3MgYSBwbGF0Zm9ybSBvciBVU0IgZGV2aWNlIG1hc3F1ZXJhZGluZyBhcyBzb21ldGhpbmcgZWxzZS4gTm8sIHRoZSB1c2Ugb2YgYG1vZHVsZV9wY2lfZHJpdmVyYCBhbmQgYGxhbjc0M3hfcGNpZGV2X2RyaXZlcmAgY29uY2x1c2l2ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGEgUENJIGRldmljZS4gU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UgYW5kIGl0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBRRU1VLCB0aGVuIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gQWxsIGNvZGUgcGF0aHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBUaGF0IG1lYW5zLCBhcyBhIGZpcnN0IHBhc3MsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCkxldCBtZSBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlIEkmIzM5O20gaGl0dGluZyB0aGUgcmlnaHQgY3JpdGVyaWEuIEFoLCBoZXJlIGl0IGlzOiAmIzM0O1JldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCk9rYXksIHRoZSBMQU43NDN4IGlzIGEgTWljcm9jaGlwIFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBJdCYjMzk7cyBleHBsaWNpdGx5IGRlc2lnbmVkIGZvciBhICpwaHlzaWNhbCogUENJZSBjYXJkLiBJdCBmaXRzIHRoZSBkZXNjcmlwdGlvbiBwZXJmZWN0bHkuIEkmIzM5O20gY29uZmlkZW50IHRoYXQgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRlY2lzaW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NC4xODE4MTAwNTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQzNTcxOTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NC4xODE4MTc3OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjgyMDU1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTU6NTk6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXFxuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmNcXG5AQCAtMTM1NSw3ICsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKGFkYXB0ZXItXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbitcXG4rXFx0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcXG4rXFx0ICogSU5UX01PRF9DRkcgcmVnaXN0ZXIsIHNvIFJYIGFuZCBUWCBtb2RlcmF0aW9uIHNoYXJlIG9uZSB2YWx1ZTtcXG4rXFx0ICogcmVwb3J0IGl0IGZvciBib3RoLlxcbitcXHQgKi9cXG4rXFx0ZWMtXFx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cXHUwMDNlaW50X21vZDtcXG4rXFx0ZWMtXFx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cXHUwMDNlaW50X21vZDtcXG4rXFx0ZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSA9IGFkYXB0ZXItXFx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XFxuK1xcdGVjLVxcdTAwM2V1c2VfYWRhcHRpdmVfdHhfY29hbGVzY2UgPSBhZGFwdGVyLVxcdTAwM2V1c2VfYWRhcHRpdmVfbW9kO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF9jb2FsZXNjZSAqa2VybmVsX2NvYWwsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4rXFx0dTMyIGludF9tb2Q7XFxuK1xcbitcXHQvKiBSWCBhbmQgVFggc2hhcmUgYSBzaW5nbGUgbW9kZXJhdGlvbiB2YWx1ZSwgc28gYWRhcHRpdmUgbW9kZSBtdXN0IGJlXFxuK1xcdCAqIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGJvdGggdG9nZXRoZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAoZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSAhPSBlYy1cXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdCAgIFxcXCJhZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGVjLVxcdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UpIHtcXG4rXFx0XFx0LyogUmVzdW1lIHNwZWVkLWFkYXB0aXZlIG1vZGVyYXRpb24gYW5kIGFwcGx5IHRoZSB2YWx1ZSBmb3IgdGhlXFxuK1xcdFxcdCAqIGN1cnJlbnQgbGluayBzcGVlZCByaWdodCBhd2F5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0YWRhcHRlci1cXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IHRydWU7XFxuK1xcdFxcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXFx1MDAzZWxpbmtfc3BlZWQpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvKiBBbGwgcGVyLXZlY3RvciBJTlRfTU9EX0NGRyByZWdpc3RlcnMgZ2V0IHRoZSBzYW1lIHZhbHVlLCBzb1xcbitcXHRcXHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChlYy1cXHUwMDNlcnhfY29hbGVzY2VfdXNlY3MgIT0gZWMtXFx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJyeC11c2VjcyBhbmQgdHgtdXNlY3MgbXVzdCBiZSBlcXVhbFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAoZWMtXFx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFxcdTAwM2UgTEFONzQzWF9JTlRfTU9EX01BWCkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXFwiY29hbGVzY2UgdmFsdWUgZXhjZWVkcyBtYXhpbXVtXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFkYXB0ZXItXFx1MDAzZXVzZV9hZGFwdGl2ZV9tb2QgPSBmYWxzZTtcXG4rXFx0XFx0aW50X21vZCA9IGVjLVxcdTAwM2VyeF9jb2FsZXNjZV91c2VjcztcXG4rXFx0fVxcbitcXG4rXFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBpbnRfbW9kKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuNzQzeF9ldGh0b29sX29wcyA9IHtcXG4rXFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcXG4rXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9SWCB8XFxuK1xcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkVfVFgsXFxuK1xcdC5nZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlLFxcbitcXHQuc2V0X2NvYWxlc2NlID0gbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZSxcXG4gXFx0LmdldF9kcnZpbmZvID0gbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX2dldF9tc2dsZXZlbCxcXG4gXFx0LnNldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9zZXRfbXNnbGV2ZWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbmluZGV4IGYzMzMyNDE3MTYyZTYuLjllMWZiMWUwMjM0NjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXFxuQEAgLTYyNywxOCArNjI3LDEyIEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9pbnRyX29wZW4oc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX1ZFQ19FTl9TRVQsXFxuIFxcdFxcdFxcdFxcdCAgSU5UX1ZFQ19FTl8oMCkpO1xcbiBcXG4rXFx0LyogVGhlIGludGVycnVwdC12ZWN0b3ItdG8tbW9kZXJhdGlvbi10aW1lciBtYXBwaW5nIGlzIHN0YXRpYywgc29cXG4rXFx0ICogcHJvZ3JhbSBpdCBvbmNlIGhlcmUuIFRoZSB0aW1lciB2YWx1ZXMgdGhlbXNlbHZlcyBhcmUgc2V0IGxhdGVyXFxuK1xcdCAqIChwZXIgbGluayBzcGVlZCkgdmlhIGxhbjc0M3hfY29uZmlnX2ludF9tb2QoKS5cXG4rXFx0ICovXFxuIFxcdGlmICghKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzIsIExBTjc0M1hfSU5UX01PRCk7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzUsIExBTjc0M1hfSU5UX01PRCk7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xcbiBcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpIHtcXG4tXFx0XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XFxuIFxcdFxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XFxuIFxcdFxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTMwMzYsNiArMzAzMCw0OCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0bmV0aWZfdHhfc3RvcF9hbGxfcXVldWVzKG5ldGRldik7XFxuIH1cXG4gXFxuKy8qIE1hcCBhIGxpbmsgc3BlZWQgdG8gdGhlIGludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIHRvIHVzZS4gKi9cXG4rdTMyIGxhbjc0M3hfZ2V0X2ludF9tb2QoaW50IHNwZWVkKVxcbit7XFxuK1xcdHN3aXRjaCAoc3BlZWQpIHtcXG4rXFx0Y2FzZSBTUEVFRF8yNTAwOlxcbitcXHRcXHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzJfNUc7XFxuK1xcdGNhc2UgU1BFRURfMTAwMDpcXG4rXFx0XFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xRztcXG4rXFx0Y2FzZSBTUEVFRF8xMDA6XFxuK1xcdFxcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMTAwTTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xME07XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxcbisgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvclxcbisgKiBtYXBwaW5nIChJTlRfTU9EX01BUCkgaXMgc3RhdGljIGFuZCBpcyBzZXQgb25jZSBhdCBpbnRlcnJ1cHQgb3Blbi5cXG4rICovXFxuK3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZClcXG4re1xcbitcXHQvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHByb2dyYW1tZWQgaW4gaGFyZHdhcmUuICovXFxuK1xcdGlmIChpbnRfbW9kID09IGFkYXB0ZXItXFx1MDAzZWludF9tb2QpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmICghKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XFxuK1xcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeCkge1xcbitcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIGludF9tb2QpO1xcbitcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFkYXB0ZXItXFx1MDAzZWludF9tb2QgPSBpbnRfbW9kO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxpbmtfYW5fbW9kZSxcXG5AQCAtMzA2Nyw2ICszMTAzLDE0IEBAIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFxuIFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE1BQ19DUiwgbWFjX2NyKTtcXG4gXFxuK1xcdC8qIFRyYWNrIHRoZSBsaW5rIHNwZWVkIHNvIGEgbGF0ZXIgZXRodG9vbCByZXF1ZXN0IHRvIHJlLWVuYWJsZVxcbitcXHQgKiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGNhbiByZXN0b3JlIHRoZSBzcGVlZC1iYXNlZCB2YWx1ZSwgYW5kIHJlZnJlc2hcXG4rXFx0ICogdGhlIHRpbWVyIG5vdyB3aGVuIGFkYXB0aXZlIG1vZGVyYXRpb24gaXMgYWN0aXZlLlxcbitcXHQgKi9cXG4rXFx0YWRhcHRlci1cXHUwMDNlbGlua19zcGVlZCA9IHNwZWVkO1xcbitcXHRpZiAoYWRhcHRlci1cXHUwMDNldXNlX2FkYXB0aXZlX21vZClcXG4rXFx0XFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7XFxuK1xcbiBcXHRsYW43NDN4X3B0cF91cGRhdGVfbGF0ZW5jeShhZGFwdGVyLCBzcGVlZCk7XFxuIFxcbiBcXHQvKiBGbG93IENvbnRyb2wgb3BlcmF0aW9uICovXFxuQEAgLTM1MzIsNiArMzU3NiwxMyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRhZGFwdGVyLVxcdTAwM2VpbnRyLmlycSA9IGFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWlycTtcXG4gXFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XFxuIFxcbitcXHQvKiBFbmFibGUgc3BlZWQtYWRhcHRpdmUgaW50ZXJydXB0IG1vZGVyYXRpb24gYnkgZGVmYXVsdCBhbmQgcHJvZ3JhbVxcbitcXHQgKiB0aGUgdGltZXIgZm9yIHRoZSBkZWZhdWx0ICgxRykgdmFsdWUgdW50aWwgdGhlIGxpbmsgY29tZXMgdXAuXFxuK1xcdCAqL1xcbitcXHRhZGFwdGVyLVxcdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcXG4rXFx0YWRhcHRlci1cXHUwMDNlbGlua19zcGVlZCA9IFNQRUVEX1VOS05PV047XFxuK1xcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcXG4rXFxuIFxcdHJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcXG5pbmRleCAxNjBkOTRhN2NlZTY2Li45ZTZhYzhmZGJmMzdiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxcbkBAIC04NjEsNyArODYxLDExIEBAIHN0cnVjdCBsYW43NDN4X2FkYXB0ZXI7XFxuICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFx0KDQpXFxuICNkZWZpbmUgTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTXFx0KDEpXFxuICNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1xcdCg0KVxcbi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRFxcdCg0MDApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzJfNUdcXHRcXHQoNjQpXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzFHXFx0XFx0KDE1MClcXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTAwTVxcdFxcdCgzMzApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwTVxcdFxcdCgzMzApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EX01BWFxcdFxcdCg4MTkxKVxcbiBcXG4gI2lmIChMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMgXFx1MDAzZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMUylcXG4gI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFxuQEAgLTEwODgsNiArMTA5MiwxMiBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyIHtcXG4gXFx0cGh5X2ludGVyZmFjZV90XFx0XFx0cGh5X2ludGVyZmFjZTtcXG4gXFx0c3RydWN0IHBoeWxpbmtcXHRcXHQqcGh5bGluaztcXG4gXFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXFx0cGh5bGlua19jb25maWc7XFxuK1xcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xcbitcXHR1MzJcXHRcXHRcXHRpbnRfbW9kO1xcbitcXHQvKiBXaGVuIHNldCwgdGhlIG1vZGVyYXRpb24gdGltZXIgdHJhY2tzIHRoZSBsaW5rIHNwZWVkIGF1dG9tYXRpY2FsbHkuICovXFxuK1xcdGJvb2xcXHRcXHRcXHR1c2VfYWRhcHRpdmVfbW9kO1xcbitcXHQvKiBMYXN0IG5lZ290aWF0ZWQgbGluayBzcGVlZCwgdXNlZCB0byBkZXJpdmUgdGhlIGFkYXB0aXZlIHZhbHVlLiAqL1xcbitcXHRpbnRcXHRcXHRcXHRsaW5rX3NwZWVkO1xcbiBcXHRpbnRcXHRcXHRcXHRyeF90c3RhbXBfZmlsdGVyO1xcbiB9O1xcbiBcXG5AQCAtMTIwOSw1ICsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcXG4gdm9pZCBsYW43NDN4X21hY19mbG93X2N0cmxfc2V0X2VuYWJsZXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XFxuIGludCBsYW43NDN4X3NnbWlpX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTggbW1kLCB1MTYgYWRkcik7XFxuK3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZCk7XFxuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7XFxuIFxcbiAjZW5kaWYgLyogX0xBTjc0M1hfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NS41NTA2Mjg3MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTA2Njg5MjQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNTo1OTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXG5AQCAtMTM1NSw3ICsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShhZGFwdGVyLVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbiB9XG4gXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbitcdFx0XHRcdFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcbitcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuK1xuK1x0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcbitcdCAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVyLCBzbyBSWCBhbmQgVFggbW9kZXJhdGlvbiBzaGFyZSBvbmUgdmFsdWU7XG4rXHQgKiByZXBvcnQgaXQgZm9yIGJvdGguXG4rXHQgKi9cbitcdGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cdTAwM2VpbnRfbW9kO1xuK1x0ZWMtXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgPSBhZGFwdGVyLVx1MDAzZWludF9tb2Q7XG4rXHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4rXHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfdHhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbitcdFx0XHRcdFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcbitcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuK1x0dTMyIGludF9tb2Q7XG4rXG4rXHQvKiBSWCBhbmQgVFggc2hhcmUgYSBzaW5nbGUgbW9kZXJhdGlvbiB2YWx1ZSwgc28gYWRhcHRpdmUgbW9kZSBtdXN0IGJlXG4rXHQgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLlxuK1x0ICovXG4rXHRpZiAoZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlICE9IGVjLVx1MDAzZXVzZV9hZGFwdGl2ZV90eF9jb2FsZXNjZSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJhZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaFwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAoZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKSB7XG4rXHRcdC8qIFJlc3VtZSBzcGVlZC1hZGFwdGl2ZSBtb2RlcmF0aW9uIGFuZCBhcHBseSB0aGUgdmFsdWUgZm9yIHRoZVxuK1x0XHQgKiBjdXJyZW50IGxpbmsgc3BlZWQgcmlnaHQgYXdheS5cbitcdFx0ICovXG4rXHRcdGFkYXB0ZXItXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IHRydWU7XG4rXHRcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXHUwMDNlbGlua19zcGVlZCk7XG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBBbGwgcGVyLXZlY3RvciBJTlRfTU9EX0NGRyByZWdpc3RlcnMgZ2V0IHRoZSBzYW1lIHZhbHVlLCBzb1xuK1x0XHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cbitcdFx0ICovXG4rXHRcdGlmIChlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcyAhPSBlYy1cdTAwM2V0eF9jb2FsZXNjZV91c2Vjcykge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4rXHRcdFx0XHRcdCAgIFwicngtdXNlY3MgYW5kIHR4LXVzZWNzIG11c3QgYmUgZXF1YWxcIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFx1MDAzZSBMQU43NDNYX0lOVF9NT0RfTUFYKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbitcdFx0XHRcdFx0ICAgXCJjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW1cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdFx0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gZmFsc2U7XG4rXHRcdGludF9tb2QgPSBlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcztcbitcdH1cbitcbitcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgaW50X21vZCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHMgPSB7XG4rXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuK1x0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9SWCB8XG4rXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1RYLFxuK1x0LmdldF9jb2FsZXNjZSA9IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2UsXG4rXHQuc2V0X2NvYWxlc2NlID0gbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZSxcbiBcdC5nZXRfZHJ2aW5mbyA9IGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbXNnbGV2ZWwgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9zZXRfbXNnbGV2ZWwsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5pbmRleCBmMzMzMjQxNzE2MmU2Li45ZTFmYjFlMDIzNDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbkBAIC02MjcsMTggKzYyNywxMiBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9WRUNfRU5fU0VULFxuIFx0XHRcdFx0ICBJTlRfVkVDX0VOXygwKSk7XG4gXG4rXHQvKiBUaGUgaW50ZXJydXB0LXZlY3Rvci10by1tb2RlcmF0aW9uLXRpbWVyIG1hcHBpbmcgaXMgc3RhdGljLCBzb1xuK1x0ICogcHJvZ3JhbSBpdCBvbmNlIGhlcmUuIFRoZSB0aW1lciB2YWx1ZXMgdGhlbXNlbHZlcyBhcmUgc2V0IGxhdGVyXG4rXHQgKiAocGVyIGxpbmsgc3BlZWQpIHZpYSBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKCkuXG4rXHQgKi9cbiBcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzAsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzMsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzYsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgTEFONzQzWF9JTlRfTU9EKTtcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpIHtcbi1cdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBMQU43NDNYX0lOVF9NT0QpO1xuIFx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XG4gXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9NQVAxLCAweDAwMDAzMjEwKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zMDM2LDYgKzMwMzAsNDggQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiB9XG4gXG4rLyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqL1xuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZClcbit7XG4rXHRzd2l0Y2ggKHNwZWVkKSB7XG4rXHRjYXNlIFNQRUVEXzI1MDA6XG4rXHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMl81RztcbitcdGNhc2UgU1BFRURfMTAwMDpcbitcdFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xRztcbitcdGNhc2UgU1BFRURfMTAwOlxuK1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwME07XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwTTtcbitcdH1cbit9XG4rXG4rLyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxuKyAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVycy4gT25seSB0aGUgdGltZXIgdmFsdWUgaXMgd3JpdHRlbiBoZXJlOyB0aGUgdmVjdG9yXG4rICogbWFwcGluZyAoSU5UX01PRF9NQVApIGlzIHN0YXRpYyBhbmQgaXMgc2V0IG9uY2UgYXQgaW50ZXJydXB0IG9wZW4uXG4rICovXG4rdm9pZCBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBpbnRfbW9kKVxuK3tcbitcdC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi9cbitcdGlmIChpbnRfbW9kID09IGFkYXB0ZXItXHUwMDNlaW50X21vZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKCEoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XG4rXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KSB7XG4rXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBpbnRfbW9kKTtcbitcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xuK1x0XHR9XG4rXHRcdGFkYXB0ZXItXHUwMDNlaW50X21vZCA9IGludF9tb2Q7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHRcdFx0dW5zaWduZWQgaW50IGxpbmtfYW5fbW9kZSxcbkBAIC0zMDY3LDYgKzMxMDMsMTQgQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgTUFDX0NSLCBtYWNfY3IpO1xuIFxuK1x0LyogVHJhY2sgdGhlIGxpbmsgc3BlZWQgc28gYSBsYXRlciBldGh0b29sIHJlcXVlc3QgdG8gcmUtZW5hYmxlXG4rXHQgKiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGNhbiByZXN0b3JlIHRoZSBzcGVlZC1iYXNlZCB2YWx1ZSwgYW5kIHJlZnJlc2hcbitcdCAqIHRoZSB0aW1lciBub3cgd2hlbiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGlzIGFjdGl2ZS5cbitcdCAqL1xuK1x0YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkID0gc3BlZWQ7XG4rXHRpZiAoYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kKVxuK1x0XHRsYW43NDN4X2NvbmZpZ19pbnRfbW9kKGFkYXB0ZXIsIGxhbjc0M3hfZ2V0X2ludF9tb2Qoc3BlZWQpKTtcbitcbiBcdGxhbjc0M3hfcHRwX3VwZGF0ZV9sYXRlbmN5KGFkYXB0ZXIsIHNwZWVkKTtcbiBcbiBcdC8qIEZsb3cgQ29udHJvbCBvcGVyYXRpb24gKi9cbkBAIC0zNTMyLDYgKzM1NzYsMTMgQEAgc3RhdGljIGludCBsYW43NDN4X2hhcmR3YXJlX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbiBcdGFkYXB0ZXItXHUwMDNlaW50ci5pcnEgPSBhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlaXJxO1xuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XG4gXG4rXHQvKiBFbmFibGUgc3BlZWQtYWRhcHRpdmUgaW50ZXJydXB0IG1vZGVyYXRpb24gYnkgZGVmYXVsdCBhbmQgcHJvZ3JhbVxuK1x0ICogdGhlIHRpbWVyIGZvciB0aGUgZGVmYXVsdCAoMUcpIHZhbHVlIHVudGlsIHRoZSBsaW5rIGNvbWVzIHVwLlxuK1x0ICovXG4rXHRhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2QgPSB0cnVlO1xuK1x0YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkID0gU1BFRURfVU5LTk9XTjtcbitcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcbitcbiBcdHJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbmluZGV4IDE2MGQ5NGE3Y2VlNjYuLjllNmFjOGZkYmYzN2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxuQEAgLTg2MSw3ICs4NjEsMTEgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlcjtcbiAjZGVmaW5lIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMU1x0KDQpXG4gI2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcdCgxKVxuICNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1x0KDQpXG4tI2RlZmluZSBMQU43NDNYX0lOVF9NT0RcdCg0MDApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMl81R1x0XHQoNjQpXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMUdcdFx0KDE1MClcbisjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xMDBNXHRcdCgzMzApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTBNXHRcdCgzMzApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfTUFYXHRcdCg4MTkxKVxuIFxuICNpZiAoTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTIFx1MDAzZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMUylcbiAjZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcbkBAIC0xMDg4LDYgKzEwOTIsMTIgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlciB7XG4gXHRwaHlfaW50ZXJmYWNlX3RcdFx0cGh5X2ludGVyZmFjZTtcbiBcdHN0cnVjdCBwaHlsaW5rXHRcdCpwaHlsaW5rO1xuIFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXHRwaHlsaW5rX2NvbmZpZztcbitcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xuK1x0dTMyXHRcdFx0aW50X21vZDtcbitcdC8qIFdoZW4gc2V0LCB0aGUgbW9kZXJhdGlvbiB0aW1lciB0cmFja3MgdGhlIGxpbmsgc3BlZWQgYXV0b21hdGljYWxseS4gKi9cbitcdGJvb2xcdFx0XHR1c2VfYWRhcHRpdmVfbW9kO1xuK1x0LyogTGFzdCBuZWdvdGlhdGVkIGxpbmsgc3BlZWQsIHVzZWQgdG8gZGVyaXZlIHRoZSBhZGFwdGl2ZSB2YWx1ZS4gKi9cbitcdGludFx0XHRcdGxpbmtfc3BlZWQ7XG4gXHRpbnRcdFx0XHRyeF90c3RhbXBfZmlsdGVyO1xuIH07XG4gXG5AQCAtMTIwOSw1ICsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XG4gaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTtcbit2b2lkIGxhbjc0M3hfY29uZmlnX2ludF9tb2Qoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIGludF9tb2QpO1xuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7XG4gXG4gI2VuZGlmIC8qIF9MQU43NDNYX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE1OjU5OjQ1LjU1MDYyOTg0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2Nzk2MzE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMQU43NDN4IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW1wbGVtZW50aW5nIGV0aHRvb2wgY29hbGVzY2Ugc3VwcG9ydCBmb3IgdGhlIGBsYW43NDN4YCBkcml2ZXIuIFJpZ2h0LCB0aGF0J3MgdGhlIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHNpbmNlIHRoaXMgaXMgYSBQQ0llIGRldmljZSwgaXMgaXQgcnVubmluZyBpbiBRRU1VLCBvciBpcyB0aGlzIHBhdGNoIGRlYWxpbmcgd2l0aCBhY3R1YWwgaGFyZHdhcmU/IFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBMQU43NDN4LCBhcyBmYXIgYXMgSSBrbm93LiBCdXQsIGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrIHRoZXNlIHRoaW5ncyB0byBtYWtlIHN1cmUgdGhlIGFzc3VtcHRpb25zIGFyZSB2YWxpZC4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0byB2ZXJpZnkgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgUUVNVS1zcGVjaWZpYyBlbXVsYXRpb24gb3B0aW9ucyBmb3IgdGhlIGBsYW43NDN4YCBJIG1pZ2h0IGJlIG1pc3NpbmcuIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwcGVyYCBzZWFyY2ggZm9yIGBsYW43NDN4YCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTU6NTk6NTIuMjMwMjY0NTY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjQ1MzkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuNzQzeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQxMDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbk1BSU5UQUlORVJTPTE3NDEwPVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjE3NDExOkY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfKlxcbk1BSU5UQUlORVJTLTE3NDEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU3LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTg6XFx0ICBjYWxsZWQgbGFuNzQzeC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT03PW9iai0kKENPTkZJR19FTkNYMjRKNjAwKSArPSBlbmN4MjRqNjAwLm8gZW5jeDI0ajYwMC1yZWdtYXAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19MQU43NDNYKSArPSBsYW43NDN4Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTA6bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjg6I2luY2x1ZGUgXFxcImxhbjc0M3hfbWFpbi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo5OiNpbmNsdWRlIFxcXCJsYW43NDN4X2V0aHRvb2wuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NjaGVkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXFx0ICAgICBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcG93ZXJfdXAoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNDpcXHRyZWdfdmFsdWUgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIE9UUF9QV1JfRE4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zOC1cXHRcXHRyZWdfdmFsdWUgXFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM5OlxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9QV1JfRE4sIHJlZ192YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE6XFx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUFdSX0ROKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTItXFx0aWYgKCEocmVnX3ZhbHVlIFxcdTAwMjYgT1RQX1BXUl9ETl9QV1JETl9OXykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NC1cXHRcXHRyZWdfdmFsdWUgfD0gT1RQX1BXUl9ETl9QV1JETl9OXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BXUl9ETiwgcmVnX3ZhbHVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9zZXRfYWRkcmVzcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MC1cXHRcXHRcXHRcXHQgICAgdTMyIGFkZHJlc3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfSElHSCwgKGFkZHJlc3MgXFx1MDAzZVxcdTAwM2UgOCkgXFx1MDAyNiAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfTE9XLCBhZGRyZXNzIFxcdTAwMjYgMHhGRik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2OnN0YXRpYyB2b2lkIGxhbjc0M3hfb3RwX3JlYWRfZ28oc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfRlVOQ19DTUQsIE9UUF9GVU5DX0NNRF9SRUFEXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY5OlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzI6c3RhdGljIGludCBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg0LVxcdFxcdHVkZWxheSgxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODU6XFx0XFx0cmVnX3ZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgT1RQX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg2LVxcdH0gd2hpbGUgKHJlZ192YWwgXFx1MDAyNiBPVFBfU1RBVFVTX0JVU1lfKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6OTE6c3RhdGljIGludCBsYW43NDN4X290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkyLVxcdFxcdFxcdCAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTAwOlxcdHJldCA9IGxhbjc0M3hfb3RwX3Bvd2VyX3VwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMDQ6XFx0cmV0ID0gbGFuNzQzeF9vdHBfd2FpdF90aWxsX25vdF9idXN5KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTA4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMDk6XFx0XFx0bGFuNzQzeF9vdHBfc2V0X2FkZHJlc3MoYWRhcHRlciwgb2Zmc2V0ICsgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTExOlxcdFxcdGxhbjc0M3hfb3RwX3JlYWRfZ28oYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExMjpcXHRcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTExMy1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExNTpcXHRcXHRkYXRhW2ldID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUkVBRF9EQVRBKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE2LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMTg6XFx0bGFuNzQzeF9vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTIzOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTI0LVxcdFxcdFxcdCAgICAgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzI6XFx0cmV0ID0gbGFuNzQzeF9vdHBfcG93ZXJfdXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzNjpcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDAtXFx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0MTpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFJHTV9NT0RFLCBPVFBfUFJHTV9NT0RFX0JZVEVfKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbmd0aDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0NDpcXHRcXHRsYW43NDN4X290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgKyBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDY6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0NzpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfVFNUX0NNRCwgT1RQX1RTVF9DTURfUFJHVlJGWV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDg6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1MDpcXHRcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE1MS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1NTpcXHRsYW43NDN4X290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNjA6aW50IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2MS1cXHRcXHRcXHQgICAgICAgdTE2IHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTY4LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VldGhfc3lzbG9ja19hY3F1aXJlX2NudCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE2OTpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTcwLVxcdFxcdFxcdFxcdFxcdCAgU1lTX0xPQ0tfUkVHX0VORVRfU1NfTE9DS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNzE6XFx0XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIEVUSF9TWVNURU1fU1lTX0xPQ0tfUkVHKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE5Nzp2b2lkIGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjA2LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VldGhfc3lzbG9ja19hY3F1aXJlX2NudCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwNzpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwODpcXHRcXHRcXHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIwOS1cXHRcXHRcXHRcXHRcXHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjE3OnN0YXRpYyB2b2lkIGxhbjc0M3hfaHNfb3RwX3Bvd2VyX3VwKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMjE6XFx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIyLVxcdGlmIChyZWdfdmFsdWUgXFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyMy1cXHRcXHRyZWdfdmFsdWUgXFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyNDpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjUtXFx0XFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyNy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjI4OlxcdFxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyOS1cXHRcXHR1ZGVsYXkoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMzM6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjM3OlxcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzOC1cXHRpZiAoIShyZWdfdmFsdWUgXFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMzktXFx0XFx0cmVnX3ZhbHVlIHw9IE9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0MDpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDEtXFx0XFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjQ0OlxcdFxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0NS1cXHRcXHR1ZGVsYXkoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNDk6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfc2V0X2FkZHJlc3Moc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjUwLVxcdFxcdFxcdFxcdCAgICAgICB1MzIgYWRkcmVzcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjUyOlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9BRERSX0hJR0gsIChhZGRyZXNzIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1MzpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfQUREUl9MT1csIGFkZHJlc3MgXFx1MDAyNiAweEZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTY6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTg6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0ZVTkNfQ01ELCBPVFBfRlVOQ19DTURfUkVBRF8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTk6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI2MjpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX2NtZF9jbXBsdF9jaGsoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI3MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjcyLVxcdFxcdFxcdCAgICAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4MDpcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4MS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4NDpcXHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyODY6XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkwOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuZ3RoOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkzOlxcdFxcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5NC1cXHRcXHRcXHRcXHRcXHRcXHQgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjk4OlxcdFxcdGxhbjc0M3hfaHNfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwMDpcXHRcXHRsYW43NDN4X2hzX290cF9yZWFkX2dvKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDE6XFx0XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzAyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzA1OlxcdFxcdGRhdGFbaV0gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhTX09UUF9SRUFEX0RBVEEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwNzpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTA6XFx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzExLVxcdFxcdFxcdFxcdFxcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE1LXBvd2VyX2Rvd246XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMxNjpcXHRsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTc6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMyMjpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMyMy1cXHRcXHRcXHRcXHR1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzMTpcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzNTpcXHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMzc6XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0MS1cXHQvKiBzZXQgdG8gQllURSBwcm9ncmFtIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQyOlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9QUkdNX01PREUsIE9UUF9QUkdNX01PREVfQllURV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbmd0aDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NzpcXHRcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDgtXFx0XFx0XFx0XFx0XFx0XFx0IExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1MjpcXHRcXHRsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgKyBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1NTpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfVFNUX0NNRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzU2LVxcdFxcdFxcdFxcdCAgT1RQX1RTVF9DTURfUFJHVlJGWV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTc6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1OTpcXHRcXHRyZXQgPSBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNjAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjM6XFx0XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzY2OlxcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3MC1wb3dlcl9kb3duOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzE6XFx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzcyOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzc6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93YWl0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgyLVxcdGRvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzgzOlxcdFxcdHZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRTJQX0NNRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQwMDpzdGF0aWMgaW50IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MDUtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MDY6XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDE4OnN0YXRpYyBpbnQgbGFuNzQzeF9lZXByb21fcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MTktXFx0XFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDI4OlxcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQyOS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQzNC1cXHRcXHR2YWwgfD0gKG9mZnNldCBcXHUwMDI2IEUyUF9DTURfRVBDX0FERFJfTUFTS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MzU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Mzc6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fd2FpdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM4LVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDQxOlxcdFxcdHZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRTJQX0RBVEEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDItXFx0XFx0ZGF0YVtpXSA9IHZhbCBcXHUwMDI2IDB4RkY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NDk6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NTAtXFx0XFx0XFx0XFx0dTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NTk6XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fY29uZmlybV9ub3RfYnVzeShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDYwLVxcdGlmIChyZXR2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY0LVxcdHZhbCA9IEUyUF9DTURfRVBDX0JVU1lfIHwgRTJQX0NNRF9FUENfQ01EX0VXRU5fO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NjU6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Njc6XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fd2FpdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY4LVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3My1cXHRcXHR2YWwgPSBkYXRhW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0RBVEEsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NzgtXFx0XFx0dmFsIHw9IChvZmZzZXQgXFx1MDAyNiBFMlBfQ01EX0VQQ19BRERSX01BU0tfKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDc5OlxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEUyUF9DTUQsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDgxOlxcdFxcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4Mi1cXHRcXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQ5MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUwMTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTAyLVxcdFxcdFxcdFxcdCAgdTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTE6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTU6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE2OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MjE6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTI3LVxcdFxcdHZhbCB8PSAob2Zmc2V0IFxcdTAwMjYgSFNfRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUyODpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfQ01ELCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mjk6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMwLVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzMTpcXHRcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMyLVxcdFxcdFxcdHJldHVybiByZXR2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzU6XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19FMlBfREFUQSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTM3OlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NDY6c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDctXFx0XFx0XFx0XFx0ICAgdTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NTY6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTctXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjA6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYxOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTY1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjY6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTY3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTcyLVxcdFxcdHZhbCA9IGRhdGFbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU3MzpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfREFUQSwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU3Ny1cXHRcXHR2YWwgfD0gKG9mZnNldCBcXHUwMDI2IEhTX0UyUF9DTURfRVBDX0FERFJfTUFTS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Nzg6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1ODA6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgxOlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODItXFx0XFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTE6c3RhdGljIHZvaWQgbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTQ6XFx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMTpzdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjAyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjAzOlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MDg6c3RhdGljIHZvaWQgbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDktXFx0XFx0XFx0XFx0XFx0IHUzMiBtc2dsZXZlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjEwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjExOlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MTY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjE4OlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MjY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZSwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyOTpcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMwLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzMy1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzNDpcXHRcXHRcXHRyZXQgPSBsYW43NDN4X2hzX290cF9yZWFkKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzNS1cXHRcXHRcXHRcXHRcXHRcXHQgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2Mzc6XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9vdHBfcmVhZChhZGFwdGVyLCBlZS1cXHUwMDNlb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0MC1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY0MTpcXHRcXHRcXHRyZXQgPSBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NDMtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NDQ6XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9lZXByb21fcmVhZChhZGFwdGVyLCBlZS1cXHUwMDNlb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NDUtXFx0XFx0XFx0XFx0XFx0XFx0ICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY1MTpzdGF0aWMgaW50IGxhbjc0M3hfZXRodG9vbF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlLCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU0OlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTUtXFx0aW50IHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYwLVxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjYxOlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfaHNfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYzLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY0OlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlzX3BjaTExeDF4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NzA6XFx0XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9oc19lZXByb21fd3JpdGUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjcxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGVlLVxcdTAwM2VvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjczLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Njc0OlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfZWVwcm9tX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY4MjpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3NldDBfaHdfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODMtXFx0XFxcIlJYIEZDUyBFcnJvcnNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzA2OnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfc2V0MV9zd19jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcwNy1cXHRcXFwiUlggUXVldWUgMCBGcmFtZXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzEzOnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfdHhfcXVldWVfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MTQtXFx0XFxcIlRYIFF1ZXVlIDAgRnJhbWVzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjcyMTpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3NldDJfaHdfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjItXFx0XFxcIlJYIFRvdGFsIEZyYW1lc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3NTQ6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDBfaHdfY250X2FkZHJbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzU1LVxcdFNUQVRfUlhfRkNTX0VSUk9SUyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjc3ODpzdGF0aWMgY29uc3QgdTMyIGxhbjc0M3hfc2V0Ml9od19jbnRfYWRkcltdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzktXFx0U1RBVF9SWF9UT1RBTF9GUkFNRVMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo4MTE6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9wcml2X2ZsYWdzX3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTItXFx0XFxcIk9UUF9BQ0NFU1NcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODE1OnN0YXRpYyB2b2lkIGxhbjc0M3hfZXRodG9vbF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTYtXFx0XFx0XFx0XFx0XFx0dTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxODpcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE5LVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE1OjU5OjU0LjY5NDgxMTE3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTkyMDMwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hgLiBJdCdzIGEgUENJZSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IFFFTVUgZW11bGF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSdkIGRvIGlzIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSAoYGh3L25ldC9gKSBmb3IgYW55IHNpZ24gb2YgYGxhbjc0M3hgIGVtdWxhdGlvbiwgYnV0IEkgZG9uJ3QgaGF2ZSB0aGF0IHNvdXJjZSBoYW5keSByaWdodCBub3cuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgZnV6eiBwaHlzaWNhbCBQQ0llIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIGVtdWxhdGVkIG9yIGhhdmUgc29tZSBzcGVjaWFsIHNldHVwLiBXaGlsZSBpdCBkb2VzIGZ1enogVVNCIGFuZCBvdGhlciB0aGluZ3MsIFBDSWUgcmVxdWlyZXMgZWl0aGVyIHZpcnR1YWxpemF0aW9uIG9yIGVtdWxhdGlvbi5cblxuSGFuZyBvbi4uLiBJJ20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIExBTjc0M1guIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGNyaXRlcmlhOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5BbHJpZ2h0LCBzbyBpcyB0aGUgTEFONzQzWCBhIFwidmVuZG9yLXNwZWNpZmljXCIgUENJZSBkcml2ZXI/IFllcywgaXQncyBhIE1pY3JvY2hpcCBMQU43NDN4IEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlciwgc28gdGhhdCBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBwb2ludHMgc3Ryb25nbHkgdG93YXJkcyBpdCBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBub3QgYmVpbmcgZWFzaWx5IGZ1enphYmxlLiBJIG5lZWQgdG8gY29uZmlybSBpdCdzIGEgUENJIGRyaXZlciB0byBiZSBjZXJ0YWluLCB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTAxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjAyLjExNDAxNzAyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc5MjIyMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjAyLjE3NDgxOTI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NzAwMzU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGF0IHRob3VnaHQgcHJvY2VzcyBhbmQgc3VtbWFyaXplIGl0IGZyb20gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLiBIZXJlJ3MgbXkgdGFrZTpcblxuKipUaGUgVmVyaWZpY2F0aW9uIFByb2Nlc3MqKlxuXG5IbW0sIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugb3IganVtcCB0byBhIGNvbmNsdXNpb24sIEkgbmVlZCB0byBwYXVzZS4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgYmFzaXMgb2YgdGhpcy4gSXQncyBhYm91dCBkYXRhIGludGVncml0eS4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBGaXJzdCwgSSBoYXZlIHRvIGNoZWNrIGhvdyBzb21ldGhpbmcgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbSAtIHdoZXRoZXIgaXQgaXMgdGhlIGRhdGFzZXQsIHRoZSBwYXJhbWV0ZXJzLCB0aGUgY29kZSBvciB0aGUgbW9kZWwuIFVuZGVyc3RhbmRpbmcgaXRzIHJlZ2lzdHJhdGlvbiBwcm92aWRlcyBuZWNlc3NhcnkgY29udGV4dCBiZWZvcmUgYW55IHJlc3BvbnNlIGNhbiBiZSBmb3JtdWxhdGVkLiBJIG5lZWQgdG8gZW5zdXJlIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIHByZWxpbWluYXJ5IGNoZWNrIGlzIGZ1bmRhbWVudGFsOyBpdOKAmXMgYWJvdXQgdmVyaWZ5aW5nIHRoZSBkYXRhJ3MgcHJvcGVyIGltcGxlbWVudGF0aW9uLiBBIGhhc3R5IGFzc3VtcHRpb24gY291bGQgYmUgZGlzYXN0cm91cy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkga25vdyAqZXhhY3RseSogd2hhdCBJJ20gZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjA3LjczMTgyNTcxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA2NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9NDA0ND1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbGFuNzQzeF9wY2lkZXZfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDA0NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbGFuNzQzeF9wY2lkZXZfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MDQ3LVxcdC5uYW1lICAgICA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjQwNTc6bW9kdWxlX3BjaV9kcml2ZXIobGFuNzQzeF9wY2lkZXZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTY6MDA6MDcuNzkyODk2OTQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgyNDU4Mjg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlllcywgdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlci5cIiBUaGUgbmV4dCBxdWVzdGlvbiBpcyBhbHdheXMsIFwiSXMgaXQgZW11bGF0ZWQgaW4gUUVNVT9cIiBTdGFuZGFyZCBRRU1VLCBpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBlbXVsYXRlcyBhIGJ1bmNoIG9mIG5ldHdvcmsgY2FyZHM6IHRoZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIGlnYiwgdHVsaXAsIGFuZCBzbyBvbiwgYnV0IG5vdCB0aGUgTWljcm9jaGlwIExBTjc0M3guIFNvLCByaWdodCBhd2F5LCB0aGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgd2l0aGluIFFFTVUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gcXVpY2tseSBkb3VibGUtY2hlY2tpbmcg4oCTIG5vIGNoYW5jZSBpdCdzIGEgcGxhdGZvcm0gb3IgVVNCIGRldmljZSBtYXNxdWVyYWRpbmcgYXMgc29tZXRoaW5nIGVsc2UuIE5vLCB0aGUgdXNlIG9mIGBtb2R1bGVfcGNpX2RyaXZlcmAgYW5kIGBsYW43NDN4X3BjaWRldl9kcml2ZXJgIGNvbmNsdXNpdmVseSB0ZWxscyBtZSBpdCdzIGEgUENJIGRldmljZS4gU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UgYW5kIGl0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUsIHRoZW4gaXQgY2FuJ3QgYmUgcmVhY2hlZCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEFsbCBjb2RlIHBhdGhzIHdvdWxkIGJlIGluYWNjZXNzaWJsZS4gVGhhdCBtZWFucywgYXMgYSBmaXJzdCBwYXNzLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbkxldCBtZSBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlIEknbSBoaXR0aW5nIHRoZSByaWdodCBjcml0ZXJpYS4gQWgsIGhlcmUgaXQgaXM6IFwiUmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5Pa2F5LCB0aGUgTEFONzQzeCBpcyBhIE1pY3JvY2hpcCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIGZvciBhICpwaHlzaWNhbCogUENJZSBjYXJkLiBJdCBmaXRzIHRoZSBkZXNjcmlwdGlvbiBwZXJmZWN0bHkuIEknbSBjb25maWRlbnQgdGhhdCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgZGVjaXNpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNzYsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTY6MDA6MTQuNjE3NDgzMjU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sbtm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 15:13:50 +0000 UTC FinishedAt: 2026-08-03 16:00:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBkcml2ZXIsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciBhIHBoeXNpY2FsIFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGJ5IHN5emthbGxlciwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNTo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGUwZGRkYzZhODQxMTU4MTI4NWJiYjZkZmY1OWI3Yjk3MDg1NzUyYTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDE1OjU5OjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXG5AQCAtMTM1NSw3ICYjNDM7MTM1NSw3NyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oYWRhcHRlci1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbiYjNDM7XHRcdFx0XHRcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF9jb2FsZXNjZSAqa2VybmVsX2NvYWwsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiYjNDM7XG4mIzQzO1x0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcbiYjNDM7XHQgKiBJTlRfTU9EX0NGRyByZWdpc3Rlciwgc28gUlggYW5kIFRYIG1vZGVyYXRpb24gc2hhcmUgb25lIHZhbHVlO1xuJiM0MztcdCAqIHJlcG9ydCBpdCBmb3IgYm90aC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItXHUwMDNlaW50X21vZDtcbiYjNDM7XHRlYy1cdTAwM2V0eF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItXHUwMDNlaW50X21vZDtcbiYjNDM7XHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4mIzQzO1x0ZWMtXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlID0gYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfY29hbGVzY2UgKmtlcm5lbF9jb2FsLFxuJiM0MztcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG4mIzQzO1x0dTMyIGludF9tb2Q7XG4mIzQzO1xuJiM0MztcdC8qIFJYIGFuZCBUWCBzaGFyZSBhIHNpbmdsZSBtb2RlcmF0aW9uIHZhbHVlLCBzbyBhZGFwdGl2ZSBtb2RlIG11c3QgYmVcbiYjNDM7XHQgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgIT0gZWMtXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlKSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O2FkYXB0aXZlLXJ4IGFuZCBhZGFwdGl2ZS10eCBtdXN0IG1hdGNoXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGVjLVx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSkge1xuJiM0MztcdFx0LyogUmVzdW1lIHNwZWVkLWFkYXB0aXZlIG1vZGVyYXRpb24gYW5kIGFwcGx5IHRoZSB2YWx1ZSBmb3IgdGhlXG4mIzQzO1x0XHQgKiBjdXJyZW50IGxpbmsgc3BlZWQgcmlnaHQgYXdheS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcbiYjNDM7XHRcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXHUwMDNlbGlua19zcGVlZCk7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdC8qIEFsbCBwZXItdmVjdG9yIElOVF9NT0RfQ0ZHIHJlZ2lzdGVycyBnZXQgdGhlIHNhbWUgdmFsdWUsIHNvXG4mIzQzO1x0XHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzICE9IGVjLVx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtyeC11c2VjcyBhbmQgdHgtdXNlY3MgbXVzdCBiZSBlcXVhbFwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFx1MDAzZSBMQU43NDNYX0lOVF9NT0RfTUFYKSB7XG4mIzQzO1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW1cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGFkYXB0ZXItXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IGZhbHNlO1xuJiM0MztcdFx0aW50X21vZCA9IGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBpbnRfbW9kKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHMgPSB7XG4mIzQzO1x0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcbiYjNDM7XHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1JYIHxcbiYjNDM7XHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1RYLFxuJiM0MztcdC5nZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlLFxuJiM0MztcdC5zZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlLFxuIFx0LmdldF9kcnZpbmZvID0gbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvLFxuIFx0LmdldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwsXG4gXHQuc2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbmluZGV4IGYzMzMyNDE3MTYyZTYuLjllMWZiMWUwMjM0NjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xuQEAgLTYyNywxOCAmIzQzOzYyNywxMiBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9WRUNfRU5fU0VULFxuIFx0XHRcdFx0ICBJTlRfVkVDX0VOXygwKSk7XG4gXG4mIzQzO1x0LyogVGhlIGludGVycnVwdC12ZWN0b3ItdG8tbW9kZXJhdGlvbi10aW1lciBtYXBwaW5nIGlzIHN0YXRpYywgc29cbiYjNDM7XHQgKiBwcm9ncmFtIGl0IG9uY2UgaGVyZS4gVGhlIHRpbWVyIHZhbHVlcyB0aGVtc2VsdmVzIGFyZSBzZXQgbGF0ZXJcbiYjNDM7XHQgKiAocGVyIGxpbmsgc3BlZWQpIHZpYSBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKCkuXG4mIzQzO1x0ICovXG4gXHRpZiAoIShhZGFwdGVyLVx1MDAzZWNzci5mbGFncyBcdTAwMjYgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzEsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzQsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzcsIExBTjc0M1hfSU5UX01PRCk7XG4gXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KSB7XG4tXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHOSwgTEFONzQzWF9JTlRfTU9EKTtcbiBcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX01BUDAsIDB4MDAwMDc2NTQpO1xuIFx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7XG4gXHRcdH0gZWxzZSB7XG5AQCAtMzAzNiw2ICYjNDM7MzAzMCw0OCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdG5ldGlmX3R4X3N0b3BfYWxsX3F1ZXVlcyhuZXRkZXYpO1xuIH1cbiBcbiYjNDM7LyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqL1xuJiM0Mzt1MzIgbGFuNzQzeF9nZXRfaW50X21vZChpbnQgc3BlZWQpXG4mIzQzO3tcbiYjNDM7XHRzd2l0Y2ggKHNwZWVkKSB7XG4mIzQzO1x0Y2FzZSBTUEVFRF8yNTAwOlxuJiM0MztcdFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8yXzVHO1xuJiM0MztcdGNhc2UgU1BFRURfMTAwMDpcbiYjNDM7XHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMUc7XG4mIzQzO1x0Y2FzZSBTUEVFRF8xMDA6XG4mIzQzO1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwME07XG4mIzQzO1x0ZGVmYXVsdDpcbiYjNDM7XHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMTBNO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxuJiM0MzsgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvclxuJiM0MzsgKiBtYXBwaW5nIChJTlRfTU9EX01BUCkgaXMgc3RhdGljIGFuZCBpcyBzZXQgb25jZSBhdCBpbnRlcnJ1cHQgb3Blbi5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZClcbiYjNDM7e1xuJiM0MztcdC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi9cbiYjNDM7XHRpZiAoaW50X21vZCA9PSBhZGFwdGVyLVx1MDAzZWludF9tb2QpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XG4mIzQzO1x0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzIsIGludF9tb2QpO1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XG4mIzQzO1x0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzUsIGludF9tb2QpO1xuJiM0MztcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBpbnRfbW9kKTtcbiYjNDM7XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XG4mIzQzO1x0XHRpZiAoYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeCkge1xuJiM0MztcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIGludF9tb2QpO1xuJiM0MztcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0YWRhcHRlci1cdTAwM2VpbnRfbW9kID0gaW50X21vZDtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFx0XHRcdFx0XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuIFx0XHRcdFx0XHR1bnNpZ25lZCBpbnQgbGlua19hbl9tb2RlLFxuQEAgLTMwNjcsNiAmIzQzOzMxMDMsMTQgQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgTUFDX0NSLCBtYWNfY3IpO1xuIFxuJiM0MztcdC8qIFRyYWNrIHRoZSBsaW5rIHNwZWVkIHNvIGEgbGF0ZXIgZXRodG9vbCByZXF1ZXN0IHRvIHJlLWVuYWJsZVxuJiM0MztcdCAqIGFkYXB0aXZlIG1vZGVyYXRpb24gY2FuIHJlc3RvcmUgdGhlIHNwZWVkLWJhc2VkIHZhbHVlLCBhbmQgcmVmcmVzaFxuJiM0MztcdCAqIHRoZSB0aW1lciBub3cgd2hlbiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGlzIGFjdGl2ZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQgPSBzcGVlZDtcbiYjNDM7XHRpZiAoYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kKVxuJiM0MztcdFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7XG4mIzQzO1xuIFx0bGFuNzQzeF9wdHBfdXBkYXRlX2xhdGVuY3koYWRhcHRlciwgc3BlZWQpO1xuIFxuIFx0LyogRmxvdyBDb250cm9sIG9wZXJhdGlvbiAqL1xuQEAgLTM1MzIsNiAmIzQzOzM1NzYsMTMgQEAgc3RhdGljIGludCBsYW43NDN4X2hhcmR3YXJlX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbiBcdGFkYXB0ZXItXHUwMDNlaW50ci5pcnEgPSBhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlaXJxO1xuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHNwZWVkLWFkYXB0aXZlIGludGVycnVwdCBtb2RlcmF0aW9uIGJ5IGRlZmF1bHQgYW5kIHByb2dyYW1cbiYjNDM7XHQgKiB0aGUgdGltZXIgZm9yIHRoZSBkZWZhdWx0ICgxRykgdmFsdWUgdW50aWwgdGhlIGxpbmsgY29tZXMgdXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcbiYjNDM7XHRhZGFwdGVyLVx1MDAzZWxpbmtfc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xuJiM0MztcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcbiYjNDM7XG4gXHRyZXQgPSBsYW43NDN4X2dwaW9faW5pdChhZGFwdGVyKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oXG5pbmRleCAxNjBkOTRhN2NlZTY2Li45ZTZhYzhmZGJmMzdiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbkBAIC04NjEsNyAmIzQzOzg2MSwxMSBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyO1xuICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXHQoNClcbiAjZGVmaW5lIExBTjc0M1hfVVNFRF9UWF9DSEFOTkVMU1x0KDEpXG4gI2RlZmluZSBQQ0kxMVgxWF9VU0VEX1RYX0NIQU5ORUxTXHQoNClcbi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRFx0KDQwMClcbiYjNDM7I2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMl81R1x0XHQoNjQpXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzFHXHRcdCgxNTApXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwME1cdFx0KDMzMClcbiYjNDM7I2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTBNXHRcdCgzMzApXG4mIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EX01BWFx0XHQoODE5MSlcbiBcbiAjaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyBcdTAwM2UgTEFONzQzWF9NQVhfUlhfQ0hBTk5FTFMpXG4gI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXG5AQCAtMTA4OCw2ICYjNDM7MTA5MiwxMiBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyIHtcbiBcdHBoeV9pbnRlcmZhY2VfdFx0XHRwaHlfaW50ZXJmYWNlO1xuIFx0c3RydWN0IHBoeWxpbmtcdFx0KnBoeWxpbms7XG4gXHRzdHJ1Y3QgcGh5bGlua19jb25maWdcdHBoeWxpbmtfY29uZmlnO1xuJiM0MztcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xuJiM0MztcdHUzMlx0XHRcdGludF9tb2Q7XG4mIzQzO1x0LyogV2hlbiBzZXQsIHRoZSBtb2RlcmF0aW9uIHRpbWVyIHRyYWNrcyB0aGUgbGluayBzcGVlZCBhdXRvbWF0aWNhbGx5LiAqL1xuJiM0MztcdGJvb2xcdFx0XHR1c2VfYWRhcHRpdmVfbW9kO1xuJiM0MztcdC8qIExhc3QgbmVnb3RpYXRlZCBsaW5rIHNwZWVkLCB1c2VkIHRvIGRlcml2ZSB0aGUgYWRhcHRpdmUgdmFsdWUuICovXG4mIzQzO1x0aW50XHRcdFx0bGlua19zcGVlZDtcbiBcdGludFx0XHRcdHJ4X3RzdGFtcF9maWx0ZXI7XG4gfTtcbiBcbkBAIC0xMjA5LDUgJiM0MzsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XG4gaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTtcbiYjNDM7dm9pZCBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBpbnRfbW9kKTtcbiYjNDM7dTMyIGxhbjc0M3hfZ2V0X2ludF9tb2QoaW50IHNwZWVkKTtcbiBcbiAjZW5kaWYgLyogX0xBTjc0M1hfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxNTo1OTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYwppbmRleCA5MTk1NDE5ZWNlZTAyLi43NmI2MGIzMjcxYmU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jCkBAIC0xMzU1LDcgJiM0MzsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oYWRhcHRlci0mZ3Q7cGh5bGluaywgcGF1c2UpOwogfQogCiYjNDM7c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiYjNDM7CQkJCQlzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsCiYjNDM7CQkJCQlzdHJ1Y3Qga2VybmVsX2V0aHRvb2xfY29hbGVzY2UgKmtlcm5lbF9jb2FsLAomIzQzOwkJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQomIzQzO3sKJiM0MzsJc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7CiYjNDM7CiYjNDM7CS8qIFRoZSBkcml2ZXIgcHJvZ3JhbXMgdGhlIHNhbWUgdmFsdWUgaW50byBldmVyeSBwZXItdmVjdG9yCiYjNDM7CSAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVyLCBzbyBSWCBhbmQgVFggbW9kZXJhdGlvbiBzaGFyZSBvbmUgdmFsdWU7CiYjNDM7CSAqIHJlcG9ydCBpdCBmb3IgYm90aC4KJiM0MzsJICovCiYjNDM7CWVjLSZndDtyeF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItJmd0O2ludF9tb2Q7CiYjNDM7CWVjLSZndDt0eF9jb2FsZXNjZV91c2VjcyA9IGFkYXB0ZXItJmd0O2ludF9tb2Q7CiYjNDM7CWVjLSZndDt1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kOwomIzQzOwllYy0mZ3Q7dXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlID0gYWRhcHRlci0mZ3Q7dXNlX2FkYXB0aXZlX21vZDsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LAomIzQzOwkJCQkJc3RydWN0IGV0aHRvb2xfY29hbGVzY2UgKmVjLAomIzQzOwkJCQkJc3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCwKJiM0MzsJCQkJCXN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwomIzQzOwl1MzIgaW50X21vZDsKJiM0MzsKJiM0MzsJLyogUlggYW5kIFRYIHNoYXJlIGEgc2luZ2xlIG1vZGVyYXRpb24gdmFsdWUsIHNvIGFkYXB0aXZlIG1vZGUgbXVzdCBiZQomIzQzOwkgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLgomIzQzOwkgKi8KJiM0MzsJaWYgKGVjLSZndDt1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgIT0gZWMtJmd0O3VzZV9hZGFwdGl2ZV90eF9jb2FsZXNjZSkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywKJiM0MzsJCQkJICAgJiMzNDthZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaCYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChlYy0mZ3Q7dXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKSB7CiYjNDM7CQkvKiBSZXN1bWUgc3BlZWQtYWRhcHRpdmUgbW9kZXJhdGlvbiBhbmQgYXBwbHkgdGhlIHZhbHVlIGZvciB0aGUKJiM0MzsJCSAqIGN1cnJlbnQgbGluayBzcGVlZCByaWdodCBhd2F5LgomIzQzOwkJICovCiYjNDM7CQlhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTsKJiM0MzsJCWludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItJmd0O2xpbmtfc3BlZWQpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJLyogQWxsIHBlci12ZWN0b3IgSU5UX01PRF9DRkcgcmVnaXN0ZXJzIGdldCB0aGUgc2FtZSB2YWx1ZSwgc28KJiM0MzsJCSAqIFJYIGFuZCBUWCBtb2RlcmF0aW9uIGNhbm5vdCBkaWZmZXI7IHJlamVjdCBhIG1pc21hdGNoLgomIzQzOwkJICovCiYjNDM7CQlpZiAoZWMtJmd0O3J4X2NvYWxlc2NlX3VzZWNzICE9IGVjLSZndDt0eF9jb2FsZXNjZV91c2VjcykgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiYjNDM7CQkJCQkgICAmIzM0O3J4LXVzZWNzIGFuZCB0eC11c2VjcyBtdXN0IGJlIGVxdWFsJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwkJaWYgKGVjLSZndDtyeF9jb2FsZXNjZV91c2VjcyAmZ3Q7IExBTjc0M1hfSU5UX01PRF9NQVgpIHsKJiM0MzsJCQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLAomIzQzOwkJCQkJICAgJiMzNDtjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW0mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQl9CiYjNDM7CQlhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kID0gZmFsc2U7CiYjNDM7CQlpbnRfbW9kID0gZWMtJmd0O3J4X2NvYWxlc2NlX3VzZWNzOwomIzQzOwl9CiYjNDM7CiYjNDM7CWxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgaW50X21vZCk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBsYW43NDN4X2V0aHRvb2xfb3BzID0gewomIzQzOwkuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfAomIzQzOwkJCQkgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1JYIHwKJiM0MzsJCQkJICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9UWCwKJiM0MzsJLmdldF9jb2FsZXNjZSA9IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2UsCiYjNDM7CS5zZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlLAogCS5nZXRfZHJ2aW5mbyA9IGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbywKIAkuZ2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX2dldF9tc2dsZXZlbCwKIAkuc2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYwppbmRleCBmMzMzMjQxNzE2MmU2Li45ZTFmYjFlMDIzNDYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jCkBAIC02MjcsMTggJiM0Mzs2MjcsMTIgQEAgc3RhdGljIGludCBsYW43NDN4X2ludHJfb3BlbihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKQogCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfVkVDX0VOX1NFVCwKIAkJCQkgIElOVF9WRUNfRU5fKDApKTsKIAomIzQzOwkvKiBUaGUgaW50ZXJydXB0LXZlY3Rvci10by1tb2RlcmF0aW9uLXRpbWVyIG1hcHBpbmcgaXMgc3RhdGljLCBzbwomIzQzOwkgKiBwcm9ncmFtIGl0IG9uY2UgaGVyZS4gVGhlIHRpbWVyIHZhbHVlcyB0aGVtc2VsdmVzIGFyZSBzZXQgbGF0ZXIKJiM0MzsJICogKHBlciBsaW5rIHNwZWVkKSB2aWEgbGFuNzQzeF9jb25maWdfaW50X21vZCgpLgomIzQzOwkgKi8KIAlpZiAoIShhZGFwdGVyLSZndDtjc3IuZmxhZ3MgJmFtcDsgTEFONzQzWF9DU1JfRkxBR19JU19BMCkpIHsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcwLCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzEsIExBTjc0M1hfSU5UX01PRCk7Ci0JCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgTEFONzQzWF9JTlRfTU9EKTsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkczLCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzQsIExBTjc0M1hfSU5UX01PRCk7Ci0JCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgTEFONzQzWF9JTlRfTU9EKTsKLQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc2LCBMQU43NDNYX0lOVF9NT0QpOwotCQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzcsIExBTjc0M1hfSU5UX01PRCk7CiAJCWlmIChhZGFwdGVyLSZndDtpc19wY2kxMXgxeCkgewotCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpOwotCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBMQU43NDNYX0lOVF9NT0QpOwogCQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9NQVAwLCAweDAwMDA3NjU0KTsKIAkJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7CiAJCX0gZWxzZSB7CkBAIC0zMDM2LDYgJiM0MzszMDMwLDQ4IEBAIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCW5ldGlmX3R4X3N0b3BfYWxsX3F1ZXVlcyhuZXRkZXYpOwogfQogCiYjNDM7LyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqLwomIzQzO3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCkKJiM0Mzt7CiYjNDM7CXN3aXRjaCAoc3BlZWQpIHsKJiM0MzsJY2FzZSBTUEVFRF8yNTAwOgomIzQzOwkJcmV0dXJuIExBTjc0M1hfSU5UX01PRF8yXzVHOwomIzQzOwljYXNlIFNQRUVEXzEwMDA6CiYjNDM7CQlyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzFHOwomIzQzOwljYXNlIFNQRUVEXzEwMDoKJiM0MzsJCXJldHVybiBMQU43NDNYX0lOVF9NT0RfMTAwTTsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXJldHVybiBMQU43NDNYX0lOVF9NT0RfMTBNOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qIFByb2dyYW0gdGhlIGludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGludG8gdGhlIHBlci12ZWN0b3IKJiM0MzsgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvcgomIzQzOyAqIG1hcHBpbmcgKElOVF9NT0RfTUFQKSBpcyBzdGF0aWMgYW5kIGlzIHNldCBvbmNlIGF0IGludGVycnVwdCBvcGVuLgomIzQzOyAqLwomIzQzO3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZCkKJiM0Mzt7CiYjNDM7CS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi8KJiM0MzsJaWYgKGludF9tb2QgPT0gYWRhcHRlci0mZ3Q7aW50X21vZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJaWYgKCEoYWRhcHRlci0mZ3Q7Y3NyLmZsYWdzICZhbXA7IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzAsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBpbnRfbW9kKTsKJiM0MzsJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzMsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBpbnRfbW9kKTsKJiM0MzsJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7CiYjNDM7CQlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzYsIGludF9tb2QpOwomIzQzOwkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBpbnRfbW9kKTsKJiM0MzsJCWlmIChhZGFwdGVyLSZndDtpc19wY2kxMXgxeCkgewomIzQzOwkJCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHOCwgaW50X21vZCk7CiYjNDM7CQkJbGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBpbnRfbW9kKTsKJiM0MzsJCX0KJiM0MzsJCWFkYXB0ZXItJmd0O2ludF9tb2QgPSBpbnRfbW9kOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLAogCQkJCQlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAogCQkJCQl1bnNpZ25lZCBpbnQgbGlua19hbl9tb2RlLApAQCAtMzA2Nyw2ICYjNDM7MzEwMywxNCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsCiAKIAlsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBNQUNfQ1IsIG1hY19jcik7CiAKJiM0MzsJLyogVHJhY2sgdGhlIGxpbmsgc3BlZWQgc28gYSBsYXRlciBldGh0b29sIHJlcXVlc3QgdG8gcmUtZW5hYmxlCiYjNDM7CSAqIGFkYXB0aXZlIG1vZGVyYXRpb24gY2FuIHJlc3RvcmUgdGhlIHNwZWVkLWJhc2VkIHZhbHVlLCBhbmQgcmVmcmVzaAomIzQzOwkgKiB0aGUgdGltZXIgbm93IHdoZW4gYWRhcHRpdmUgbW9kZXJhdGlvbiBpcyBhY3RpdmUuCiYjNDM7CSAqLwomIzQzOwlhZGFwdGVyLSZndDtsaW5rX3NwZWVkID0gc3BlZWQ7CiYjNDM7CWlmIChhZGFwdGVyLSZndDt1c2VfYWRhcHRpdmVfbW9kKQomIzQzOwkJbGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7CiYjNDM7CiAJbGFuNzQzeF9wdHBfdXBkYXRlX2xhdGVuY3koYWRhcHRlciwgc3BlZWQpOwogCiAJLyogRmxvdyBDb250cm9sIG9wZXJhdGlvbiAqLwpAQCAtMzUzMiw2ICYjNDM7MzU3NiwxMyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLAogCWFkYXB0ZXItJmd0O2ludHIuaXJxID0gYWRhcHRlci0mZ3Q7cGRldi0mZ3Q7aXJxOwogCWxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9FTl9DTFIsIDB4RkZGRkZGRkYpOwogCiYjNDM7CS8qIEVuYWJsZSBzcGVlZC1hZGFwdGl2ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBieSBkZWZhdWx0IGFuZCBwcm9ncmFtCiYjNDM7CSAqIHRoZSB0aW1lciBmb3IgdGhlIGRlZmF1bHQgKDFHKSB2YWx1ZSB1bnRpbCB0aGUgbGluayBjb21lcyB1cC4KJiM0MzsJICovCiYjNDM7CWFkYXB0ZXItJmd0O3VzZV9hZGFwdGl2ZV9tb2QgPSB0cnVlOwomIzQzOwlhZGFwdGVyLSZndDtsaW5rX3NwZWVkID0gU1BFRURfVU5LTk9XTjsKJiM0MzsJbGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBMQU43NDNYX0lOVF9NT0RfMUcpOwomIzQzOwogCXJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmgKaW5kZXggMTYwZDk0YTdjZWU2Ni4uOWU2YWM4ZmRiZjM3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaApAQCAtODYxLDcgJiM0Mzs4NjEsMTEgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlcjsKICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTCSg0KQogI2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFMJKDEpCiAjZGVmaW5lIFBDSTExWDFYX1VTRURfVFhfQ0hBTk5FTFMJKDQpCi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRAkoNDAwKQomIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzJfNUcJCSg2NCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xRwkJKDE1MCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xMDBNCQkoMzMwKQomIzQzOyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwTQkJKDMzMCkKJiM0MzsjZGVmaW5lIExBTjc0M1hfSU5UX01PRF9NQVgJCSg4MTkxKQogCiAjaWYgKExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMUyAmZ3Q7IExBTjc0M1hfTUFYX1JYX0NIQU5ORUxTKQogI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTCkBAIC0xMDg4LDYgJiM0MzsxMDkyLDEyIEBAIHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgewogCXBoeV9pbnRlcmZhY2VfdAkJcGh5X2ludGVyZmFjZTsKIAlzdHJ1Y3QgcGh5bGluawkJKnBoeWxpbms7CiAJc3RydWN0IHBoeWxpbmtfY29uZmlnCXBoeWxpbmtfY29uZmlnOwomIzQzOwkvKiBJbnRlcnJ1cHQgbW9kZXJhdGlvbiB0aW1lciB2YWx1ZSBjdXJyZW50bHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi8KJiM0MzsJdTMyCQkJaW50X21vZDsKJiM0MzsJLyogV2hlbiBzZXQsIHRoZSBtb2RlcmF0aW9uIHRpbWVyIHRyYWNrcyB0aGUgbGluayBzcGVlZCBhdXRvbWF0aWNhbGx5LiAqLwomIzQzOwlib29sCQkJdXNlX2FkYXB0aXZlX21vZDsKJiM0MzsJLyogTGFzdCBuZWdvdGlhdGVkIGxpbmsgc3BlZWQsIHVzZWQgdG8gZGVyaXZlIHRoZSBhZGFwdGl2ZSB2YWx1ZS4gKi8KJiM0MzsJaW50CQkJbGlua19zcGVlZDsKIAlpbnQJCQlyeF90c3RhbXBfZmlsdGVyOwogfTsKIApAQCAtMTIwOSw1ICYjNDM7MTIxOSw3IEBAIHZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcik7CiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLAogCQkJCSAgICAgICBib29sIHR4X2VuYWJsZSwgYm9vbCByeF9lbmFibGUpOwogaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTsKJiM0Mzt2b2lkIGxhbjc0M3hfY29uZmlnX2ludF9tb2Qoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIGludF9tb2QpOwomIzQzO3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7CiAKICNlbmRpZiAvKiBfTEFONzQzWF9IICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2ODgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBMQU43NDN4IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgaW1wbGVtZW50aW5nIGV0aHRvb2wgY29hbGVzY2Ugc3VwcG9ydCBmb3IgdGhlIGBsYW43NDN4YCBkcml2ZXIuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgZm9yIHRoZSBNaWNyb2NoaXAgTEFONzQzeCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzaW5jZSB0aGlzIGlzIGEgUENJZSBkZXZpY2UsIGlzIGl0IHJ1bm5pbmcgaW4gUUVNVSwgb3IgaXMgdGhpcyBwYXRjaCBkZWFsaW5nIHdpdGggYWN0dWFsIGhhcmR3YXJlPyBTdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIExBTjc0M3gsIGFzIGZhciBhcyBJIGtub3cuIEJ1dCwgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrIHRoZXNlIHRoaW5ncyB0byBtYWtlIHN1cmUgdGhlIGFzc3VtcHRpb25zIGFyZSB2YWxpZC4gSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgdG8gdmVyaWZ5IHRoaXMgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IFFFTVUtc3BlY2lmaWMgZW11bGF0aW9uIG9wdGlvbnMgZm9yIHRoZSBgbGFuNzQzeGAgSSBtaWdodCBiZSBtaXNzaW5nLiBJJiMzOTtsbCBzdGFydCB3aXRoIGEgYGdyZXBwZXJgIHNlYXJjaCBmb3IgYGxhbjc0M3hgIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTU6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGFuNzQzeCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNDEwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuTUFJTlRBSU5FUlM9MTc0MTA9UzpcdE1haW50YWluZWRcbk1BSU5UQUlORVJTOjE3NDExOkY6XHRkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF8qXG5NQUlOVEFJTkVSUy0xNzQxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU3LVx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlIHdpbGwgYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnOjU4Olx0ICBjYWxsZWQgbGFuNzQzeC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT03PW9iai0kKENPTkZJR19FTkNYMjRKNjAwKSAmIzQzOz0gZW5jeDI0ajYwMC5vIGVuY3gyNGo2MDAtcmVnbWFwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19MQU43NDNYKSAmIzQzOz0gbGFuNzQzeC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZToxMDpsYW43NDN4LW9ianMgOj0gbGFuNzQzeF9tYWluLm8gbGFuNzQzeF9ldGh0b29sLm8gbGFuNzQzeF9wdHAub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL01ha2VmaWxlLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODojaW5jbHVkZSBcJiMzNDtsYW43NDN4X21haW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjk6I2luY2x1ZGUgXCYjMzQ7bGFuNzQzeF9ldGh0b29sLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMC0jaW5jbHVkZSBcdTAwM2NsaW51eC9zY2hlZC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXHQgICAgIGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgb2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcG93ZXJfdXAoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0Olx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgtXHRcdHJlZ192YWx1ZSBcdTAwMjY9IH5PVFBfUFdSX0ROX1BXUkROX05fO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM5Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTItXHRpZiAoIShyZWdfdmFsdWUgXHUwMDI2IE9UUF9QV1JfRE5fUFdSRE5fTl8pKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU0LVx0XHRyZWdfdmFsdWUgfD0gT1RQX1BXUl9ETl9QV1JETl9OXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NTpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BXUl9ETiwgcmVnX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTk6c3RhdGljIHZvaWQgbGFuNzQzeF9vdHBfc2V0X2FkZHJlc3Moc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MC1cdFx0XHRcdCAgICB1MzIgYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI6XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfQUREUl9ISUdILCAoYWRkcmVzcyBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4MDMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfTE9XLCBhZGRyZXNzIFx1MDAyNiAweEZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY6c3RhdGljIHZvaWQgbGFuNzQzeF9vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9GVU5DX0NNRCwgT1RQX0ZVTkNfQ01EX1JFQURfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2OTpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzI6c3RhdGljIGludCBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg0LVx0XHR1ZGVsYXkoMSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODU6XHRcdHJlZ192YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIE9UUF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg2LVx0fSB3aGlsZSAocmVnX3ZhbCBcdTAwMjYgT1RQX1NUQVRVU19CVVNZXyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjkxOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkyLVx0XHRcdCAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTAwOlx0cmV0ID0gbGFuNzQzeF9vdHBfcG93ZXJfdXAoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEwNDpcdHJldCA9IGxhbjc0M3hfb3RwX3dhaXRfdGlsbF9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDgtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTA5Olx0XHRsYW43NDN4X290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExMTpcdFx0bGFuNzQzeF9vdHBfcmVhZF9nbyhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMTI6XHRcdHJldCA9IGxhbjc0M3hfb3RwX3dhaXRfdGlsbF9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMTMtXHRcdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE0LVx0XHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTE1Olx0XHRkYXRhW2ldID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUkVBRF9EQVRBKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMTYtXHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExODpcdGxhbjc0M3hfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTIzOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMjQtXHRcdFx0ICAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzMjpcdHJldCA9IGxhbjc0M3hfb3RwX3Bvd2VyX3VwKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMy1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzY6XHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTM3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQwLVx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQxOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BSR01fTU9ERSwgT1RQX1BSR01fTU9ERV9CWVRFXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE0My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbmd0aDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDQ6XHRcdGxhbjc0M3hfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQ2Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFJHTV9EQVRBLCBkYXRhW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDc6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9UU1RfQ01ELCBPVFBfVFNUX0NNRF9QUkdWUkZZXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTQ4Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfQ01EX0dPLCBPVFBfQ01EX0dPX0dPXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1MDpcdFx0cmV0ID0gbGFuNzQzeF9vdHBfd2FpdF90aWxsX25vdF9idXN5KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE1MS1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1NTpcdGxhbjc0M3hfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTYwOmludCBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2MS1cdFx0XHQgICAgICAgdTE2IHRpbWVvdXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2OC1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlZXRoX3N5c2xvY2tfYWNxdWlyZV9jbnQgPT0gMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE2OTpcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNzAtXHRcdFx0XHRcdCAgU1lTX0xPQ0tfUkVHX0VORVRfU1NfTE9DS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE3MTpcdFx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTcyLVx0XHRcdFx0XHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTk3OnZvaWQgbGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2Uoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMDYtXHRcdGlmIChhZGFwdGVyLVx1MDAzZWV0aF9zeXNsb2NrX2FjcXVpcmVfY250ID09IDApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMDc6XHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwODpcdFx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjA5LVx0XHRcdFx0XHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjE3OnN0YXRpYyB2b2lkIGxhbjc0M3hfaHNfb3RwX3Bvd2VyX3VwKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjE4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyMTpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIyLVx0aWYgKHJlZ192YWx1ZSBcdTAwMjYgT1RQX1BXUl9ETl9QV1JETl9OXykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyMy1cdFx0cmVnX3ZhbHVlIFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjI0Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyNS1cdFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjctXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyODpcdFx0bGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjktXHRcdHVkZWxheSgxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIzMzpzdGF0aWMgdm9pZCBsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIzNzpcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjM4LVx0aWYgKCEocmVnX3ZhbHVlIFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzOS1cdFx0cmVnX3ZhbHVlIHw9IE9UUF9QV1JfRE5fUFdSRE5fTl87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjQwOlx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0MS1cdFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDMtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0NDpcdFx0bGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDUtXHRcdHVkZWxheSgxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0OTpzdGF0aWMgdm9pZCBsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1MC1cdFx0XHRcdCAgICAgICB1MzIgYWRkcmVzcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1MjpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9BRERSX0hJR0gsIChhZGRyZXNzIFx1MDAzZVx1MDAzZSA4KSBcdTAwMjYgMHgwMyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjUzOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0FERFJfTE9XLCBhZGRyZXNzIFx1MDAyNiAweEZGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTQtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTY6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI1Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjU4Olx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0ZVTkNfQ01ELCBPVFBfRlVOQ19DTURfUkVBRF8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1OTpcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNjI6c3RhdGljIGludCBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjYzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI3MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzItXHRcdFx0ICAgICAgIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjgwOlx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4MS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyODQ6XHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjg2Olx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODctXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkwOlx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGxlbmd0aDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTM6XHRcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjk0LVx0XHRcdFx0XHRcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyOTg6XHRcdGxhbjc0M3hfaHNfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCAmIzQzOyBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzAwOlx0XHRsYW43NDN4X2hzX290cF9yZWFkX2dvKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwMTpcdFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDItXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDU6XHRcdGRhdGFbaV0gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhTX09UUF9SRUFEX0RBVEEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDc6XHRcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwOC1cdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzEwOlx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMTEtXHRcdFx0XHRcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMxNS1wb3dlcl9kb3duOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMxNjpcdGxhbjc0M3hfaHNfb3RwX3Bvd2VyX2Rvd24oYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzE3Olx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzIyOnN0YXRpYyBpbnQgbGFuNzQzeF9oc19vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjMtXHRcdFx0XHR1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzMTpcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzItXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzM1Olx0bGFuNzQzeF9oc19vdHBfcG93ZXJfdXAoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzNzpcdHJldCA9IGxhbjc0M3hfaHNfb3RwX2NtZF9jbXBsdF9jaGsoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQxLVx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQyOlx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fTU9ERSwgT1RQX1BSR01fTU9ERV9CWVRFXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQ3Olx0XHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0OC1cdFx0XHRcdFx0XHQgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzUyOlx0XHRsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgJiM0MzsgaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1NDpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzU1Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfVFNUX0NNRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTYtXHRcdFx0XHQgIE9UUF9UU1RfQ01EX1BSR1ZSRllfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTc6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzU5Olx0XHRyZXQgPSBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2MC1cdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM2MzpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY0LVx0fVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjY6XHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY3LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzcwLXBvd2VyX2Rvd246XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzcxOlx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzI6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzc6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93YWl0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgyLVx0ZG8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM4MzpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MDA6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV9jb25maXJtX25vdF9idXN5KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDAxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDA1LVx0ZG8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQwNjpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MTg6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDE5LVx0XHRcdCAgICAgICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQyODpcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDI5LVx0aWYgKHJldHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM0LVx0XHR2YWwgfD0gKG9mZnNldCBcdTAwMjYgRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDM1Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Mzc6XHRcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM4LVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDQxOlx0XHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEUyUF9EQVRBKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDItXHRcdGRhdGFbaV0gPSB2YWwgXHUwMDI2IDB4RkY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NDk6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ1MC1cdFx0XHRcdHUzMiBvZmZzZXQsIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDU5Olx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fY29uZmlybV9ub3RfYnVzeShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NjAtXHRpZiAocmV0dmFsKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NjQtXHR2YWwgPSBFMlBfQ01EX0VQQ19CVVNZXyB8IEUyUF9DTURfRVBDX0NNRF9FV0VOXztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NjU6XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Njc6XHRyZXR2YWwgPSBsYW43NDN4X2VlcHJvbV93YWl0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2OC1cdGlmIChyZXR2YWwgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3My1cdFx0dmFsID0gZGF0YVtpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzQ6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEUyUF9EQVRBLCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDc4LVx0XHR2YWwgfD0gKG9mZnNldCBcdTAwMjYgRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDc5Olx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFMlBfQ01ELCB2YWwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0ODE6XHRcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDgyLVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDkxOnN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ5Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUwMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MDE6c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTAyLVx0XHRcdFx0ICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUxMTpcdHJldHZhbCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE1Olx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTY6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MjAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTIxOlx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUyMi1cdFx0XHRcdFx0XHQgICAgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MjctXHRcdHZhbCB8PSAob2Zmc2V0IFx1MDAyNiBIU19FMlBfQ01EX0VQQ19BRERSX01BU0tfKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mjg6XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX0UyUF9DTUQsIHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTI5Olx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX2VlcHJvbV9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzMC1cdFx0aWYgKHJldHZhbCBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzMTpcdFx0XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzItXHRcdFx0cmV0dXJuIHJldHZhbDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzNTpcdFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19FMlBfREFUQSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzNzpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTQ2OnN0YXRpYyBpbnQgbGFuNzQzeF9oc19lZXByb21fd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDctXHRcdFx0XHQgICB1MzIgb2Zmc2V0LCB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU1NjpcdHJldHZhbCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTctXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYwOlx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjE6XHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZW5ndGg7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTY2Olx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU2Ny1cdFx0XHRcdFx0XHQgICAgTE9DS19USU1FT1VUX01BWF9DTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzItXHRcdHZhbCA9IGRhdGFbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTczOlx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfREFUQSwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU3Ny1cdFx0dmFsIHw9IChvZmZzZXQgXHUwMDI2IEhTX0UyUF9DTURfRVBDX0FERFJfTUFTS18pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU3ODpcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfRTJQX0NNRCwgdmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgwOlx0XHRyZXR2YWwgPSBsYW43NDN4X2hzX2VlcHJvbV9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU4MTpcdFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTgyLVx0XHRpZiAocmV0dmFsIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTkxOnN0YXRpYyB2b2lkIGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5Mi1cdFx0XHRcdFx0c3RydWN0IGV0aHRvb2xfZHJ2aW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU5NDpcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMTpzdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMzpcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYwNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwODpzdGF0aWMgdm9pZCBsYW43NDN4X2V0aHRvb2xfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA5LVx0XHRcdFx0XHQgdTMyIG1zZ2xldmVsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYxMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjExOlx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjEyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjE2OnN0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX2dldF9lZXByb21fbGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MTg6XHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MjY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyNy1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWUsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI5Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMwLVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzMy1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM0Olx0XHRcdHJldCA9IGxhbjc0M3hfaHNfb3RwX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzNS1cdFx0XHRcdFx0XHQgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjM2LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM3Olx0XHRcdHJldCA9IGxhbjc0M3hfb3RwX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzOC1cdFx0XHRcdFx0ICAgICAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0MC1cdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjQxOlx0XHRcdHJldCA9IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0Mi1cdFx0XHRcdFx0XHQgICAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjQzLVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjQ0Olx0XHRcdHJldCA9IGxhbjc0M3hfZWVwcm9tX3JlYWQoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0NS1cdFx0XHRcdFx0XHQgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NTE6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Mi1cdFx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2VlcHJvbSAqZWUsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU0Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjU1LVx0aW50IHJldCA9IC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2MC1cdFx0XHRpZiAoYWRhcHRlci1cdTAwM2Vpc19wY2kxMXgxeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NjE6XHRcdFx0XHRyZXQgPSBsYW43NDN4X2hzX290cF93cml0ZShhZGFwdGVyLCBlZS1cdTAwM2VvZmZzZXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYyLVx0XHRcdFx0XHRcdFx0ICAgZWUtXHUwMDNlbGVuLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjMtXHRcdFx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2NDpcdFx0XHRcdHJldCA9IGxhbjc0M3hfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVx1MDAzZW9mZnNldCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjUtXHRcdFx0XHRcdFx0XHRlZS1cdTAwM2VsZW4sIGRhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXHRcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjcwOlx0XHRcdFx0cmV0ID0gbGFuNzQzeF9oc19lZXByb21fd3JpdGUoYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NzEtXHRcdFx0XHRcdFx0XHQgICAgICBlZS1cdTAwM2VvZmZzZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3My1cdFx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Njc0Olx0XHRcdFx0cmV0ID0gbGFuNzQzeF9lZXByb21fd3JpdGUoYWRhcHRlciwgZWUtXHUwMDNlb2Zmc2V0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3NS1cdFx0XHRcdFx0XHRcdCAgIGVlLVx1MDAzZWxlbiwgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODI6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9zZXQwX2h3X2NudF9zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODMtXHRcJiMzNDtSWCBGQ1MgRXJyb3JzXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzA2OnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfc2V0MV9zd19jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzA3LVx0XCYjMzQ7UlggUXVldWUgMCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3MTM6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF90eF9xdWV1ZV9jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzE0LVx0XCYjMzQ7VFggUXVldWUgMCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3MjE6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9zZXQyX2h3X2NudF9zdHJpbmdzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjItXHRcJiMzNDtSWCBUb3RhbCBGcmFtZXNcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTc1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3NTQ6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDBfaHdfY250X2FkZHJbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NTUtXHRTVEFUX1JYX0ZDU19FUlJPUlMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTc3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3Nzg6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDJfaHdfY250X2FkZHJbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzktXHRTVEFUX1JYX1RPVEFMX0ZSQU1FUyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxMTpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3ByaXZfZmxhZ3Nfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEyLVx0XCYjMzQ7T1RQX0FDQ0VTU1wmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxNTpzdGF0aWMgdm9pZCBsYW43NDN4X2V0aHRvb2xfZ2V0X3N0cmluZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTYtXHRcdFx0XHRcdHUzMiBzdHJpbmdzZXQsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODE4Olx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE5LVxuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE1OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTAxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hgLiBJdCYjMzk7cyBhIFBDSWUgZGV2aWNlLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBRRU1VIGVtdWxhdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkmIzM5O2QgZG8gaXMgY2hlY2sgdGhlIFFFTVUgc291cmNlIChgaHcvbmV0L2ApIGZvciBhbnkgc2lnbiBvZiBgbGFuNzQzeGAgZW11bGF0aW9uLCBidXQgSSBkb24mIzM5O3QgaGF2ZSB0aGF0IHNvdXJjZSBoYW5keSByaWdodCBub3cuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJiMzOTt0IGZ1enogcGh5c2ljYWwgUENJZSBkZXZpY2VzIHVubGVzcyB0aGV5IGFyZSBlbXVsYXRlZCBvciBoYXZlIHNvbWUgc3BlY2lhbCBzZXR1cC4gV2hpbGUgaXQgZG9lcyBmdXp6IFVTQiBhbmQgb3RoZXIgdGhpbmdzLCBQQ0llIHJlcXVpcmVzIGVpdGhlciB2aXJ0dWFsaXphdGlvbiBvciBlbXVsYXRpb24uCgpIYW5nIG9uLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHRoZSBMQU43NDNYLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQmIzM5O3MgY3JpdGVyaWE6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpBbHJpZ2h0LCBzbyBpcyB0aGUgTEFONzQzWCBhICYjMzQ7dmVuZG9yLXNwZWNpZmljJiMzNDsgUENJZSBkcml2ZXI/IFllcywgaXQmIzM5O3MgYSBNaWNyb2NoaXAgTEFONzQzeCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIsIHNvIHRoYXQgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgdmVuZG9yLXNwZWNpZmljIFBDSSBkcml2ZXIuIFRoaXMgcG9pbnRzIHN0cm9uZ2x5IHRvd2FyZHMgaXQgbmVlZGluZyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgbm90IGJlaW5nIGVhc2lseSBmdXp6YWJsZS4gSSBuZWVkIHRvIGNvbmZpcm0gaXQmIzM5O3MgYSBQQ0kgZHJpdmVyIHRvIGJlIGNlcnRhaW4sIHRob3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTU4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoYXQgdGhvdWdodCBwcm9jZXNzIGFuZCBzdW1tYXJpemUgaXQgZnJvbSBhIGZpcnN0LXBlcnNvbiBwZXJzcGVjdGl2ZSwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLiBIZXJlJiMzOTtzIG15IHRha2U6CgoqKlRoZSBWZXJpZmljYXRpb24gUHJvY2VzcyoqCgpIbW0sIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugb3IganVtcCB0byBhIGNvbmNsdXNpb24sIEkgbmVlZCB0byBwYXVzZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoZSB1bmRlcmx5aW5nIGJhc2lzIG9mIHRoaXMuIEl0JiMzOTtzIGFib3V0IGRhdGEgaW50ZWdyaXR5LiBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBob3cgZXZlcnl0aGluZyBpcyBjb25uZWN0ZWQuIEZpcnN0LCBJIGhhdmUgdG8gY2hlY2sgaG93IHNvbWV0aGluZyBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtIC0gd2hldGhlciBpdCBpcyB0aGUgZGF0YXNldCwgdGhlIHBhcmFtZXRlcnMsIHRoZSBjb2RlIG9yIHRoZSBtb2RlbC4gVW5kZXJzdGFuZGluZyBpdHMgcmVnaXN0cmF0aW9uIHByb3ZpZGVzIG5lY2Vzc2FyeSBjb250ZXh0IGJlZm9yZSBhbnkgcmVzcG9uc2UgY2FuIGJlIGZvcm11bGF0ZWQuIEkgbmVlZCB0byBlbnN1cmUgYSBzb2xpZCBmb3VuZGF0aW9uIGJlZm9yZSBJIHByb2NlZWQuIFRoaXMgcHJlbGltaW5hcnkgY2hlY2sgaXMgZnVuZGFtZW50YWw7IGl04oCZcyBhYm91dCB2ZXJpZnlpbmcgdGhlIGRhdGEmIzM5O3MgcHJvcGVyIGltcGxlbWVudGF0aW9uLiBBIGhhc3R5IGFzc3VtcHRpb24gY291bGQgYmUgZGlzYXN0cm91cy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkga25vdyAqZXhhY3RseSogd2hhdCBJJiMzOTttIGRlYWxpbmcgd2l0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz00MDQ0PU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsYW43NDN4X3BjaWRldl90YmwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDA0NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbGFuNzQzeF9wY2lkZXZfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNDctXHQubmFtZSAgICAgPSBEUklWRVJfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzo0MDU3Om1vZHVsZV9wY2lfZHJpdmVyKGxhbjc0M3hfcGNpZGV2X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxNjowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzA3NgoJCQkJCQkJb3V0cHV0OiA4NwoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7WWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBQQ0kgZHJpdmVyLiYjMzQ7IFRoZSBuZXh0IHF1ZXN0aW9uIGlzIGFsd2F5cywgJiMzNDtJcyBpdCBlbXVsYXRlZCBpbiBRRU1VPyYjMzQ7IFN0YW5kYXJkIFFFTVUsIGluIGl0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGVtdWxhdGVzIGEgYnVuY2ggb2YgbmV0d29yayBjYXJkczogdGhlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgaWdiLCB0dWxpcCwgYW5kIHNvIG9uLCBidXQgbm90IHRoZSBNaWNyb2NoaXAgTEFONzQzeC4gU28sIHJpZ2h0IGF3YXksIHRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhhdCB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgYSAqcGh5c2ljYWwqIFBDSWUgaGFyZHdhcmUgY2FyZCwgbm90IHNvbWV0aGluZyBlbXVsYXRlZCB3aXRoaW4gUUVNVS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIHF1aWNrbHkgZG91YmxlLWNoZWNraW5nIOKAkyBubyBjaGFuY2UgaXQmIzM5O3MgYSBwbGF0Zm9ybSBvciBVU0IgZGV2aWNlIG1hc3F1ZXJhZGluZyBhcyBzb21ldGhpbmcgZWxzZS4gTm8sIHRoZSB1c2Ugb2YgYG1vZHVsZV9wY2lfZHJpdmVyYCBhbmQgYGxhbjc0M3hfcGNpZGV2X2RyaXZlcmAgY29uY2x1c2l2ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGEgUENJIGRldmljZS4gU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UgYW5kIGl0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBRRU1VLCB0aGVuIGl0IGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIGFueSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gQWxsIGNvZGUgcGF0aHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBUaGF0IG1lYW5zLCBhcyBhIGZpcnN0IHBhc3MsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCkxldCBtZSBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlIEkmIzM5O20gaGl0dGluZyB0aGUgcmlnaHQgY3JpdGVyaWEuIEFoLCBoZXJlIGl0IGlzOiAmIzM0O1JldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCk9rYXksIHRoZSBMQU43NDN4IGlzIGEgTWljcm9jaGlwIFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBJdCYjMzk7cyBleHBsaWNpdGx5IGRlc2lnbmVkIGZvciBhICpwaHlzaWNhbCogUENJZSBjYXJkLiBJdCBmaXRzIHRoZSBkZXNjcmlwdGlvbiBwZXJmZWN0bHkuIEkmIzM5O20gY29uZmlkZW50IHRoYXQgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSBjb3JyZWN0IGRlY2lzaW9uIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDE2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NC4xODE4MTAwNTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDQzNTcxOTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NC4xODE4MTc3OTZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjgyMDU1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTU6NTk6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXFxuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmNcXG5AQCAtMTM1NSw3ICsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKGFkYXB0ZXItXFx1MDAzZXBoeWxpbmssIHBhdXNlKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcXG4rXFx0XFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbit7XFxuK1xcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbitcXG4rXFx0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcXG4rXFx0ICogSU5UX01PRF9DRkcgcmVnaXN0ZXIsIHNvIFJYIGFuZCBUWCBtb2RlcmF0aW9uIHNoYXJlIG9uZSB2YWx1ZTtcXG4rXFx0ICogcmVwb3J0IGl0IGZvciBib3RoLlxcbitcXHQgKi9cXG4rXFx0ZWMtXFx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cXHUwMDNlaW50X21vZDtcXG4rXFx0ZWMtXFx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cXHUwMDNlaW50X21vZDtcXG4rXFx0ZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSA9IGFkYXB0ZXItXFx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XFxuK1xcdGVjLVxcdTAwM2V1c2VfYWRhcHRpdmVfdHhfY29hbGVzY2UgPSBhZGFwdGVyLVxcdTAwM2V1c2VfYWRhcHRpdmVfbW9kO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuK3N0YXRpYyBpbnQgbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSAqZWMsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBrZXJuZWxfZXRodG9vbF9jb2FsZXNjZSAqa2VybmVsX2NvYWwsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4re1xcbitcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4rXFx0dTMyIGludF9tb2Q7XFxuK1xcbitcXHQvKiBSWCBhbmQgVFggc2hhcmUgYSBzaW5nbGUgbW9kZXJhdGlvbiB2YWx1ZSwgc28gYWRhcHRpdmUgbW9kZSBtdXN0IGJlXFxuK1xcdCAqIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGJvdGggdG9nZXRoZXIuXFxuK1xcdCAqL1xcbitcXHRpZiAoZWMtXFx1MDAzZXVzZV9hZGFwdGl2ZV9yeF9jb2FsZXNjZSAhPSBlYy1cXHUwMDNldXNlX2FkYXB0aXZlX3R4X2NvYWxlc2NlKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdCAgIFxcXCJhZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaFxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGVjLVxcdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UpIHtcXG4rXFx0XFx0LyogUmVzdW1lIHNwZWVkLWFkYXB0aXZlIG1vZGVyYXRpb24gYW5kIGFwcGx5IHRoZSB2YWx1ZSBmb3IgdGhlXFxuK1xcdFxcdCAqIGN1cnJlbnQgbGluayBzcGVlZCByaWdodCBhd2F5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0YWRhcHRlci1cXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IHRydWU7XFxuK1xcdFxcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXFx1MDAzZWxpbmtfc3BlZWQpO1xcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvKiBBbGwgcGVyLXZlY3RvciBJTlRfTU9EX0NGRyByZWdpc3RlcnMgZ2V0IHRoZSBzYW1lIHZhbHVlLCBzb1xcbitcXHRcXHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChlYy1cXHUwMDNlcnhfY29hbGVzY2VfdXNlY3MgIT0gZWMtXFx1MDAzZXR4X2NvYWxlc2NlX3VzZWNzKSB7XFxuK1xcdFxcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJyeC11c2VjcyBhbmQgdHgtdXNlY3MgbXVzdCBiZSBlcXVhbFxcXCIpO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbitcXHRcXHRpZiAoZWMtXFx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFxcdTAwM2UgTEFONzQzWF9JTlRfTU9EX01BWCkge1xcbitcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbitcXHRcXHRcXHRcXHRcXHQgICBcXFwiY29hbGVzY2UgdmFsdWUgZXhjZWVkcyBtYXhpbXVtXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFkYXB0ZXItXFx1MDAzZXVzZV9hZGFwdGl2ZV9tb2QgPSBmYWxzZTtcXG4rXFx0XFx0aW50X21vZCA9IGVjLVxcdTAwM2VyeF9jb2FsZXNjZV91c2VjcztcXG4rXFx0fVxcbitcXG4rXFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBpbnRfbW9kKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbGFuNzQzeF9ldGh0b29sX29wcyA9IHtcXG4rXFx0LnN1cHBvcnRlZF9jb2FsZXNjZV9wYXJhbXMgPSBFVEhUT09MX0NPQUxFU0NFX1VTRUNTIHxcXG4rXFx0XFx0XFx0XFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9SWCB8XFxuK1xcdFxcdFxcdFxcdCAgICAgRVRIVE9PTF9DT0FMRVNDRV9VU0VfQURBUFRJVkVfVFgsXFxuK1xcdC5nZXRfY29hbGVzY2UgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlLFxcbitcXHQuc2V0X2NvYWxlc2NlID0gbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZSxcXG4gXFx0LmdldF9kcnZpbmZvID0gbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvLFxcbiBcXHQuZ2V0X21zZ2xldmVsID0gbGFuNzQzeF9ldGh0b29sX2dldF9tc2dsZXZlbCxcXG4gXFx0LnNldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9zZXRfbXNnbGV2ZWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1xcbmluZGV4IGYzMzMyNDE3MTYyZTYuLjllMWZiMWUwMjM0NjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXFxuQEAgLTYyNywxOCArNjI3LDEyIEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9pbnRyX29wZW4oc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX1ZFQ19FTl9TRVQsXFxuIFxcdFxcdFxcdFxcdCAgSU5UX1ZFQ19FTl8oMCkpO1xcbiBcXG4rXFx0LyogVGhlIGludGVycnVwdC12ZWN0b3ItdG8tbW9kZXJhdGlvbi10aW1lciBtYXBwaW5nIGlzIHN0YXRpYywgc29cXG4rXFx0ICogcHJvZ3JhbSBpdCBvbmNlIGhlcmUuIFRoZSB0aW1lciB2YWx1ZXMgdGhlbXNlbHZlcyBhcmUgc2V0IGxhdGVyXFxuK1xcdCAqIChwZXIgbGluayBzcGVlZCkgdmlhIGxhbjc0M3hfY29uZmlnX2ludF9tb2QoKS5cXG4rXFx0ICovXFxuIFxcdGlmICghKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcxLCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzIsIExBTjc0M1hfSU5UX01PRCk7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc0LCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzUsIExBTjc0M1hfSU5UX01PRCk7XFxuLVxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgTEFONzQzWF9JTlRfTU9EKTtcXG4tXFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc3LCBMQU43NDNYX0lOVF9NT0QpO1xcbiBcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpIHtcXG4tXFx0XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBMQU43NDNYX0lOVF9NT0QpO1xcbi1cXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIExBTjc0M1hfSU5UX01PRCk7XFxuIFxcdFxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XFxuIFxcdFxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMSwgMHgwMDAwMzIxMCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuQEAgLTMwMzYsNiArMzAzMCw0OCBAQCBzdGF0aWMgdm9pZCBsYW43NDN4X3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0bmV0aWZfdHhfc3RvcF9hbGxfcXVldWVzKG5ldGRldik7XFxuIH1cXG4gXFxuKy8qIE1hcCBhIGxpbmsgc3BlZWQgdG8gdGhlIGludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIHRvIHVzZS4gKi9cXG4rdTMyIGxhbjc0M3hfZ2V0X2ludF9tb2QoaW50IHNwZWVkKVxcbit7XFxuK1xcdHN3aXRjaCAoc3BlZWQpIHtcXG4rXFx0Y2FzZSBTUEVFRF8yNTAwOlxcbitcXHRcXHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzJfNUc7XFxuK1xcdGNhc2UgU1BFRURfMTAwMDpcXG4rXFx0XFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xRztcXG4rXFx0Y2FzZSBTUEVFRF8xMDA6XFxuK1xcdFxcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMTAwTTtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xME07XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxcbisgKiBJTlRfTU9EX0NGRyByZWdpc3RlcnMuIE9ubHkgdGhlIHRpbWVyIHZhbHVlIGlzIHdyaXR0ZW4gaGVyZTsgdGhlIHZlY3RvclxcbisgKiBtYXBwaW5nIChJTlRfTU9EX01BUCkgaXMgc3RhdGljIGFuZCBpcyBzZXQgb25jZSBhdCBpbnRlcnJ1cHQgb3Blbi5cXG4rICovXFxuK3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZClcXG4re1xcbitcXHQvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IHByb2dyYW1tZWQgaW4gaGFyZHdhcmUuICovXFxuK1xcdGlmIChpbnRfbW9kID09IGFkYXB0ZXItXFx1MDAzZWludF9tb2QpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGlmICghKGFkYXB0ZXItXFx1MDAzZWNzci5mbGFncyBcXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgaW50X21vZCk7XFxuK1xcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XFxuK1xcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeCkge1xcbitcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIGludF9tb2QpO1xcbitcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGFkYXB0ZXItXFx1MDAzZWludF9tb2QgPSBpbnRfbW9kO1xcbitcXHR9XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4gXFx0XFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxpbmtfYW5fbW9kZSxcXG5AQCAtMzA2Nyw2ICszMTAzLDE0IEBAIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4gXFxuIFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE1BQ19DUiwgbWFjX2NyKTtcXG4gXFxuK1xcdC8qIFRyYWNrIHRoZSBsaW5rIHNwZWVkIHNvIGEgbGF0ZXIgZXRodG9vbCByZXF1ZXN0IHRvIHJlLWVuYWJsZVxcbitcXHQgKiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGNhbiByZXN0b3JlIHRoZSBzcGVlZC1iYXNlZCB2YWx1ZSwgYW5kIHJlZnJlc2hcXG4rXFx0ICogdGhlIHRpbWVyIG5vdyB3aGVuIGFkYXB0aXZlIG1vZGVyYXRpb24gaXMgYWN0aXZlLlxcbitcXHQgKi9cXG4rXFx0YWRhcHRlci1cXHUwMDNlbGlua19zcGVlZCA9IHNwZWVkO1xcbitcXHRpZiAoYWRhcHRlci1cXHUwMDNldXNlX2FkYXB0aXZlX21vZClcXG4rXFx0XFx0bGFuNzQzeF9jb25maWdfaW50X21vZChhZGFwdGVyLCBsYW43NDN4X2dldF9pbnRfbW9kKHNwZWVkKSk7XFxuK1xcbiBcXHRsYW43NDN4X3B0cF91cGRhdGVfbGF0ZW5jeShhZGFwdGVyLCBzcGVlZCk7XFxuIFxcbiBcXHQvKiBGbG93IENvbnRyb2wgb3BlcmF0aW9uICovXFxuQEAgLTM1MzIsNiArMzU3NiwxMyBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbiBcXHRhZGFwdGVyLVxcdTAwM2VpbnRyLmlycSA9IGFkYXB0ZXItXFx1MDAzZXBkZXYtXFx1MDAzZWlycTtcXG4gXFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XFxuIFxcbitcXHQvKiBFbmFibGUgc3BlZWQtYWRhcHRpdmUgaW50ZXJydXB0IG1vZGVyYXRpb24gYnkgZGVmYXVsdCBhbmQgcHJvZ3JhbVxcbitcXHQgKiB0aGUgdGltZXIgZm9yIHRoZSBkZWZhdWx0ICgxRykgdmFsdWUgdW50aWwgdGhlIGxpbmsgY29tZXMgdXAuXFxuK1xcdCAqL1xcbitcXHRhZGFwdGVyLVxcdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gdHJ1ZTtcXG4rXFx0YWRhcHRlci1cXHUwMDNlbGlua19zcGVlZCA9IFNQRUVEX1VOS05PV047XFxuK1xcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcXG4rXFxuIFxcdHJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcXG5pbmRleCAxNjBkOTRhN2NlZTY2Li45ZTZhYzhmZGJmMzdiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxcbkBAIC04NjEsNyArODYxLDExIEBAIHN0cnVjdCBsYW43NDN4X2FkYXB0ZXI7XFxuICNkZWZpbmUgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFx0KDQpXFxuICNkZWZpbmUgTEFONzQzWF9VU0VEX1RYX0NIQU5ORUxTXFx0KDEpXFxuICNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1xcdCg0KVxcbi0jZGVmaW5lIExBTjc0M1hfSU5UX01PRFxcdCg0MDApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzJfNUdcXHRcXHQoNjQpXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzFHXFx0XFx0KDE1MClcXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTAwTVxcdFxcdCgzMzApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EXzEwTVxcdFxcdCgzMzApXFxuKyNkZWZpbmUgTEFONzQzWF9JTlRfTU9EX01BWFxcdFxcdCg4MTkxKVxcbiBcXG4gI2lmIChMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFMgXFx1MDAzZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMUylcXG4gI2Vycm9yIEludmFsaWQgTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTXFxuQEAgLTEwODgsNiArMTA5MiwxMiBAQCBzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyIHtcXG4gXFx0cGh5X2ludGVyZmFjZV90XFx0XFx0cGh5X2ludGVyZmFjZTtcXG4gXFx0c3RydWN0IHBoeWxpbmtcXHRcXHQqcGh5bGluaztcXG4gXFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXFx0cGh5bGlua19jb25maWc7XFxuK1xcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xcbitcXHR1MzJcXHRcXHRcXHRpbnRfbW9kO1xcbitcXHQvKiBXaGVuIHNldCwgdGhlIG1vZGVyYXRpb24gdGltZXIgdHJhY2tzIHRoZSBsaW5rIHNwZWVkIGF1dG9tYXRpY2FsbHkuICovXFxuK1xcdGJvb2xcXHRcXHRcXHR1c2VfYWRhcHRpdmVfbW9kO1xcbitcXHQvKiBMYXN0IG5lZ290aWF0ZWQgbGluayBzcGVlZCwgdXNlZCB0byBkZXJpdmUgdGhlIGFkYXB0aXZlIHZhbHVlLiAqL1xcbitcXHRpbnRcXHRcXHRcXHRsaW5rX3NwZWVkO1xcbiBcXHRpbnRcXHRcXHRcXHRyeF90c3RhbXBfZmlsdGVyO1xcbiB9O1xcbiBcXG5AQCAtMTIwOSw1ICsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcXG4gdm9pZCBsYW43NDN4X21hY19mbG93X2N0cmxfc2V0X2VuYWJsZXMoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XFxuIGludCBsYW43NDN4X3NnbWlpX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTggbW1kLCB1MTYgYWRkcik7XFxuK3ZvaWQgbGFuNzQzeF9jb25maWdfaW50X21vZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1MzIgaW50X21vZCk7XFxuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7XFxuIFxcbiAjZW5kaWYgLyogX0xBTjc0M1hfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxNTo1OTo0NS41NTA2Mjg3MTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTA2Njg5MjQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMGRkZGM2YTg0MTE1ODEyODViYmI2ZGZmNTliN2I5NzA4NTc1MmEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxNTo1OTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuaW5kZXggOTE5NTQxOWVjZWUwMi4uNzZiNjBiMzI3MWJlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jXG5AQCAtMTM1NSw3ICsxMzU1LDc3IEBAIHN0YXRpYyBpbnQgbGFuNzQzeF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShhZGFwdGVyLVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbiB9XG4gXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbitcdFx0XHRcdFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcbitcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuK1xuK1x0LyogVGhlIGRyaXZlciBwcm9ncmFtcyB0aGUgc2FtZSB2YWx1ZSBpbnRvIGV2ZXJ5IHBlci12ZWN0b3JcbitcdCAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVyLCBzbyBSWCBhbmQgVFggbW9kZXJhdGlvbiBzaGFyZSBvbmUgdmFsdWU7XG4rXHQgKiByZXBvcnQgaXQgZm9yIGJvdGguXG4rXHQgKi9cbitcdGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzID0gYWRhcHRlci1cdTAwM2VpbnRfbW9kO1xuK1x0ZWMtXHUwMDNldHhfY29hbGVzY2VfdXNlY3MgPSBhZGFwdGVyLVx1MDAzZWludF9tb2Q7XG4rXHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfcnhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4rXHRlYy1cdTAwM2V1c2VfYWRhcHRpdmVfdHhfY29hbGVzY2UgPSBhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2Q7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfc2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4rXHRcdFx0XHRcdHN0cnVjdCBldGh0b29sX2NvYWxlc2NlICplYyxcbitcdFx0XHRcdFx0c3RydWN0IGtlcm5lbF9ldGh0b29sX2NvYWxlc2NlICprZXJuZWxfY29hbCxcbitcdFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuK3tcbitcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuK1x0dTMyIGludF9tb2Q7XG4rXG4rXHQvKiBSWCBhbmQgVFggc2hhcmUgYSBzaW5nbGUgbW9kZXJhdGlvbiB2YWx1ZSwgc28gYWRhcHRpdmUgbW9kZSBtdXN0IGJlXG4rXHQgKiBlbmFibGVkIG9yIGRpc2FibGVkIGZvciBib3RoIHRvZ2V0aGVyLlxuK1x0ICovXG4rXHRpZiAoZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlICE9IGVjLVx1MDAzZXVzZV9hZGFwdGl2ZV90eF9jb2FsZXNjZSkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJhZGFwdGl2ZS1yeCBhbmQgYWRhcHRpdmUtdHggbXVzdCBtYXRjaFwiKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRpZiAoZWMtXHUwMDNldXNlX2FkYXB0aXZlX3J4X2NvYWxlc2NlKSB7XG4rXHRcdC8qIFJlc3VtZSBzcGVlZC1hZGFwdGl2ZSBtb2RlcmF0aW9uIGFuZCBhcHBseSB0aGUgdmFsdWUgZm9yIHRoZVxuK1x0XHQgKiBjdXJyZW50IGxpbmsgc3BlZWQgcmlnaHQgYXdheS5cbitcdFx0ICovXG4rXHRcdGFkYXB0ZXItXHUwMDNldXNlX2FkYXB0aXZlX21vZCA9IHRydWU7XG4rXHRcdGludF9tb2QgPSBsYW43NDN4X2dldF9pbnRfbW9kKGFkYXB0ZXItXHUwMDNlbGlua19zcGVlZCk7XG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBBbGwgcGVyLXZlY3RvciBJTlRfTU9EX0NGRyByZWdpc3RlcnMgZ2V0IHRoZSBzYW1lIHZhbHVlLCBzb1xuK1x0XHQgKiBSWCBhbmQgVFggbW9kZXJhdGlvbiBjYW5ub3QgZGlmZmVyOyByZWplY3QgYSBtaXNtYXRjaC5cbitcdFx0ICovXG4rXHRcdGlmIChlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcyAhPSBlYy1cdTAwM2V0eF9jb2FsZXNjZV91c2Vjcykge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssXG4rXHRcdFx0XHRcdCAgIFwicngtdXNlY3MgYW5kIHR4LXVzZWNzIG11c3QgYmUgZXF1YWxcIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdFx0aWYgKGVjLVx1MDAzZXJ4X2NvYWxlc2NlX3VzZWNzIFx1MDAzZSBMQU43NDNYX0lOVF9NT0RfTUFYKSB7XG4rXHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbitcdFx0XHRcdFx0ICAgXCJjb2FsZXNjZSB2YWx1ZSBleGNlZWRzIG1heGltdW1cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdFx0YWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kID0gZmFsc2U7XG4rXHRcdGludF9tb2QgPSBlYy1cdTAwM2VyeF9jb2FsZXNjZV91c2VjcztcbitcdH1cbitcbitcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgaW50X21vZCk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGxhbjc0M3hfZXRodG9vbF9vcHMgPSB7XG4rXHQuc3VwcG9ydGVkX2NvYWxlc2NlX3BhcmFtcyA9IEVUSFRPT0xfQ09BTEVTQ0VfVVNFQ1MgfFxuK1x0XHRcdFx0ICAgICBFVEhUT09MX0NPQUxFU0NFX1VTRV9BREFQVElWRV9SWCB8XG4rXHRcdFx0XHQgICAgIEVUSFRPT0xfQ09BTEVTQ0VfVVNFX0FEQVBUSVZFX1RYLFxuK1x0LmdldF9jb2FsZXNjZSA9IGxhbjc0M3hfZXRodG9vbF9nZXRfY29hbGVzY2UsXG4rXHQuc2V0X2NvYWxlc2NlID0gbGFuNzQzeF9ldGh0b29sX3NldF9jb2FsZXNjZSxcbiBcdC5nZXRfZHJ2aW5mbyA9IGxhbjc0M3hfZXRodG9vbF9nZXRfZHJ2aW5mbyxcbiBcdC5nZXRfbXNnbGV2ZWwgPSBsYW43NDN4X2V0aHRvb2xfZ2V0X21zZ2xldmVsLFxuIFx0LnNldF9tc2dsZXZlbCA9IGxhbjc0M3hfZXRodG9vbF9zZXRfbXNnbGV2ZWwsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG5pbmRleCBmMzMzMjQxNzE2MmU2Li45ZTFmYjFlMDIzNDYzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcbkBAIC02MjcsMTggKzYyNywxMiBAQCBzdGF0aWMgaW50IGxhbjc0M3hfaW50cl9vcGVuKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9WRUNfRU5fU0VULFxuIFx0XHRcdFx0ICBJTlRfVkVDX0VOXygwKSk7XG4gXG4rXHQvKiBUaGUgaW50ZXJydXB0LXZlY3Rvci10by1tb2RlcmF0aW9uLXRpbWVyIG1hcHBpbmcgaXMgc3RhdGljLCBzb1xuK1x0ICogcHJvZ3JhbSBpdCBvbmNlIGhlcmUuIFRoZSB0aW1lciB2YWx1ZXMgdGhlbXNlbHZlcyBhcmUgc2V0IGxhdGVyXG4rXHQgKiAocGVyIGxpbmsgc3BlZWQpIHZpYSBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKCkuXG4rXHQgKi9cbiBcdGlmICghKGFkYXB0ZXItXHUwMDNlY3NyLmZsYWdzIFx1MDAyNiBMQU43NDNYX0NTUl9GTEFHX0lTX0EwKSkge1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzAsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkcyLCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzMsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgTEFONzQzWF9JTlRfTU9EKTtcbi1cdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc1LCBMQU43NDNYX0lOVF9NT0QpO1xuLVx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzYsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgTEFONzQzWF9JTlRfTU9EKTtcbiBcdFx0aWYgKGFkYXB0ZXItXHUwMDNlaXNfcGNpMTF4MXgpIHtcbi1cdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzgsIExBTjc0M1hfSU5UX01PRCk7XG4tXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc5LCBMQU43NDNYX0lOVF9NT0QpO1xuIFx0XHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfTUFQMCwgMHgwMDAwNzY1NCk7XG4gXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9NQVAxLCAweDAwMDAzMjEwKTtcbiBcdFx0fSBlbHNlIHtcbkBAIC0zMDM2LDYgKzMwMzAsNDggQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG4gXHRuZXRpZl90eF9zdG9wX2FsbF9xdWV1ZXMobmV0ZGV2KTtcbiB9XG4gXG4rLyogTWFwIGEgbGluayBzcGVlZCB0byB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgdG8gdXNlLiAqL1xuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZClcbit7XG4rXHRzd2l0Y2ggKHNwZWVkKSB7XG4rXHRjYXNlIFNQRUVEXzI1MDA6XG4rXHRcdHJldHVybiBMQU43NDNYX0lOVF9NT0RfMl81RztcbitcdGNhc2UgU1BFRURfMTAwMDpcbitcdFx0cmV0dXJuIExBTjc0M1hfSU5UX01PRF8xRztcbitcdGNhc2UgU1BFRURfMTAwOlxuK1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwME07XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gTEFONzQzWF9JTlRfTU9EXzEwTTtcbitcdH1cbit9XG4rXG4rLyogUHJvZ3JhbSB0aGUgaW50ZXJydXB0IG1vZGVyYXRpb24gdGltZXIgdmFsdWUgaW50byB0aGUgcGVyLXZlY3RvclxuKyAqIElOVF9NT0RfQ0ZHIHJlZ2lzdGVycy4gT25seSB0aGUgdGltZXIgdmFsdWUgaXMgd3JpdHRlbiBoZXJlOyB0aGUgdmVjdG9yXG4rICogbWFwcGluZyAoSU5UX01PRF9NQVApIGlzIHN0YXRpYyBhbmQgaXMgc2V0IG9uY2UgYXQgaW50ZXJydXB0IG9wZW4uXG4rICovXG4rdm9pZCBsYW43NDN4X2NvbmZpZ19pbnRfbW9kKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBpbnRfbW9kKVxuK3tcbitcdC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgcHJvZ3JhbW1lZCBpbiBoYXJkd2FyZS4gKi9cbitcdGlmIChpbnRfbW9kID09IGFkYXB0ZXItXHUwMDNlaW50X21vZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKCEoYWRhcHRlci1cdTAwM2Vjc3IuZmxhZ3MgXHUwMDI2IExBTjc0M1hfQ1NSX0ZMQUdfSVNfQTApKSB7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMCwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMSwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMiwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHMywgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNCwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNSwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNiwgaW50X21vZCk7XG4rXHRcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIElOVF9NT0RfQ0ZHNywgaW50X21vZCk7XG4rXHRcdGlmIChhZGFwdGVyLVx1MDAzZWlzX3BjaTExeDF4KSB7XG4rXHRcdFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX01PRF9DRkc4LCBpbnRfbW9kKTtcbitcdFx0XHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBJTlRfTU9EX0NGRzksIGludF9tb2QpO1xuK1x0XHR9XG4rXHRcdGFkYXB0ZXItXHUwMDNlaW50X21vZCA9IGludF9tb2Q7XG4rXHR9XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGxhbjc0M3hfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbiBcdFx0XHRcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcdFx0XHRcdFx0dW5zaWduZWQgaW50IGxpbmtfYW5fbW9kZSxcbkBAIC0zMDY3LDYgKzMxMDMsMTQgQEAgc3RhdGljIHZvaWQgbGFuNzQzeF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuIFxuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgTUFDX0NSLCBtYWNfY3IpO1xuIFxuK1x0LyogVHJhY2sgdGhlIGxpbmsgc3BlZWQgc28gYSBsYXRlciBldGh0b29sIHJlcXVlc3QgdG8gcmUtZW5hYmxlXG4rXHQgKiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGNhbiByZXN0b3JlIHRoZSBzcGVlZC1iYXNlZCB2YWx1ZSwgYW5kIHJlZnJlc2hcbitcdCAqIHRoZSB0aW1lciBub3cgd2hlbiBhZGFwdGl2ZSBtb2RlcmF0aW9uIGlzIGFjdGl2ZS5cbitcdCAqL1xuK1x0YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkID0gc3BlZWQ7XG4rXHRpZiAoYWRhcHRlci1cdTAwM2V1c2VfYWRhcHRpdmVfbW9kKVxuK1x0XHRsYW43NDN4X2NvbmZpZ19pbnRfbW9kKGFkYXB0ZXIsIGxhbjc0M3hfZ2V0X2ludF9tb2Qoc3BlZWQpKTtcbitcbiBcdGxhbjc0M3hfcHRwX3VwZGF0ZV9sYXRlbmN5KGFkYXB0ZXIsIHNwZWVkKTtcbiBcbiBcdC8qIEZsb3cgQ29udHJvbCBvcGVyYXRpb24gKi9cbkBAIC0zNTMyLDYgKzM1NzYsMTMgQEAgc3RhdGljIGludCBsYW43NDN4X2hhcmR3YXJlX2luaXQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcbiBcdGFkYXB0ZXItXHUwMDNlaW50ci5pcnEgPSBhZGFwdGVyLVx1MDAzZXBkZXYtXHUwMDNlaXJxO1xuIFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSU5UX0VOX0NMUiwgMHhGRkZGRkZGRik7XG4gXG4rXHQvKiBFbmFibGUgc3BlZWQtYWRhcHRpdmUgaW50ZXJydXB0IG1vZGVyYXRpb24gYnkgZGVmYXVsdCBhbmQgcHJvZ3JhbVxuK1x0ICogdGhlIHRpbWVyIGZvciB0aGUgZGVmYXVsdCAoMUcpIHZhbHVlIHVudGlsIHRoZSBsaW5rIGNvbWVzIHVwLlxuK1x0ICovXG4rXHRhZGFwdGVyLVx1MDAzZXVzZV9hZGFwdGl2ZV9tb2QgPSB0cnVlO1xuK1x0YWRhcHRlci1cdTAwM2VsaW5rX3NwZWVkID0gU1BFRURfVU5LTk9XTjtcbitcdGxhbjc0M3hfY29uZmlnX2ludF9tb2QoYWRhcHRlciwgTEFONzQzWF9JTlRfTU9EXzFHKTtcbitcbiBcdHJldCA9IGxhbjc0M3hfZ3Bpb19pbml0KGFkYXB0ZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbmluZGV4IDE2MGQ5NGE3Y2VlNjYuLjllNmFjOGZkYmYzN2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uaFxuQEAgLTg2MSw3ICs4NjEsMTEgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlcjtcbiAjZGVmaW5lIExBTjc0M1hfVVNFRF9SWF9DSEFOTkVMU1x0KDQpXG4gI2RlZmluZSBMQU43NDNYX1VTRURfVFhfQ0hBTk5FTFNcdCgxKVxuICNkZWZpbmUgUENJMTFYMVhfVVNFRF9UWF9DSEFOTkVMU1x0KDQpXG4tI2RlZmluZSBMQU43NDNYX0lOVF9NT0RcdCg0MDApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMl81R1x0XHQoNjQpXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMUdcdFx0KDE1MClcbisjZGVmaW5lIExBTjc0M1hfSU5UX01PRF8xMDBNXHRcdCgzMzApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfMTBNXHRcdCgzMzApXG4rI2RlZmluZSBMQU43NDNYX0lOVF9NT0RfTUFYXHRcdCg4MTkxKVxuIFxuICNpZiAoTEFONzQzWF9VU0VEX1JYX0NIQU5ORUxTIFx1MDAzZSBMQU43NDNYX01BWF9SWF9DSEFOTkVMUylcbiAjZXJyb3IgSW52YWxpZCBMQU43NDNYX1VTRURfUlhfQ0hBTk5FTFNcbkBAIC0xMDg4LDYgKzEwOTIsMTIgQEAgc3RydWN0IGxhbjc0M3hfYWRhcHRlciB7XG4gXHRwaHlfaW50ZXJmYWNlX3RcdFx0cGh5X2ludGVyZmFjZTtcbiBcdHN0cnVjdCBwaHlsaW5rXHRcdCpwaHlsaW5rO1xuIFx0c3RydWN0IHBoeWxpbmtfY29uZmlnXHRwaHlsaW5rX2NvbmZpZztcbitcdC8qIEludGVycnVwdCBtb2RlcmF0aW9uIHRpbWVyIHZhbHVlIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIGhhcmR3YXJlLiAqL1xuK1x0dTMyXHRcdFx0aW50X21vZDtcbitcdC8qIFdoZW4gc2V0LCB0aGUgbW9kZXJhdGlvbiB0aW1lciB0cmFja3MgdGhlIGxpbmsgc3BlZWQgYXV0b21hdGljYWxseS4gKi9cbitcdGJvb2xcdFx0XHR1c2VfYWRhcHRpdmVfbW9kO1xuK1x0LyogTGFzdCBuZWdvdGlhdGVkIGxpbmsgc3BlZWQsIHVzZWQgdG8gZGVyaXZlIHRoZSBhZGFwdGl2ZSB2YWx1ZS4gKi9cbitcdGludFx0XHRcdGxpbmtfc3BlZWQ7XG4gXHRpbnRcdFx0XHRyeF90c3RhbXBfZmlsdGVyO1xuIH07XG4gXG5AQCAtMTIwOSw1ICsxMjE5LDcgQEAgdm9pZCBsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKTtcbiB2b2lkIGxhbjc0M3hfbWFjX2Zsb3dfY3RybF9zZXRfZW5hYmxlcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxuIFx0XHRcdFx0ICAgICAgIGJvb2wgdHhfZW5hYmxlLCBib29sIHJ4X2VuYWJsZSk7XG4gaW50IGxhbjc0M3hfc2dtaWlfcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLCB1OCBtbWQsIHUxNiBhZGRyKTtcbit2b2lkIGxhbjc0M3hfY29uZmlnX2ludF9tb2Qoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIGludF9tb2QpO1xuK3UzMiBsYW43NDN4X2dldF9pbnRfbW9kKGludCBzcGVlZCk7XG4gXG4gI2VuZGlmIC8qIF9MQU43NDNYX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE1OjU5OjQ1LjU1MDYyOTg0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2Nzk2MzE3NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMQU43NDN4IERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgaW1wbGVtZW50aW5nIGV0aHRvb2wgY29hbGVzY2Ugc3VwcG9ydCBmb3IgdGhlIGBsYW43NDN4YCBkcml2ZXIuIFJpZ2h0LCB0aGF0J3MgdGhlIGRyaXZlciBmb3IgdGhlIE1pY3JvY2hpcCBMQU43NDN4IFBDSWUgR2lnYWJpdCBFdGhlcm5ldCBjb250cm9sbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHNpbmNlIHRoaXMgaXMgYSBQQ0llIGRldmljZSwgaXMgaXQgcnVubmluZyBpbiBRRU1VLCBvciBpcyB0aGlzIHBhdGNoIGRlYWxpbmcgd2l0aCBhY3R1YWwgaGFyZHdhcmU/IFN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBMQU43NDN4LCBhcyBmYXIgYXMgSSBrbm93LiBCdXQsIGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrIHRoZXNlIHRoaW5ncyB0byBtYWtlIHN1cmUgdGhlIGFzc3VtcHRpb25zIGFyZSB2YWxpZC4gSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0byB2ZXJpZnkgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgUUVNVS1zcGVjaWZpYyBlbXVsYXRpb24gb3B0aW9ucyBmb3IgdGhlIGBsYW43NDN4YCBJIG1pZ2h0IGJlIG1pc3NpbmcuIEknbGwgc3RhcnQgd2l0aCBhIGBncmVwcGVyYCBzZWFyY2ggZm9yIGBsYW43NDN4YCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Njg4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTU6NTk6NTIuMjMwMjY0NTY0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjQ1MzkwMjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFuNzQzeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDQxMDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbk1BSU5UQUlORVJTPTE3NDEwPVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjE3NDExOkY6XFx0ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfKlxcbk1BSU5UQUlORVJTLTE3NDEyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9LY29uZmlnLTU3LVxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZSB3aWxsIGJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTg6XFx0ICBjYWxsZWQgbGFuNzQzeC5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZT03PW9iai0kKENPTkZJR19FTkNYMjRKNjAwKSArPSBlbmN4MjRqNjAwLm8gZW5jeDI0ajYwMC1yZWdtYXAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19MQU43NDNYKSArPSBsYW43NDN4Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGU6MTA6bGFuNzQzeC1vYmpzIDo9IGxhbjc0M3hfbWFpbi5vIGxhbjc0M3hfZXRodG9vbC5vIGxhbjc0M3hfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvTWFrZWZpbGUtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNy0jaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjg6I2luY2x1ZGUgXFxcImxhbjc0M3hfbWFpbi5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo5OiNpbmNsdWRlIFxcXCJsYW43NDN4X2V0aHRvb2wuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NjaGVkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4OiNkZWZpbmUgTEFONzQzWF9DU1JfUkVBRF9PUChvZmZzZXQpXFx0ICAgICBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIG9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfcG93ZXJfdXAoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNDpcXHRyZWdfdmFsdWUgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIE9UUF9QV1JfRE4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zOC1cXHRcXHRyZWdfdmFsdWUgXFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM5OlxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9QV1JfRE4sIHJlZ192YWx1ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9wb3dlcl9kb3duKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE6XFx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUFdSX0ROKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTItXFx0aWYgKCEocmVnX3ZhbHVlIFxcdTAwMjYgT1RQX1BXUl9ETl9QV1JETl9OXykpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NC1cXHRcXHRyZWdfdmFsdWUgfD0gT1RQX1BXUl9ETl9QV1JETl9OXztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BXUl9ETiwgcmVnX3ZhbHVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTpzdGF0aWMgdm9pZCBsYW43NDN4X290cF9zZXRfYWRkcmVzcyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MC1cXHRcXHRcXHRcXHQgICAgdTMyIGFkZHJlc3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjI6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfSElHSCwgKGFkZHJlc3MgXFx1MDAzZVxcdTAwM2UgOCkgXFx1MDAyNiAweDAzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjM6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0FERFJfTE9XLCBhZGRyZXNzIFxcdTAwMjYgMHhGRik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY2OnN0YXRpYyB2b2lkIGxhbjc0M3hfb3RwX3JlYWRfZ28oc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2ODpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfRlVOQ19DTUQsIE9UUF9GVU5DX0NNRF9SRUFEXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY5OlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIE9UUF9DTURfR08sIE9UUF9DTURfR09fR09fKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzI6c3RhdGljIGludCBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg0LVxcdFxcdHVkZWxheSgxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODU6XFx0XFx0cmVnX3ZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgT1RQX1NUQVRVUyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTg2LVxcdH0gd2hpbGUgKHJlZ192YWwgXFx1MDAyNiBPVFBfU1RBVFVTX0JVU1lfKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6OTE6c3RhdGljIGludCBsYW43NDN4X290cF9yZWFkKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTkyLVxcdFxcdFxcdCAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTAwOlxcdHJldCA9IGxhbjc0M3hfb3RwX3Bvd2VyX3VwKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMDQ6XFx0cmV0ID0gbGFuNzQzeF9vdHBfd2FpdF90aWxsX25vdF9idXN5KGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMDUtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTA4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMDk6XFx0XFx0bGFuNzQzeF9vdHBfc2V0X2FkZHJlc3MoYWRhcHRlciwgb2Zmc2V0ICsgaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTExMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTExOlxcdFxcdGxhbjc0M3hfb3RwX3JlYWRfZ28oYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExMjpcXHRcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTExMy1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE0LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjExNTpcXHRcXHRkYXRhW2ldID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBPVFBfUkVBRF9EQVRBKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE2LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMTg6XFx0bGFuNzQzeF9vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MTIzOnN0YXRpYyBpbnQgbGFuNzQzeF9vdHBfd3JpdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTI0LVxcdFxcdFxcdCAgICAgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxMzI6XFx0cmV0ID0gbGFuNzQzeF9vdHBfcG93ZXJfdXAoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzMy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xMzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjEzNjpcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTEzNy1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDAtXFx0Lyogc2V0IHRvIEJZVEUgcHJvZ3JhbSBtb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0MTpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfUFJHTV9NT0RFLCBPVFBfUFJHTV9NT0RFX0JZVEVfKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbmd0aDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0NDpcXHRcXHRsYW43NDN4X290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgKyBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDY6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE0NzpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBPVFBfVFNUX0NNRCwgT1RQX1RTVF9DTURfUFJHVlJGWV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNDg6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1MDpcXHRcXHRyZXQgPSBsYW43NDN4X290cF93YWl0X3RpbGxfbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE1MS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE1NTpcXHRsYW43NDN4X290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNjA6aW50IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE2MS1cXHRcXHRcXHQgICAgICAgdTE2IHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTY4LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VldGhfc3lzbG9ja19hY3F1aXJlX2NudCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE2OTpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMTcwLVxcdFxcdFxcdFxcdFxcdCAgU1lTX0xPQ0tfUkVHX0VORVRfU1NfTE9DS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoxNzE6XFx0XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xNzItXFx0XFx0XFx0XFx0XFx0ICAgICAgIEVUSF9TWVNURU1fU1lTX0xPQ0tfUkVHKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0xOTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjE5Nzp2b2lkIGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTE5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjA2LVxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2VldGhfc3lzbG9ja19hY3F1aXJlX2NudCA9PSAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwNzpcXHRcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBFVEhfU1lTVEVNX1NZU19MT0NLX1JFRywgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIwODpcXHRcXHRcXHR2YWwgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIwOS1cXHRcXHRcXHRcXHRcXHQgICAgICAgRVRIX1NZU1RFTV9TWVNfTE9DS19SRUcpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjE3OnN0YXRpYyB2b2lkIGxhbjc0M3hfaHNfb3RwX3Bvd2VyX3VwKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMjE6XFx0cmVnX3ZhbHVlID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19PVFBfUFdSX0ROKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjIyLVxcdGlmIChyZWdfdmFsdWUgXFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyMy1cXHRcXHRyZWdfdmFsdWUgXFx1MDAyNj0gfk9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjIyNDpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMjUtXFx0XFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyNy1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjI4OlxcdFxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIyOS1cXHRcXHR1ZGVsYXkoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyMzM6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjM3OlxcdHJlZ192YWx1ZSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTIzOC1cXHRpZiAoIShyZWdfdmFsdWUgXFx1MDAyNiBPVFBfUFdSX0ROX1BXUkROX05fKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yMzktXFx0XFx0cmVnX3ZhbHVlIHw9IE9UUF9QV1JfRE5fUFdSRE5fTl87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI0MDpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfUFdSX0ROLCByZWdfdmFsdWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNDEtXFx0XFx0LyogVG8gZmx1c2ggdGhlIHBvc3RlZCB3cml0ZSBzbyB0aGUgc3Vic2VxdWVudCBkZWxheSBpc1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0My1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjQ0OlxcdFxcdGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgSFNfT1RQX1BXUl9ETik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI0NS1cXHRcXHR1ZGVsYXkoMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNDk6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfc2V0X2FkZHJlc3Moc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjUwLVxcdFxcdFxcdFxcdCAgICAgICB1MzIgYWRkcmVzcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjUyOlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9BRERSX0hJR0gsIChhZGRyZXNzIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHgwMyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI1MzpcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfQUREUl9MT1csIGFkZHJlc3MgXFx1MDAyNiAweEZGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjU0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTY6c3RhdGljIHZvaWQgbGFuNzQzeF9oc19vdHBfcmVhZF9nbyhzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNTcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTg6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0ZVTkNfQ01ELCBPVFBfRlVOQ19DTURfUkVBRF8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyNTk6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjAtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI2MjpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX2NtZF9jbXBsdF9jaGsoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI3MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjcyLVxcdFxcdFxcdCAgICAgICB1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4MDpcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4MS1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjI4NDpcXHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzoyODY6XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMjg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkwOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbGVuZ3RoOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MjkzOlxcdFxcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5NC1cXHRcXHRcXHRcXHRcXHRcXHQgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTI5Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Mjk4OlxcdFxcdGxhbjc0M3hfaHNfb3RwX3NldF9hZGRyZXNzKGFkYXB0ZXIsIG9mZnNldCArIGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwMDpcXHRcXHRsYW43NDN4X2hzX290cF9yZWFkX2dvKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMDE6XFx0XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzAyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzA1OlxcdFxcdGRhdGFbaV0gPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0ZXIsIEhTX09UUF9SRUFEX0RBVEEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMwNzpcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA4LVxcdH1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzA5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTA6XFx0cmV0ID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzExLVxcdFxcdFxcdFxcdFxcdCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzE1LXBvd2VyX2Rvd246XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMxNjpcXHRsYW43NDN4X2hzX290cF9wb3dlcl9kb3duKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMTc6XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMxOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMyMjpzdGF0aWMgaW50IGxhbjc0M3hfaHNfb3RwX3dyaXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMyMy1cXHRcXHRcXHRcXHR1MzIgbGVuZ3RoLCB1OCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzMTpcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLCBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTMzMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjMzNTpcXHRsYW43NDN4X2hzX290cF9wb3dlcl91cChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozMzc6XFx0cmV0ID0gbGFuNzQzeF9oc19vdHBfY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM0MS1cXHQvKiBzZXQgdG8gQllURSBwcm9ncmFtIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzQyOlxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEhTX09UUF9QUkdNX01PREUsIE9UUF9QUkdNX01PREVfQllURV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NDpcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlbmd0aDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM0NzpcXHRcXHRyZXQgPSBsYW43NDN4X2hzX3N5c2xvY2tfYWNxdWlyZShhZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNDgtXFx0XFx0XFx0XFx0XFx0XFx0IExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1MjpcXHRcXHRsYW43NDN4X2hzX290cF9zZXRfYWRkcmVzcyhhZGFwdGVyLCBvZmZzZXQgKyBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX1BSR01fREFUQSwgZGF0YVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1NTpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19PVFBfVFNUX0NNRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzU2LVxcdFxcdFxcdFxcdCAgT1RQX1RTVF9DTURfUFJHVlJGWV8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNTc6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfT1RQX0NNRF9HTywgT1RQX0NNRF9HT19HT18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjM1OTpcXHRcXHRyZXQgPSBsYW43NDN4X2hzX290cF9jbWRfY21wbHRfY2hrKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNjAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNjM6XFx0XFx0bGFuNzQzeF9oc19zeXNsb2NrX3JlbGVhc2UoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NC1cXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzY2OlxcdHJldCA9IGxhbjc0M3hfaHNfc3lzbG9ja19hY3F1aXJlKGFkYXB0ZXIsIExPQ0tfVElNRU9VVF9NQVhfQ05UKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3MC1wb3dlcl9kb3duOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzE6XFx0bGFuNzQzeF9oc19vdHBfcG93ZXJfZG93bihhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzcyOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zNzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzozNzc6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93YWl0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtMzgyLVxcdGRvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6MzgzOlxcdFxcdHZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRTJQX0NNRCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTM4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy0zOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQwMDpzdGF0aWMgaW50IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDAxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MDUtXFx0ZG8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MDY6XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBFMlBfQ01EKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDE4OnN0YXRpYyBpbnQgbGFuNzQzeF9lZXByb21fcmVhZChzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00MTktXFx0XFx0XFx0ICAgICAgIHUzMiBvZmZzZXQsIHUzMiBsZW5ndGgsIHU4ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDI4OlxcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX2NvbmZpcm1fbm90X2J1c3koYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQyOS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQzNC1cXHRcXHR2YWwgfD0gKG9mZnNldCBcXHUwMDI2IEUyUF9DTURfRVBDX0FERFJfTUFTS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0MzU6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Mzc6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fd2FpdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDM4LVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDQxOlxcdFxcdHZhbCA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwgRTJQX0RBVEEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NDItXFx0XFx0ZGF0YVtpXSA9IHZhbCBcXHUwMDI2IDB4RkY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NDk6c3RhdGljIGludCBsYW43NDN4X2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NTAtXFx0XFx0XFx0XFx0dTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDU4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NTk6XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fY29uZmlybV9ub3RfYnVzeShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDYwLVxcdGlmIChyZXR2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY0LVxcdHZhbCA9IEUyUF9DTURfRVBDX0JVU1lfIHwgRTJQX0NNRF9FUENfQ01EX0VXRU5fO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NjU6XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0Njc6XFx0cmV0dmFsID0gbGFuNzQzeF9lZXByb21fd2FpdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDY4LVxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3My1cXHRcXHR2YWwgPSBkYXRhW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo0NzQ6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgRTJQX0RBVEEsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00NzgtXFx0XFx0dmFsIHw9IChvZmZzZXQgXFx1MDAyNiBFMlBfQ01EX0VQQ19BRERSX01BU0tfKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDc5OlxcdFxcdGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIEUyUF9DTUQsIHZhbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NDgxOlxcdFxcdHJldHZhbCA9IGxhbjc0M3hfZWVwcm9tX3dhaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTQ4Mi1cXHRcXHRpZiAocmV0dmFsIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy00OTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjQ5MTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX2NtZF9jbXBsdF9jaGsoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNDkyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUwMTpzdGF0aWMgaW50IGxhbjc0M3hfaHNfZWVwcm9tX3JlYWQoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTAyLVxcdFxcdFxcdFxcdCAgdTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTE6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MTU6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTE2OlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MTctXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MjE6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTIyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTI3LVxcdFxcdHZhbCB8PSAob2Zmc2V0IFxcdTAwMjYgSFNfRTJQX0NNRF9FUENfQUREUl9NQVNLXyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUyODpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfQ01ELCB2YWwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Mjk6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMwLVxcdFxcdGlmIChyZXR2YWwgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjUzMTpcXHRcXHRcXHRsYW43NDN4X2hzX3N5c2xvY2tfcmVsZWFzZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTMyLVxcdFxcdFxcdHJldHVybiByZXR2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1MzU6XFx0XFx0dmFsID0gbGFuNzQzeF9jc3JfcmVhZChhZGFwdGVyLCBIU19FMlBfREFUQSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTUzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTM3OlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NDY6c3RhdGljIGludCBsYW43NDN4X2hzX2VlcHJvbV93cml0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NDctXFx0XFx0XFx0XFx0ICAgdTMyIG9mZnNldCwgdTMyIGxlbmd0aCwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NTY6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlciwgTE9DS19USU1FT1VUX01BWF9DTlQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NTctXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjA6XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTYxOlxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01NjItXFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTY1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBsZW5ndGg7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1NjY6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19zeXNsb2NrX2FjcXVpcmUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTY3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBMT0NLX1RJTUVPVVRfTUFYX0NOVCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTcyLVxcdFxcdHZhbCA9IGRhdGFbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjU3MzpcXHRcXHRsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBIU19FMlBfREFUQSwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU3Ny1cXHRcXHR2YWwgfD0gKG9mZnNldCBcXHUwMDI2IEhTX0UyUF9DTURfRVBDX0FERFJfTUFTS18pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1Nzg6XFx0XFx0bGFuNzQzeF9jc3Jfd3JpdGUoYWRhcHRlciwgSFNfRTJQX0NNRCwgdmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1ODA6XFx0XFx0cmV0dmFsID0gbGFuNzQzeF9oc19lZXByb21fY21kX2NtcGx0X2NoayhhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NTgxOlxcdFxcdGxhbjc0M3hfaHNfc3lzbG9ja19yZWxlYXNlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01ODItXFx0XFx0aWYgKHJldHZhbCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNTkwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTE6c3RhdGljIHZvaWQgbGFuNzQzeF9ldGh0b29sX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5Mi1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZXRodG9vbF9kcnZpbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy01OTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo1OTQ6XFx0c3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlciA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTU5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYwMTpzdGF0aWMgdTMyIGxhbjc0M3hfZXRodG9vbF9nZXRfbXNnbGV2ZWwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjAyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjAzOlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MDg6c3RhdGljIHZvaWQgbGFuNzQzeF9ldGh0b29sX3NldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MDktXFx0XFx0XFx0XFx0XFx0IHUzMiBtc2dsZXZlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjEwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjExOlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MTY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjE3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjE4OlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2MjY6c3RhdGljIGludCBsYW43NDN4X2V0aHRvb2xfZ2V0X2VlcHJvbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZWVwcm9tICplZSwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYyOC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYyOTpcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjMwLVxcdGludCByZXQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzMy1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjYzNDpcXHRcXHRcXHRyZXQgPSBsYW43NDN4X2hzX290cF9yZWFkKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTYzNS1cXHRcXHRcXHRcXHRcXHRcXHQgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzYtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2Mzc6XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9vdHBfcmVhZChhZGFwdGVyLCBlZS1cXHUwMDNlb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02MzgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0MC1cXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlaXNfcGNpMTF4MXgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY0MTpcXHRcXHRcXHRyZXQgPSBsYW43NDN4X2hzX2VlcHJvbV9yZWFkKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY0Mi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGVlLVxcdTAwM2VsZW4sIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NDMtXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NDQ6XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9lZXByb21fcmVhZChhZGFwdGVyLCBlZS1cXHUwMDNlb2Zmc2V0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NDUtXFx0XFx0XFx0XFx0XFx0XFx0ICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY1MTpzdGF0aWMgaW50IGxhbjc0M3hfZXRodG9vbF9zZXRfZWVwcm9tKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY1Mi1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZXRodG9vbF9lZXByb20gKmVlLCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjU0OlxcdHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NTUtXFx0aW50IHJldCA9IC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYwLVxcdFxcdFxcdGlmIChhZGFwdGVyLVxcdTAwM2Vpc19wY2kxMXgxeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjYxOlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfaHNfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2Mi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjYzLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NjY0OlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfb3RwX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY2NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02NjktXFx0XFx0XFx0aWYgKGFkYXB0ZXItXFx1MDAzZWlzX3BjaTExeDF4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo2NzA6XFx0XFx0XFx0XFx0cmV0ID0gbGFuNzQzeF9oc19lZXByb21fd3JpdGUoYWRhcHRlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjcxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGVlLVxcdTAwM2VvZmZzZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNjczLVxcdFxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6Njc0OlxcdFxcdFxcdFxcdHJldCA9IGxhbjc0M3hfZWVwcm9tX3dyaXRlKGFkYXB0ZXIsIGVlLVxcdTAwM2VvZmZzZXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTY3NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBlZS1cXHUwMDNlbGVuLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjY4MjpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3NldDBfaHdfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy02ODMtXFx0XFxcIlJYIEZDUyBFcnJvcnNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzA2OnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfc2V0MV9zd19jbnRfc3RyaW5nc1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcwNy1cXHRcXFwiUlggUXVldWUgMCBGcmFtZXNcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTcxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6NzEzOnN0YXRpYyBjb25zdCBjaGFyIGxhbjc0M3hfdHhfcXVldWVfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MTQtXFx0XFxcIlRYIFF1ZXVlIDAgRnJhbWVzXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjcyMTpzdGF0aWMgY29uc3QgY2hhciBsYW43NDN4X3NldDJfaHdfY250X3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03MjItXFx0XFxcIlJYIFRvdGFsIEZyYW1lc1xcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo3NTQ6c3RhdGljIGNvbnN0IHUzMiBsYW43NDN4X3NldDBfaHdfY250X2FkZHJbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtNzU1LVxcdFNUQVRfUlhfRkNTX0VSUk9SUyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjc3ODpzdGF0aWMgY29uc3QgdTMyIGxhbjc0M3hfc2V0Ml9od19jbnRfYWRkcltdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy03NzktXFx0U1RBVF9SWF9UT1RBTF9GUkFNRVMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYzo4MTE6c3RhdGljIGNvbnN0IGNoYXIgbGFuNzQzeF9wcml2X2ZsYWdzX3N0cmluZ3NbXVtFVEhfR1NUUklOR19MRU5dID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTItXFx0XFxcIk9UUF9BQ0NFU1NcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmM6ODE1OnN0YXRpYyB2b2lkIGxhbjc0M3hfZXRodG9vbF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRvb2wuYy04MTYtXFx0XFx0XFx0XFx0XFx0dTMyIHN0cmluZ3NldCwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jLTgxNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jOjgxODpcXHRzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMtODE5LVxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE1OjU5OjU0LjY5NDgxMTE3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MTkyMDMwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hgLiBJdCdzIGEgUENJZSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IFFFTVUgZW11bGF0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSdkIGRvIGlzIGNoZWNrIHRoZSBRRU1VIHNvdXJjZSAoYGh3L25ldC9gKSBmb3IgYW55IHNpZ24gb2YgYGxhbjc0M3hgIGVtdWxhdGlvbiwgYnV0IEkgZG9uJ3QgaGF2ZSB0aGF0IHNvdXJjZSBoYW5keSByaWdodCBub3cuIEhvd2V2ZXIsIEkga25vdyBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgZnV6eiBwaHlzaWNhbCBQQ0llIGRldmljZXMgdW5sZXNzIHRoZXkgYXJlIGVtdWxhdGVkIG9yIGhhdmUgc29tZSBzcGVjaWFsIHNldHVwLiBXaGlsZSBpdCBkb2VzIGZ1enogVVNCIGFuZCBvdGhlciB0aGluZ3MsIFBDSWUgcmVxdWlyZXMgZWl0aGVyIHZpcnR1YWxpemF0aW9uIG9yIGVtdWxhdGlvbi5cblxuSGFuZyBvbi4uLiBJJ20gcHJldHR5IHN1cmUgc3RhbmRhcmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIExBTjc0M1guIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGNyaXRlcmlhOiBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4uLiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5BbHJpZ2h0LCBzbyBpcyB0aGUgTEFONzQzWCBhIFwidmVuZG9yLXNwZWNpZmljXCIgUENJZSBkcml2ZXI/IFllcywgaXQncyBhIE1pY3JvY2hpcCBMQU43NDN4IEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlciwgc28gdGhhdCBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgYSB2ZW5kb3Itc3BlY2lmaWMgUENJIGRyaXZlci4gVGhpcyBwb2ludHMgc3Ryb25nbHkgdG93YXJkcyBpdCBuZWVkaW5nIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBub3QgYmVpbmcgZWFzaWx5IGZ1enphYmxlLiBJIG5lZWQgdG8gY29uZmlybSBpdCdzIGEgUENJIGRyaXZlciB0byBiZSBjZXJ0YWluLCB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTAxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjAyLjExNDAxNzAyNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc5MjIyMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX3JlZ2lzdGVyX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjAyLjE3NDgxOTI4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1NzAwMzU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGF0IHRob3VnaHQgcHJvY2VzcyBhbmQgc3VtbWFyaXplIGl0IGZyb20gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLiBIZXJlJ3MgbXkgdGFrZTpcblxuKipUaGUgVmVyaWZpY2F0aW9uIFByb2Nlc3MqKlxuXG5IbW0sIGJlZm9yZSBJIGV2ZW4gc3RhcnQgdG8gZm9ybXVsYXRlIGEgcmVzcG9uc2Ugb3IganVtcCB0byBhIGNvbmNsdXNpb24sIEkgbmVlZCB0byBwYXVzZS4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhlIHVuZGVybHlpbmcgYmFzaXMgb2YgdGhpcy4gSXQncyBhYm91dCBkYXRhIGludGVncml0eS4gSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaG93IGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLiBGaXJzdCwgSSBoYXZlIHRvIGNoZWNrIGhvdyBzb21ldGhpbmcgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbSAtIHdoZXRoZXIgaXQgaXMgdGhlIGRhdGFzZXQsIHRoZSBwYXJhbWV0ZXJzLCB0aGUgY29kZSBvciB0aGUgbW9kZWwuIFVuZGVyc3RhbmRpbmcgaXRzIHJlZ2lzdHJhdGlvbiBwcm92aWRlcyBuZWNlc3NhcnkgY29udGV4dCBiZWZvcmUgYW55IHJlc3BvbnNlIGNhbiBiZSBmb3JtdWxhdGVkLiBJIG5lZWQgdG8gZW5zdXJlIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIHByZWxpbWluYXJ5IGNoZWNrIGlzIGZ1bmRhbWVudGFsOyBpdOKAmXMgYWJvdXQgdmVyaWZ5aW5nIHRoZSBkYXRhJ3MgcHJvcGVyIGltcGxlbWVudGF0aW9uLiBBIGhhc3R5IGFzc3VtcHRpb24gY291bGQgYmUgZGlzYXN0cm91cy4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IEkga25vdyAqZXhhY3RseSogd2hhdCBJJ20gZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU1OCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDE2OjAwOjA3LjczMTgyNTcxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTA2NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9NDA0ND1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbGFuNzQzeF9wY2lkZXZfdGJsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6NDA0NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbGFuNzQzeF9wY2lkZXZfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy00MDQ3LVxcdC5uYW1lICAgICA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTQwNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjQwNTc6bW9kdWxlX3BjaV9kcml2ZXIobGFuNzQzeF9wY2lkZXZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtNDA1OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTY6MDA6MDcuNzkyODk2OTQ5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgyNDU4Mjg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiB0aGlzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlllcywgdGhpcyBpcyBkZWZpbml0ZWx5IGEgUENJIGRyaXZlci5cIiBUaGUgbmV4dCBxdWVzdGlvbiBpcyBhbHdheXMsIFwiSXMgaXQgZW11bGF0ZWQgaW4gUUVNVT9cIiBTdGFuZGFyZCBRRU1VLCBpbiBpdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBlbXVsYXRlcyBhIGJ1bmNoIG9mIG5ldHdvcmsgY2FyZHM6IHRoZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIGlnYiwgdHVsaXAsIGFuZCBzbyBvbiwgYnV0IG5vdCB0aGUgTWljcm9jaGlwIExBTjc0M3guIFNvLCByaWdodCBhd2F5LCB0aGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoYXQgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgZm9yIGEgKnBoeXNpY2FsKiBQQ0llIGhhcmR3YXJlIGNhcmQsIG5vdCBzb21ldGhpbmcgZW11bGF0ZWQgd2l0aGluIFFFTVUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gcXVpY2tseSBkb3VibGUtY2hlY2tpbmcg4oCTIG5vIGNoYW5jZSBpdCdzIGEgcGxhdGZvcm0gb3IgVVNCIGRldmljZSBtYXNxdWVyYWRpbmcgYXMgc29tZXRoaW5nIGVsc2UuIE5vLCB0aGUgdXNlIG9mIGBtb2R1bGVfcGNpX2RyaXZlcmAgYW5kIGBsYW43NDN4X3BjaWRldl9kcml2ZXJgIGNvbmNsdXNpdmVseSB0ZWxscyBtZSBpdCdzIGEgUENJIGRldmljZS4gU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UgYW5kIGl0IGlzbid0IGVtdWxhdGVkIGluIFFFTVUsIHRoZW4gaXQgY2FuJ3QgYmUgcmVhY2hlZCBpbiBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIEFsbCBjb2RlIHBhdGhzIHdvdWxkIGJlIGluYWNjZXNzaWJsZS4gVGhhdCBtZWFucywgYXMgYSBmaXJzdCBwYXNzLCB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG5cbkxldCBtZSBjaXJjbGUgYmFjayBhbmQgcmV2aWV3IHRoZSBvcmlnaW5hbCBwcm9tcHQgdG8gbWFrZSBzdXJlIEknbSBoaXR0aW5nIHRoZSByaWdodCBjcml0ZXJpYS4gQWgsIGhlcmUgaXQgaXM6IFwiUmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5Pa2F5LCB0aGUgTEFONzQzeCBpcyBhIE1pY3JvY2hpcCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gSXQncyBleHBsaWNpdGx5IGRlc2lnbmVkIGZvciBhICpwaHlzaWNhbCogUENJZSBjYXJkLiBJdCBmaXRzIHRoZSBkZXNjcmlwdGlvbiBwZXJmZWN0bHkuIEknbSBjb25maWRlbnQgdGhhdCByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIGNvcnJlY3QgZGVjaXNpb24gaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwNzYsIk91dHB1dFRva2VucyI6ODcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTY6MDA6MTQuNjE3NDgzMjU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBMQU43NDN4IGRyaXZlciwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgUENJZSBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgYnkgc3l6a2FsbGVyLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWljcm9jaGlwIExBTjc0M3ggZHJpdmVyLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBQQ0llIEdpZ2FiaXQgRXRoZXJuZXQgY29udHJvbGxlci4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBieSBzeXprYWxsZXIsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9sbtm[1] Phase: Running StartedAt: 2026-08-03 16:00:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9sbtm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 16:00:47 +0000 UTC FinishedAt: 2026-08-03 16:00:53 +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,}