Name: series-workflowm89sv Phase: Failed StartedAt: 2026-06-25 22:33:44 +0000 UTC FinishedAt: 2026-06-25 22:43:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm89sv[0] Phase: Succeeded StartedAt: 2026-06-25 22:33:44 +0000 UTC FinishedAt: 2026-06-25 22:43:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm89sv[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 22:33:44 +0000 UTC FinishedAt: 2026-06-25 22:43:06 +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+CgkJCTx0ZD4yMDI2LzA2LzI1IDIyOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW92ZXMgZGVmaW5pdGlvbnMsIG1hY3JvcywgYW5kIHN0cnVjdHMgYmV0d2VlbiBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcywgYWRkcyBfX3JlYWRfbW9zdGx5IGF0dHJpYnV0ZXMsIGFuZCBpbnRyb2R1Y2VzIGNvbXBpbGUtdGltZSBzdGF0aWNfYXNzZXJ0cy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAyMjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRkYTcxYjAxZDcxNDhhNTY5NjRiYjA5NGE1NGQ2NGRmMzhjYzk4YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYjUxNzI1N2E2MzE1MzIuLmZkYjg5NTNhZWViMTU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSwyNCAmIzQzOzEyNSw2IEBAXG4gI2RlZmluZSBLVk1fUkVRX1VQREFURV9QUk9URUNURURfR1VFU1RfU1RBVEUgXFxcbiBcdEtWTV9BUkNIX1JFUV9GTEFHUygzNCwgS1ZNX1JFUVVFU1RfV0FJVClcbiBcbi0jZGVmaW5lIENSMF9SRVNFUlZFRF9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLVx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSMF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VNIHwgWDg2X0NSMF9UUyBcXFxuLVx0XHRcdCAgfCBYODZfQ1IwX0VUIHwgWDg2X0NSMF9ORSB8IFg4Nl9DUjBfV1AgfCBYODZfQ1IwX0FNIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjBfTlcgfCBYODZfQ1IwX0NEIHwgWDg2X0NSMF9QRykpXG4tXG4tI2RlZmluZSBDUjRfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi1cdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjRfVk1FIHwgWDg2X0NSNF9QVkkgfCBYODZfQ1I0X1RTRCB8IFg4Nl9DUjRfREVcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfCBYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfUENJREUgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9PU1hTQVZFIHwgWDg2X0NSNF9TTUVQIHwgWDg2X0NSNF9GU0dTQkFTRSBcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9TTUFQIHwgWDg2X0NSNF9QS0UgfCBYODZfQ1I0X1VNSVAgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9MQU1fU1VQIHwgWDg2X0NSNF9DRVQpKVxuLVxuLSNkZWZpbmUgQ1I4X1JFU0VSVkVEX0JJVFMgKH4odW5zaWduZWQgbG9uZylYODZfQ1I4X1RQUilcbi1cbi1cbi1cbiAjZGVmaW5lIElOVkFMSURfUEFHRSAofihocGFfdCkwKVxuICNkZWZpbmUgVkFMSURfUEFHRSh4KSAoKHgpICE9IElOVkFMSURfUEFHRSlcbiBcbkBAIC0yMzAsMzcgJiM0MzsyMTIsNiBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7XG4gXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1x0NFxuIFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXHUwMDNjXHUwMDNjIDExKVxuLSNkZWZpbmUgRFI2X0JEXHRcdCgxIFx1MDAzY1x1MDAzYyAxMylcbi0jZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4tI2RlZmluZSBEUjZfQlRcdFx0KDEgXHUwMDNjXHUwMDNjIDE1KVxuLSNkZWZpbmUgRFI2X1JUTVx0XHQoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLypcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXG4tICogV2UgY2FuIHJlZ2FyZCBhbGwgdGhlIGJpdHMgaW4gRFI2X0ZJWEVEXzEgYXMgYWN0aXZlX2xvdyBiaXRzO1xuLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cbi0gKlxuLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuLSAqL1xuLSNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbi0jZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuLSNkZWZpbmUgRFI2X0ZJWEVEXzFcdChEUjZfQUNUSVZFX0xPVyBcdTAwMjYgfkRSNl9WT0xBVElMRSlcbi1cbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4tI2RlZmluZSBEUjdfR0VcdFx0KDEgXHUwMDNjXHUwMDNjIDkpXG4tI2RlZmluZSBEUjdfR0RcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4tXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuLVx0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4tXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbi1cdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4tXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4tXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcdEJJVCgwKVxuICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTS1x0QklUKDEpXG4gI2RlZmluZSBQRkVSUl9VU0VSX01BU0tcdFx0QklUKDIpXG5AQCAtMjkwLDE5ICYjNDM7MjQxLDExIEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTtcbiAjZGVmaW5lIFBGRVJSX1BSSVZBVEVfQUNDRVNTICAgQklUX1VMTCg0OSlcbiAjZGVmaW5lIFBGRVJSX1NZTlRIRVRJQ19NQVNLICAgKFBGRVJSX0lNUExJQ0lUX0FDQ0VTUyB8IFBGRVJSX1BSSVZBVEVfQUNDRVNTKVxuIFxuLS8qIGFwaWMgYXR0ZW50aW9uIGJpdHMgKi9cbi0jZGVmaW5lIEtWTV9BUElDX0NIRUNLX1ZBUElDXHQwXG4tLypcbi0gKiBUaGUgZm9sbG93aW5nIGJpdCBpcyBzZXQgd2l0aCBQVi1FT0ksIHVuc2V0IG9uIEVPSS5cbi0gKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXG4tICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LlxuLSAqIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gYXBpY191cGRhdGVfcHZfZW9pLlxuLSAqL1xuLSNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkdcdDFcbi1cbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZDtcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcbiBcbiYjNDM7c3RydWN0IGt2bV9hcGljX21hcDtcbiYjNDM7XG4gc3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlcjtcbiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyO1xuIFxuQEAgLTcwNSw5NSAmIzQzOzY0OCw2IEBAIHN0cnVjdCBrdm1fbXRyciB7XG4gXHR1NjQgZGVmdHlwZTtcbiB9O1xuIFxuLS8qIEh5cGVyLVYgU3luSUMgdGltZXIgKi9cbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHtcbi1cdHN0cnVjdCBocnRpbWVyIHRpbWVyO1xuLVx0aW50IGluZGV4O1xuLVx0dW5pb24gaHZfc3RpbWVyX2NvbmZpZyBjb25maWc7XG4tXHR1NjQgY291bnQ7XG4tXHR1NjQgZXhwX3RpbWU7XG4tXHRzdHJ1Y3QgaHZfbWVzc2FnZSBtc2c7XG4tXHRib29sIG1zZ19wZW5kaW5nO1xuLX07XG4tXG4tLyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovXG4tc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHtcbi1cdHU2NCB2ZXJzaW9uO1xuLVx0dTY0IGNvbnRyb2w7XG4tXHR1NjQgbXNnX3BhZ2U7XG4tXHR1NjQgZXZ0X3BhZ2U7XG4tXHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4tXHRhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcbi1cdERFQ0xBUkVfQklUTUFQKGF1dG9fZW9pX2JpdG1hcCwgMjU2KTtcbi1cdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XG4tXHRib29sIGFjdGl2ZTtcbi1cdGJvb2wgZG9udF96ZXJvX3N5bmljX3BhZ2VzO1xuLX07XG4tXG4tLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiAqL1xuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxuLS8qXG4tICogTm90ZTogdGhlIGZvbGxvd2luZyAmIzM5O21hZ2ljJiMzOTsgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xuLSAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSYjMzk7cyBhY3Rpb24gdG8gJiMzOTtmbHVzaCBldmVyeXRoaW5nJiMzOTsgaW5zdGVhZCBvZlxuLSAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4tICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suXG4tICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbi1cbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XG4tXHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbi1cdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxuLVx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxuLX07XG4tXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcbi1cdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbi1cdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXG4tc3RydWN0IGt2bV92Y3B1X2h2IHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbi1cdHUzMiB2cF9pbmRleDtcbi1cdHU2NCBodl92YXBpYztcbi1cdHM2NCBydW50aW1lX29mZnNldDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcbi1cdHN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4tXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XG4tXHRib29sIGVuZm9yY2VfY3B1aWQ7XG4tXHRzdHJ1Y3Qge1xuLVx0XHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXG4tXHRcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cbi1cdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuLVx0XHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cbi1cdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXG4tXHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4tXHRcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xuLVx0XHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cbi1cdH0gY3B1aWRfY2FjaGU7XG4tXG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcbi1cbi1cdC8qXG4tXHQgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFVcbi1cdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5JiMzOTtyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXG4tXHQgKiB0aGUgc3RhY2spLlxuLVx0ICovXG4tXHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XG4tXHRERUNMQVJFX0JJVE1BUCh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuLVxuLVx0c3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlO1xuLVxuLVx0c3RydWN0IHtcbi1cdFx0dTY0IHBhX3BhZ2VfZ3BhO1xuLVx0XHR1NjQgdm1faWQ7XG4tXHRcdHUzMiB2cF9pZDtcbi1cdH0gbmVzdGVkO1xuLX07XG4tXG4gc3RydWN0IGt2bV9oeXBlcnZpc29yX2NwdWlkIHtcbiBcdHUzMiBiYXNlO1xuIFx0dTMyIGxpbWl0O1xuQEAgLTgyNCw2ICYjNDM7Njc4LDggQEAgc3RydWN0IGt2bV92Y3B1X3hlbiB7XG4gfTtcbiAjZW5kaWZcbiBcbiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX3F1ZXVlZF9leGNlcHRpb24ge1xuIFx0Ym9vbCBwZW5kaW5nO1xuIFx0Ym9vbCBpbmplY3RlZDtcbkBAIC0xMTgxLDM5ICYjNDM7MTAzNyw2IEBAIHN0cnVjdCBrdm1fYXJjaF9tZW1vcnlfc2xvdCB7XG4gXHR1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrO1xuIH07XG4gXG4tLypcbi0gKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxuLSAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cbi0gKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXG4tICovXG4tZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xuLVx0LyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi9cbi1cdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4tXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cbi1cdEtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUixcbi1cdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuLVx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxuLVx0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovXG4tXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbi1cdC8qXG4tXHQgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbFxuLVx0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4tXHQgKi9cbi1cdEtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELFxuLX07XG4tXG4tc3RydWN0IGt2bV9hcGljX21hcCB7XG4tXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuLVx0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xuLVx0dTMyIG1heF9hcGljX2lkO1xuLVx0dW5pb24ge1xuLVx0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcbi1cdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xuLVx0fTtcbi1cdHN0cnVjdCBrdm1fbGFwaWMgKnBoeXNfbWFwW107XG4tfTtcbi1cbiAvKiBIeXBlci1WIHN5bnRoZXRpYyBkZWJ1Z2dlciAoU3luRGJnKSovXG4gc3RydWN0IGt2bV9odl9zeW5kYmcge1xuIFx0c3RydWN0IHtcbkBAIC0yMDE5LDEzICYjNDM7MTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcilcbiB9XG4gI2VuZGlmXG4gXG4tZW51bSB7XG4tXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcbi1cdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuLVx0VEFTS19TV0lUQ0hfSk1QID0gMixcbi1cdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxuLX07XG4tXG4gI2RlZmluZSBIRl9HVUVTVF9NQVNLXHRcdCgxIFx1MDAzY1x1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9TTU1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi42MjU4ZWQyNzdhN2I0NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtMjcsNiAmIzQzOzI3LDk2IEBAXG4gXG4gI2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG4gXG4mIzQzO1xuJiM0MzsvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXG4mIzQzO3N0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xuJiM0MztcdHN0cnVjdCBocnRpbWVyIHRpbWVyO1xuJiM0MztcdGludCBpbmRleDtcbiYjNDM7XHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcbiYjNDM7XHR1NjQgY291bnQ7XG4mIzQzO1x0dTY0IGV4cF90aW1lO1xuJiM0MztcdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcbiYjNDM7XHRib29sIG1zZ19wZW5kaW5nO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovXG4mIzQzO3N0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7XG4mIzQzO1x0dTY0IHZlcnNpb247XG4mIzQzO1x0dTY0IGNvbnRyb2w7XG4mIzQzO1x0dTY0IG1zZ19wYWdlO1xuJiM0MztcdHU2NCBldnRfcGFnZTtcbiYjNDM7XHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4mIzQzO1x0YXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xuJiM0MztcdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XG4mIzQzO1x0Ym9vbCBhY3RpdmU7XG4mIzQzO1x0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxuJiM0MzsvKlxuJiM0MzsgKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXG4mIzQzOyAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuJiM0MzsgKiB0byBvYnNlcnZlIGEgcmVxdWVzdCB0byBmbHVzaCA0MDk1IFBGTnMgc3RhcnRpbmcgZnJvbSAweGZmZmZmZmZmZmZmZmYwMDBcbiYjNDM7ICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mXG4mIzQzOyAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4mIzQzOyAqIGZsdXNoaW5nIG1vcmUgdGhhbiByZXF1ZXN0ZWQgaXMgYWx3YXlzIE9LLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbiYjNDM7XG4mIzQzO2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcbiYjNDM7XHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbiYjNDM7XHRIVl9MMl9UTEJfRkxVU0hfRklGTyxcbiYjNDM7XHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xuJiM0MztcdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbiYjNDM7XHRERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqL1xuJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiYjNDM7XHR1MzIgdnBfaW5kZXg7XG4mIzQzO1x0dTY0IGh2X3ZhcGljO1xuJiM0MztcdHM2NCBydW50aW1lX29mZnNldDtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgc3luaWM7XG4mIzQzO1x0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAoc3RpbWVyX3BlbmRpbmdfYml0bWFwLCBIVl9TWU5JQ19TVElNRVJfQ09VTlQpO1xuJiM0MztcdGJvb2wgZW5mb3JjZV9jcHVpZDtcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqL1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VieDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVCWCAqL1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuJiM0MztcdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovXG4mIzQzO1x0XHR1MzIgZW5saWdodGVubWVudHNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQlggKi9cbiYjNDM7XHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4mIzQzO1x0XHR1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi9cbiYjNDM7XHRcdHUzMiBuZXN0ZWRfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVCWCAqL1xuJiM0MztcdH0gY3B1aWRfY2FjaGU7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxuJiM0MztcdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5JiMzOTtyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXG4mIzQzO1x0ICogdGhlIHN0YWNrKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcbiYjNDM7XG4mIzQzO1x0c3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTY0IHBhX3BhZ2VfZ3BhO1xuJiM0MztcdFx0dTY0IHZtX2lkO1xuJiM0MztcdFx0dTMyIHZwX2lkO1xuJiM0MztcdH0gbmVzdGVkO1xuJiM0Mzt9O1xuJiM0MztcbiAvKiBcJiMzNDtIdiMxXCYjMzQ7IHNpZ25hdHVyZSAqL1xuICNkZWZpbmUgSFlQRVJWX0NQVUlEX1NJR05BVFVSRV9FQVggMHgzMTIzNzY0OFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDZmMzBiYmRkZGI1YWE5Li4wMzU0ZGIwZjJjMGYwMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTc1LDYgJiM0Mzs3NSwxNiBAQCBtb2R1bGVfcGFyYW0obGFwaWNfdGltZXJfYWR2YW5jZSwgYm9vbCwgMDQ0NCk7XG4gLyogc3RlcC1ieS1zdGVwIGFwcHJveGltYXRpb24gdG8gbWl0aWdhdGUgZmx1Y3R1YXRpb24gKi9cbiAjZGVmaW5lIExBUElDX1RJTUVSX0FEVkFOQ0VfQURKVVNUX1NURVAgOFxuIFxuJiM0MzsvKiBhcGljIGF0dGVudGlvbiBiaXRzICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbiYjNDM7LypcbiYjNDM7ICogVGhlIGZvbGxvd2luZyBiaXQgaXMgc2V0IHdpdGggUFYtRU9JLCB1bnNldCBvbiBFT0kuXG4mIzQzOyAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbiYjNDM7ICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LlxuJiM0MzsgKiBTZWUgdGhlIGltcGxlbWVudGF0aW9uIGluIGFwaWNfdXBkYXRlX3B2X2VvaS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkdcdDFcbiYjNDM7XG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW1fbmFtZWQodmVjdG9yX2hhc2hpbmcsIHZlY3Rvcl9oYXNoaW5nX2VuYWJsZWQsIGJvb2wsIDA0NDQpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcbmluZGV4IDU4ZGJiOTRmOTgwZGEyLi5iZDEwOThjODlkOTk4MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxuQEAgLTMyLDYgJiM0MzszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xuIFx0TEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLFxuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFRyYWNrIHRoZSBtb2RlIG9mIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAsIGFzIHRoZSBydWxlcyBmb3IgZGVjb2RpbmcgdGhlXG4mIzQzOyAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuJiM0MzsgKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvXG4mIzQzOyAqIGJlIG1hcHBlZCB0byBvbmx5IG9uZSBNREEsIGFuZCBlYWNoIE1EQSB0byBtYXAgdG8gYXQgbW9zdCBvbmUgQVBJQy5cbiYjNDM7ICovXG4mIzQzO2VudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHtcbiYjNDM7XHQvKiBBbGwgbG9jYWwgQVBJQ3MgYXJlIHNvZnR3YXJlIGRpc2FibGVkLiAqL1xuJiM0MztcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4mIzQzO1x0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovXG4mIzQzO1x0S1ZNX0FQSUNfTU9ERV9YQVBJQ19DTFVTVEVSLFxuJiM0MztcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuJiM0MztcdEtWTV9BUElDX01PREVfWEFQSUNfRkxBVCxcbiYjNDM7XHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4MkFQSUMgbW9kZS4gKi9cbiYjNDM7XHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9wdGltaXplZCBtYXAgZGlzYWJsZWQsIGUuZy4gbm90IGFsbCBsb2NhbCBBUElDcyBpbiB0aGUgc2FtZSBsb2dpY2FsXG4mIzQzO1x0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4mIzQzO1x0ICovXG4mIzQzO1x0S1ZNX0FQSUNfTU9ERV9NQVBfRElTQUJMRUQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2FwaWNfbWFwIHtcbiYjNDM7XHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdGVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTtcbiYjNDM7XHR1MzIgbWF4X2FwaWNfaWQ7XG4mIzQzO1x0dW5pb24ge1xuJiM0MztcdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19jbHVzdGVyX21hcFsxNl1bNF07XG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xuJiM0Mzt9O1xuJiM0MztcbiBlbnVtIGxhcGljX2x2dF9lbnRyeSB7XG4gXHRMVlRfVElNRVIsXG4gXHRMVlRfVEhFUk1BTF9NT05JVE9SLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxuaW5kZXggYzlmNjI4Yjk3ZGFlYjkuLjg1YmM1MDNkZTFiNmZkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbW11LmhcbkBAIC02LDE0ICYjNDM7NiwxNCBAQFxuICNpbmNsdWRlIFwmIzM0O3JlZ3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NwdWlkLmhcJiMzNDtcbiBcbi1leHRlcm4gYm9vbCB0ZHBfZW5hYmxlZDtcbiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfZW5hYmxlZDtcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiBib29sIHRkcF9tbXVfZW5hYmxlZDtcbiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfbW11X2VuYWJsZWQ7XG4gI2Vsc2VcbiAjZGVmaW5lIHRkcF9tbXVfZW5hYmxlZCBmYWxzZVxuICNlbmRpZlxuIGV4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX21taW9fY2FjaGluZztcbi1leHRlcm4gYm9vbCBlYWdlcl9wYWdlX3NwbGl0O1xuJiM0MztleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IGVhZ2VyX3BhZ2Vfc3BsaXQ7XG4gXG4gI2RlZmluZSBLVk1fTUVNU0xPVF9QQUdFU19UT19NTVVfUEFHRVNfUkFUSU8gNTBcbiAjZGVmaW5lIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTIDY0VUxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggNmMxM2RhOTQyYmZjY2MuLmFmMzgyMDEzNmY3YzIxIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTEwNCw3ICYjNDM7MTA0LDcgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGZsdXNoX29uX3JldXNlLCBmb3JjZV9mbHVzaF9hbmRfc3luY19vbl9yZXVzZSwgYm9vbCwgMDY0NCk7XG4gICogMi4gd2hpbGUgZG9pbmcgMS4gaXQgd2Fsa3MgZ3Vlc3QtcGh5c2ljYWwgdG8gaG9zdC1waHlzaWNhbFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkIHRvIGRvIHNoYWRvdyBwYWdpbmcuXG4gICovXG4tYm9vbCB0ZHBfZW5hYmxlZCA9IGZhbHNlO1xuJiM0Mztib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQgPSBmYWxzZTtcbiBcbiBzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgdGRwX21tdV9hbGxvd2VkO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmggYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uOWM1YzZiMzNlNThmNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIEFSQ0hfWDg2X0tWTV9NU1JfSFxuLSNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUl9IXG4mIzQzOyNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUlNfSFxuJiM0MzsjZGVmaW5lIEFSQ0hfWDg2X0tWTV9NU1JTX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmggYi9hcmNoL3g4Ni9rdm0vcmVncy5oXG5pbmRleCA5NGZkODY3MjhmZWQyOS4uNDQ3ZjBlYzNlNjNlNGUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcmVncy5oXG5AQCAtMTYsNiAmIzQzOzE2LDQ0IEBAXG4gXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcdTAwMjYgWDg2X0NSMF9QRFBUUl9CSVRTKSk7XG4gXG4mIzQzOyNkZWZpbmUgQ1IwX1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSMF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VNIHwgWDg2X0NSMF9UUyBcXFxuJiM0MztcdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuJiM0MztcdFx0XHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcbiYjNDM7XG4mIzQzOyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXFxcbiYjNDM7XHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERSNl9CVVNfTE9DSyAgICgxIFx1MDAzY1x1MDAzYyAxMSlcbiYjNDM7I2RlZmluZSBEUjZfQkRcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuJiM0MzsjZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4mIzQzOyNkZWZpbmUgRFI2X0JUXHRcdCgxIFx1MDAzY1x1MDAzYyAxNSlcbiYjNDM7I2RlZmluZSBEUjZfUlRNXHRcdCgxIFx1MDAzY1x1MDAzYyAxNilcbiYjNDM7LypcbiYjNDM7ICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLlxuJiM0MzsgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XG4mIzQzOyAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbiYjNDM7ICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuXG4mIzQzOyAqXG4mIzQzOyAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBEUjZfQUNUSVZFX0xPV1x0MHhmZmZmMGZmMFxuJiM0MzsjZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuJiM0MzsjZGVmaW5lIERSNl9GSVhFRF8xXHQoRFI2X0FDVElWRV9MT1cgXHUwMDI2IH5EUjZfVk9MQVRJTEUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4mIzQzOyNkZWZpbmUgRFI3X0dFXHRcdCgxIFx1MDAzY1x1MDAzYyA5KVxuJiM0MzsjZGVmaW5lIERSN19HRFx0XHQoMSBcdTAwM2NcdTAwM2MgMTMpXG4mIzQzOyNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4mIzQzO1xuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyMCwgdW5zaWduZWQgbG9uZyBjcjApO1xuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyNChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyNCwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIGludCBrdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdHNzLmggYi9hcmNoL3g4Ni9rdm0vdHNzLmhcbmluZGV4IDExN2JmOGJlYzA3ZGNhLi41NWNlZDg5NzU4NDA2NSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS90c3MuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3Rzcy5oXG5AQCAtMiw2ICYjNDM7MiwxMCBAQFxuICNpZm5kZWYgX19UU1NfU0VHTUVOVF9IXG4gI2RlZmluZSBfX1RTU19TRUdNRU5UX0hcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYnVpbGRfYnVnLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc3RkZGVmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MztcbiBzdHJ1Y3QgdHNzX3NlZ21lbnRfMzIge1xuIFx0dTMyIHByZXZfdGFza19saW5rO1xuIFx0dTMyIGVzcDA7XG5AQCAtNjQsNCAmIzQzOzY4LDcgQEAgc3RydWN0IHRzc19zZWdtZW50XzE2IHtcbiAjZGVmaW5lIFJNT0RFX1RTU19TSVpFXHRcdFx0XHRcdFx0XHRcXFxuIFx0KFRTU19CQVNFX1NJWkUgJiM0MzsgVFNTX1JFRElSRUNUSU9OX1NJWkUgJiM0MzsgVFNTX0lPUEJfU0laRSAmIzQzOyAxKVxuIFxuJiM0MztzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XG4mIzQzO3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMikgPT0gVFNTX0JBU0VfU0laRSk7XG4mIzQzO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0xMTUsNiAmIzQzOzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpO1xuIFxuICNkZWZpbmUgS1ZNX0NBUF9QTVVfVkFMSURfTUFTSyBLVk1fUE1VX0NBUF9ESVNBQkxFXG4gXG4mIzQzOyNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXFxcbiYjNDM7XHQoS1ZNX0dVRVNUREJHX0VOQUJMRSB8IFxcXG4mIzQzO1x0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19VU0VfSFdfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19VU0VfU1dfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19JTkpFQ1RfREIgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19CTE9DS0lSUSlcbiYjNDM7XG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1x0XHR8IFxcXG4gXHRcdFx0XHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcdHwgXFxcbiBcdFx0XHRcdCAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUXHR8IFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXG5pbmRleCA4ZWNlNDY4MDg3YThlZS4uNDk0ZDk3ZTlhOWM5ZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuaFxuQEAgLTQ4Miw2ICYjNDM7NDgyLDEyIEBAIGludCBrdm1fZW11bGF0ZV93YmludmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiB2b2lkIGt2bV92Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpO1xuIFxuJiM0MztlbnVtIGt2bV90YXNrX3N3aXRjaF9yZWFzb24ge1xuJiM0MztcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxuJiM0MztcdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuJiM0MztcdFRBU0tfU1dJVENIX0pNUCA9IDIsXG4mIzQzO1x0VEFTS19TV0lUQ0hfR0FURSA9IDMsXG4mIzQzO307XG4gaW50IGt2bV90YXNrX3N3aXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiB0c3Nfc2VsZWN0b3IsIGludCBpZHRfaW5kZXgsXG4gXHRcdCAgICBpbnQgcmVhc29uLCBib29sIGhhc19lcnJvcl9jb2RlLCB1MzIgZXJyb3JfY29kZSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMjI6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZGE3MWIwMWQ3MTQ4YTU2OTY0YmIwOTRhNTRkNjRkZjM4Y2M5OGIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMjI6NDI6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCBiNTE3MjU3YTYzMTUzMi4uZmRiODk1M2FlZWIxNTcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTI1LDI0ICYjNDM7MTI1LDYgQEAKICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFwKIAlLVk1fQVJDSF9SRVFfRkxBR1MoMzQsIEtWTV9SRVFVRVNUX1dBSVQpCiAKLSNkZWZpbmUgQ1IwX1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQkofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFwKLQkJCSAgfCBYODZfQ1IwX0VUIHwgWDg2X0NSMF9ORSB8IFg4Nl9DUjBfV1AgfCBYODZfQ1IwX0FNIFwKLQkJCSAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKQotCi0jZGVmaW5lIENSNF9SRVNFUlZFRF9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JKH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVwKLQkJCSAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFwKLQkJCSAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFwKLQkJCSAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFwKLQkJCSAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXAotCQkJICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFwKLQkJCSAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpCi0KLSNkZWZpbmUgQ1I4X1JFU0VSVkVEX0JJVFMgKH4odW5zaWduZWQgbG9uZylYODZfQ1I4X1RQUikKLQotCi0KICNkZWZpbmUgSU5WQUxJRF9QQUdFICh+KGhwYV90KTApCiAjZGVmaW5lIFZBTElEX1BBR0UoeCkgKCh4KSAhPSBJTlZBTElEX1BBR0UpCiAKQEAgLTIzMCwzNyAmIzQzOzIxMiw2IEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTsKIAogI2RlZmluZSBLVk1fTlJfREJfUkVHUwk0CiAKLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgJmx0OyZsdDsgMTEpCi0jZGVmaW5lIERSNl9CRAkJKDEgJmx0OyZsdDsgMTMpCi0jZGVmaW5lIERSNl9CUwkJKDEgJmx0OyZsdDsgMTQpCi0jZGVmaW5lIERSNl9CVAkJKDEgJmx0OyZsdDsgMTUpCi0jZGVmaW5lIERSNl9SVE0JCSgxICZsdDsmbHQ7IDE2KQotLyoKLSAqIERSNl9BQ1RJVkVfTE9XIGNvbWJpbmVzIGZpeGVkLTEgYW5kIGFjdGl2ZS1sb3cgYml0cy4KLSAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0czsKLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWQKLSAqIGluIHRoZSBmdXR1cmUgaXQgd2lsbCByZXF1aXJlIG5vIGNvZGUgY2hhbmdlLgotICoKLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LgotICovCi0jZGVmaW5lIERSNl9BQ1RJVkVfTE9XCTB4ZmZmZjBmZjAKLSNkZWZpbmUgRFI2X1ZPTEFUSUxFCTB4MDAwMWU4MGYKLSNkZWZpbmUgRFI2X0ZJWEVEXzEJKERSNl9BQ1RJVkVfTE9XICZhbXA7IH5EUjZfVk9MQVRJTEUpCi0KLSNkZWZpbmUgRFI3X0JQX0VOX01BU0sJMHgwMDAwMDBmZgotI2RlZmluZSBEUjdfR0UJCSgxICZsdDsmbHQ7IDkpCi0jZGVmaW5lIERSN19HRAkJKDEgJmx0OyZsdDsgMTMpCi0jZGVmaW5lIERSN19WT0xBVElMRQkweGZmZmYyYmZmCi0KLSNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXAotCShLVk1fR1VFU1REQkdfRU5BQkxFIHwgXAotCUtWTV9HVUVTVERCR19TSU5HTEVTVEVQIHwgXAotCUtWTV9HVUVTVERCR19VU0VfSFdfQlAgfCBcCi0JS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKLQlLVk1fR1VFU1REQkdfSU5KRUNUX0JQIHwgXAotCUtWTV9HVUVTVERCR19JTkpFQ1RfREIgfCBcCi0JS1ZNX0dVRVNUREJHX0JMT0NLSVJRKQotCiAjZGVmaW5lIFBGRVJSX1BSRVNFTlRfTUFTSwlCSVQoMCkKICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTSwlCSVQoMSkKICNkZWZpbmUgUEZFUlJfVVNFUl9NQVNLCQlCSVQoMikKQEAgLTI5MCwxOSAmIzQzOzI0MSwxMSBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7CiAjZGVmaW5lIFBGRVJSX1BSSVZBVEVfQUNDRVNTICAgQklUX1VMTCg0OSkKICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpCiAKLS8qIGFwaWMgYXR0ZW50aW9uIGJpdHMgKi8KLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUMJMAotLyoKLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLgotICogV2UgZGV0ZWN0IFBWLUVPSSBjaGFuZ2VzIGJ5IGd1ZXN0IGJ5IGNvbXBhcmluZwotICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LgotICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuCi0gKi8KLSNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkcJMQotCiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZDsKIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5OwogCiYjNDM7c3RydWN0IGt2bV9hcGljX21hcDsKJiM0MzsKIHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXI7CiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyOwogCkBAIC03MDUsOTUgJiM0Mzs2NDgsNiBAQCBzdHJ1Y3Qga3ZtX210cnIgewogCXU2NCBkZWZ0eXBlOwogfTsKIAotLyogSHlwZXItViBTeW5JQyB0aW1lciAqLwotc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7Ci0Jc3RydWN0IGhydGltZXIgdGltZXI7Ci0JaW50IGluZGV4OwotCXVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnOwotCXU2NCBjb3VudDsKLQl1NjQgZXhwX3RpbWU7Ci0Jc3RydWN0IGh2X21lc3NhZ2UgbXNnOwotCWJvb2wgbXNnX3BlbmRpbmc7Ci19OwotCi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi8KLXN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7Ci0JdTY0IHZlcnNpb247Ci0JdTY0IGNvbnRyb2w7Ci0JdTY0IG1zZ19wYWdlOwotCXU2NCBldnRfcGFnZTsKLQlhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07Ci0JYXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07Ci0JREVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpOwotCURFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7Ci0JYm9vbCBhY3RpdmU7Ci0JYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7Ci19OwotCi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovCi0jZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFICgxNikKLS8qCi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nCi0gKiBhbnl0aGluZyBiZXNpZGVzIEdWQSBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIEl0IGlzIHRoZW9yZXRpY2FsbHkgcG9zc2libGUKLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMAotICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mCi0gKiBmbHVzaGluZyB0aGVzZSBwYXJ0aWN1bGFyIGFkZHJlc3NlcyBpcywgaG93ZXZlciwgZnVsbHkgbGVnaXRpbWF0ZSBhcwotICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suCi0gKi8KLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWSAgKCh1NjQpLTEpCi0KLWVudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHsKLQlIVl9MMV9UTEJfRkxVU0hfRklGTywKLQlIVl9MMl9UTEJfRkxVU0hfRklGTywKLQlIVl9OUl9UTEJfRkxVU0hfRklGT1MsCi19OwotCi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gewotCXNwaW5sb2NrX3Qgd3JpdGVfbG9jazsKLQlERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpOwotfTsKLQotLyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqLwotc3RydWN0IGt2bV92Y3B1X2h2IHsKLQlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7Ci0JdTMyIHZwX2luZGV4OwotCXU2NCBodl92YXBpYzsKLQlzNjQgcnVudGltZV9vZmZzZXQ7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljOwotCXN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDsKLQlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHN0aW1lcltIVl9TWU5JQ19TVElNRVJfQ09VTlRdOwotCURFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTsKLQlib29sIGVuZm9yY2VfY3B1aWQ7Ci0Jc3RydWN0IHsKLQkJdTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqLwotCQl1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovCi0JCXUzMiBmZWF0dXJlc19lZHg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FRFggKi8KLQkJdTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovCi0JCXUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqLwotCQl1MzIgc3luZGJnX2NhcF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9TWU5EQkdfUExBVEZPUk1fQ0FQQUJJTElUSUVTLkVBWCAqLwotCQl1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi8KLQkJdTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovCi0JfSBjcHVpZF9jYWNoZTsKLQotCXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdOwotCi0JLyoKLQkgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFUKLQkgKiBzZXRzIChmb3IgaGlnaCB2Q1BVIGNvdW50cywgdGhleSYjMzk7cmUgdG9vIGxhcmdlIHRvIGNvbWZvcnRhYmx5IGZpdCBvbgotCSAqIHRoZSBzdGFjaykuCi0JICovCi0JdTY0IHNwYXJzZV9iYW5rc1tIVl9NQVhfU1BBUlNFX1ZDUFVfQkFOS1NdOwotCURFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7Ci0KLQlzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7Ci0KLQlzdHJ1Y3QgewotCQl1NjQgcGFfcGFnZV9ncGE7Ci0JCXU2NCB2bV9pZDsKLQkJdTMyIHZwX2lkOwotCX0gbmVzdGVkOwotfTsKLQogc3RydWN0IGt2bV9oeXBlcnZpc29yX2NwdWlkIHsKIAl1MzIgYmFzZTsKIAl1MzIgbGltaXQ7CkBAIC04MjQsNiAmIzQzOzY3OCw4IEBAIHN0cnVjdCBrdm1fdmNwdV94ZW4gewogfTsKICNlbmRpZgogCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2OwomIzQzOwogc3RydWN0IGt2bV9xdWV1ZWRfZXhjZXB0aW9uIHsKIAlib29sIHBlbmRpbmc7CiAJYm9vbCBpbmplY3RlZDsKQEAgLTExODEsMzkgJiM0MzsxMDM3LDYgQEAgc3RydWN0IGt2bV9hcmNoX21lbW9yeV9zbG90IHsKIAl1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrOwogfTsKIAotLyoKLSAqIFRyYWNrIHRoZSBtb2RlIG9mIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAsIGFzIHRoZSBydWxlcyBmb3IgZGVjb2RpbmcgdGhlCi0gKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGwKLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG8KLSAqIGJlIG1hcHBlZCB0byBvbmx5IG9uZSBNREEsIGFuZCBlYWNoIE1EQSB0byBtYXAgdG8gYXQgbW9zdCBvbmUgQVBJQy4KLSAqLwotZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgewotCS8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovCi0JS1ZNX0FQSUNfTU9ERV9TV19ESVNBQkxFRCwKLQkvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi8KLQlLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsCi0JLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgZmxhdCBhZGRyZXNzaW5nIG1vZGUuICovCi0JS1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULAotCS8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqLwotCUtWTV9BUElDX01PREVfWDJBUElDLAotCS8qCi0JICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWwKLQkgKiBtb2RlLCBzYW1lIGxvZ2ljYWwgSUQgYXNzaWduZWQgdG8gbXVsdGlwbGUgQVBJQ3MsIGV0Yy4KLQkgKi8KLQlLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCwKLX07Ci0KLXN0cnVjdCBrdm1fYXBpY19tYXAgewotCXN0cnVjdCByY3VfaGVhZCByY3U7Ci0JZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlOwotCXUzMiBtYXhfYXBpY19pZDsKLQl1bmlvbiB7Ci0JCXN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2ZsYXRfbWFwWzhdOwotCQlzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19jbHVzdGVyX21hcFsxNl1bNF07Ci0JfTsKLQlzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdOwotfTsKLQogLyogSHlwZXItViBzeW50aGV0aWMgZGVidWdnZXIgKFN5bkRiZykqLwogc3RydWN0IGt2bV9odl9zeW5kYmcgewogCXN0cnVjdCB7CkBAIC0yMDE5LDEzICYjNDM7MTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcikKIH0KICNlbmRpZgogCi1lbnVtIHsKLQlUQVNLX1NXSVRDSF9DQUxMID0gMCwKLQlUQVNLX1NXSVRDSF9JUkVUID0gMSwKLQlUQVNLX1NXSVRDSF9KTVAgPSAyLAotCVRBU0tfU1dJVENIX0dBVEUgPSAzLAotfTsKLQogI2RlZmluZSBIRl9HVUVTVF9NQVNLCQkoMSAmbHQ7Jmx0OyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi8KIAogI2lmZGVmIENPTkZJR19LVk1fU01NCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgKaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjYyNThlZDI3N2E3YjQ3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL2h5cGVydi5oCkBAIC0yNyw2ICYjNDM7MjcsOTYgQEAKIAogI2lmZGVmIENPTkZJR19LVk1fSFlQRVJWCiAKJiM0MzsKJiM0MzsvKiBIeXBlci1WIFN5bklDIHRpbWVyICovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7CiYjNDM7CXN0cnVjdCBocnRpbWVyIHRpbWVyOwomIzQzOwlpbnQgaW5kZXg7CiYjNDM7CXVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnOwomIzQzOwl1NjQgY291bnQ7CiYjNDM7CXU2NCBleHBfdGltZTsKJiM0MzsJc3RydWN0IGh2X21lc3NhZ2UgbXNnOwomIzQzOwlib29sIG1zZ19wZW5kaW5nOwomIzQzO307CiYjNDM7CiYjNDM7LyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHsKJiM0MzsJdTY0IHZlcnNpb247CiYjNDM7CXU2NCBjb250cm9sOwomIzQzOwl1NjQgbXNnX3BhZ2U7CiYjNDM7CXU2NCBldnRfcGFnZTsKJiM0MzsJYXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdOwomIzQzOwlhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpOwomIzQzOwlERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpOwomIzQzOwlib29sIGFjdGl2ZTsKJiM0MzsJYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7CiYjNDM7fTsKJiM0MzsKJiM0MzsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovCiYjNDM7I2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpCiYjNDM7LyoKJiM0MzsgKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nCiYjNDM7ICogYW55dGhpbmcgYmVzaWRlcyBHVkEgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiBJdCBpcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlCiYjNDM7ICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwCiYjNDM7ICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mCiYjNDM7ICogZmx1c2hpbmcgdGhlc2UgcGFydGljdWxhciBhZGRyZXNzZXMgaXMsIGhvd2V2ZXIsIGZ1bGx5IGxlZ2l0aW1hdGUgYXMKJiM0MzsgKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hBTExfRU5UUlkgICgodTY0KS0xKQomIzQzOwomIzQzO2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHsKJiM0MzsJSFZfTDFfVExCX0ZMVVNIX0ZJRk8sCiYjNDM7CUhWX0wyX1RMQl9GTFVTSF9GSUZPLAomIzQzOwlIVl9OUl9UTEJfRkxVU0hfRklGT1MsCiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gewomIzQzOwlzcGlubG9ja190IHdyaXRlX2xvY2s7CiYjNDM7CURFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7CiYjNDM7fTsKJiM0MzsKJiM0MzsvKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2IHsKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwl1MzIgdnBfaW5kZXg7CiYjNDM7CXU2NCBodl92YXBpYzsKJiM0MzsJczY0IHJ1bnRpbWVfb2Zmc2V0OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgc3luaWM7CiYjNDM7CXN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciBzdGltZXJbSFZfU1lOSUNfU1RJTUVSX0NPVU5UXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAoc3RpbWVyX3BlbmRpbmdfYml0bWFwLCBIVl9TWU5JQ19TVElNRVJfQ09VTlQpOwomIzQzOwlib29sIGVuZm9yY2VfY3B1aWQ7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovCiYjNDM7CQl1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovCiYjNDM7CQl1MzIgZmVhdHVyZXNfZWR4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRURYICovCiYjNDM7CQl1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi8KJiM0MzsJCXUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqLwomIzQzOwkJdTMyIHN5bmRiZ19jYXBfZWF4OyAvKiBIWVBFUlZfQ1BVSURfU1lOREJHX1BMQVRGT1JNX0NBUEFCSUxJVElFUy5FQVggKi8KJiM0MzsJCXUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqLwomIzQzOwkJdTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovCiYjNDM7CX0gY3B1aWRfY2FjaGU7CiYjNDM7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFUKJiM0MzsJICogc2V0cyAoZm9yIGhpZ2ggdkNQVSBjb3VudHMsIHRoZXkmIzM5O3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb24KJiM0MzsJICogdGhlIHN0YWNrKS4KJiM0MzsJICovCiYjNDM7CXU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTsKJiM0MzsKJiM0MzsJc3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTY0IHBhX3BhZ2VfZ3BhOwomIzQzOwkJdTY0IHZtX2lkOwomIzQzOwkJdTMyIHZwX2lkOwomIzQzOwl9IG5lc3RlZDsKJiM0Mzt9OwomIzQzOwogLyogJiMzNDtIdiMxJiMzNDsgc2lnbmF0dXJlICovCiAjZGVmaW5lIEhZUEVSVl9DUFVJRF9TSUdOQVRVUkVfRUFYIDB4MzEyMzc2NDgKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuYwppbmRleCA2ZjMwYmJkZGRiNWFhOS4uMDM1NGRiMGYyYzBmMDMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCkBAIC03NSw2ICYjNDM7NzUsMTYgQEAgbW9kdWxlX3BhcmFtKGxhcGljX3RpbWVyX2FkdmFuY2UsIGJvb2wsIDA0NDQpOwogLyogc3RlcC1ieS1zdGVwIGFwcHJveGltYXRpb24gdG8gbWl0aWdhdGUgZmx1Y3R1YXRpb24gKi8KICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4CiAKJiM0MzsvKiBhcGljIGF0dGVudGlvbiBiaXRzICovCiYjNDM7I2RlZmluZSBLVk1fQVBJQ19DSEVDS19WQVBJQwkwCiYjNDM7LyoKJiM0MzsgKiBUaGUgZm9sbG93aW5nIGJpdCBpcyBzZXQgd2l0aCBQVi1FT0ksIHVuc2V0IG9uIEVPSS4KJiM0MzsgKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nCiYjNDM7ICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LgomIzQzOyAqIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gYXBpY191cGRhdGVfcHZfZW9pLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkcJMQomIzQzOwogc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTsKIG1vZHVsZV9wYXJhbV9uYW1lZCh2ZWN0b3JfaGFzaGluZywgdmVjdG9yX2hhc2hpbmdfZW5hYmxlZCwgYm9vbCwgMDQ0NCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmgKaW5kZXggNThkYmI5NGY5ODBkYTIuLmJkMTA5OGM4OWQ5OTgwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaApAQCAtMzIsNiAmIzQzOzMyLDM5IEBAIGVudW0gbGFwaWNfbW9kZSB7CiAJTEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLAogfTsKIAomIzQzOy8qCiYjNDM7ICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGUKJiM0MzsgKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGwKJiM0MzsgKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvCiYjNDM7ICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLgomIzQzOyAqLwomIzQzO2VudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHsKJiM0MzsJLyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi8KJiM0MzsJS1ZNX0FQSUNfTU9ERV9TV19ESVNBQkxFRCwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUiwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgZmxhdCBhZGRyZXNzaW5nIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWEFQSUNfRkxBVCwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWDJBUElDLAomIzQzOwkvKgomIzQzOwkgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbAomIzQzOwkgKiBtb2RlLCBzYW1lIGxvZ2ljYWwgSUQgYXNzaWduZWQgdG8gbXVsdGlwbGUgQVBJQ3MsIGV0Yy4KJiM0MzsJICovCiYjNDM7CUtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGt2bV9hcGljX21hcCB7CiYjNDM7CXN0cnVjdCByY3VfaGVhZCByY3U7CiYjNDM7CWVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTsKJiM0MzsJdTMyIG1heF9hcGljX2lkOwomIzQzOwl1bmlvbiB7CiYjNDM7CQlzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTsKJiM0MzsJCXN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTsKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGt2bV9sYXBpYyAqcGh5c19tYXBbXTsKJiM0Mzt9OwomIzQzOwogZW51bSBsYXBpY19sdnRfZW50cnkgewogCUxWVF9USU1FUiwKIAlMVlRfVEhFUk1BTF9NT05JVE9SLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS5oIGIvYXJjaC94ODYva3ZtL21tdS5oCmluZGV4IGM5ZjYyOGI5N2RhZWI5Li44NWJjNTAzZGUxYjZmZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUuaApAQCAtNiwxNCAmIzQzOzYsMTQgQEAKICNpbmNsdWRlICYjMzQ7cmVncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y3B1aWQuaCYjMzQ7CiAKLWV4dGVybiBib29sIHRkcF9lbmFibGVkOwomIzQzO2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQ7CiAjaWZkZWYgQ09ORklHX1g4Nl82NAotZXh0ZXJuIGJvb2wgdGRwX21tdV9lbmFibGVkOwomIzQzO2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX21tdV9lbmFibGVkOwogI2Vsc2UKICNkZWZpbmUgdGRwX21tdV9lbmFibGVkIGZhbHNlCiAjZW5kaWYKIGV4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX21taW9fY2FjaGluZzsKLWV4dGVybiBib29sIGVhZ2VyX3BhZ2Vfc3BsaXQ7CiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlYWdlcl9wYWdlX3NwbGl0OwogCiAjZGVmaW5lIEtWTV9NRU1TTE9UX1BBR0VTX1RPX01NVV9QQUdFU19SQVRJTyA1MAogI2RlZmluZSBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyA2NFVMCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCA2YzEzZGE5NDJiZmNjYy4uYWYzODIwMTM2ZjdjMjEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwpAQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBtb2R1bGVfcGFyYW1fbmFtZWQoZmx1c2hfb25fcmV1c2UsIGZvcmNlX2ZsdXNoX2FuZF9zeW5jX29uX3JldXNlLCBib29sLCAwNjQ0KTsKICAqIDIuIHdoaWxlIGRvaW5nIDEuIGl0IHdhbGtzIGd1ZXN0LXBoeXNpY2FsIHRvIGhvc3QtcGh5c2ljYWwKICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkIHRvIGRvIHNoYWRvdyBwYWdpbmcuCiAgKi8KLWJvb2wgdGRwX2VuYWJsZWQgPSBmYWxzZTsKJiM0Mztib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQgPSBmYWxzZTsKIAogc3RhdGljIGJvb2wgX19yb19hZnRlcl9pbml0IHRkcF9tbXVfYWxsb3dlZDsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmgKaW5kZXggYjY5ODk4M2UzN2ZiNjEuLjljNWM2YjMzZTU4ZjU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmgKQEAgLTEsNiAmIzQzOzEsNiBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUl9ICi0jZGVmaW5lIEFSQ0hfWDg2X0tWTV9NU1JfSAomIzQzOyNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUlNfSAomIzQzOyNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUlNfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX2hvc3QuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91c2VyLXJldHVybi1ub3RpZmllci5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuaCBiL2FyY2gveDg2L2t2bS9yZWdzLmgKaW5kZXggOTRmZDg2NzI4ZmVkMjkuLjQ0N2YwZWMzZTYzZTRlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9yZWdzLmgKQEAgLTE2LDYgJiM0MzsxNiw0NCBAQAogCiBzdGF0aWNfYXNzZXJ0KCEoS1ZNX1BPU1NJQkxFX0NSMF9HVUVTVF9CSVRTICZhbXA7IFg4Nl9DUjBfUERQVFJfQklUUykpOwogCiYjNDM7I2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOwkofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFwKJiM0MzsJCQkgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcCiYjNDM7CQkJICB8IFg4Nl9DUjBfTlcgfCBYODZfQ1IwX0NEIHwgWDg2X0NSMF9QRykpCiYjNDM7CiYjNDM7I2RlZmluZSBDUjRfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOwkofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXAomIzQzOwkJCSAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFwKJiM0MzsJCQkgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcCiYjNDM7CQkJICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXAomIzQzOwkJCSAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXAomIzQzOwkJCSAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcCiYjNDM7CQkJICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSkKJiM0MzsKJiM0MzsjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpCiYjNDM7CiYjNDM7I2RlZmluZSBEUjZfQlVTX0xPQ0sgICAoMSAmbHQ7Jmx0OyAxMSkKJiM0MzsjZGVmaW5lIERSNl9CRAkJKDEgJmx0OyZsdDsgMTMpCiYjNDM7I2RlZmluZSBEUjZfQlMJCSgxICZsdDsmbHQ7IDE0KQomIzQzOyNkZWZpbmUgRFI2X0JUCQkoMSAmbHQ7Jmx0OyAxNSkKJiM0MzsjZGVmaW5lIERSNl9SVE0JCSgxICZsdDsmbHQ7IDE2KQomIzQzOy8qCiYjNDM7ICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLgomIzQzOyAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0czsKJiM0MzsgKiB0aGV5IHdpbGwgbmV2ZXIgYmUgMCBmb3Igbm93LCBidXQgd2hlbiB0aGV5IGFyZSBkZWZpbmVkCiYjNDM7ICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuCiYjNDM7ICoKJiM0MzsgKiBEUjZfQUNUSVZFX0xPVyBpcyBhbHNvIHVzZWQgYXMgdGhlIGluaXQvcmVzZXQgdmFsdWUgZm9yIERSNi4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIERSNl9BQ1RJVkVfTE9XCTB4ZmZmZjBmZjAKJiM0MzsjZGVmaW5lIERSNl9WT0xBVElMRQkweDAwMDFlODBmCiYjNDM7I2RlZmluZSBEUjZfRklYRURfMQkoRFI2X0FDVElWRV9MT1cgJmFtcDsgfkRSNl9WT0xBVElMRSkKJiM0MzsKJiM0MzsjZGVmaW5lIERSN19CUF9FTl9NQVNLCTB4MDAwMDAwZmYKJiM0MzsjZGVmaW5lIERSN19HRQkJKDEgJmx0OyZsdDsgOSkKJiM0MzsjZGVmaW5lIERSN19HRAkJKDEgJmx0OyZsdDsgMTMpCiYjNDM7I2RlZmluZSBEUjdfVk9MQVRJTEUJMHhmZmZmMmJmZgomIzQzOwogdm9pZCBrdm1fcG9zdF9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBvbGRfY3IwLCB1bnNpZ25lZCBsb25nIGNyMCk7CiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTsKIGludCBrdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS90c3MuaCBiL2FyY2gveDg2L2t2bS90c3MuaAppbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS90c3MuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdHNzLmgKQEAgLTIsNiAmIzQzOzIsMTAgQEAKICNpZm5kZWYgX19UU1NfU0VHTUVOVF9ICiAjZGVmaW5lIF9fVFNTX1NFR01FTlRfSAogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2J1aWxkX2J1Zy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zdGRkZWYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsKIHN0cnVjdCB0c3Nfc2VnbWVudF8zMiB7CiAJdTMyIHByZXZfdGFza19saW5rOwogCXUzMiBlc3AwOwpAQCAtNjQsNCAmIzQzOzY4LDcgQEAgc3RydWN0IHRzc19zZWdtZW50XzE2IHsKICNkZWZpbmUgUk1PREVfVFNTX1NJWkUJCQkJCQkJXAogCShUU1NfQkFTRV9TSVpFICYjNDM7IFRTU19SRURJUkVDVElPTl9TSVpFICYjNDM7IFRTU19JT1BCX1NJWkUgJiM0MzsgMSkKIAomIzQzO3N0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IHRzc19zZWdtZW50XzMyLCBpb19tYXApID09IFRTU19JT1BCX0JBU0VfT0ZGU0VUKTsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgdHNzX3NlZ21lbnRfMzIpID09IFRTU19CQVNFX1NJWkUpOwomIzQzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xMTUsNiAmIzQzOzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpOwogCiAjZGVmaW5lIEtWTV9DQVBfUE1VX1ZBTElEX01BU0sgS1ZNX1BNVV9DQVBfRElTQUJMRQogCiYjNDM7I2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcCiYjNDM7CShLVk1fR1VFU1REQkdfRU5BQkxFIHwgXAomIzQzOwlLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0JMT0NLSVJRKQomIzQzOwogI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEUwkJfCBcCiAJCQkJICAgIEtWTV9YMkFQSUNfQVBJX0RJU0FCTEVfQlJPQURDQVNUX1FVSVJLCXwgXAogCQkJCSAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUCXwgXApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oCmluZGV4IDhlY2U0NjgwODdhOGVlLi40OTRkOTdlOWE5YzlmMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuaApAQCAtNDgyLDYgJiM0Mzs0ODIsMTIgQEAgaW50IGt2bV9lbXVsYXRlX3diaW52ZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV92Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpOwogCiYjNDM7ZW51bSBrdm1fdGFza19zd2l0Y2hfcmVhc29uIHsKJiM0MzsJVEFTS19TV0lUQ0hfQ0FMTCA9IDAsCiYjNDM7CVRBU0tfU1dJVENIX0lSRVQgPSAxLAomIzQzOwlUQVNLX1NXSVRDSF9KTVAgPSAyLAomIzQzOwlUQVNLX1NXSVRDSF9HQVRFID0gMywKJiM0Mzt9OwogaW50IGt2bV90YXNrX3N3aXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiB0c3Nfc2VsZWN0b3IsIGludCBpZHRfaW5kZXgsCiAJCSAgICBpbnQgcmVhc29uLCBib29sIGhhc19lcnJvcl9jb2RlLCB1MzIgZXJyb3JfY29kZSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMjI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjgKCQkJCQkJCW91dHB1dDogNzQKCQkJCQkJCXRob3VnaHRzOiA4MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIHg4NiBDb2RlIFJlZmFjdG9yaW5nIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgZm9jdXNlZCBvbiByZW9yZ2FuaXppbmcgYW5kIHRpZHlpbmcgdXAgdGhlIEtWTSB4ODYgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgbW92aW5nIG1hY3JvIGFuZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJvdW5kLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBhcmUgYmVpbmcgbW92ZWQgb3V0IG9mIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCBhbmQgcmVkaXN0cmlidXRlZCBpbnRvIHZhcmlvdXMgb3RoZXIgeDg2IEtWTSBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyBsaWtlIGBoeXBlcnYuaGAsIGBsYXBpYy5jYCwgYGxhcGljLmhgLCBgcmVncy5oYCwgYHg4Ni5jYCwgYW5kIGB4ODYuaGAuIE5vIGZ1bmRhbWVudGFsIGxvZ2ljIGNoYW5nZXMgdGhlcmUsIGp1c3QgcmUtYXJyYW5naW5nLgoKVGhlIGFkZGl0aW9uIG9mIGBfX3JlYWRfbW9zdGx5YCB0byBgdGRwX2VuYWJsZWRgLCBgdGRwX21tdV9lbmFibGVkYCwgYW5kIGBlYWdlcl9wYWdlX3NwbGl0YCB3aXRoaW4gYGFyY2gveDg2L2t2bS9tbXUuaGAgYW5kIGBtbXUuY2AgYWxzbyBjYXRjaGVzIG15IGV5ZS4gVGhpcyBpcyBhIGNsYXNzaWMgb3B0aW1pemF0aW9uOyBhIGhpbnQgdG8gdGhlIGNvbXBpbGVyIHRvIHBsYWNlIHRoZXNlIHZhcmlhYmxlcyBpbiBhIHJlYWQtbW9zdGx5IHNlY3Rpb24sIGxpa2VseSBmb3IgY2FjaGUgZWZmaWNpZW5jeS4gVGhhdCYjMzk7cyBhIGxheW91dCBjaGFuZ2UsIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRlcm1zIG9mIHRoZSBhY3R1YWwgYWxnb3JpdGhtIG9yIGJlaGF2aW9yLgoKVGhlbiB0aGVyZSBhcmUgdGhvc2UgYHN0YXRpY19hc3NlcnRgcyBhZGRlZCBpbiBgYXJjaC94ODYva3ZtL3Rzcy5oYC4gVGhlc2UgYXJlIGNvbXBpbGUtdGltZSBjaGVja3MsIGVuc3VyaW5nIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGB0c3Nfc2VnbWVudF8zMmAgc3RydWN0dXJlIGhvbGQgdHJ1ZS4gQWdhaW4sIG5vIHJ1bnRpbWUgaW1wYWN0IG9uIGZ1bmN0aW9uYWxpdHkuCgpJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhlIGVudW0gY2hhbmdlLiBSZW5hbWluZyB0aGUgZW51bSBmb3IgdGFzayBzd2l0Y2ggcmVhc29ucyBmcm9tIGFuIGFub255bW91cyBlbnVtIHRvIGBrdm1fdGFza19zd2l0Y2hfcmVhc29uYCBpcyBkZWZpbml0ZWx5IGp1c3QgZm9yIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4KCkFuZCB0aGF0IGluY2x1ZGUgZ3VhcmQgZml4IGluIGBhcmNoL3g4Ni9rdm0vbXNycy5oYCwgY2hhbmdpbmcgdGhlIGAjaWZuZGVmYCBtYWNybyBuYW1lLCB0aGF0JiMzOTtzIGp1c3QgZ29vZCBoeWdpZW5lLgoKSSB0b29rIGEgZ29vZCBsb29rIGF0IHRoZSBgX19yZWFkX21vc3RseWAgY2hhbmdlcyBpbiBtb3JlIGRldGFpbCBhbmQgY29uZmlybWVkIHRoYXQgdGhleSBhcmUganVzdCBzZWN0aW9uIGF0dHJpYnV0ZXMgYW5kIHRoZXJlZm9yZSBub3QgcmVsYXRlZCB0byBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UuCgpTbywgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIHRoaXMgcGF0Y2ggYXBwZWFycyB0byBiZSBwdXJlbHkgYSByZWZhY3RvcmluZyBlZmZvcnQuIEl0JiMzOTtzIGEgY2xlYW51cCwgaW1wcm92aW5nIGNvZGUgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZSB3aXRoIGBfX3JlYWRfbW9zdGx5YC4gSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbnMgdGhhdCByZXF1aXJlIGZ1enppbmcuIE15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vdmVzIGRlZmluaXRpb25zLCBtYWNyb3MsIGFuZCBzdHJ1Y3RzIGJldHdlZW4gaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMsIGFkZHMgX19yZWFkX21vc3RseSBhdHRyaWJ1dGVzLCBhbmQgaW50cm9kdWNlcyBjb21waWxlLXRpbWUgc3RhdGljX2Fzc2VydHMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNVQyMjo0Mjo0NC4zMDkwNjQzNDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ4MzY0NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vdmVzIGRlZmluaXRpb25zLCBtYWNyb3MsIGFuZCBzdHJ1Y3RzIGJldHdlZW4gaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMsIGFkZHMgX19yZWFkX21vc3RseSBhdHRyaWJ1dGVzLCBhbmQgaW50cm9kdWNlcyBjb21waWxlLXRpbWUgc3RhdGljX2Fzc2VydHMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjMwOTA2OTkzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5NTk1ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGRhNzFiMDFkNzE0OGE1Njk2NGJiMDk0YTU0ZDY0ZGYzOGNjOThiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi5mZGI4OTUzYWVlYjE1NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0xMjUsMjQgKzEyNSw2IEBAXFxuICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFxcXFxcXG4gXFx0S1ZNX0FSQ0hfUkVRX0ZMQUdTKDM0LCBLVk1fUkVRVUVTVF9XQUlUKVxcbiBcXG4tI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi1cXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjBfRVQgfCBYODZfQ1IwX05FIHwgWDg2X0NSMF9XUCB8IFg4Nl9DUjBfQU0gXFxcXFxcbi1cXHRcXHRcXHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcXG4tXFxuLSNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tXFx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9QQUUgfCBYODZfQ1I0X01DRSAgICAgXFxcXFxcbi1cXHRcXHRcXHQgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjRfT1NYTU1FWENQVCB8IFg4Nl9DUjRfTEE1NyB8IFg4Nl9DUjRfVk1YRSBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXFxuLVxcbi0jZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXFxuLVxcbi1cXG4tXFxuICNkZWZpbmUgSU5WQUxJRF9QQUdFICh+KGhwYV90KTApXFxuICNkZWZpbmUgVkFMSURfUEFHRSh4KSAoKHgpICE9IElOVkFMSURfUEFHRSlcXG4gXFxuQEAgLTIzMCwzNyArMjEyLDYgQEAgZW51bSB4ODZfaW50ZXJjZXB0X3N0YWdlO1xcbiBcXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1xcdDRcXG4gXFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXFx1MDAzY1xcdTAwM2MgMTEpXFxuLSNkZWZpbmUgRFI2X0JEXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTMpXFxuLSNkZWZpbmUgRFI2X0JTXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTQpXFxuLSNkZWZpbmUgRFI2X0JUXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTUpXFxuLSNkZWZpbmUgRFI2X1JUTVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbi0vKlxcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXFxuLSAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0cztcXG4tICogdGhleSB3aWxsIG5ldmVyIGJlIDAgZm9yIG5vdywgYnV0IHdoZW4gdGhleSBhcmUgZGVmaW5lZFxcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cXG4tICpcXG4tICogRFI2X0FDVElWRV9MT1cgaXMgYWxzbyB1c2VkIGFzIHRoZSBpbml0L3Jlc2V0IHZhbHVlIGZvciBEUjYuXFxuLSAqL1xcbi0jZGVmaW5lIERSNl9BQ1RJVkVfTE9XXFx0MHhmZmZmMGZmMFxcbi0jZGVmaW5lIERSNl9WT0xBVElMRVxcdDB4MDAwMWU4MGZcXG4tI2RlZmluZSBEUjZfRklYRURfMVxcdChEUjZfQUNUSVZFX0xPVyBcXHUwMDI2IH5EUjZfVk9MQVRJTEUpXFxuLVxcbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXFx0MHgwMDAwMDBmZlxcbi0jZGVmaW5lIERSN19HRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDkpXFxuLSNkZWZpbmUgRFI3X0dEXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTMpXFxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXFx0MHhmZmZmMmJmZlxcbi1cXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxcXFxuLVxcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgXFxcXFxcbi1cXHRLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0JMT0NLSVJRKVxcbi1cXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcXHRCSVQoMClcXG4gI2RlZmluZSBQRkVSUl9XUklURV9NQVNLXFx0QklUKDEpXFxuICNkZWZpbmUgUEZFUlJfVVNFUl9NQVNLXFx0XFx0QklUKDIpXFxuQEAgLTI5MCwxOSArMjQxLDExIEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTtcXG4gI2RlZmluZSBQRkVSUl9QUklWQVRFX0FDQ0VTUyAgIEJJVF9VTEwoNDkpXFxuICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpXFxuIFxcbi0vKiBhcGljIGF0dGVudGlvbiBiaXRzICovXFxuLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcXHQwXFxuLS8qXFxuLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxcbi0gKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXFxuLSAqIHRoaXMgYml0IHdpdGggUFYtRU9JIGluIGd1ZXN0IG1lbW9yeS5cXG4tICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXFxuLSAqL1xcbi0jZGVmaW5lIEtWTV9BUElDX1BWX0VPSV9QRU5ESU5HXFx0MVxcbi1cXG4gc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQ7XFxuIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5O1xcbiBcXG4rc3RydWN0IGt2bV9hcGljX21hcDtcXG4rXFxuIHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXI7XFxuIHN0cnVjdCBrdm1feDg2X3BtdV9ldmVudF9maWx0ZXI7XFxuIFxcbkBAIC03MDUsOTUgKzY0OCw2IEBAIHN0cnVjdCBrdm1fbXRyciB7XFxuIFxcdHU2NCBkZWZ0eXBlO1xcbiB9O1xcbiBcXG4tLyogSHlwZXItViBTeW5JQyB0aW1lciAqL1xcbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHtcXG4tXFx0c3RydWN0IGhydGltZXIgdGltZXI7XFxuLVxcdGludCBpbmRleDtcXG4tXFx0dW5pb24gaHZfc3RpbWVyX2NvbmZpZyBjb25maWc7XFxuLVxcdHU2NCBjb3VudDtcXG4tXFx0dTY0IGV4cF90aW1lO1xcbi1cXHRzdHJ1Y3QgaHZfbWVzc2FnZSBtc2c7XFxuLVxcdGJvb2wgbXNnX3BlbmRpbmc7XFxuLX07XFxuLVxcbi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi9cXG4tc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHtcXG4tXFx0dTY0IHZlcnNpb247XFxuLVxcdHU2NCBjb250cm9sO1xcbi1cXHR1NjQgbXNnX3BhZ2U7XFxuLVxcdHU2NCBldnRfcGFnZTtcXG4tXFx0YXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdO1xcbi1cXHRhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcXG4tXFx0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xcbi1cXHRERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpO1xcbi1cXHRib29sIGFjdGl2ZTtcXG4tXFx0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XFxuLX07XFxuLVxcbi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXFxuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxcbi0vKlxcbi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICdtYWdpYycgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xcbi0gKiBhbnl0aGluZyBiZXNpZGVzIEdWQSBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIEl0IGlzIHRoZW9yZXRpY2FsbHkgcG9zc2libGVcXG4tICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwXFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSdzIGFjdGlvbiB0byAnZmx1c2ggZXZlcnl0aGluZycgaW5zdGVhZCBvZlxcbi0gKiBmbHVzaGluZyB0aGVzZSBwYXJ0aWN1bGFyIGFkZHJlc3NlcyBpcywgaG93ZXZlciwgZnVsbHkgbGVnaXRpbWF0ZSBhc1xcbi0gKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy5cXG4tICovXFxuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWSAgKCh1NjQpLTEpXFxuLVxcbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XFxuLVxcdEhWX0wxX1RMQl9GTFVTSF9GSUZPLFxcbi1cXHRIVl9MMl9UTEJfRkxVU0hfRklGTyxcXG4tXFx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxcbi19O1xcbi1cXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcXG4tXFx0c3BpbmxvY2tfdCB3cml0ZV9sb2NrO1xcbi1cXHRERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xcbi19O1xcbi1cXG4tLyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqL1xcbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuLVxcdHUzMiB2cF9pbmRleDtcXG4tXFx0dTY0IGh2X3ZhcGljO1xcbi1cXHRzNjQgcnVudGltZV9vZmZzZXQ7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcXG4tXFx0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHN0aW1lcltIVl9TWU5JQ19TVElNRVJfQ09VTlRdO1xcbi1cXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XFxuLVxcdGJvb2wgZW5mb3JjZV9jcHVpZDtcXG4tXFx0c3RydWN0IHtcXG4tXFx0XFx0dTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqL1xcbi1cXHRcXHR1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovXFxuLVxcdFxcdHUzMiBmZWF0dXJlc19lZHg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FRFggKi9cXG4tXFx0XFx0dTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovXFxuLVxcdFxcdHUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqL1xcbi1cXHRcXHR1MzIgc3luZGJnX2NhcF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9TWU5EQkdfUExBVEZPUk1fQ0FQQUJJTElUSUVTLkVBWCAqL1xcbi1cXHRcXHR1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi9cXG4tXFx0XFx0dTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovXFxuLVxcdH0gY3B1aWRfY2FjaGU7XFxuLVxcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxcbi1cXHQgKiBzZXRzIChmb3IgaGlnaCB2Q1BVIGNvdW50cywgdGhleSdyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXFxuLVxcdCAqIHRoZSBzdGFjaykuXFxuLVxcdCAqL1xcbi1cXHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XFxuLVxcdERFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XFxuLVxcbi1cXHRzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7XFxuLVxcbi1cXHRzdHJ1Y3Qge1xcbi1cXHRcXHR1NjQgcGFfcGFnZV9ncGE7XFxuLVxcdFxcdHU2NCB2bV9pZDtcXG4tXFx0XFx0dTMyIHZwX2lkO1xcbi1cXHR9IG5lc3RlZDtcXG4tfTtcXG4tXFxuIHN0cnVjdCBrdm1faHlwZXJ2aXNvcl9jcHVpZCB7XFxuIFxcdHUzMiBiYXNlO1xcbiBcXHR1MzIgbGltaXQ7XFxuQEAgLTgyNCw2ICs2NzgsOCBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfeGVuIHtcXG4gfTtcXG4gI2VuZGlmXFxuIFxcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHY7XFxuK1xcbiBzdHJ1Y3Qga3ZtX3F1ZXVlZF9leGNlcHRpb24ge1xcbiBcXHRib29sIHBlbmRpbmc7XFxuIFxcdGJvb2wgaW5qZWN0ZWQ7XFxuQEAgLTExODEsMzkgKzEwMzcsNiBAQCBzdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xcbiBcXHR1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrO1xcbiB9O1xcbiBcXG4tLypcXG4tICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGVcXG4tICogZGVzdGluYXRpb24gdmFyeSBwZXIgbW9kZS4gIEVuYWJsaW5nIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAgcmVxdWlyZXMgYWxsXFxuLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cXG4tICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLlxcbi0gKi9cXG4tZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xcbi1cXHQvKiBBbGwgbG9jYWwgQVBJQ3MgYXJlIHNvZnR3YXJlIGRpc2FibGVkLiAqL1xcbi1cXHRLVk1fQVBJQ19NT0RFX1NXX0RJU0FCTEVELFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19DTFVTVEVSLFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBmbGF0IGFkZHJlc3NpbmcgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4MkFQSUMgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YMkFQSUMsXFxuLVxcdC8qXFxuLVxcdCAqIE9wdGltaXplZCBtYXAgZGlzYWJsZWQsIGUuZy4gbm90IGFsbCBsb2NhbCBBUElDcyBpbiB0aGUgc2FtZSBsb2dpY2FsXFxuLVxcdCAqIG1vZGUsIHNhbWUgbG9naWNhbCBJRCBhc3NpZ25lZCB0byBtdWx0aXBsZSBBUElDcywgZXRjLlxcbi1cXHQgKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9NQVBfRElTQUJMRUQsXFxuLX07XFxuLVxcbi1zdHJ1Y3Qga3ZtX2FwaWNfbWFwIHtcXG4tXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4tXFx0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xcbi1cXHR1MzIgbWF4X2FwaWNfaWQ7XFxuLVxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XFxuLVxcdFxcdHN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTtcXG4tXFx0fTtcXG4tXFx0c3RydWN0IGt2bV9sYXBpYyAqcGh5c19tYXBbXTtcXG4tfTtcXG4tXFxuIC8qIEh5cGVyLVYgc3ludGhldGljIGRlYnVnZ2VyIChTeW5EYmcpKi9cXG4gc3RydWN0IGt2bV9odl9zeW5kYmcge1xcbiBcXHRzdHJ1Y3Qge1xcbkBAIC0yMDE5LDEzICsxODQyLDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlYWRfbXNyKHVuc2lnbmVkIGxvbmcgbXNyKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4tZW51bSB7XFxuLVxcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxcbi1cXHRUQVNLX1NXSVRDSF9JUkVUID0gMSxcXG4tXFx0VEFTS19TV0lUQ0hfSk1QID0gMixcXG4tXFx0VEFTS19TV0lUQ0hfR0FURSA9IDMsXFxuLX07XFxuLVxcbiAjZGVmaW5lIEhGX0dVRVNUX01BU0tcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cXG4gXFxuICNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcXG5pbmRleCAxYzhmN2FhYWIwNjNkMC4uNjI1OGVkMjc3YTdiNDcgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuQEAgLTI3LDYgKzI3LDk2IEBAXFxuIFxcbiAjaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG4gXFxuK1xcbisvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXFxuK3N0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xcbitcXHRzdHJ1Y3QgaHJ0aW1lciB0aW1lcjtcXG4rXFx0aW50IGluZGV4O1xcbitcXHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcXG4rXFx0dTY0IGNvdW50O1xcbitcXHR1NjQgZXhwX3RpbWU7XFxuK1xcdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcXG4rXFx0Ym9vbCBtc2dfcGVuZGluZztcXG4rfTtcXG4rXFxuKy8qIEh5cGVyLVYgc3ludGhldGljIGludGVycnVwdCBjb250cm9sbGVyIChTeW5JQykqL1xcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMge1xcbitcXHR1NjQgdmVyc2lvbjtcXG4rXFx0dTY0IGNvbnRyb2w7XFxuK1xcdHU2NCBtc2dfcGFnZTtcXG4rXFx0dTY0IGV2dF9wYWdlO1xcbitcXHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XFxuK1xcdGF0b21pY190IHNpbnRfdG9fZ3NpW0hWX1NZTklDX1NJTlRfQ09VTlRdO1xcbitcXHRERUNMQVJFX0JJVE1BUChhdXRvX2VvaV9iaXRtYXAsIDI1Nik7XFxuK1xcdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XFxuK1xcdGJvb2wgYWN0aXZlO1xcbitcXHRib29sIGRvbnRfemVyb19zeW5pY19wYWdlcztcXG4rfTtcXG4rXFxuKy8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gKi9cXG4rI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpXFxuKy8qXFxuKyAqIE5vdGU6IHRoZSBmb2xsb3dpbmcgJ21hZ2ljJyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXFxuKyAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxcbisgKiB0byBvYnNlcnZlIGEgcmVxdWVzdCB0byBmbHVzaCA0MDk1IFBGTnMgc3RhcnRpbmcgZnJvbSAweGZmZmZmZmZmZmZmZmYwMDBcXG4rICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJ3MgYWN0aW9uIHRvICdmbHVzaCBldmVyeXRoaW5nJyBpbnN0ZWFkIG9mXFxuKyAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXFxuKyAqIGZsdXNoaW5nIG1vcmUgdGhhbiByZXF1ZXN0ZWQgaXMgYWx3YXlzIE9LLlxcbisgKi9cXG4rI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcXG4rXFxuK2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcXG4rXFx0SFZfTDFfVExCX0ZMVVNIX0ZJRk8sXFxuK1xcdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxcbitcXHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xcbitcXHRzcGlubG9ja190IHdyaXRlX2xvY2s7XFxuK1xcdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XFxuK307XFxuK1xcbisvKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXFxuK3N0cnVjdCBrdm1fdmNwdV9odiB7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0dTMyIHZwX2luZGV4O1xcbitcXHR1NjQgaHZfdmFwaWM7XFxuK1xcdHM2NCBydW50aW1lX29mZnNldDtcXG4rXFx0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljO1xcbitcXHRzdHJ1Y3Qga3ZtX2h5cGVydl9leGl0IGV4aXQ7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XFxuK1xcdERFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTtcXG4rXFx0Ym9vbCBlbmZvcmNlX2NwdWlkO1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXFxuK1xcdFxcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cXG4rXFx0XFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xcbitcXHRcXHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cXG4rXFx0XFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXFxuK1xcdFxcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXFxuK1xcdFxcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xcbitcXHRcXHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cXG4rXFx0fSBjcHVpZF9jYWNoZTtcXG4rXFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHJlYWxsb2NhdGVkIGJ1ZmZlcnMgZm9yIGhhbmRsaW5nIGh5cGVyY2FsbHMgdGhhdCBwYXNzIHNwYXJzZSB2Q1BVXFxuK1xcdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5J3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb25cXG4rXFx0ICogdGhlIHN0YWNrKS5cXG4rXFx0ICovXFxuK1xcdHU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTtcXG4rXFx0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcXG4rXFxuK1xcdHN0cnVjdCBodl92cF9hc3Npc3RfcGFnZSB2cF9hc3Npc3RfcGFnZTtcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU2NCBwYV9wYWdlX2dwYTtcXG4rXFx0XFx0dTY0IHZtX2lkO1xcbitcXHRcXHR1MzIgdnBfaWQ7XFxuK1xcdH0gbmVzdGVkO1xcbit9O1xcbitcXG4gLyogXFxcIkh2IzFcXFwiIHNpZ25hdHVyZSAqL1xcbiAjZGVmaW5lIEhZUEVSVl9DUFVJRF9TSUdOQVRVUkVfRUFYIDB4MzEyMzc2NDhcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcXG5pbmRleCA2ZjMwYmJkZGRiNWFhOS4uMDM1NGRiMGYyYzBmMDMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2xhcGljLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbkBAIC03NSw2ICs3NSwxNiBAQCBtb2R1bGVfcGFyYW0obGFwaWNfdGltZXJfYWR2YW5jZSwgYm9vbCwgMDQ0NCk7XFxuIC8qIHN0ZXAtYnktc3RlcCBhcHByb3hpbWF0aW9uIHRvIG1pdGlnYXRlIGZsdWN0dWF0aW9uICovXFxuICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4XFxuIFxcbisvKiBhcGljIGF0dGVudGlvbiBiaXRzICovXFxuKyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcXHQwXFxuKy8qXFxuKyAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxcbisgKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXFxuKyAqIHRoaXMgYml0IHdpdGggUFYtRU9JIGluIGd1ZXN0IG1lbW9yeS5cXG4rICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXFxuKyAqL1xcbisjZGVmaW5lIEtWTV9BUElDX1BWX0VPSV9QRU5ESU5HXFx0MVxcbitcXG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTtcXG4gbW9kdWxlX3BhcmFtX25hbWVkKHZlY3Rvcl9oYXNoaW5nLCB2ZWN0b3JfaGFzaGluZ19lbmFibGVkLCBib29sLCAwNDQ0KTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcXG5pbmRleCA1OGRiYjk0Zjk4MGRhMi4uYmQxMDk4Yzg5ZDk5ODAgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2xhcGljLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxcbkBAIC0zMiw2ICszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xcbiBcXHRMQVBJQ19NT0RFX1gyQVBJQyA9IE1TUl9JQTMyX0FQSUNCQVNFX0VOQUJMRSB8IFgyQVBJQ19FTkFCTEUsXFxuIH07XFxuIFxcbisvKlxcbisgKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxcbisgKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGxcXG4rICogc29mdHdhcmUtZW5hYmxlZCBsb2NhbCBBUElzIHRvIGJlIGluIHRoZSBzYW1lIG1vZGUsIGVhY2ggYWRkcmVzc2FibGUgQVBJQyB0b1xcbisgKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXFxuKyAqL1xcbitlbnVtIGt2bV9hcGljX2xvZ2ljYWxfbW9kZSB7XFxuK1xcdC8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovXFxuK1xcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGNsdXN0ZXIgYWRkcmVzc2luZyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1hBUElDX0ZMQVQsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcXG4rXFx0LypcXG4rXFx0ICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWxcXG4rXFx0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXFxuK1xcdCAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCxcXG4rfTtcXG4rXFxuK3N0cnVjdCBrdm1fYXBpY19tYXAge1xcbitcXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xcbitcXHRlbnVtIGt2bV9hcGljX2xvZ2ljYWxfbW9kZSBsb2dpY2FsX21vZGU7XFxuK1xcdHUzMiBtYXhfYXBpY19pZDtcXG4rXFx0dW5pb24ge1xcbitcXHRcXHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcXG4rXFx0XFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xcbitcXHR9O1xcbitcXHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xcbit9O1xcbitcXG4gZW51bSBsYXBpY19sdnRfZW50cnkge1xcbiBcXHRMVlRfVElNRVIsXFxuIFxcdExWVF9USEVSTUFMX01PTklUT1IsXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxcbmluZGV4IGM5ZjYyOGI5N2RhZWI5Li44NWJjNTAzZGUxYjZmZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11LmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11LmhcXG5AQCAtNiwxNCArNiwxNCBAQFxcbiAjaW5jbHVkZSBcXFwicmVncy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY3B1aWQuaFxcXCJcXG4gXFxuLWV4dGVybiBib29sIHRkcF9lbmFibGVkO1xcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkO1xcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxcbi1leHRlcm4gYm9vbCB0ZHBfbW11X2VuYWJsZWQ7XFxuK2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX21tdV9lbmFibGVkO1xcbiAjZWxzZVxcbiAjZGVmaW5lIHRkcF9tbXVfZW5hYmxlZCBmYWxzZVxcbiAjZW5kaWZcXG4gZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfbW1pb19jYWNoaW5nO1xcbi1leHRlcm4gYm9vbCBlYWdlcl9wYWdlX3NwbGl0O1xcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IGVhZ2VyX3BhZ2Vfc3BsaXQ7XFxuIFxcbiAjZGVmaW5lIEtWTV9NRU1TTE9UX1BBR0VTX1RPX01NVV9QQUdFU19SQVRJTyA1MFxcbiAjZGVmaW5lIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTIDY0VUxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcXG5pbmRleCA2YzEzZGE5NDJiZmNjYy4uYWYzODIwMTM2ZjdjMjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcXG5AQCAtMTA0LDcgKzEwNCw3IEBAIG1vZHVsZV9wYXJhbV9uYW1lZChmbHVzaF9vbl9yZXVzZSwgZm9yY2VfZmx1c2hfYW5kX3N5bmNfb25fcmV1c2UsIGJvb2wsIDA2NDQpO1xcbiAgKiAyLiB3aGlsZSBkb2luZyAxLiBpdCB3YWxrcyBndWVzdC1waHlzaWNhbCB0byBob3N0LXBoeXNpY2FsXFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gc2hhZG93IHBhZ2luZy5cXG4gICovXFxuLWJvb2wgdGRwX2VuYWJsZWQgPSBmYWxzZTtcXG4rYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkID0gZmFsc2U7XFxuIFxcbiBzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgdGRwX21tdV9hbGxvd2VkO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uOWM1YzZiMzNlNThmNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5AQCAtMSw2ICsxLDYgQEBcXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4tI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSX0hcXG4tI2RlZmluZSBBUkNIX1g4Nl9LVk1fTVNSX0hcXG4rI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSU19IXFxuKyNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUlNfSFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2VyLXJldHVybi1ub3RpZmllci5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5oIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxcbmluZGV4IDk0ZmQ4NjcyOGZlZDI5Li40NDdmMGVjM2U2M2U0ZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxcbkBAIC0xNiw2ICsxNiw0NCBAQFxcbiBcXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcXHUwMDI2IFg4Nl9DUjBfUERQVFJfQklUUykpO1xcbiBcXG4rI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbitcXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjBfRVQgfCBYODZfQ1IwX05FIHwgWDg2X0NSMF9XUCB8IFg4Nl9DUjBfQU0gXFxcXFxcbitcXHRcXHRcXHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcXG4rXFxuKyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rXFx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9QQUUgfCBYODZfQ1I0X01DRSAgICAgXFxcXFxcbitcXHRcXHRcXHQgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjRfT1NYTU1FWENQVCB8IFg4Nl9DUjRfTEE1NyB8IFg4Nl9DUjRfVk1YRSBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXFxuK1xcbisjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXFxuK1xcbisjZGVmaW5lIERSNl9CVVNfTE9DSyAgICgxIFxcdTAwM2NcXHUwMDNjIDExKVxcbisjZGVmaW5lIERSNl9CRFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDEzKVxcbisjZGVmaW5lIERSNl9CU1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE0KVxcbisjZGVmaW5lIERSNl9CVFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE1KVxcbisjZGVmaW5lIERSNl9SVE1cXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAxNilcXG4rLypcXG4rICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLlxcbisgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XFxuKyAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcXG4rICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuXFxuKyAqXFxuKyAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxcbisgKi9cXG4rI2RlZmluZSBEUjZfQUNUSVZFX0xPV1xcdDB4ZmZmZjBmZjBcXG4rI2RlZmluZSBEUjZfVk9MQVRJTEVcXHQweDAwMDFlODBmXFxuKyNkZWZpbmUgRFI2X0ZJWEVEXzFcXHQoRFI2X0FDVElWRV9MT1cgXFx1MDAyNiB+RFI2X1ZPTEFUSUxFKVxcbitcXG4rI2RlZmluZSBEUjdfQlBfRU5fTUFTS1xcdDB4MDAwMDAwZmZcXG4rI2RlZmluZSBEUjdfR0VcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyA5KVxcbisjZGVmaW5lIERSN19HRFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDEzKVxcbisjZGVmaW5lIERSN19WT0xBVElMRVxcdDB4ZmZmZjJiZmZcXG4rXFxuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyMCwgdW5zaWduZWQgbG9uZyBjcjApO1xcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG4gaW50IGt2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdHNzLmggYi9hcmNoL3g4Ni9rdm0vdHNzLmhcXG5pbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3Rzcy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3Rzcy5oXFxuQEAgLTIsNiArMiwxMCBAQFxcbiAjaWZuZGVmIF9fVFNTX1NFR01FTlRfSFxcbiAjZGVmaW5lIF9fVFNTX1NFR01FTlRfSFxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2J1aWxkX2J1Zy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RkZGVmLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbitcXG4gc3RydWN0IHRzc19zZWdtZW50XzMyIHtcXG4gXFx0dTMyIHByZXZfdGFza19saW5rO1xcbiBcXHR1MzIgZXNwMDtcXG5AQCAtNjQsNCArNjgsNyBAQCBzdHJ1Y3QgdHNzX3NlZ21lbnRfMTYge1xcbiAjZGVmaW5lIFJNT0RFX1RTU19TSVpFXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQoVFNTX0JBU0VfU0laRSArIFRTU19SRURJUkVDVElPTl9TSVpFICsgVFNTX0lPUEJfU0laRSArIDEpXFxuIFxcbitzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XFxuK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMikgPT0gVFNTX0JBU0VfU0laRSk7XFxuK1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC0xMTUsNiArMTE1LDE1IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XFxuIFxcbiAjZGVmaW5lIEtWTV9DQVBfUE1VX1ZBTElEX01BU0sgS1ZNX1BNVV9DQVBfRElTQUJMRVxcbiBcXG4rI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxcXFxuK1xcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgXFxcXFxcbitcXHRLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0JMT0NLSVJRKVxcbitcXG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1xcdFxcdHwgXFxcXFxcbiBcXHRcXHRcXHRcXHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcXHR8IFxcXFxcXG4gXFx0XFx0XFx0XFx0ICAgIEtWTV9YMkFQSUNfRU5BQkxFX1NVUFBSRVNTX0VPSV9CUk9BRENBU1RcXHR8IFxcXFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXFxuaW5kZXggOGVjZTQ2ODA4N2E4ZWUuLjQ5NGQ5N2U5YTljOWYzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuaFxcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuaFxcbkBAIC00ODIsNiArNDgyLDEyIEBAIGludCBrdm1fZW11bGF0ZV93YmludmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIHZvaWQga3ZtX3ZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3Rvcik7XFxuIFxcbitlbnVtIGt2bV90YXNrX3N3aXRjaF9yZWFzb24ge1xcbitcXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcXG4rXFx0VEFTS19TV0lUQ0hfSVJFVCA9IDEsXFxuK1xcdFRBU0tfU1dJVENIX0pNUCA9IDIsXFxuK1xcdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxcbit9O1xcbiBpbnQga3ZtX3Rhc2tfc3dpdGNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2IHRzc19zZWxlY3RvciwgaW50IGlkdF9pbmRleCxcXG4gXFx0XFx0ICAgIGludCByZWFzb24sIGJvb2wgaGFzX2Vycm9yX2NvZGUsIHUzMiBlcnJvcl9jb2RlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjgxOTQxNjYzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTMzODAwNjA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkYTcxYjAxZDcxNDhhNTY5NjRiYjA5NGE1NGQ2NGRmMzhjYzk4YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBiNTE3MjU3YTYzMTUzMi4uZmRiODk1M2FlZWIxNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTI1LDI0ICsxMjUsNiBAQFxuICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFxcXG4gXHRLVk1fQVJDSF9SRVFfRkxBR1MoMzQsIEtWTV9SRVFVRVNUX1dBSVQpXG4gXG4tI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi1cdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjBfUEUgfCBYODZfQ1IwX01QIHwgWDg2X0NSMF9FTSB8IFg4Nl9DUjBfVFMgXFxcbi1cdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuLVx0XHRcdCAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKVxuLVxuLSNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9QU0UgfCBYODZfQ1I0X1BBRSB8IFg4Nl9DUjRfTUNFICAgICBcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9PU1hNTUVYQ1BUIHwgWDg2X0NSNF9MQTU3IHwgWDg2X0NSNF9WTVhFIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSlcbi1cbi0jZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4tXG4tXG4tXG4gI2RlZmluZSBJTlZBTElEX1BBR0UgKH4oaHBhX3QpMClcbiAjZGVmaW5lIFZBTElEX1BBR0UoeCkgKCh4KSAhPSBJTlZBTElEX1BBR0UpXG4gXG5AQCAtMjMwLDM3ICsyMTIsNiBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7XG4gXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1x0NFxuIFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXHUwMDNjXHUwMDNjIDExKVxuLSNkZWZpbmUgRFI2X0JEXHRcdCgxIFx1MDAzY1x1MDAzYyAxMylcbi0jZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4tI2RlZmluZSBEUjZfQlRcdFx0KDEgXHUwMDNjXHUwMDNjIDE1KVxuLSNkZWZpbmUgRFI2X1JUTVx0XHQoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLypcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXG4tICogV2UgY2FuIHJlZ2FyZCBhbGwgdGhlIGJpdHMgaW4gRFI2X0ZJWEVEXzEgYXMgYWN0aXZlX2xvdyBiaXRzO1xuLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cbi0gKlxuLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuLSAqL1xuLSNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbi0jZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuLSNkZWZpbmUgRFI2X0ZJWEVEXzFcdChEUjZfQUNUSVZFX0xPVyBcdTAwMjYgfkRSNl9WT0xBVElMRSlcbi1cbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4tI2RlZmluZSBEUjdfR0VcdFx0KDEgXHUwMDNjXHUwMDNjIDkpXG4tI2RlZmluZSBEUjdfR0RcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4tXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuLVx0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4tXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbi1cdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4tXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4tXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcdEJJVCgwKVxuICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTS1x0QklUKDEpXG4gI2RlZmluZSBQRkVSUl9VU0VSX01BU0tcdFx0QklUKDIpXG5AQCAtMjkwLDE5ICsyNDEsMTEgQEAgZW51bSB4ODZfaW50ZXJjZXB0X3N0YWdlO1xuICNkZWZpbmUgUEZFUlJfUFJJVkFURV9BQ0NFU1MgICBCSVRfVUxMKDQ5KVxuICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpXG4gXG4tLyogYXBpYyBhdHRlbnRpb24gYml0cyAqL1xuLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbi0vKlxuLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxuLSAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbi0gKiB0aGlzIGJpdCB3aXRoIFBWLUVPSSBpbiBndWVzdCBtZW1vcnkuXG4tICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXG4tICovXG4tI2RlZmluZSBLVk1fQVBJQ19QVl9FT0lfUEVORElOR1x0MVxuLVxuIHN0cnVjdCBrdm1fa2VybmVsX2lycWZkO1xuIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5O1xuIFxuK3N0cnVjdCBrdm1fYXBpY19tYXA7XG4rXG4gc3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlcjtcbiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyO1xuIFxuQEAgLTcwNSw5NSArNjQ4LDYgQEAgc3RydWN0IGt2bV9tdHJyIHtcbiBcdHU2NCBkZWZ0eXBlO1xuIH07XG4gXG4tLyogSHlwZXItViBTeW5JQyB0aW1lciAqL1xuLXN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xuLVx0c3RydWN0IGhydGltZXIgdGltZXI7XG4tXHRpbnQgaW5kZXg7XG4tXHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcbi1cdHU2NCBjb3VudDtcbi1cdHU2NCBleHBfdGltZTtcbi1cdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcbi1cdGJvb2wgbXNnX3BlbmRpbmc7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi9cbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMge1xuLVx0dTY0IHZlcnNpb247XG4tXHR1NjQgY29udHJvbDtcbi1cdHU2NCBtc2dfcGFnZTtcbi1cdHU2NCBldnRfcGFnZTtcbi1cdGF0b21pYzY0X3Qgc2ludFtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcbi1cdGF0b21pY190IHNpbnRfdG9fZ3NpW0hWX1NZTklDX1NJTlRfQ09VTlRdO1xuLVx0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xuLVx0REVDTEFSRV9CSVRNQVAodmVjX2JpdG1hcCwgMjU2KTtcbi1cdGJvb2wgYWN0aXZlO1xuLVx0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XG4tfTtcbi1cbi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpXG4tLypcbi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICdtYWdpYycgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xuLSAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSdzIGFjdGlvbiB0byAnZmx1c2ggZXZlcnl0aGluZycgaW5zdGVhZCBvZlxuLSAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4tICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suXG4tICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbi1cbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XG4tXHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbi1cdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxuLVx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxuLX07XG4tXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcbi1cdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbi1cdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXG4tc3RydWN0IGt2bV92Y3B1X2h2IHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbi1cdHUzMiB2cF9pbmRleDtcbi1cdHU2NCBodl92YXBpYztcbi1cdHM2NCBydW50aW1lX29mZnNldDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcbi1cdHN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4tXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XG4tXHRib29sIGVuZm9yY2VfY3B1aWQ7XG4tXHRzdHJ1Y3Qge1xuLVx0XHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXG4tXHRcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cbi1cdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuLVx0XHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cbi1cdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXG4tXHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4tXHRcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xuLVx0XHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cbi1cdH0gY3B1aWRfY2FjaGU7XG4tXG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcbi1cbi1cdC8qXG4tXHQgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFVcbi1cdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5J3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb25cbi1cdCAqIHRoZSBzdGFjaykuXG4tXHQgKi9cbi1cdHU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTtcbi1cdERFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XG4tXG4tXHRzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7XG4tXG4tXHRzdHJ1Y3Qge1xuLVx0XHR1NjQgcGFfcGFnZV9ncGE7XG4tXHRcdHU2NCB2bV9pZDtcbi1cdFx0dTMyIHZwX2lkO1xuLVx0fSBuZXN0ZWQ7XG4tfTtcbi1cbiBzdHJ1Y3Qga3ZtX2h5cGVydmlzb3JfY3B1aWQge1xuIFx0dTMyIGJhc2U7XG4gXHR1MzIgbGltaXQ7XG5AQCAtODI0LDYgKzY3OCw4IEBAIHN0cnVjdCBrdm1fdmNwdV94ZW4ge1xuIH07XG4gI2VuZGlmXG4gXG4rc3RydWN0IGt2bV92Y3B1X2h2O1xuK1xuIHN0cnVjdCBrdm1fcXVldWVkX2V4Y2VwdGlvbiB7XG4gXHRib29sIHBlbmRpbmc7XG4gXHRib29sIGluamVjdGVkO1xuQEAgLTExODEsMzkgKzEwMzcsNiBAQCBzdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xuIFx0dW5zaWduZWQgc2hvcnQgKmdmbl93cml0ZV90cmFjaztcbiB9O1xuIFxuLS8qXG4tICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGVcbi0gKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGxcbi0gKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvXG4tICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLlxuLSAqL1xuLWVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHtcbi1cdC8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovXG4tXHRLVk1fQVBJQ19NT0RFX1NXX0RJU0FCTEVELFxuLVx0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovXG4tXHRLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsXG4tXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBmbGF0IGFkZHJlc3NpbmcgbW9kZS4gKi9cbi1cdEtWTV9BUElDX01PREVfWEFQSUNfRkxBVCxcbi1cdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqL1xuLVx0S1ZNX0FQSUNfTU9ERV9YMkFQSUMsXG4tXHQvKlxuLVx0ICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWxcbi1cdCAqIG1vZGUsIHNhbWUgbG9naWNhbCBJRCBhc3NpZ25lZCB0byBtdWx0aXBsZSBBUElDcywgZXRjLlxuLVx0ICovXG4tXHRLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCxcbi19O1xuLVxuLXN0cnVjdCBrdm1fYXBpY19tYXAge1xuLVx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbi1cdGVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTtcbi1cdHUzMiBtYXhfYXBpY19pZDtcbi1cdHVuaW9uIHtcbi1cdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XG4tXHRcdHN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTtcbi1cdH07XG4tXHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xuLX07XG4tXG4gLyogSHlwZXItViBzeW50aGV0aWMgZGVidWdnZXIgKFN5bkRiZykqL1xuIHN0cnVjdCBrdm1faHZfc3luZGJnIHtcbiBcdHN0cnVjdCB7XG5AQCAtMjAxOSwxMyArMTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcilcbiB9XG4gI2VuZGlmXG4gXG4tZW51bSB7XG4tXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcbi1cdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuLVx0VEFTS19TV0lUQ0hfSk1QID0gMixcbi1cdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxuLX07XG4tXG4gI2RlZmluZSBIRl9HVUVTVF9NQVNLXHRcdCgxIFx1MDAzY1x1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9TTU1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi42MjU4ZWQyNzdhN2I0NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtMjcsNiArMjcsOTYgQEBcbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbiBcbitcbisvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXG4rc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7XG4rXHRzdHJ1Y3QgaHJ0aW1lciB0aW1lcjtcbitcdGludCBpbmRleDtcbitcdHVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnO1xuK1x0dTY0IGNvdW50O1xuK1x0dTY0IGV4cF90aW1lO1xuK1x0c3RydWN0IGh2X21lc3NhZ2UgbXNnO1xuK1x0Ym9vbCBtc2dfcGVuZGluZztcbit9O1xuK1xuKy8qIEh5cGVyLVYgc3ludGhldGljIGludGVycnVwdCBjb250cm9sbGVyIChTeW5JQykqL1xuK3N0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7XG4rXHR1NjQgdmVyc2lvbjtcbitcdHU2NCBjb250cm9sO1xuK1x0dTY0IG1zZ19wYWdlO1xuK1x0dTY0IGV2dF9wYWdlO1xuK1x0YXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdO1xuK1x0YXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4rXHRERUNMQVJFX0JJVE1BUChhdXRvX2VvaV9iaXRtYXAsIDI1Nik7XG4rXHRERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpO1xuK1x0Ym9vbCBhY3RpdmU7XG4rXHRib29sIGRvbnRfemVyb19zeW5pY19wYWdlcztcbit9O1xuK1xuKy8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gKi9cbisjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFICgxNilcbisvKlxuKyAqIE5vdGU6IHRoZSBmb2xsb3dpbmcgJ21hZ2ljJyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXG4rICogYW55dGhpbmcgYmVzaWRlcyBHVkEgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiBJdCBpcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlXG4rICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwXG4rICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJ3MgYWN0aW9uIHRvICdmbHVzaCBldmVyeXRoaW5nJyBpbnN0ZWFkIG9mXG4rICogZmx1c2hpbmcgdGhlc2UgcGFydGljdWxhciBhZGRyZXNzZXMgaXMsIGhvd2V2ZXIsIGZ1bGx5IGxlZ2l0aW1hdGUgYXNcbisgKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy5cbisgKi9cbisjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hBTExfRU5UUlkgICgodTY0KS0xKVxuK1xuK2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcbitcdEhWX0wxX1RMQl9GTFVTSF9GSUZPLFxuK1x0SFZfTDJfVExCX0ZMVVNIX0ZJRk8sXG4rXHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXG4rfTtcbitcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xuK1x0c3BpbmxvY2tfdCB3cml0ZV9sb2NrO1xuK1x0REVDTEFSRV9LRklGTyhlbnRyaWVzLCB1NjQsIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFKTtcbit9O1xuK1xuKy8qIEh5cGVyLVYgcGVyIHZjcHUgZW11bGF0aW9uIGNvbnRleHQgKi9cbitzdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0dTMyIHZwX2luZGV4O1xuK1x0dTY0IGh2X3ZhcGljO1xuK1x0czY0IHJ1bnRpbWVfb2Zmc2V0O1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljO1xuK1x0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciBzdGltZXJbSFZfU1lOSUNfU1RJTUVSX0NPVU5UXTtcbitcdERFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTtcbitcdGJvb2wgZW5mb3JjZV9jcHVpZDtcbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBmZWF0dXJlc19lYXg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQVggKi9cbitcdFx0dTMyIGZlYXR1cmVzX2VieDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVCWCAqL1xuK1x0XHR1MzIgZmVhdHVyZXNfZWR4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRURYICovXG4rXHRcdHUzMiBlbmxpZ2h0ZW5tZW50c19lYXg7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVBWCAqL1xuK1x0XHR1MzIgZW5saWdodGVubWVudHNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQlggKi9cbitcdFx0dTMyIHN5bmRiZ19jYXBfZWF4OyAvKiBIWVBFUlZfQ1BVSURfU1lOREJHX1BMQVRGT1JNX0NBUEFCSUxJVElFUy5FQVggKi9cbitcdFx0dTMyIG5lc3RlZF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUFYICovXG4rXHRcdHUzMiBuZXN0ZWRfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVCWCAqL1xuK1x0fSBjcHVpZF9jYWNoZTtcbitcbitcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xuK1xuK1x0LypcbitcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxuK1x0ICogc2V0cyAoZm9yIGhpZ2ggdkNQVSBjb3VudHMsIHRoZXkncmUgdG9vIGxhcmdlIHRvIGNvbWZvcnRhYmx5IGZpdCBvblxuK1x0ICogdGhlIHN0YWNrKS5cbitcdCAqL1xuK1x0dTY0IHNwYXJzZV9iYW5rc1tIVl9NQVhfU1BBUlNFX1ZDUFVfQkFOS1NdO1xuK1x0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcbitcbitcdHN0cnVjdCBodl92cF9hc3Npc3RfcGFnZSB2cF9hc3Npc3RfcGFnZTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdHU2NCBwYV9wYWdlX2dwYTtcbitcdFx0dTY0IHZtX2lkO1xuK1x0XHR1MzIgdnBfaWQ7XG4rXHR9IG5lc3RlZDtcbit9O1xuK1xuIC8qIFwiSHYjMVwiIHNpZ25hdHVyZSAqL1xuICNkZWZpbmUgSFlQRVJWX0NQVUlEX1NJR05BVFVSRV9FQVggMHgzMTIzNzY0OFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDZmMzBiYmRkZGI1YWE5Li4wMzU0ZGIwZjJjMGYwMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTc1LDYgKzc1LDE2IEBAIG1vZHVsZV9wYXJhbShsYXBpY190aW1lcl9hZHZhbmNlLCBib29sLCAwNDQ0KTtcbiAvKiBzdGVwLWJ5LXN0ZXAgYXBwcm94aW1hdGlvbiB0byBtaXRpZ2F0ZSBmbHVjdHVhdGlvbiAqL1xuICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4XG4gXG4rLyogYXBpYyBhdHRlbnRpb24gYml0cyAqL1xuKyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbisvKlxuKyAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxuKyAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbisgKiB0aGlzIGJpdCB3aXRoIFBWLUVPSSBpbiBndWVzdCBtZW1vcnkuXG4rICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXG4rICovXG4rI2RlZmluZSBLVk1fQVBJQ19QVl9FT0lfUEVORElOR1x0MVxuK1xuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgdmVjdG9yX2hhc2hpbmdfZW5hYmxlZCA9IHRydWU7XG4gbW9kdWxlX3BhcmFtX25hbWVkKHZlY3Rvcl9oYXNoaW5nLCB2ZWN0b3JfaGFzaGluZ19lbmFibGVkLCBib29sLCAwNDQ0KTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaCBiL2FyY2gveDg2L2t2bS9sYXBpYy5oXG5pbmRleCA1OGRiYjk0Zjk4MGRhMi4uYmQxMDk4Yzg5ZDk5ODAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxuKysrIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcbkBAIC0zMiw2ICszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xuIFx0TEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLFxuIH07XG4gXG4rLypcbisgKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxuKyAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuKyAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cbisgKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXG4rICovXG4rZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xuK1x0LyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi9cbitcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4rXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cbitcdEtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUixcbitcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuK1x0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxuK1x0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovXG4rXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbitcdC8qXG4rXHQgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbFxuK1x0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4rXHQgKi9cbitcdEtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELFxuK307XG4rXG4rc3RydWN0IGt2bV9hcGljX21hcCB7XG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuK1x0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xuK1x0dTMyIG1heF9hcGljX2lkO1xuK1x0dW5pb24ge1xuK1x0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcbitcdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xuK1x0fTtcbitcdHN0cnVjdCBrdm1fbGFwaWMgKnBoeXNfbWFwW107XG4rfTtcbitcbiBlbnVtIGxhcGljX2x2dF9lbnRyeSB7XG4gXHRMVlRfVElNRVIsXG4gXHRMVlRfVEhFUk1BTF9NT05JVE9SLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxuaW5kZXggYzlmNjI4Yjk3ZGFlYjkuLjg1YmM1MDNkZTFiNmZkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11LmhcbkBAIC02LDE0ICs2LDE0IEBAXG4gI2luY2x1ZGUgXCJyZWdzLmhcIlxuICNpbmNsdWRlIFwiY3B1aWQuaFwiXG4gXG4tZXh0ZXJuIGJvb2wgdGRwX2VuYWJsZWQ7XG4rZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfZW5hYmxlZDtcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiBib29sIHRkcF9tbXVfZW5hYmxlZDtcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9tbXVfZW5hYmxlZDtcbiAjZWxzZVxuICNkZWZpbmUgdGRwX21tdV9lbmFibGVkIGZhbHNlXG4gI2VuZGlmXG4gZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfbW1pb19jYWNoaW5nO1xuLWV4dGVybiBib29sIGVhZ2VyX3BhZ2Vfc3BsaXQ7XG4rZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlYWdlcl9wYWdlX3NwbGl0O1xuIFxuICNkZWZpbmUgS1ZNX01FTVNMT1RfUEFHRVNfVE9fTU1VX1BBR0VTX1JBVElPIDUwXG4gI2RlZmluZSBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyA2NFVMXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbmluZGV4IDZjMTNkYTk0MmJmY2NjLi5hZjM4MjAxMzZmN2MyMSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC0xMDQsNyArMTA0LDcgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGZsdXNoX29uX3JldXNlLCBmb3JjZV9mbHVzaF9hbmRfc3luY19vbl9yZXVzZSwgYm9vbCwgMDY0NCk7XG4gICogMi4gd2hpbGUgZG9pbmcgMS4gaXQgd2Fsa3MgZ3Vlc3QtcGh5c2ljYWwgdG8gaG9zdC1waHlzaWNhbFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gc2hhZG93IHBhZ2luZy5cbiAgKi9cbi1ib29sIHRkcF9lbmFibGVkID0gZmFsc2U7XG4rYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkID0gZmFsc2U7XG4gXG4gc3RhdGljIGJvb2wgX19yb19hZnRlcl9pbml0IHRkcF9tbXVfYWxsb3dlZDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuaW5kZXggYjY5ODk4M2UzN2ZiNjEuLjljNWM2YjMzZTU4ZjU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuQEAgLTEsNiArMSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIEFSQ0hfWDg2X0tWTV9NU1JfSFxuLSNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUl9IXG4rI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSU19IXG4rI2RlZmluZSBBUkNIX1g4Nl9LVk1fTVNSU19IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5oIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxuaW5kZXggOTRmZDg2NzI4ZmVkMjkuLjQ0N2YwZWMzZTYzZTRlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuaFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxuQEAgLTE2LDYgKzE2LDQ0IEBAXG4gXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcdTAwMjYgWDg2X0NSMF9QRFBUUl9CSVRTKSk7XG4gXG4rI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjBfUEUgfCBYODZfQ1IwX01QIHwgWDg2X0NSMF9FTSB8IFg4Nl9DUjBfVFMgXFxcbitcdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuK1x0XHRcdCAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKVxuK1xuKyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4rXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXFxcbitcdFx0XHQgIHwgWDg2X0NSNF9QU0UgfCBYODZfQ1I0X1BBRSB8IFg4Nl9DUjRfTUNFICAgICBcXFxuK1x0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXFxcbitcdFx0XHQgIHwgWDg2X0NSNF9PU1hNTUVYQ1BUIHwgWDg2X0NSNF9MQTU3IHwgWDg2X0NSNF9WTVhFIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSlcbitcbisjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4rXG4rI2RlZmluZSBEUjZfQlVTX0xPQ0sgICAoMSBcdTAwM2NcdTAwM2MgMTEpXG4rI2RlZmluZSBEUjZfQkRcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuKyNkZWZpbmUgRFI2X0JTXHRcdCgxIFx1MDAzY1x1MDAzYyAxNClcbisjZGVmaW5lIERSNl9CVFx0XHQoMSBcdTAwM2NcdTAwM2MgMTUpXG4rI2RlZmluZSBEUjZfUlRNXHRcdCgxIFx1MDAzY1x1MDAzYyAxNilcbisvKlxuKyAqIERSNl9BQ1RJVkVfTE9XIGNvbWJpbmVzIGZpeGVkLTEgYW5kIGFjdGl2ZS1sb3cgYml0cy5cbisgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XG4rICogdGhleSB3aWxsIG5ldmVyIGJlIDAgZm9yIG5vdywgYnV0IHdoZW4gdGhleSBhcmUgZGVmaW5lZFxuKyAqIGluIHRoZSBmdXR1cmUgaXQgd2lsbCByZXF1aXJlIG5vIGNvZGUgY2hhbmdlLlxuKyAqXG4rICogRFI2X0FDVElWRV9MT1cgaXMgYWxzbyB1c2VkIGFzIHRoZSBpbml0L3Jlc2V0IHZhbHVlIGZvciBEUjYuXG4rICovXG4rI2RlZmluZSBEUjZfQUNUSVZFX0xPV1x0MHhmZmZmMGZmMFxuKyNkZWZpbmUgRFI2X1ZPTEFUSUxFXHQweDAwMDFlODBmXG4rI2RlZmluZSBEUjZfRklYRURfMVx0KERSNl9BQ1RJVkVfTE9XIFx1MDAyNiB+RFI2X1ZPTEFUSUxFKVxuK1xuKyNkZWZpbmUgRFI3X0JQX0VOX01BU0tcdDB4MDAwMDAwZmZcbisjZGVmaW5lIERSN19HRVx0XHQoMSBcdTAwM2NcdTAwM2MgOSlcbisjZGVmaW5lIERSN19HRFx0XHQoMSBcdTAwM2NcdTAwM2MgMTMpXG4rI2RlZmluZSBEUjdfVk9MQVRJTEVcdDB4ZmZmZjJiZmZcbitcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjAsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTtcbiBpbnQga3ZtX3NldF9jcjAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyMCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3Rzcy5oIGIvYXJjaC94ODYva3ZtL3Rzcy5oXG5pbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdHNzLmhcbisrKyBiL2FyY2gveDg2L2t2bS90c3MuaFxuQEAgLTIsNiArMiwxMCBAQFxuICNpZm5kZWYgX19UU1NfU0VHTUVOVF9IXG4gI2RlZmluZSBfX1RTU19TRUdNRU5UX0hcbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9idWlsZF9idWcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuK1xuIHN0cnVjdCB0c3Nfc2VnbWVudF8zMiB7XG4gXHR1MzIgcHJldl90YXNrX2xpbms7XG4gXHR1MzIgZXNwMDtcbkBAIC02NCw0ICs2OCw3IEBAIHN0cnVjdCB0c3Nfc2VnbWVudF8xNiB7XG4gI2RlZmluZSBSTU9ERV9UU1NfU0laRVx0XHRcdFx0XHRcdFx0XFxcbiBcdChUU1NfQkFTRV9TSVpFICsgVFNTX1JFRElSRUNUSU9OX1NJWkUgKyBUU1NfSU9QQl9TSVpFICsgMSlcbiBcbitzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XG4rc3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IHRzc19zZWdtZW50XzMyKSA9PSBUU1NfQkFTRV9TSVpFKTtcbitcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDA2MjZlODM1ZTllYjc3Li41ZWU2ZDBjMzMwMDk1MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTE1LDYgKzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpO1xuIFxuICNkZWZpbmUgS1ZNX0NBUF9QTVVfVkFMSURfTUFTSyBLVk1fUE1VX0NBUF9ESVNBQkxFXG4gXG4rI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuK1x0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4rXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbitcdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4rXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4rXG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1x0XHR8IFxcXG4gXHRcdFx0XHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcdHwgXFxcbiBcdFx0XHRcdCAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUXHR8IFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXG5pbmRleCA4ZWNlNDY4MDg3YThlZS4uNDk0ZDk3ZTlhOWM5ZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmhcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuaFxuQEAgLTQ4Miw2ICs0ODIsMTIgQEAgaW50IGt2bV9lbXVsYXRlX3diaW52ZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIHZvaWQga3ZtX3ZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3Rvcik7XG4gXG4rZW51bSBrdm1fdGFza19zd2l0Y2hfcmVhc29uIHtcbitcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxuK1x0VEFTS19TV0lUQ0hfSVJFVCA9IDEsXG4rXHRUQVNLX1NXSVRDSF9KTVAgPSAyLFxuK1x0VEFTS19TV0lUQ0hfR0FURSA9IDMsXG4rfTtcbiBpbnQga3ZtX3Rhc2tfc3dpdGNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2IHRzc19zZWxlY3RvciwgaW50IGlkdF9pbmRleCxcbiBcdFx0ICAgIGludCByZWFzb24sIGJvb2wgaGFzX2Vycm9yX2NvZGUsIHUzMiBlcnJvcl9jb2RlKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjgxOTQxODE0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMzc5Nzc5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIHg4NiBDb2RlIFJlZmFjdG9yaW5nIEFuYWx5c2lzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgZm9jdXNlZCBvbiByZW9yZ2FuaXppbmcgYW5kIHRpZHlpbmcgdXAgdGhlIEtWTSB4ODYgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgbW92aW5nIG1hY3JvIGFuZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJvdW5kLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBhcmUgYmVpbmcgbW92ZWQgb3V0IG9mIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCBhbmQgcmVkaXN0cmlidXRlZCBpbnRvIHZhcmlvdXMgb3RoZXIgeDg2IEtWTSBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyBsaWtlIGBoeXBlcnYuaGAsIGBsYXBpYy5jYCwgYGxhcGljLmhgLCBgcmVncy5oYCwgYHg4Ni5jYCwgYW5kIGB4ODYuaGAuIE5vIGZ1bmRhbWVudGFsIGxvZ2ljIGNoYW5nZXMgdGhlcmUsIGp1c3QgcmUtYXJyYW5naW5nLlxuXG5UaGUgYWRkaXRpb24gb2YgYF9fcmVhZF9tb3N0bHlgIHRvIGB0ZHBfZW5hYmxlZGAsIGB0ZHBfbW11X2VuYWJsZWRgLCBhbmQgYGVhZ2VyX3BhZ2Vfc3BsaXRgIHdpdGhpbiBgYXJjaC94ODYva3ZtL21tdS5oYCBhbmQgYG1tdS5jYCBhbHNvIGNhdGNoZXMgbXkgZXllLiBUaGlzIGlzIGEgY2xhc3NpYyBvcHRpbWl6YXRpb247IGEgaGludCB0byB0aGUgY29tcGlsZXIgdG8gcGxhY2UgdGhlc2UgdmFyaWFibGVzIGluIGEgcmVhZC1tb3N0bHkgc2VjdGlvbiwgbGlrZWx5IGZvciBjYWNoZSBlZmZpY2llbmN5LiBUaGF0J3MgYSBsYXlvdXQgY2hhbmdlLCBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0ZXJtcyBvZiB0aGUgYWN0dWFsIGFsZ29yaXRobSBvciBiZWhhdmlvci5cblxuVGhlbiB0aGVyZSBhcmUgdGhvc2UgYHN0YXRpY19hc3NlcnRgcyBhZGRlZCBpbiBgYXJjaC94ODYva3ZtL3Rzcy5oYC4gVGhlc2UgYXJlIGNvbXBpbGUtdGltZSBjaGVja3MsIGVuc3VyaW5nIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGB0c3Nfc2VnbWVudF8zMmAgc3RydWN0dXJlIGhvbGQgdHJ1ZS4gQWdhaW4sIG5vIHJ1bnRpbWUgaW1wYWN0IG9uIGZ1bmN0aW9uYWxpdHkuXG5cbkkgaGFkIHRvIGRvdWJsZS1jaGVjayB0aGUgZW51bSBjaGFuZ2UuIFJlbmFtaW5nIHRoZSBlbnVtIGZvciB0YXNrIHN3aXRjaCByZWFzb25zIGZyb20gYW4gYW5vbnltb3VzIGVudW0gdG8gYGt2bV90YXNrX3N3aXRjaF9yZWFzb25gIGlzIGRlZmluaXRlbHkganVzdCBmb3IgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5BbmQgdGhhdCBpbmNsdWRlIGd1YXJkIGZpeCBpbiBgYXJjaC94ODYva3ZtL21zcnMuaGAsIGNoYW5naW5nIHRoZSBgI2lmbmRlZmAgbWFjcm8gbmFtZSwgdGhhdCdzIGp1c3QgZ29vZCBoeWdpZW5lLlxuXG5JIHRvb2sgYSBnb29kIGxvb2sgYXQgdGhlIGBfX3JlYWRfbW9zdGx5YCBjaGFuZ2VzIGluIG1vcmUgZGV0YWlsIGFuZCBjb25maXJtZWQgdGhhdCB0aGV5IGFyZSBqdXN0IHNlY3Rpb24gYXR0cmlidXRlcyBhbmQgdGhlcmVmb3JlIG5vdCByZWxhdGVkIHRvIGFueSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuU28sIGFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCB0aGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgcHVyZWx5IGEgcmVmYWN0b3JpbmcgZWZmb3J0LiBJdCdzIGEgY2xlYW51cCwgaW1wcm92aW5nIGNvZGUgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZSB3aXRoIGBfX3JlYWRfbW9zdGx5YC4gSSdtIGNvbmZpZGVudCB0aGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9ucyB0aGF0IHJlcXVpcmUgZnV6emluZy4gTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjgsIk91dHB1dFRva2VucyI6NzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQyMjo0Mjo1NC4xNTczOTg4MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW92ZXMgZGVmaW5pdGlvbnMsIG1hY3JvcywgYW5kIHN0cnVjdHMgYmV0d2VlbiBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcywgYWRkcyBfX3JlYWRfbW9zdGx5IGF0dHJpYnV0ZXMsIGFuZCBpbnRyb2R1Y2VzIGNvbXBpbGUtdGltZSBzdGF0aWNfYXNzZXJ0cy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowm89sv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 22:33:44 +0000 UTC FinishedAt: 2026-06-25 22:42:56 +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+CgkJCTx0ZD4yMDI2LzA2LzI1IDIyOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW92ZXMgZGVmaW5pdGlvbnMsIG1hY3JvcywgYW5kIHN0cnVjdHMgYmV0d2VlbiBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcywgYWRkcyBfX3JlYWRfbW9zdGx5IGF0dHJpYnV0ZXMsIGFuZCBpbnRyb2R1Y2VzIGNvbXBpbGUtdGltZSBzdGF0aWNfYXNzZXJ0cy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAyMjo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDRkYTcxYjAxZDcxNDhhNTY5NjRiYjA5NGE1NGQ2NGRmMzhjYzk4YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYjUxNzI1N2E2MzE1MzIuLmZkYjg5NTNhZWViMTU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTEyNSwyNCAmIzQzOzEyNSw2IEBAXG4gI2RlZmluZSBLVk1fUkVRX1VQREFURV9QUk9URUNURURfR1VFU1RfU1RBVEUgXFxcbiBcdEtWTV9BUkNIX1JFUV9GTEFHUygzNCwgS1ZNX1JFUVVFU1RfV0FJVClcbiBcbi0jZGVmaW5lIENSMF9SRVNFUlZFRF9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLVx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSMF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VNIHwgWDg2X0NSMF9UUyBcXFxuLVx0XHRcdCAgfCBYODZfQ1IwX0VUIHwgWDg2X0NSMF9ORSB8IFg4Nl9DUjBfV1AgfCBYODZfQ1IwX0FNIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjBfTlcgfCBYODZfQ1IwX0NEIHwgWDg2X0NSMF9QRykpXG4tXG4tI2RlZmluZSBDUjRfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi1cdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjRfVk1FIHwgWDg2X0NSNF9QVkkgfCBYODZfQ1I0X1RTRCB8IFg4Nl9DUjRfREVcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfUEdFIHwgWDg2X0NSNF9QQ0UgfCBYODZfQ1I0X09TRlhTUiB8IFg4Nl9DUjRfUENJREUgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9PU1hTQVZFIHwgWDg2X0NSNF9TTUVQIHwgWDg2X0NSNF9GU0dTQkFTRSBcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9TTUFQIHwgWDg2X0NSNF9QS0UgfCBYODZfQ1I0X1VNSVAgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9MQU1fU1VQIHwgWDg2X0NSNF9DRVQpKVxuLVxuLSNkZWZpbmUgQ1I4X1JFU0VSVkVEX0JJVFMgKH4odW5zaWduZWQgbG9uZylYODZfQ1I4X1RQUilcbi1cbi1cbi1cbiAjZGVmaW5lIElOVkFMSURfUEFHRSAofihocGFfdCkwKVxuICNkZWZpbmUgVkFMSURfUEFHRSh4KSAoKHgpICE9IElOVkFMSURfUEFHRSlcbiBcbkBAIC0yMzAsMzcgJiM0MzsyMTIsNiBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7XG4gXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1x0NFxuIFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXHUwMDNjXHUwMDNjIDExKVxuLSNkZWZpbmUgRFI2X0JEXHRcdCgxIFx1MDAzY1x1MDAzYyAxMylcbi0jZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4tI2RlZmluZSBEUjZfQlRcdFx0KDEgXHUwMDNjXHUwMDNjIDE1KVxuLSNkZWZpbmUgRFI2X1JUTVx0XHQoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLypcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXG4tICogV2UgY2FuIHJlZ2FyZCBhbGwgdGhlIGJpdHMgaW4gRFI2X0ZJWEVEXzEgYXMgYWN0aXZlX2xvdyBiaXRzO1xuLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cbi0gKlxuLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuLSAqL1xuLSNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbi0jZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuLSNkZWZpbmUgRFI2X0ZJWEVEXzFcdChEUjZfQUNUSVZFX0xPVyBcdTAwMjYgfkRSNl9WT0xBVElMRSlcbi1cbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4tI2RlZmluZSBEUjdfR0VcdFx0KDEgXHUwMDNjXHUwMDNjIDkpXG4tI2RlZmluZSBEUjdfR0RcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4tXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuLVx0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4tXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbi1cdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4tXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4tXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcdEJJVCgwKVxuICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTS1x0QklUKDEpXG4gI2RlZmluZSBQRkVSUl9VU0VSX01BU0tcdFx0QklUKDIpXG5AQCAtMjkwLDE5ICYjNDM7MjQxLDExIEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTtcbiAjZGVmaW5lIFBGRVJSX1BSSVZBVEVfQUNDRVNTICAgQklUX1VMTCg0OSlcbiAjZGVmaW5lIFBGRVJSX1NZTlRIRVRJQ19NQVNLICAgKFBGRVJSX0lNUExJQ0lUX0FDQ0VTUyB8IFBGRVJSX1BSSVZBVEVfQUNDRVNTKVxuIFxuLS8qIGFwaWMgYXR0ZW50aW9uIGJpdHMgKi9cbi0jZGVmaW5lIEtWTV9BUElDX0NIRUNLX1ZBUElDXHQwXG4tLypcbi0gKiBUaGUgZm9sbG93aW5nIGJpdCBpcyBzZXQgd2l0aCBQVi1FT0ksIHVuc2V0IG9uIEVPSS5cbi0gKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXG4tICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LlxuLSAqIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gYXBpY191cGRhdGVfcHZfZW9pLlxuLSAqL1xuLSNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkdcdDFcbi1cbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZDtcbiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFfcm91dGluZ19lbnRyeTtcbiBcbiYjNDM7c3RydWN0IGt2bV9hcGljX21hcDtcbiYjNDM7XG4gc3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlcjtcbiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyO1xuIFxuQEAgLTcwNSw5NSAmIzQzOzY0OCw2IEBAIHN0cnVjdCBrdm1fbXRyciB7XG4gXHR1NjQgZGVmdHlwZTtcbiB9O1xuIFxuLS8qIEh5cGVyLVYgU3luSUMgdGltZXIgKi9cbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHtcbi1cdHN0cnVjdCBocnRpbWVyIHRpbWVyO1xuLVx0aW50IGluZGV4O1xuLVx0dW5pb24gaHZfc3RpbWVyX2NvbmZpZyBjb25maWc7XG4tXHR1NjQgY291bnQ7XG4tXHR1NjQgZXhwX3RpbWU7XG4tXHRzdHJ1Y3QgaHZfbWVzc2FnZSBtc2c7XG4tXHRib29sIG1zZ19wZW5kaW5nO1xuLX07XG4tXG4tLyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovXG4tc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHtcbi1cdHU2NCB2ZXJzaW9uO1xuLVx0dTY0IGNvbnRyb2w7XG4tXHR1NjQgbXNnX3BhZ2U7XG4tXHR1NjQgZXZ0X3BhZ2U7XG4tXHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4tXHRhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcbi1cdERFQ0xBUkVfQklUTUFQKGF1dG9fZW9pX2JpdG1hcCwgMjU2KTtcbi1cdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XG4tXHRib29sIGFjdGl2ZTtcbi1cdGJvb2wgZG9udF96ZXJvX3N5bmljX3BhZ2VzO1xuLX07XG4tXG4tLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiAqL1xuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxuLS8qXG4tICogTm90ZTogdGhlIGZvbGxvd2luZyAmIzM5O21hZ2ljJiMzOTsgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xuLSAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSYjMzk7cyBhY3Rpb24gdG8gJiMzOTtmbHVzaCBldmVyeXRoaW5nJiMzOTsgaW5zdGVhZCBvZlxuLSAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4tICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suXG4tICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbi1cbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XG4tXHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbi1cdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxuLVx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxuLX07XG4tXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcbi1cdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbi1cdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXG4tc3RydWN0IGt2bV92Y3B1X2h2IHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbi1cdHUzMiB2cF9pbmRleDtcbi1cdHU2NCBodl92YXBpYztcbi1cdHM2NCBydW50aW1lX29mZnNldDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcbi1cdHN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4tXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XG4tXHRib29sIGVuZm9yY2VfY3B1aWQ7XG4tXHRzdHJ1Y3Qge1xuLVx0XHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXG4tXHRcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cbi1cdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuLVx0XHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cbi1cdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXG4tXHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4tXHRcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xuLVx0XHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cbi1cdH0gY3B1aWRfY2FjaGU7XG4tXG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcbi1cbi1cdC8qXG4tXHQgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFVcbi1cdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5JiMzOTtyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXG4tXHQgKiB0aGUgc3RhY2spLlxuLVx0ICovXG4tXHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XG4tXHRERUNMQVJFX0JJVE1BUCh2Y3B1X21hc2ssIEtWTV9NQVhfVkNQVVMpO1xuLVxuLVx0c3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlO1xuLVxuLVx0c3RydWN0IHtcbi1cdFx0dTY0IHBhX3BhZ2VfZ3BhO1xuLVx0XHR1NjQgdm1faWQ7XG4tXHRcdHUzMiB2cF9pZDtcbi1cdH0gbmVzdGVkO1xuLX07XG4tXG4gc3RydWN0IGt2bV9oeXBlcnZpc29yX2NwdWlkIHtcbiBcdHUzMiBiYXNlO1xuIFx0dTMyIGxpbWl0O1xuQEAgLTgyNCw2ICYjNDM7Njc4LDggQEAgc3RydWN0IGt2bV92Y3B1X3hlbiB7XG4gfTtcbiAjZW5kaWZcbiBcbiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2O1xuJiM0MztcbiBzdHJ1Y3Qga3ZtX3F1ZXVlZF9leGNlcHRpb24ge1xuIFx0Ym9vbCBwZW5kaW5nO1xuIFx0Ym9vbCBpbmplY3RlZDtcbkBAIC0xMTgxLDM5ICYjNDM7MTAzNyw2IEBAIHN0cnVjdCBrdm1fYXJjaF9tZW1vcnlfc2xvdCB7XG4gXHR1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrO1xuIH07XG4gXG4tLypcbi0gKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxuLSAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cbi0gKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXG4tICovXG4tZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xuLVx0LyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi9cbi1cdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4tXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cbi1cdEtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUixcbi1cdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuLVx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxuLVx0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovXG4tXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbi1cdC8qXG4tXHQgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbFxuLVx0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4tXHQgKi9cbi1cdEtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELFxuLX07XG4tXG4tc3RydWN0IGt2bV9hcGljX21hcCB7XG4tXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuLVx0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xuLVx0dTMyIG1heF9hcGljX2lkO1xuLVx0dW5pb24ge1xuLVx0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcbi1cdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xuLVx0fTtcbi1cdHN0cnVjdCBrdm1fbGFwaWMgKnBoeXNfbWFwW107XG4tfTtcbi1cbiAvKiBIeXBlci1WIHN5bnRoZXRpYyBkZWJ1Z2dlciAoU3luRGJnKSovXG4gc3RydWN0IGt2bV9odl9zeW5kYmcge1xuIFx0c3RydWN0IHtcbkBAIC0yMDE5LDEzICYjNDM7MTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcilcbiB9XG4gI2VuZGlmXG4gXG4tZW51bSB7XG4tXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcbi1cdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuLVx0VEFTS19TV0lUQ0hfSk1QID0gMixcbi1cdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxuLX07XG4tXG4gI2RlZmluZSBIRl9HVUVTVF9NQVNLXHRcdCgxIFx1MDAzY1x1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9TTU1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi42MjU4ZWQyNzdhN2I0NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtMjcsNiAmIzQzOzI3LDk2IEBAXG4gXG4gI2lmZGVmIENPTkZJR19LVk1fSFlQRVJWXG4gXG4mIzQzO1xuJiM0MzsvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXG4mIzQzO3N0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xuJiM0MztcdHN0cnVjdCBocnRpbWVyIHRpbWVyO1xuJiM0MztcdGludCBpbmRleDtcbiYjNDM7XHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcbiYjNDM7XHR1NjQgY291bnQ7XG4mIzQzO1x0dTY0IGV4cF90aW1lO1xuJiM0MztcdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcbiYjNDM7XHRib29sIG1zZ19wZW5kaW5nO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovXG4mIzQzO3N0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7XG4mIzQzO1x0dTY0IHZlcnNpb247XG4mIzQzO1x0dTY0IGNvbnRyb2w7XG4mIzQzO1x0dTY0IG1zZ19wYWdlO1xuJiM0MztcdHU2NCBldnRfcGFnZTtcbiYjNDM7XHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4mIzQzO1x0YXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xuJiM0MztcdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XG4mIzQzO1x0Ym9vbCBhY3RpdmU7XG4mIzQzO1x0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XG4mIzQzO307XG4mIzQzO1xuJiM0MzsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXG4mIzQzOyNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxuJiM0MzsvKlxuJiM0MzsgKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXG4mIzQzOyAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuJiM0MzsgKiB0byBvYnNlcnZlIGEgcmVxdWVzdCB0byBmbHVzaCA0MDk1IFBGTnMgc3RhcnRpbmcgZnJvbSAweGZmZmZmZmZmZmZmZmYwMDBcbiYjNDM7ICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mXG4mIzQzOyAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4mIzQzOyAqIGZsdXNoaW5nIG1vcmUgdGhhbiByZXF1ZXN0ZWQgaXMgYWx3YXlzIE9LLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbiYjNDM7XG4mIzQzO2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcbiYjNDM7XHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbiYjNDM7XHRIVl9MMl9UTEJfRkxVU0hfRklGTyxcbiYjNDM7XHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xuJiM0MztcdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbiYjNDM7XHRERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7LyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqL1xuJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiYjNDM7XHR1MzIgdnBfaW5kZXg7XG4mIzQzO1x0dTY0IGh2X3ZhcGljO1xuJiM0MztcdHM2NCBydW50aW1lX29mZnNldDtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgc3luaWM7XG4mIzQzO1x0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAoc3RpbWVyX3BlbmRpbmdfYml0bWFwLCBIVl9TWU5JQ19TVElNRVJfQ09VTlQpO1xuJiM0MztcdGJvb2wgZW5mb3JjZV9jcHVpZDtcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqL1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VieDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVCWCAqL1xuJiM0MztcdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuJiM0MztcdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovXG4mIzQzO1x0XHR1MzIgZW5saWdodGVubWVudHNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQlggKi9cbiYjNDM7XHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4mIzQzO1x0XHR1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi9cbiYjNDM7XHRcdHUzMiBuZXN0ZWRfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVCWCAqL1xuJiM0MztcdH0gY3B1aWRfY2FjaGU7XG4mIzQzO1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxuJiM0MztcdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5JiMzOTtyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXG4mIzQzO1x0ICogdGhlIHN0YWNrKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XG4mIzQzO1x0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcbiYjNDM7XG4mIzQzO1x0c3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlO1xuJiM0MztcbiYjNDM7XHRzdHJ1Y3Qge1xuJiM0MztcdFx0dTY0IHBhX3BhZ2VfZ3BhO1xuJiM0MztcdFx0dTY0IHZtX2lkO1xuJiM0MztcdFx0dTMyIHZwX2lkO1xuJiM0MztcdH0gbmVzdGVkO1xuJiM0Mzt9O1xuJiM0MztcbiAvKiBcJiMzNDtIdiMxXCYjMzQ7IHNpZ25hdHVyZSAqL1xuICNkZWZpbmUgSFlQRVJWX0NQVUlEX1NJR05BVFVSRV9FQVggMHgzMTIzNzY0OFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDZmMzBiYmRkZGI1YWE5Li4wMzU0ZGIwZjJjMGYwMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTc1LDYgJiM0Mzs3NSwxNiBAQCBtb2R1bGVfcGFyYW0obGFwaWNfdGltZXJfYWR2YW5jZSwgYm9vbCwgMDQ0NCk7XG4gLyogc3RlcC1ieS1zdGVwIGFwcHJveGltYXRpb24gdG8gbWl0aWdhdGUgZmx1Y3R1YXRpb24gKi9cbiAjZGVmaW5lIExBUElDX1RJTUVSX0FEVkFOQ0VfQURKVVNUX1NURVAgOFxuIFxuJiM0MzsvKiBhcGljIGF0dGVudGlvbiBiaXRzICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbiYjNDM7LypcbiYjNDM7ICogVGhlIGZvbGxvd2luZyBiaXQgaXMgc2V0IHdpdGggUFYtRU9JLCB1bnNldCBvbiBFT0kuXG4mIzQzOyAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbiYjNDM7ICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LlxuJiM0MzsgKiBTZWUgdGhlIGltcGxlbWVudGF0aW9uIGluIGFwaWNfdXBkYXRlX3B2X2VvaS5cbiYjNDM7ICovXG4mIzQzOyNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkdcdDFcbiYjNDM7XG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTtcbiBtb2R1bGVfcGFyYW1fbmFtZWQodmVjdG9yX2hhc2hpbmcsIHZlY3Rvcl9oYXNoaW5nX2VuYWJsZWQsIGJvb2wsIDA0NDQpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcbmluZGV4IDU4ZGJiOTRmOTgwZGEyLi5iZDEwOThjODlkOTk4MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxuQEAgLTMyLDYgJiM0MzszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xuIFx0TEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLFxuIH07XG4gXG4mIzQzOy8qXG4mIzQzOyAqIFRyYWNrIHRoZSBtb2RlIG9mIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAsIGFzIHRoZSBydWxlcyBmb3IgZGVjb2RpbmcgdGhlXG4mIzQzOyAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuJiM0MzsgKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvXG4mIzQzOyAqIGJlIG1hcHBlZCB0byBvbmx5IG9uZSBNREEsIGFuZCBlYWNoIE1EQSB0byBtYXAgdG8gYXQgbW9zdCBvbmUgQVBJQy5cbiYjNDM7ICovXG4mIzQzO2VudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHtcbiYjNDM7XHQvKiBBbGwgbG9jYWwgQVBJQ3MgYXJlIHNvZnR3YXJlIGRpc2FibGVkLiAqL1xuJiM0MztcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4mIzQzO1x0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovXG4mIzQzO1x0S1ZNX0FQSUNfTU9ERV9YQVBJQ19DTFVTVEVSLFxuJiM0MztcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuJiM0MztcdEtWTV9BUElDX01PREVfWEFQSUNfRkxBVCxcbiYjNDM7XHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4MkFQSUMgbW9kZS4gKi9cbiYjNDM7XHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE9wdGltaXplZCBtYXAgZGlzYWJsZWQsIGUuZy4gbm90IGFsbCBsb2NhbCBBUElDcyBpbiB0aGUgc2FtZSBsb2dpY2FsXG4mIzQzO1x0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4mIzQzO1x0ICovXG4mIzQzO1x0S1ZNX0FQSUNfTU9ERV9NQVBfRElTQUJMRUQsXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdHJ1Y3Qga3ZtX2FwaWNfbWFwIHtcbiYjNDM7XHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuJiM0MztcdGVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTtcbiYjNDM7XHR1MzIgbWF4X2FwaWNfaWQ7XG4mIzQzO1x0dW5pb24ge1xuJiM0MztcdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XG4mIzQzO1x0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19jbHVzdGVyX21hcFsxNl1bNF07XG4mIzQzO1x0fTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xuJiM0Mzt9O1xuJiM0MztcbiBlbnVtIGxhcGljX2x2dF9lbnRyeSB7XG4gXHRMVlRfVElNRVIsXG4gXHRMVlRfVEhFUk1BTF9NT05JVE9SLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxuaW5kZXggYzlmNjI4Yjk3ZGFlYjkuLjg1YmM1MDNkZTFiNmZkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbW11LmhcbkBAIC02LDE0ICYjNDM7NiwxNCBAQFxuICNpbmNsdWRlIFwmIzM0O3JlZ3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O2NwdWlkLmhcJiMzNDtcbiBcbi1leHRlcm4gYm9vbCB0ZHBfZW5hYmxlZDtcbiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfZW5hYmxlZDtcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiBib29sIHRkcF9tbXVfZW5hYmxlZDtcbiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfbW11X2VuYWJsZWQ7XG4gI2Vsc2VcbiAjZGVmaW5lIHRkcF9tbXVfZW5hYmxlZCBmYWxzZVxuICNlbmRpZlxuIGV4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX21taW9fY2FjaGluZztcbi1leHRlcm4gYm9vbCBlYWdlcl9wYWdlX3NwbGl0O1xuJiM0MztleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IGVhZ2VyX3BhZ2Vfc3BsaXQ7XG4gXG4gI2RlZmluZSBLVk1fTUVNU0xPVF9QQUdFU19UT19NTVVfUEFHRVNfUkFUSU8gNTBcbiAjZGVmaW5lIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTIDY0VUxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuaW5kZXggNmMxM2RhOTQyYmZjY2MuLmFmMzgyMDEzNmY3YzIxIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xuQEAgLTEwNCw3ICYjNDM7MTA0LDcgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGZsdXNoX29uX3JldXNlLCBmb3JjZV9mbHVzaF9hbmRfc3luY19vbl9yZXVzZSwgYm9vbCwgMDY0NCk7XG4gICogMi4gd2hpbGUgZG9pbmcgMS4gaXQgd2Fsa3MgZ3Vlc3QtcGh5c2ljYWwgdG8gaG9zdC1waHlzaWNhbFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkIHRvIGRvIHNoYWRvdyBwYWdpbmcuXG4gICovXG4tYm9vbCB0ZHBfZW5hYmxlZCA9IGZhbHNlO1xuJiM0Mztib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQgPSBmYWxzZTtcbiBcbiBzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgdGRwX21tdV9hbGxvd2VkO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tc3JzLmggYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uOWM1YzZiMzNlNThmNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbXNycy5oXG5AQCAtMSw2ICYjNDM7MSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIEFSQ0hfWDg2X0tWTV9NU1JfSFxuLSNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUl9IXG4mIzQzOyNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUlNfSFxuJiM0MzsjZGVmaW5lIEFSQ0hfWDg2X0tWTV9NU1JTX0hcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdXNlci1yZXR1cm4tbm90aWZpZXIuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9yZWdzLmggYi9hcmNoL3g4Ni9rdm0vcmVncy5oXG5pbmRleCA5NGZkODY3MjhmZWQyOS4uNDQ3ZjBlYzNlNjNlNGUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vcmVncy5oXG5AQCAtMTYsNiAmIzQzOzE2LDQ0IEBAXG4gXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcdTAwMjYgWDg2X0NSMF9QRFBUUl9CSVRTKSk7XG4gXG4mIzQzOyNkZWZpbmUgQ1IwX1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSMF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VNIHwgWDg2X0NSMF9UUyBcXFxuJiM0MztcdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuJiM0MztcdFx0XHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcbiYjNDM7XG4mIzQzOyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzO1x0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXFxcbiYjNDM7XHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4mIzQzO1x0XHRcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERSNl9CVVNfTE9DSyAgICgxIFx1MDAzY1x1MDAzYyAxMSlcbiYjNDM7I2RlZmluZSBEUjZfQkRcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuJiM0MzsjZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4mIzQzOyNkZWZpbmUgRFI2X0JUXHRcdCgxIFx1MDAzY1x1MDAzYyAxNSlcbiYjNDM7I2RlZmluZSBEUjZfUlRNXHRcdCgxIFx1MDAzY1x1MDAzYyAxNilcbiYjNDM7LypcbiYjNDM7ICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLlxuJiM0MzsgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XG4mIzQzOyAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbiYjNDM7ICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuXG4mIzQzOyAqXG4mIzQzOyAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBEUjZfQUNUSVZFX0xPV1x0MHhmZmZmMGZmMFxuJiM0MzsjZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuJiM0MzsjZGVmaW5lIERSNl9GSVhFRF8xXHQoRFI2X0FDVElWRV9MT1cgXHUwMDI2IH5EUjZfVk9MQVRJTEUpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4mIzQzOyNkZWZpbmUgRFI3X0dFXHRcdCgxIFx1MDAzY1x1MDAzYyA5KVxuJiM0MzsjZGVmaW5lIERSN19HRFx0XHQoMSBcdTAwM2NcdTAwM2MgMTMpXG4mIzQzOyNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4mIzQzO1xuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyMCwgdW5zaWduZWQgbG9uZyBjcjApO1xuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyNChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyNCwgdW5zaWduZWQgbG9uZyBjcjQpO1xuIGludCBrdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdHNzLmggYi9hcmNoL3g4Ni9rdm0vdHNzLmhcbmluZGV4IDExN2JmOGJlYzA3ZGNhLi41NWNlZDg5NzU4NDA2NSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS90c3MuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3Rzcy5oXG5AQCAtMiw2ICYjNDM7MiwxMCBAQFxuICNpZm5kZWYgX19UU1NfU0VHTUVOVF9IXG4gI2RlZmluZSBfX1RTU19TRUdNRU5UX0hcbiBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYnVpbGRfYnVnLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvc3RkZGVmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MztcbiBzdHJ1Y3QgdHNzX3NlZ21lbnRfMzIge1xuIFx0dTMyIHByZXZfdGFza19saW5rO1xuIFx0dTMyIGVzcDA7XG5AQCAtNjQsNCAmIzQzOzY4LDcgQEAgc3RydWN0IHRzc19zZWdtZW50XzE2IHtcbiAjZGVmaW5lIFJNT0RFX1RTU19TSVpFXHRcdFx0XHRcdFx0XHRcXFxuIFx0KFRTU19CQVNFX1NJWkUgJiM0MzsgVFNTX1JFRElSRUNUSU9OX1NJWkUgJiM0MzsgVFNTX0lPUEJfU0laRSAmIzQzOyAxKVxuIFxuJiM0MztzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XG4mIzQzO3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMikgPT0gVFNTX0JBU0VfU0laRSk7XG4mIzQzO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuY1xuaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC0xMTUsNiAmIzQzOzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpO1xuIFxuICNkZWZpbmUgS1ZNX0NBUF9QTVVfVkFMSURfTUFTSyBLVk1fUE1VX0NBUF9ESVNBQkxFXG4gXG4mIzQzOyNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXFxcbiYjNDM7XHQoS1ZNX0dVRVNUREJHX0VOQUJMRSB8IFxcXG4mIzQzO1x0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19VU0VfSFdfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19VU0VfU1dfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19JTkpFQ1RfREIgfCBcXFxuJiM0MztcdEtWTV9HVUVTVERCR19CTE9DS0lSUSlcbiYjNDM7XG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1x0XHR8IFxcXG4gXHRcdFx0XHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcdHwgXFxcbiBcdFx0XHRcdCAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUXHR8IFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXG5pbmRleCA4ZWNlNDY4MDg3YThlZS4uNDk0ZDk3ZTlhOWM5ZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuaFxuQEAgLTQ4Miw2ICYjNDM7NDgyLDEyIEBAIGludCBrdm1fZW11bGF0ZV93YmludmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiB2b2lkIGt2bV92Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpO1xuIFxuJiM0MztlbnVtIGt2bV90YXNrX3N3aXRjaF9yZWFzb24ge1xuJiM0MztcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxuJiM0MztcdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuJiM0MztcdFRBU0tfU1dJVENIX0pNUCA9IDIsXG4mIzQzO1x0VEFTS19TV0lUQ0hfR0FURSA9IDMsXG4mIzQzO307XG4gaW50IGt2bV90YXNrX3N3aXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiB0c3Nfc2VsZWN0b3IsIGludCBpZHRfaW5kZXgsXG4gXHRcdCAgICBpbnQgcmVhc29uLCBib29sIGhhc19lcnJvcl9jb2RlLCB1MzIgZXJyb3JfY29kZSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMjI6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZGE3MWIwMWQ3MTQ4YTU2OTY0YmIwOTRhNTRkNjRkZjM4Y2M5OGIyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMjI6NDI6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCBiNTE3MjU3YTYzMTUzMi4uZmRiODk1M2FlZWIxNTcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTI1LDI0ICYjNDM7MTI1LDYgQEAKICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFwKIAlLVk1fQVJDSF9SRVFfRkxBR1MoMzQsIEtWTV9SRVFVRVNUX1dBSVQpCiAKLSNkZWZpbmUgQ1IwX1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQkofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFwKLQkJCSAgfCBYODZfQ1IwX0VUIHwgWDg2X0NSMF9ORSB8IFg4Nl9DUjBfV1AgfCBYODZfQ1IwX0FNIFwKLQkJCSAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKQotCi0jZGVmaW5lIENSNF9SRVNFUlZFRF9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JKH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVwKLQkJCSAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFwKLQkJCSAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFwKLQkJCSAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFwKLQkJCSAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXAotCQkJICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFwKLQkJCSAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpCi0KLSNkZWZpbmUgQ1I4X1JFU0VSVkVEX0JJVFMgKH4odW5zaWduZWQgbG9uZylYODZfQ1I4X1RQUikKLQotCi0KICNkZWZpbmUgSU5WQUxJRF9QQUdFICh+KGhwYV90KTApCiAjZGVmaW5lIFZBTElEX1BBR0UoeCkgKCh4KSAhPSBJTlZBTElEX1BBR0UpCiAKQEAgLTIzMCwzNyAmIzQzOzIxMiw2IEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTsKIAogI2RlZmluZSBLVk1fTlJfREJfUkVHUwk0CiAKLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgJmx0OyZsdDsgMTEpCi0jZGVmaW5lIERSNl9CRAkJKDEgJmx0OyZsdDsgMTMpCi0jZGVmaW5lIERSNl9CUwkJKDEgJmx0OyZsdDsgMTQpCi0jZGVmaW5lIERSNl9CVAkJKDEgJmx0OyZsdDsgMTUpCi0jZGVmaW5lIERSNl9SVE0JCSgxICZsdDsmbHQ7IDE2KQotLyoKLSAqIERSNl9BQ1RJVkVfTE9XIGNvbWJpbmVzIGZpeGVkLTEgYW5kIGFjdGl2ZS1sb3cgYml0cy4KLSAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0czsKLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWQKLSAqIGluIHRoZSBmdXR1cmUgaXQgd2lsbCByZXF1aXJlIG5vIGNvZGUgY2hhbmdlLgotICoKLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LgotICovCi0jZGVmaW5lIERSNl9BQ1RJVkVfTE9XCTB4ZmZmZjBmZjAKLSNkZWZpbmUgRFI2X1ZPTEFUSUxFCTB4MDAwMWU4MGYKLSNkZWZpbmUgRFI2X0ZJWEVEXzEJKERSNl9BQ1RJVkVfTE9XICZhbXA7IH5EUjZfVk9MQVRJTEUpCi0KLSNkZWZpbmUgRFI3X0JQX0VOX01BU0sJMHgwMDAwMDBmZgotI2RlZmluZSBEUjdfR0UJCSgxICZsdDsmbHQ7IDkpCi0jZGVmaW5lIERSN19HRAkJKDEgJmx0OyZsdDsgMTMpCi0jZGVmaW5lIERSN19WT0xBVElMRQkweGZmZmYyYmZmCi0KLSNkZWZpbmUgS1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgXAotCShLVk1fR1VFU1REQkdfRU5BQkxFIHwgXAotCUtWTV9HVUVTVERCR19TSU5HTEVTVEVQIHwgXAotCUtWTV9HVUVTVERCR19VU0VfSFdfQlAgfCBcCi0JS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKLQlLVk1fR1VFU1REQkdfSU5KRUNUX0JQIHwgXAotCUtWTV9HVUVTVERCR19JTkpFQ1RfREIgfCBcCi0JS1ZNX0dVRVNUREJHX0JMT0NLSVJRKQotCiAjZGVmaW5lIFBGRVJSX1BSRVNFTlRfTUFTSwlCSVQoMCkKICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTSwlCSVQoMSkKICNkZWZpbmUgUEZFUlJfVVNFUl9NQVNLCQlCSVQoMikKQEAgLTI5MCwxOSAmIzQzOzI0MSwxMSBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7CiAjZGVmaW5lIFBGRVJSX1BSSVZBVEVfQUNDRVNTICAgQklUX1VMTCg0OSkKICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpCiAKLS8qIGFwaWMgYXR0ZW50aW9uIGJpdHMgKi8KLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUMJMAotLyoKLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLgotICogV2UgZGV0ZWN0IFBWLUVPSSBjaGFuZ2VzIGJ5IGd1ZXN0IGJ5IGNvbXBhcmluZwotICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LgotICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuCi0gKi8KLSNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkcJMQotCiBzdHJ1Y3Qga3ZtX2tlcm5lbF9pcnFmZDsKIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5OwogCiYjNDM7c3RydWN0IGt2bV9hcGljX21hcDsKJiM0MzsKIHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXI7CiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyOwogCkBAIC03MDUsOTUgJiM0Mzs2NDgsNiBAQCBzdHJ1Y3Qga3ZtX210cnIgewogCXU2NCBkZWZ0eXBlOwogfTsKIAotLyogSHlwZXItViBTeW5JQyB0aW1lciAqLwotc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7Ci0Jc3RydWN0IGhydGltZXIgdGltZXI7Ci0JaW50IGluZGV4OwotCXVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnOwotCXU2NCBjb3VudDsKLQl1NjQgZXhwX3RpbWU7Ci0Jc3RydWN0IGh2X21lc3NhZ2UgbXNnOwotCWJvb2wgbXNnX3BlbmRpbmc7Ci19OwotCi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi8KLXN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7Ci0JdTY0IHZlcnNpb247Ci0JdTY0IGNvbnRyb2w7Ci0JdTY0IG1zZ19wYWdlOwotCXU2NCBldnRfcGFnZTsKLQlhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07Ci0JYXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07Ci0JREVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpOwotCURFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7Ci0JYm9vbCBhY3RpdmU7Ci0JYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7Ci19OwotCi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovCi0jZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFICgxNikKLS8qCi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nCi0gKiBhbnl0aGluZyBiZXNpZGVzIEdWQSBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIEl0IGlzIHRoZW9yZXRpY2FsbHkgcG9zc2libGUKLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMAotICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mCi0gKiBmbHVzaGluZyB0aGVzZSBwYXJ0aWN1bGFyIGFkZHJlc3NlcyBpcywgaG93ZXZlciwgZnVsbHkgbGVnaXRpbWF0ZSBhcwotICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suCi0gKi8KLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWSAgKCh1NjQpLTEpCi0KLWVudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHsKLQlIVl9MMV9UTEJfRkxVU0hfRklGTywKLQlIVl9MMl9UTEJfRkxVU0hfRklGTywKLQlIVl9OUl9UTEJfRkxVU0hfRklGT1MsCi19OwotCi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gewotCXNwaW5sb2NrX3Qgd3JpdGVfbG9jazsKLQlERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpOwotfTsKLQotLyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqLwotc3RydWN0IGt2bV92Y3B1X2h2IHsKLQlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7Ci0JdTMyIHZwX2luZGV4OwotCXU2NCBodl92YXBpYzsKLQlzNjQgcnVudGltZV9vZmZzZXQ7Ci0Jc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljOwotCXN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDsKLQlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHN0aW1lcltIVl9TWU5JQ19TVElNRVJfQ09VTlRdOwotCURFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTsKLQlib29sIGVuZm9yY2VfY3B1aWQ7Ci0Jc3RydWN0IHsKLQkJdTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqLwotCQl1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovCi0JCXUzMiBmZWF0dXJlc19lZHg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FRFggKi8KLQkJdTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovCi0JCXUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqLwotCQl1MzIgc3luZGJnX2NhcF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9TWU5EQkdfUExBVEZPUk1fQ0FQQUJJTElUSUVTLkVBWCAqLwotCQl1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi8KLQkJdTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovCi0JfSBjcHVpZF9jYWNoZTsKLQotCXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdOwotCi0JLyoKLQkgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFUKLQkgKiBzZXRzIChmb3IgaGlnaCB2Q1BVIGNvdW50cywgdGhleSYjMzk7cmUgdG9vIGxhcmdlIHRvIGNvbWZvcnRhYmx5IGZpdCBvbgotCSAqIHRoZSBzdGFjaykuCi0JICovCi0JdTY0IHNwYXJzZV9iYW5rc1tIVl9NQVhfU1BBUlNFX1ZDUFVfQkFOS1NdOwotCURFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7Ci0KLQlzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7Ci0KLQlzdHJ1Y3QgewotCQl1NjQgcGFfcGFnZV9ncGE7Ci0JCXU2NCB2bV9pZDsKLQkJdTMyIHZwX2lkOwotCX0gbmVzdGVkOwotfTsKLQogc3RydWN0IGt2bV9oeXBlcnZpc29yX2NwdWlkIHsKIAl1MzIgYmFzZTsKIAl1MzIgbGltaXQ7CkBAIC04MjQsNiAmIzQzOzY3OCw4IEBAIHN0cnVjdCBrdm1fdmNwdV94ZW4gewogfTsKICNlbmRpZgogCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2OwomIzQzOwogc3RydWN0IGt2bV9xdWV1ZWRfZXhjZXB0aW9uIHsKIAlib29sIHBlbmRpbmc7CiAJYm9vbCBpbmplY3RlZDsKQEAgLTExODEsMzkgJiM0MzsxMDM3LDYgQEAgc3RydWN0IGt2bV9hcmNoX21lbW9yeV9zbG90IHsKIAl1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrOwogfTsKIAotLyoKLSAqIFRyYWNrIHRoZSBtb2RlIG9mIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAsIGFzIHRoZSBydWxlcyBmb3IgZGVjb2RpbmcgdGhlCi0gKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGwKLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG8KLSAqIGJlIG1hcHBlZCB0byBvbmx5IG9uZSBNREEsIGFuZCBlYWNoIE1EQSB0byBtYXAgdG8gYXQgbW9zdCBvbmUgQVBJQy4KLSAqLwotZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgewotCS8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovCi0JS1ZNX0FQSUNfTU9ERV9TV19ESVNBQkxFRCwKLQkvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi8KLQlLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsCi0JLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgZmxhdCBhZGRyZXNzaW5nIG1vZGUuICovCi0JS1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULAotCS8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqLwotCUtWTV9BUElDX01PREVfWDJBUElDLAotCS8qCi0JICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWwKLQkgKiBtb2RlLCBzYW1lIGxvZ2ljYWwgSUQgYXNzaWduZWQgdG8gbXVsdGlwbGUgQVBJQ3MsIGV0Yy4KLQkgKi8KLQlLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCwKLX07Ci0KLXN0cnVjdCBrdm1fYXBpY19tYXAgewotCXN0cnVjdCByY3VfaGVhZCByY3U7Ci0JZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlOwotCXUzMiBtYXhfYXBpY19pZDsKLQl1bmlvbiB7Ci0JCXN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2ZsYXRfbWFwWzhdOwotCQlzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19jbHVzdGVyX21hcFsxNl1bNF07Ci0JfTsKLQlzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdOwotfTsKLQogLyogSHlwZXItViBzeW50aGV0aWMgZGVidWdnZXIgKFN5bkRiZykqLwogc3RydWN0IGt2bV9odl9zeW5kYmcgewogCXN0cnVjdCB7CkBAIC0yMDE5LDEzICYjNDM7MTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcikKIH0KICNlbmRpZgogCi1lbnVtIHsKLQlUQVNLX1NXSVRDSF9DQUxMID0gMCwKLQlUQVNLX1NXSVRDSF9JUkVUID0gMSwKLQlUQVNLX1NXSVRDSF9KTVAgPSAyLAotCVRBU0tfU1dJVENIX0dBVEUgPSAzLAotfTsKLQogI2RlZmluZSBIRl9HVUVTVF9NQVNLCQkoMSAmbHQ7Jmx0OyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi8KIAogI2lmZGVmIENPTkZJR19LVk1fU01NCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgKaW5kZXggMWM4ZjdhYWFiMDYzZDAuLjYyNThlZDI3N2E3YjQ3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL2h5cGVydi5oCkBAIC0yNyw2ICYjNDM7MjcsOTYgQEAKIAogI2lmZGVmIENPTkZJR19LVk1fSFlQRVJWCiAKJiM0MzsKJiM0MzsvKiBIeXBlci1WIFN5bklDIHRpbWVyICovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7CiYjNDM7CXN0cnVjdCBocnRpbWVyIHRpbWVyOwomIzQzOwlpbnQgaW5kZXg7CiYjNDM7CXVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnOwomIzQzOwl1NjQgY291bnQ7CiYjNDM7CXU2NCBleHBfdGltZTsKJiM0MzsJc3RydWN0IGh2X21lc3NhZ2UgbXNnOwomIzQzOwlib29sIG1zZ19wZW5kaW5nOwomIzQzO307CiYjNDM7CiYjNDM7LyogSHlwZXItViBzeW50aGV0aWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgKFN5bklDKSovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHsKJiM0MzsJdTY0IHZlcnNpb247CiYjNDM7CXU2NCBjb250cm9sOwomIzQzOwl1NjQgbXNnX3BhZ2U7CiYjNDM7CXU2NCBldnRfcGFnZTsKJiM0MzsJYXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdOwomIzQzOwlhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpOwomIzQzOwlERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpOwomIzQzOwlib29sIGFjdGl2ZTsKJiM0MzsJYm9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7CiYjNDM7fTsKJiM0MzsKJiM0MzsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovCiYjNDM7I2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpCiYjNDM7LyoKJiM0MzsgKiBOb3RlOiB0aGUgZm9sbG93aW5nICYjMzk7bWFnaWMmIzM5OyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nCiYjNDM7ICogYW55dGhpbmcgYmVzaWRlcyBHVkEgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiBJdCBpcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlCiYjNDM7ICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwCiYjNDM7ICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJiMzOTtzIGFjdGlvbiB0byAmIzM5O2ZsdXNoIGV2ZXJ5dGhpbmcmIzM5OyBpbnN0ZWFkIG9mCiYjNDM7ICogZmx1c2hpbmcgdGhlc2UgcGFydGljdWxhciBhZGRyZXNzZXMgaXMsIGhvd2V2ZXIsIGZ1bGx5IGxlZ2l0aW1hdGUgYXMKJiM0MzsgKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hBTExfRU5UUlkgICgodTY0KS0xKQomIzQzOwomIzQzO2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHsKJiM0MzsJSFZfTDFfVExCX0ZMVVNIX0ZJRk8sCiYjNDM7CUhWX0wyX1RMQl9GTFVTSF9GSUZPLAomIzQzOwlIVl9OUl9UTEJfRkxVU0hfRklGT1MsCiYjNDM7fTsKJiM0MzsKJiM0MztzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gewomIzQzOwlzcGlubG9ja190IHdyaXRlX2xvY2s7CiYjNDM7CURFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7CiYjNDM7fTsKJiM0MzsKJiM0MzsvKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovCiYjNDM7c3RydWN0IGt2bV92Y3B1X2h2IHsKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwl1MzIgdnBfaW5kZXg7CiYjNDM7CXU2NCBodl92YXBpYzsKJiM0MzsJczY0IHJ1bnRpbWVfb2Zmc2V0OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMgc3luaWM7CiYjNDM7CXN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDsKJiM0MzsJc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciBzdGltZXJbSFZfU1lOSUNfU1RJTUVSX0NPVU5UXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAoc3RpbWVyX3BlbmRpbmdfYml0bWFwLCBIVl9TWU5JQ19TVElNRVJfQ09VTlQpOwomIzQzOwlib29sIGVuZm9yY2VfY3B1aWQ7CiYjNDM7CXN0cnVjdCB7CiYjNDM7CQl1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovCiYjNDM7CQl1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovCiYjNDM7CQl1MzIgZmVhdHVyZXNfZWR4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRURYICovCiYjNDM7CQl1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi8KJiM0MzsJCXUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqLwomIzQzOwkJdTMyIHN5bmRiZ19jYXBfZWF4OyAvKiBIWVBFUlZfQ1BVSURfU1lOREJHX1BMQVRGT1JNX0NBUEFCSUxJVElFUy5FQVggKi8KJiM0MzsJCXUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqLwomIzQzOwkJdTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovCiYjNDM7CX0gY3B1aWRfY2FjaGU7CiYjNDM7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFUKJiM0MzsJICogc2V0cyAoZm9yIGhpZ2ggdkNQVSBjb3VudHMsIHRoZXkmIzM5O3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb24KJiM0MzsJICogdGhlIHN0YWNrKS4KJiM0MzsJICovCiYjNDM7CXU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTsKJiM0MzsJREVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTsKJiM0MzsKJiM0MzsJc3RydWN0IGh2X3ZwX2Fzc2lzdF9wYWdlIHZwX2Fzc2lzdF9wYWdlOwomIzQzOwomIzQzOwlzdHJ1Y3QgewomIzQzOwkJdTY0IHBhX3BhZ2VfZ3BhOwomIzQzOwkJdTY0IHZtX2lkOwomIzQzOwkJdTMyIHZwX2lkOwomIzQzOwl9IG5lc3RlZDsKJiM0Mzt9OwomIzQzOwogLyogJiMzNDtIdiMxJiMzNDsgc2lnbmF0dXJlICovCiAjZGVmaW5lIEhZUEVSVl9DUFVJRF9TSUdOQVRVUkVfRUFYIDB4MzEyMzc2NDgKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuYwppbmRleCA2ZjMwYmJkZGRiNWFhOS4uMDM1NGRiMGYyYzBmMDMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCkBAIC03NSw2ICYjNDM7NzUsMTYgQEAgbW9kdWxlX3BhcmFtKGxhcGljX3RpbWVyX2FkdmFuY2UsIGJvb2wsIDA0NDQpOwogLyogc3RlcC1ieS1zdGVwIGFwcHJveGltYXRpb24gdG8gbWl0aWdhdGUgZmx1Y3R1YXRpb24gKi8KICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4CiAKJiM0MzsvKiBhcGljIGF0dGVudGlvbiBiaXRzICovCiYjNDM7I2RlZmluZSBLVk1fQVBJQ19DSEVDS19WQVBJQwkwCiYjNDM7LyoKJiM0MzsgKiBUaGUgZm9sbG93aW5nIGJpdCBpcyBzZXQgd2l0aCBQVi1FT0ksIHVuc2V0IG9uIEVPSS4KJiM0MzsgKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nCiYjNDM7ICogdGhpcyBiaXQgd2l0aCBQVi1FT0kgaW4gZ3Vlc3QgbWVtb3J5LgomIzQzOyAqIFNlZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gYXBpY191cGRhdGVfcHZfZW9pLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgS1ZNX0FQSUNfUFZfRU9JX1BFTkRJTkcJMQomIzQzOwogc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTsKIG1vZHVsZV9wYXJhbV9uYW1lZCh2ZWN0b3JfaGFzaGluZywgdmVjdG9yX2hhc2hpbmdfZW5hYmxlZCwgYm9vbCwgMDQ0NCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmgKaW5kZXggNThkYmI5NGY5ODBkYTIuLmJkMTA5OGM4OWQ5OTgwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaApAQCAtMzIsNiAmIzQzOzMyLDM5IEBAIGVudW0gbGFwaWNfbW9kZSB7CiAJTEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLAogfTsKIAomIzQzOy8qCiYjNDM7ICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGUKJiM0MzsgKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGwKJiM0MzsgKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvCiYjNDM7ICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLgomIzQzOyAqLwomIzQzO2VudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHsKJiM0MzsJLyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi8KJiM0MzsJS1ZNX0FQSUNfTU9ERV9TV19ESVNBQkxFRCwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUiwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgZmxhdCBhZGRyZXNzaW5nIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWEFQSUNfRkxBVCwKJiM0MzsJLyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovCiYjNDM7CUtWTV9BUElDX01PREVfWDJBUElDLAomIzQzOwkvKgomIzQzOwkgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbAomIzQzOwkgKiBtb2RlLCBzYW1lIGxvZ2ljYWwgSUQgYXNzaWduZWQgdG8gbXVsdGlwbGUgQVBJQ3MsIGV0Yy4KJiM0MzsJICovCiYjNDM7CUtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELAomIzQzO307CiYjNDM7CiYjNDM7c3RydWN0IGt2bV9hcGljX21hcCB7CiYjNDM7CXN0cnVjdCByY3VfaGVhZCByY3U7CiYjNDM7CWVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTsKJiM0MzsJdTMyIG1heF9hcGljX2lkOwomIzQzOwl1bmlvbiB7CiYjNDM7CQlzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTsKJiM0MzsJCXN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTsKJiM0MzsJfTsKJiM0MzsJc3RydWN0IGt2bV9sYXBpYyAqcGh5c19tYXBbXTsKJiM0Mzt9OwomIzQzOwogZW51bSBsYXBpY19sdnRfZW50cnkgewogCUxWVF9USU1FUiwKIAlMVlRfVEhFUk1BTF9NT05JVE9SLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS5oIGIvYXJjaC94ODYva3ZtL21tdS5oCmluZGV4IGM5ZjYyOGI5N2RhZWI5Li44NWJjNTAzZGUxYjZmZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tbXUuaApAQCAtNiwxNCAmIzQzOzYsMTQgQEAKICNpbmNsdWRlICYjMzQ7cmVncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7Y3B1aWQuaCYjMzQ7CiAKLWV4dGVybiBib29sIHRkcF9lbmFibGVkOwomIzQzO2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQ7CiAjaWZkZWYgQ09ORklHX1g4Nl82NAotZXh0ZXJuIGJvb2wgdGRwX21tdV9lbmFibGVkOwomIzQzO2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX21tdV9lbmFibGVkOwogI2Vsc2UKICNkZWZpbmUgdGRwX21tdV9lbmFibGVkIGZhbHNlCiAjZW5kaWYKIGV4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgZW5hYmxlX21taW9fY2FjaGluZzsKLWV4dGVybiBib29sIGVhZ2VyX3BhZ2Vfc3BsaXQ7CiYjNDM7ZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlYWdlcl9wYWdlX3NwbGl0OwogCiAjZGVmaW5lIEtWTV9NRU1TTE9UX1BBR0VTX1RPX01NVV9QQUdFU19SQVRJTyA1MAogI2RlZmluZSBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyA2NFVMCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbW11L21tdS5jIGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwppbmRleCA2YzEzZGE5NDJiZmNjYy4uYWYzODIwMTM2ZjdjMjEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL21tdS9tbXUuYwpAQCAtMTA0LDcgJiM0MzsxMDQsNyBAQCBtb2R1bGVfcGFyYW1fbmFtZWQoZmx1c2hfb25fcmV1c2UsIGZvcmNlX2ZsdXNoX2FuZF9zeW5jX29uX3JldXNlLCBib29sLCAwNjQ0KTsKICAqIDIuIHdoaWxlIGRvaW5nIDEuIGl0IHdhbGtzIGd1ZXN0LXBoeXNpY2FsIHRvIGhvc3QtcGh5c2ljYWwKICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbiYjMzk7dCBuZWVkIHRvIGRvIHNoYWRvdyBwYWdpbmcuCiAgKi8KLWJvb2wgdGRwX2VuYWJsZWQgPSBmYWxzZTsKJiM0Mztib29sIF9fcmVhZF9tb3N0bHkgdGRwX2VuYWJsZWQgPSBmYWxzZTsKIAogc3RhdGljIGJvb2wgX19yb19hZnRlcl9pbml0IHRkcF9tbXVfYWxsb3dlZDsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmgKaW5kZXggYjY5ODk4M2UzN2ZiNjEuLjljNWM2YjMzZTU4ZjU3IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vbXNycy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9tc3JzLmgKQEAgLTEsNiAmIzQzOzEsNiBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KLSNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUl9ICi0jZGVmaW5lIEFSQ0hfWDg2X0tWTV9NU1JfSAomIzQzOyNpZm5kZWYgQVJDSF9YODZfS1ZNX01TUlNfSAomIzQzOyNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUlNfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX2hvc3QuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91c2VyLXJldHVybi1ub3RpZmllci5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3JlZ3MuaCBiL2FyY2gveDg2L2t2bS9yZWdzLmgKaW5kZXggOTRmZDg2NzI4ZmVkMjkuLjQ0N2YwZWMzZTYzZTRlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9yZWdzLmgKQEAgLTE2LDYgJiM0MzsxNiw0NCBAQAogCiBzdGF0aWNfYXNzZXJ0KCEoS1ZNX1BPU1NJQkxFX0NSMF9HVUVTVF9CSVRTICZhbXA7IFg4Nl9DUjBfUERQVFJfQklUUykpOwogCiYjNDM7I2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOwkofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFwKJiM0MzsJCQkgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcCiYjNDM7CQkJICB8IFg4Nl9DUjBfTlcgfCBYODZfQ1IwX0NEIHwgWDg2X0NSMF9QRykpCiYjNDM7CiYjNDM7I2RlZmluZSBDUjRfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOwkofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXAomIzQzOwkJCSAgfCBYODZfQ1I0X1BTRSB8IFg4Nl9DUjRfUEFFIHwgWDg2X0NSNF9NQ0UgICAgIFwKJiM0MzsJCQkgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcCiYjNDM7CQkJICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXAomIzQzOwkJCSAgfCBYODZfQ1I0X09TWE1NRVhDUFQgfCBYODZfQ1I0X0xBNTcgfCBYODZfQ1I0X1ZNWEUgXAomIzQzOwkJCSAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcCiYjNDM7CQkJICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSkKJiM0MzsKJiM0MzsjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpCiYjNDM7CiYjNDM7I2RlZmluZSBEUjZfQlVTX0xPQ0sgICAoMSAmbHQ7Jmx0OyAxMSkKJiM0MzsjZGVmaW5lIERSNl9CRAkJKDEgJmx0OyZsdDsgMTMpCiYjNDM7I2RlZmluZSBEUjZfQlMJCSgxICZsdDsmbHQ7IDE0KQomIzQzOyNkZWZpbmUgRFI2X0JUCQkoMSAmbHQ7Jmx0OyAxNSkKJiM0MzsjZGVmaW5lIERSNl9SVE0JCSgxICZsdDsmbHQ7IDE2KQomIzQzOy8qCiYjNDM7ICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLgomIzQzOyAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0czsKJiM0MzsgKiB0aGV5IHdpbGwgbmV2ZXIgYmUgMCBmb3Igbm93LCBidXQgd2hlbiB0aGV5IGFyZSBkZWZpbmVkCiYjNDM7ICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuCiYjNDM7ICoKJiM0MzsgKiBEUjZfQUNUSVZFX0xPVyBpcyBhbHNvIHVzZWQgYXMgdGhlIGluaXQvcmVzZXQgdmFsdWUgZm9yIERSNi4KJiM0MzsgKi8KJiM0MzsjZGVmaW5lIERSNl9BQ1RJVkVfTE9XCTB4ZmZmZjBmZjAKJiM0MzsjZGVmaW5lIERSNl9WT0xBVElMRQkweDAwMDFlODBmCiYjNDM7I2RlZmluZSBEUjZfRklYRURfMQkoRFI2X0FDVElWRV9MT1cgJmFtcDsgfkRSNl9WT0xBVElMRSkKJiM0MzsKJiM0MzsjZGVmaW5lIERSN19CUF9FTl9NQVNLCTB4MDAwMDAwZmYKJiM0MzsjZGVmaW5lIERSN19HRQkJKDEgJmx0OyZsdDsgOSkKJiM0MzsjZGVmaW5lIERSN19HRAkJKDEgJmx0OyZsdDsgMTMpCiYjNDM7I2RlZmluZSBEUjdfVk9MQVRJTEUJMHhmZmZmMmJmZgomIzQzOwogdm9pZCBrdm1fcG9zdF9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBvbGRfY3IwLCB1bnNpZ25lZCBsb25nIGNyMCk7CiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTsKIGludCBrdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS90c3MuaCBiL2FyY2gveDg2L2t2bS90c3MuaAppbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS90c3MuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vdHNzLmgKQEAgLTIsNiAmIzQzOzIsMTAgQEAKICNpZm5kZWYgX19UU1NfU0VHTUVOVF9ICiAjZGVmaW5lIF9fVFNTX1NFR01FTlRfSAogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2J1aWxkX2J1Zy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9zdGRkZWYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsKIHN0cnVjdCB0c3Nfc2VnbWVudF8zMiB7CiAJdTMyIHByZXZfdGFza19saW5rOwogCXUzMiBlc3AwOwpAQCAtNjQsNCAmIzQzOzY4LDcgQEAgc3RydWN0IHRzc19zZWdtZW50XzE2IHsKICNkZWZpbmUgUk1PREVfVFNTX1NJWkUJCQkJCQkJXAogCShUU1NfQkFTRV9TSVpFICYjNDM7IFRTU19SRURJUkVDVElPTl9TSVpFICYjNDM7IFRTU19JT1BCX1NJWkUgJiM0MzsgMSkKIAomIzQzO3N0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IHRzc19zZWdtZW50XzMyLCBpb19tYXApID09IFRTU19JT1BCX0JBU0VfT0ZGU0VUKTsKJiM0MztzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgdHNzX3NlZ21lbnRfMzIpID09IFRTU19CQVNFX1NJWkUpOwomIzQzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmMKaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xMTUsNiAmIzQzOzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpOwogCiAjZGVmaW5lIEtWTV9DQVBfUE1VX1ZBTElEX01BU0sgS1ZNX1BNVV9DQVBfRElTQUJMRQogCiYjNDM7I2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcCiYjNDM7CShLVk1fR1VFU1REQkdfRU5BQkxFIHwgXAomIzQzOwlLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFwKJiM0MzsJS1ZNX0dVRVNUREJHX0JMT0NLSVJRKQomIzQzOwogI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEUwkJfCBcCiAJCQkJICAgIEtWTV9YMkFQSUNfQVBJX0RJU0FCTEVfQlJPQURDQVNUX1FVSVJLCXwgXAogCQkJCSAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUCXwgXApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oCmluZGV4IDhlY2U0NjgwODdhOGVlLi40OTRkOTdlOWE5YzlmMyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuaApAQCAtNDgyLDYgJiM0Mzs0ODIsMTIgQEAgaW50IGt2bV9lbXVsYXRlX3diaW52ZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV92Y3B1X2RlbGl2ZXJfc2lwaV92ZWN0b3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpOwogCiYjNDM7ZW51bSBrdm1fdGFza19zd2l0Y2hfcmVhc29uIHsKJiM0MzsJVEFTS19TV0lUQ0hfQ0FMTCA9IDAsCiYjNDM7CVRBU0tfU1dJVENIX0lSRVQgPSAxLAomIzQzOwlUQVNLX1NXSVRDSF9KTVAgPSAyLAomIzQzOwlUQVNLX1NXSVRDSF9HQVRFID0gMywKJiM0Mzt9OwogaW50IGt2bV90YXNrX3N3aXRjaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUxNiB0c3Nfc2VsZWN0b3IsIGludCBpZHRfaW5kZXgsCiAJCSAgICBpbnQgcmVhc29uLCBib29sIGhhc19lcnJvcl9jb2RlLCB1MzIgZXJyb3JfY29kZSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMjI6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMjgKCQkJCQkJCW91dHB1dDogNzQKCQkJCQkJCXRob3VnaHRzOiA4MzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS1ZNIHg4NiBDb2RlIFJlZmFjdG9yaW5nIEFuYWx5c2lzKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgZm9jdXNlZCBvbiByZW9yZ2FuaXppbmcgYW5kIHRpZHlpbmcgdXAgdGhlIEtWTSB4ODYgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgbW92aW5nIG1hY3JvIGFuZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJvdW5kLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBhcmUgYmVpbmcgbW92ZWQgb3V0IG9mIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCBhbmQgcmVkaXN0cmlidXRlZCBpbnRvIHZhcmlvdXMgb3RoZXIgeDg2IEtWTSBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyBsaWtlIGBoeXBlcnYuaGAsIGBsYXBpYy5jYCwgYGxhcGljLmhgLCBgcmVncy5oYCwgYHg4Ni5jYCwgYW5kIGB4ODYuaGAuIE5vIGZ1bmRhbWVudGFsIGxvZ2ljIGNoYW5nZXMgdGhlcmUsIGp1c3QgcmUtYXJyYW5naW5nLgoKVGhlIGFkZGl0aW9uIG9mIGBfX3JlYWRfbW9zdGx5YCB0byBgdGRwX2VuYWJsZWRgLCBgdGRwX21tdV9lbmFibGVkYCwgYW5kIGBlYWdlcl9wYWdlX3NwbGl0YCB3aXRoaW4gYGFyY2gveDg2L2t2bS9tbXUuaGAgYW5kIGBtbXUuY2AgYWxzbyBjYXRjaGVzIG15IGV5ZS4gVGhpcyBpcyBhIGNsYXNzaWMgb3B0aW1pemF0aW9uOyBhIGhpbnQgdG8gdGhlIGNvbXBpbGVyIHRvIHBsYWNlIHRoZXNlIHZhcmlhYmxlcyBpbiBhIHJlYWQtbW9zdGx5IHNlY3Rpb24sIGxpa2VseSBmb3IgY2FjaGUgZWZmaWNpZW5jeS4gVGhhdCYjMzk7cyBhIGxheW91dCBjaGFuZ2UsIG5vdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRlcm1zIG9mIHRoZSBhY3R1YWwgYWxnb3JpdGhtIG9yIGJlaGF2aW9yLgoKVGhlbiB0aGVyZSBhcmUgdGhvc2UgYHN0YXRpY19hc3NlcnRgcyBhZGRlZCBpbiBgYXJjaC94ODYva3ZtL3Rzcy5oYC4gVGhlc2UgYXJlIGNvbXBpbGUtdGltZSBjaGVja3MsIGVuc3VyaW5nIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGB0c3Nfc2VnbWVudF8zMmAgc3RydWN0dXJlIGhvbGQgdHJ1ZS4gQWdhaW4sIG5vIHJ1bnRpbWUgaW1wYWN0IG9uIGZ1bmN0aW9uYWxpdHkuCgpJIGhhZCB0byBkb3VibGUtY2hlY2sgdGhlIGVudW0gY2hhbmdlLiBSZW5hbWluZyB0aGUgZW51bSBmb3IgdGFzayBzd2l0Y2ggcmVhc29ucyBmcm9tIGFuIGFub255bW91cyBlbnVtIHRvIGBrdm1fdGFza19zd2l0Y2hfcmVhc29uYCBpcyBkZWZpbml0ZWx5IGp1c3QgZm9yIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4KCkFuZCB0aGF0IGluY2x1ZGUgZ3VhcmQgZml4IGluIGBhcmNoL3g4Ni9rdm0vbXNycy5oYCwgY2hhbmdpbmcgdGhlIGAjaWZuZGVmYCBtYWNybyBuYW1lLCB0aGF0JiMzOTtzIGp1c3QgZ29vZCBoeWdpZW5lLgoKSSB0b29rIGEgZ29vZCBsb29rIGF0IHRoZSBgX19yZWFkX21vc3RseWAgY2hhbmdlcyBpbiBtb3JlIGRldGFpbCBhbmQgY29uZmlybWVkIHRoYXQgdGhleSBhcmUganVzdCBzZWN0aW9uIGF0dHJpYnV0ZXMgYW5kIHRoZXJlZm9yZSBub3QgcmVsYXRlZCB0byBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UuCgpTbywgYWZ0ZXIgYSB0aG9yb3VnaCByZXZpZXcsIHRoaXMgcGF0Y2ggYXBwZWFycyB0byBiZSBwdXJlbHkgYSByZWZhY3RvcmluZyBlZmZvcnQuIEl0JiMzOTtzIGEgY2xlYW51cCwgaW1wcm92aW5nIGNvZGUgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZSB3aXRoIGBfX3JlYWRfbW9zdGx5YC4gSSYjMzk7bSBjb25maWRlbnQgdGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbnMgdGhhdCByZXF1aXJlIGZ1enppbmcuIE15IGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vdmVzIGRlZmluaXRpb25zLCBtYWNyb3MsIGFuZCBzdHJ1Y3RzIGJldHdlZW4gaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMsIGFkZHMgX19yZWFkX21vc3RseSBhdHRyaWJ1dGVzLCBhbmQgaW50cm9kdWNlcyBjb21waWxlLXRpbWUgc3RhdGljX2Fzc2VydHMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNVQyMjo0Mjo0NC4zMDkwNjQzNDVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODQ4MzY0NzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vdmVzIGRlZmluaXRpb25zLCBtYWNyb3MsIGFuZCBzdHJ1Y3RzIGJldHdlZW4gaGVhZGVyIGFuZCBzb3VyY2UgZmlsZXMsIGFkZHMgX19yZWFkX21vc3RseSBhdHRyaWJ1dGVzLCBhbmQgaW50cm9kdWNlcyBjb21waWxlLXRpbWUgc3RhdGljX2Fzc2VydHMuIFRoZXJlIGFyZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjMwOTA2OTkzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5NTk1ODc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGRhNzFiMDFkNzE0OGE1Njk2NGJiMDk0YTU0ZDY0ZGYzOGNjOThiMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi5mZGI4OTUzYWVlYjE1NyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0xMjUsMjQgKzEyNSw2IEBAXFxuICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFxcXFxcXG4gXFx0S1ZNX0FSQ0hfUkVRX0ZMQUdTKDM0LCBLVk1fUkVRVUVTVF9XQUlUKVxcbiBcXG4tI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi1cXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjBfRVQgfCBYODZfQ1IwX05FIHwgWDg2X0NSMF9XUCB8IFg4Nl9DUjBfQU0gXFxcXFxcbi1cXHRcXHRcXHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcXG4tXFxuLSNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tXFx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9QQUUgfCBYODZfQ1I0X01DRSAgICAgXFxcXFxcbi1cXHRcXHRcXHQgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXFxcXG4tXFx0XFx0XFx0ICB8IFg4Nl9DUjRfT1NYTU1FWENQVCB8IFg4Nl9DUjRfTEE1NyB8IFg4Nl9DUjRfVk1YRSBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcXFxcXFxuLVxcdFxcdFxcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXFxuLVxcbi0jZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXFxuLVxcbi1cXG4tXFxuICNkZWZpbmUgSU5WQUxJRF9QQUdFICh+KGhwYV90KTApXFxuICNkZWZpbmUgVkFMSURfUEFHRSh4KSAoKHgpICE9IElOVkFMSURfUEFHRSlcXG4gXFxuQEAgLTIzMCwzNyArMjEyLDYgQEAgZW51bSB4ODZfaW50ZXJjZXB0X3N0YWdlO1xcbiBcXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1xcdDRcXG4gXFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXFx1MDAzY1xcdTAwM2MgMTEpXFxuLSNkZWZpbmUgRFI2X0JEXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTMpXFxuLSNkZWZpbmUgRFI2X0JTXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTQpXFxuLSNkZWZpbmUgRFI2X0JUXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTUpXFxuLSNkZWZpbmUgRFI2X1JUTVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE2KVxcbi0vKlxcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXFxuLSAqIFdlIGNhbiByZWdhcmQgYWxsIHRoZSBiaXRzIGluIERSNl9GSVhFRF8xIGFzIGFjdGl2ZV9sb3cgYml0cztcXG4tICogdGhleSB3aWxsIG5ldmVyIGJlIDAgZm9yIG5vdywgYnV0IHdoZW4gdGhleSBhcmUgZGVmaW5lZFxcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cXG4tICpcXG4tICogRFI2X0FDVElWRV9MT1cgaXMgYWxzbyB1c2VkIGFzIHRoZSBpbml0L3Jlc2V0IHZhbHVlIGZvciBEUjYuXFxuLSAqL1xcbi0jZGVmaW5lIERSNl9BQ1RJVkVfTE9XXFx0MHhmZmZmMGZmMFxcbi0jZGVmaW5lIERSNl9WT0xBVElMRVxcdDB4MDAwMWU4MGZcXG4tI2RlZmluZSBEUjZfRklYRURfMVxcdChEUjZfQUNUSVZFX0xPVyBcXHUwMDI2IH5EUjZfVk9MQVRJTEUpXFxuLVxcbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXFx0MHgwMDAwMDBmZlxcbi0jZGVmaW5lIERSN19HRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDkpXFxuLSNkZWZpbmUgRFI3X0dEXFx0XFx0KDEgXFx1MDAzY1xcdTAwM2MgMTMpXFxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXFx0MHhmZmZmMmJmZlxcbi1cXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxcXFxuLVxcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgXFxcXFxcbi1cXHRLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXFxcXG4tXFx0S1ZNX0dVRVNUREJHX0JMT0NLSVJRKVxcbi1cXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcXHRCSVQoMClcXG4gI2RlZmluZSBQRkVSUl9XUklURV9NQVNLXFx0QklUKDEpXFxuICNkZWZpbmUgUEZFUlJfVVNFUl9NQVNLXFx0XFx0QklUKDIpXFxuQEAgLTI5MCwxOSArMjQxLDExIEBAIGVudW0geDg2X2ludGVyY2VwdF9zdGFnZTtcXG4gI2RlZmluZSBQRkVSUl9QUklWQVRFX0FDQ0VTUyAgIEJJVF9VTEwoNDkpXFxuICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpXFxuIFxcbi0vKiBhcGljIGF0dGVudGlvbiBiaXRzICovXFxuLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcXHQwXFxuLS8qXFxuLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxcbi0gKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXFxuLSAqIHRoaXMgYml0IHdpdGggUFYtRU9JIGluIGd1ZXN0IG1lbW9yeS5cXG4tICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXFxuLSAqL1xcbi0jZGVmaW5lIEtWTV9BUElDX1BWX0VPSV9QRU5ESU5HXFx0MVxcbi1cXG4gc3RydWN0IGt2bV9rZXJuZWxfaXJxZmQ7XFxuIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5O1xcbiBcXG4rc3RydWN0IGt2bV9hcGljX21hcDtcXG4rXFxuIHN0cnVjdCBrdm1feDg2X21zcl9maWx0ZXI7XFxuIHN0cnVjdCBrdm1feDg2X3BtdV9ldmVudF9maWx0ZXI7XFxuIFxcbkBAIC03MDUsOTUgKzY0OCw2IEBAIHN0cnVjdCBrdm1fbXRyciB7XFxuIFxcdHU2NCBkZWZ0eXBlO1xcbiB9O1xcbiBcXG4tLyogSHlwZXItViBTeW5JQyB0aW1lciAqL1xcbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHtcXG4tXFx0c3RydWN0IGhydGltZXIgdGltZXI7XFxuLVxcdGludCBpbmRleDtcXG4tXFx0dW5pb24gaHZfc3RpbWVyX2NvbmZpZyBjb25maWc7XFxuLVxcdHU2NCBjb3VudDtcXG4tXFx0dTY0IGV4cF90aW1lO1xcbi1cXHRzdHJ1Y3QgaHZfbWVzc2FnZSBtc2c7XFxuLVxcdGJvb2wgbXNnX3BlbmRpbmc7XFxuLX07XFxuLVxcbi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi9cXG4tc3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHtcXG4tXFx0dTY0IHZlcnNpb247XFxuLVxcdHU2NCBjb250cm9sO1xcbi1cXHR1NjQgbXNnX3BhZ2U7XFxuLVxcdHU2NCBldnRfcGFnZTtcXG4tXFx0YXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdO1xcbi1cXHRhdG9taWNfdCBzaW50X3RvX2dzaVtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcXG4tXFx0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xcbi1cXHRERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpO1xcbi1cXHRib29sIGFjdGl2ZTtcXG4tXFx0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XFxuLX07XFxuLVxcbi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXFxuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUgKDE2KVxcbi0vKlxcbi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICdtYWdpYycgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xcbi0gKiBhbnl0aGluZyBiZXNpZGVzIEdWQSBvbiB0aGUgVExCIGZsdXNoIGZpZm8uIEl0IGlzIHRoZW9yZXRpY2FsbHkgcG9zc2libGVcXG4tICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwXFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSdzIGFjdGlvbiB0byAnZmx1c2ggZXZlcnl0aGluZycgaW5zdGVhZCBvZlxcbi0gKiBmbHVzaGluZyB0aGVzZSBwYXJ0aWN1bGFyIGFkZHJlc3NlcyBpcywgaG93ZXZlciwgZnVsbHkgbGVnaXRpbWF0ZSBhc1xcbi0gKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy5cXG4tICovXFxuLSNkZWZpbmUgS1ZNX0hWX1RMQl9GTFVTSEFMTF9FTlRSWSAgKCh1NjQpLTEpXFxuLVxcbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XFxuLVxcdEhWX0wxX1RMQl9GTFVTSF9GSUZPLFxcbi1cXHRIVl9MMl9UTEJfRkxVU0hfRklGTyxcXG4tXFx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxcbi19O1xcbi1cXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcXG4tXFx0c3BpbmxvY2tfdCB3cml0ZV9sb2NrO1xcbi1cXHRERUNMQVJFX0tGSUZPKGVudHJpZXMsIHU2NCwgS1ZNX0hWX1RMQl9GTFVTSF9GSUZPX1NJWkUpO1xcbi19O1xcbi1cXG4tLyogSHlwZXItViBwZXIgdmNwdSBlbXVsYXRpb24gY29udGV4dCAqL1xcbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XFxuLVxcdHUzMiB2cF9pbmRleDtcXG4tXFx0dTY0IGh2X3ZhcGljO1xcbi1cXHRzNjQgcnVudGltZV9vZmZzZXQ7XFxuLVxcdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcXG4tXFx0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyIHN0aW1lcltIVl9TWU5JQ19TVElNRVJfQ09VTlRdO1xcbi1cXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XFxuLVxcdGJvb2wgZW5mb3JjZV9jcHVpZDtcXG4tXFx0c3RydWN0IHtcXG4tXFx0XFx0dTMyIGZlYXR1cmVzX2VheDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVBWCAqL1xcbi1cXHRcXHR1MzIgZmVhdHVyZXNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUJYICovXFxuLVxcdFxcdHUzMiBmZWF0dXJlc19lZHg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FRFggKi9cXG4tXFx0XFx0dTMyIGVubGlnaHRlbm1lbnRzX2VheDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUFYICovXFxuLVxcdFxcdHUzMiBlbmxpZ2h0ZW5tZW50c19lYng7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVCWCAqL1xcbi1cXHRcXHR1MzIgc3luZGJnX2NhcF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9TWU5EQkdfUExBVEZPUk1fQ0FQQUJJTElUSUVTLkVBWCAqL1xcbi1cXHRcXHR1MzIgbmVzdGVkX2VheDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQVggKi9cXG4tXFx0XFx0dTMyIG5lc3RlZF9lYng7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUJYICovXFxuLVxcdH0gY3B1aWRfY2FjaGU7XFxuLVxcbi1cXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxcbi1cXHQgKiBzZXRzIChmb3IgaGlnaCB2Q1BVIGNvdW50cywgdGhleSdyZSB0b28gbGFyZ2UgdG8gY29tZm9ydGFibHkgZml0IG9uXFxuLVxcdCAqIHRoZSBzdGFjaykuXFxuLVxcdCAqL1xcbi1cXHR1NjQgc3BhcnNlX2JhbmtzW0hWX01BWF9TUEFSU0VfVkNQVV9CQU5LU107XFxuLVxcdERFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XFxuLVxcbi1cXHRzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7XFxuLVxcbi1cXHRzdHJ1Y3Qge1xcbi1cXHRcXHR1NjQgcGFfcGFnZV9ncGE7XFxuLVxcdFxcdHU2NCB2bV9pZDtcXG4tXFx0XFx0dTMyIHZwX2lkO1xcbi1cXHR9IG5lc3RlZDtcXG4tfTtcXG4tXFxuIHN0cnVjdCBrdm1faHlwZXJ2aXNvcl9jcHVpZCB7XFxuIFxcdHUzMiBiYXNlO1xcbiBcXHR1MzIgbGltaXQ7XFxuQEAgLTgyNCw2ICs2NzgsOCBAQCBzdHJ1Y3Qga3ZtX3ZjcHVfeGVuIHtcXG4gfTtcXG4gI2VuZGlmXFxuIFxcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHY7XFxuK1xcbiBzdHJ1Y3Qga3ZtX3F1ZXVlZF9leGNlcHRpb24ge1xcbiBcXHRib29sIHBlbmRpbmc7XFxuIFxcdGJvb2wgaW5qZWN0ZWQ7XFxuQEAgLTExODEsMzkgKzEwMzcsNiBAQCBzdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xcbiBcXHR1bnNpZ25lZCBzaG9ydCAqZ2ZuX3dyaXRlX3RyYWNrO1xcbiB9O1xcbiBcXG4tLypcXG4tICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGVcXG4tICogZGVzdGluYXRpb24gdmFyeSBwZXIgbW9kZS4gIEVuYWJsaW5nIHRoZSBvcHRpbWl6ZWQgbG9naWNhbCBtYXAgcmVxdWlyZXMgYWxsXFxuLSAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cXG4tICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLlxcbi0gKi9cXG4tZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xcbi1cXHQvKiBBbGwgbG9jYWwgQVBJQ3MgYXJlIHNvZnR3YXJlIGRpc2FibGVkLiAqL1xcbi1cXHRLVk1fQVBJQ19NT0RFX1NXX0RJU0FCTEVELFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19DTFVTVEVSLFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBmbGF0IGFkZHJlc3NpbmcgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxcbi1cXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4MkFQSUMgbW9kZS4gKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9YMkFQSUMsXFxuLVxcdC8qXFxuLVxcdCAqIE9wdGltaXplZCBtYXAgZGlzYWJsZWQsIGUuZy4gbm90IGFsbCBsb2NhbCBBUElDcyBpbiB0aGUgc2FtZSBsb2dpY2FsXFxuLVxcdCAqIG1vZGUsIHNhbWUgbG9naWNhbCBJRCBhc3NpZ25lZCB0byBtdWx0aXBsZSBBUElDcywgZXRjLlxcbi1cXHQgKi9cXG4tXFx0S1ZNX0FQSUNfTU9ERV9NQVBfRElTQUJMRUQsXFxuLX07XFxuLVxcbi1zdHJ1Y3Qga3ZtX2FwaWNfbWFwIHtcXG4tXFx0c3RydWN0IHJjdV9oZWFkIHJjdTtcXG4tXFx0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xcbi1cXHR1MzIgbWF4X2FwaWNfaWQ7XFxuLVxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XFxuLVxcdFxcdHN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTtcXG4tXFx0fTtcXG4tXFx0c3RydWN0IGt2bV9sYXBpYyAqcGh5c19tYXBbXTtcXG4tfTtcXG4tXFxuIC8qIEh5cGVyLVYgc3ludGhldGljIGRlYnVnZ2VyIChTeW5EYmcpKi9cXG4gc3RydWN0IGt2bV9odl9zeW5kYmcge1xcbiBcXHRzdHJ1Y3Qge1xcbkBAIC0yMDE5LDEzICsxODQyLDYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJlYWRfbXNyKHVuc2lnbmVkIGxvbmcgbXNyKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4tZW51bSB7XFxuLVxcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxcbi1cXHRUQVNLX1NXSVRDSF9JUkVUID0gMSxcXG4tXFx0VEFTS19TV0lUQ0hfSk1QID0gMixcXG4tXFx0VEFTS19TV0lUQ0hfR0FURSA9IDMsXFxuLX07XFxuLVxcbiAjZGVmaW5lIEhGX0dVRVNUX01BU0tcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cXG4gXFxuICNpZmRlZiBDT05GSUdfS1ZNX1NNTVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcXG5pbmRleCAxYzhmN2FhYWIwNjNkMC4uNjI1OGVkMjc3YTdiNDcgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXFxuQEAgLTI3LDYgKzI3LDk2IEBAXFxuIFxcbiAjaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG4gXFxuK1xcbisvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXFxuK3N0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xcbitcXHRzdHJ1Y3QgaHJ0aW1lciB0aW1lcjtcXG4rXFx0aW50IGluZGV4O1xcbitcXHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcXG4rXFx0dTY0IGNvdW50O1xcbitcXHR1NjQgZXhwX3RpbWU7XFxuK1xcdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcXG4rXFx0Ym9vbCBtc2dfcGVuZGluZztcXG4rfTtcXG4rXFxuKy8qIEh5cGVyLVYgc3ludGhldGljIGludGVycnVwdCBjb250cm9sbGVyIChTeW5JQykqL1xcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMge1xcbitcXHR1NjQgdmVyc2lvbjtcXG4rXFx0dTY0IGNvbnRyb2w7XFxuK1xcdHU2NCBtc2dfcGFnZTtcXG4rXFx0dTY0IGV2dF9wYWdlO1xcbitcXHRhdG9taWM2NF90IHNpbnRbSFZfU1lOSUNfU0lOVF9DT1VOVF07XFxuK1xcdGF0b21pY190IHNpbnRfdG9fZ3NpW0hWX1NZTklDX1NJTlRfQ09VTlRdO1xcbitcXHRERUNMQVJFX0JJVE1BUChhdXRvX2VvaV9iaXRtYXAsIDI1Nik7XFxuK1xcdERFQ0xBUkVfQklUTUFQKHZlY19iaXRtYXAsIDI1Nik7XFxuK1xcdGJvb2wgYWN0aXZlO1xcbitcXHRib29sIGRvbnRfemVyb19zeW5pY19wYWdlcztcXG4rfTtcXG4rXFxuKy8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gKi9cXG4rI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpXFxuKy8qXFxuKyAqIE5vdGU6IHRoZSBmb2xsb3dpbmcgJ21hZ2ljJyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXFxuKyAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxcbisgKiB0byBvYnNlcnZlIGEgcmVxdWVzdCB0byBmbHVzaCA0MDk1IFBGTnMgc3RhcnRpbmcgZnJvbSAweGZmZmZmZmZmZmZmZmYwMDBcXG4rICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJ3MgYWN0aW9uIHRvICdmbHVzaCBldmVyeXRoaW5nJyBpbnN0ZWFkIG9mXFxuKyAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXFxuKyAqIGZsdXNoaW5nIG1vcmUgdGhhbiByZXF1ZXN0ZWQgaXMgYWx3YXlzIE9LLlxcbisgKi9cXG4rI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcXG4rXFxuK2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcXG4rXFx0SFZfTDFfVExCX0ZMVVNIX0ZJRk8sXFxuK1xcdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxcbitcXHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXFxuK307XFxuK1xcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xcbitcXHRzcGlubG9ja190IHdyaXRlX2xvY2s7XFxuK1xcdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XFxuK307XFxuK1xcbisvKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXFxuK3N0cnVjdCBrdm1fdmNwdV9odiB7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0dTMyIHZwX2luZGV4O1xcbitcXHR1NjQgaHZfdmFwaWM7XFxuK1xcdHM2NCBydW50aW1lX29mZnNldDtcXG4rXFx0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljO1xcbitcXHRzdHJ1Y3Qga3ZtX2h5cGVydl9leGl0IGV4aXQ7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XFxuK1xcdERFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTtcXG4rXFx0Ym9vbCBlbmZvcmNlX2NwdWlkO1xcbitcXHRzdHJ1Y3Qge1xcbitcXHRcXHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXFxuK1xcdFxcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cXG4rXFx0XFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xcbitcXHRcXHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cXG4rXFx0XFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXFxuK1xcdFxcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXFxuK1xcdFxcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xcbitcXHRcXHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cXG4rXFx0fSBjcHVpZF9jYWNoZTtcXG4rXFxuK1xcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUHJlYWxsb2NhdGVkIGJ1ZmZlcnMgZm9yIGhhbmRsaW5nIGh5cGVyY2FsbHMgdGhhdCBwYXNzIHNwYXJzZSB2Q1BVXFxuK1xcdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5J3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb25cXG4rXFx0ICogdGhlIHN0YWNrKS5cXG4rXFx0ICovXFxuK1xcdHU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTtcXG4rXFx0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcXG4rXFxuK1xcdHN0cnVjdCBodl92cF9hc3Npc3RfcGFnZSB2cF9hc3Npc3RfcGFnZTtcXG4rXFxuK1xcdHN0cnVjdCB7XFxuK1xcdFxcdHU2NCBwYV9wYWdlX2dwYTtcXG4rXFx0XFx0dTY0IHZtX2lkO1xcbitcXHRcXHR1MzIgdnBfaWQ7XFxuK1xcdH0gbmVzdGVkO1xcbit9O1xcbitcXG4gLyogXFxcIkh2IzFcXFwiIHNpZ25hdHVyZSAqL1xcbiAjZGVmaW5lIEhZUEVSVl9DUFVJRF9TSUdOQVRVUkVfRUFYIDB4MzEyMzc2NDhcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcXG5pbmRleCA2ZjMwYmJkZGRiNWFhOS4uMDM1NGRiMGYyYzBmMDMgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2xhcGljLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbkBAIC03NSw2ICs3NSwxNiBAQCBtb2R1bGVfcGFyYW0obGFwaWNfdGltZXJfYWR2YW5jZSwgYm9vbCwgMDQ0NCk7XFxuIC8qIHN0ZXAtYnktc3RlcCBhcHByb3hpbWF0aW9uIHRvIG1pdGlnYXRlIGZsdWN0dWF0aW9uICovXFxuICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4XFxuIFxcbisvKiBhcGljIGF0dGVudGlvbiBiaXRzICovXFxuKyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcXHQwXFxuKy8qXFxuKyAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxcbisgKiBXZSBkZXRlY3QgUFYtRU9JIGNoYW5nZXMgYnkgZ3Vlc3QgYnkgY29tcGFyaW5nXFxuKyAqIHRoaXMgYml0IHdpdGggUFYtRU9JIGluIGd1ZXN0IG1lbW9yeS5cXG4rICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXFxuKyAqL1xcbisjZGVmaW5lIEtWTV9BUElDX1BWX0VPSV9QRU5ESU5HXFx0MVxcbitcXG4gc3RhdGljIGJvb2wgX19yZWFkX21vc3RseSB2ZWN0b3JfaGFzaGluZ19lbmFibGVkID0gdHJ1ZTtcXG4gbW9kdWxlX3BhcmFtX25hbWVkKHZlY3Rvcl9oYXNoaW5nLCB2ZWN0b3JfaGFzaGluZ19lbmFibGVkLCBib29sLCAwNDQ0KTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5oIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcXG5pbmRleCA1OGRiYjk0Zjk4MGRhMi4uYmQxMDk4Yzg5ZDk5ODAgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL2xhcGljLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxcbkBAIC0zMiw2ICszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xcbiBcXHRMQVBJQ19NT0RFX1gyQVBJQyA9IE1TUl9JQTMyX0FQSUNCQVNFX0VOQUJMRSB8IFgyQVBJQ19FTkFCTEUsXFxuIH07XFxuIFxcbisvKlxcbisgKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxcbisgKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGxcXG4rICogc29mdHdhcmUtZW5hYmxlZCBsb2NhbCBBUElzIHRvIGJlIGluIHRoZSBzYW1lIG1vZGUsIGVhY2ggYWRkcmVzc2FibGUgQVBJQyB0b1xcbisgKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXFxuKyAqL1xcbitlbnVtIGt2bV9hcGljX2xvZ2ljYWxfbW9kZSB7XFxuK1xcdC8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovXFxuK1xcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGNsdXN0ZXIgYWRkcmVzc2luZyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1hBUElDX0ZMQVQsXFxuK1xcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcXG4rXFx0LypcXG4rXFx0ICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWxcXG4rXFx0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXFxuK1xcdCAqL1xcbitcXHRLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCxcXG4rfTtcXG4rXFxuK3N0cnVjdCBrdm1fYXBpY19tYXAge1xcbitcXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xcbitcXHRlbnVtIGt2bV9hcGljX2xvZ2ljYWxfbW9kZSBsb2dpY2FsX21vZGU7XFxuK1xcdHUzMiBtYXhfYXBpY19pZDtcXG4rXFx0dW5pb24ge1xcbitcXHRcXHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcXG4rXFx0XFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xcbitcXHR9O1xcbitcXHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xcbit9O1xcbitcXG4gZW51bSBsYXBpY19sdnRfZW50cnkge1xcbiBcXHRMVlRfVElNRVIsXFxuIFxcdExWVF9USEVSTUFMX01PTklUT1IsXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxcbmluZGV4IGM5ZjYyOGI5N2RhZWI5Li44NWJjNTAzZGUxYjZmZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbW11LmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11LmhcXG5AQCAtNiwxNCArNiwxNCBAQFxcbiAjaW5jbHVkZSBcXFwicmVncy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiY3B1aWQuaFxcXCJcXG4gXFxuLWV4dGVybiBib29sIHRkcF9lbmFibGVkO1xcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkO1xcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxcbi1leHRlcm4gYm9vbCB0ZHBfbW11X2VuYWJsZWQ7XFxuK2V4dGVybiBib29sIF9fcmVhZF9tb3N0bHkgdGRwX21tdV9lbmFibGVkO1xcbiAjZWxzZVxcbiAjZGVmaW5lIHRkcF9tbXVfZW5hYmxlZCBmYWxzZVxcbiAjZW5kaWZcXG4gZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfbW1pb19jYWNoaW5nO1xcbi1leHRlcm4gYm9vbCBlYWdlcl9wYWdlX3NwbGl0O1xcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IGVhZ2VyX3BhZ2Vfc3BsaXQ7XFxuIFxcbiAjZGVmaW5lIEtWTV9NRU1TTE9UX1BBR0VTX1RPX01NVV9QQUdFU19SQVRJTyA1MFxcbiAjZGVmaW5lIEtWTV9NSU5fQUxMT0NfTU1VX1BBR0VTIDY0VUxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcXG5pbmRleCA2YzEzZGE5NDJiZmNjYy4uYWYzODIwMTM2ZjdjMjEgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcXG5AQCAtMTA0LDcgKzEwNCw3IEBAIG1vZHVsZV9wYXJhbV9uYW1lZChmbHVzaF9vbl9yZXVzZSwgZm9yY2VfZmx1c2hfYW5kX3N5bmNfb25fcmV1c2UsIGJvb2wsIDA2NDQpO1xcbiAgKiAyLiB3aGlsZSBkb2luZyAxLiBpdCB3YWxrcyBndWVzdC1waHlzaWNhbCB0byBob3N0LXBoeXNpY2FsXFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gc2hhZG93IHBhZ2luZy5cXG4gICovXFxuLWJvb2wgdGRwX2VuYWJsZWQgPSBmYWxzZTtcXG4rYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkID0gZmFsc2U7XFxuIFxcbiBzdGF0aWMgYm9vbCBfX3JvX2FmdGVyX2luaXQgdGRwX21tdV9hbGxvd2VkO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21zcnMuaCBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5pbmRleCBiNjk4OTgzZTM3ZmI2MS4uOWM1YzZiMzNlNThmNTcgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxcbisrKyBiL2FyY2gveDg2L2t2bS9tc3JzLmhcXG5AQCAtMSw2ICsxLDYgQEBcXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG4tI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSX0hcXG4tI2RlZmluZSBBUkNIX1g4Nl9LVk1fTVNSX0hcXG4rI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSU19IXFxuKyNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUlNfSFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC91c2VyLXJldHVybi1ub3RpZmllci5oXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5oIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxcbmluZGV4IDk0ZmQ4NjcyOGZlZDI5Li40NDdmMGVjM2U2M2U0ZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vcmVncy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxcbkBAIC0xNiw2ICsxNiw0NCBAQFxcbiBcXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcXHUwMDI2IFg4Nl9DUjBfUERQVFJfQklUUykpO1xcbiBcXG4rI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbitcXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1IwX1BFIHwgWDg2X0NSMF9NUCB8IFg4Nl9DUjBfRU0gfCBYODZfQ1IwX1RTIFxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjBfRVQgfCBYODZfQ1IwX05FIHwgWDg2X0NSMF9XUCB8IFg4Nl9DUjBfQU0gXFxcXFxcbitcXHRcXHRcXHQgIHwgWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QgfCBYODZfQ1IwX1BHKSlcXG4rXFxuKyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rXFx0KH4odW5zaWduZWQgbG9uZykoWDg2X0NSNF9WTUUgfCBYODZfQ1I0X1BWSSB8IFg4Nl9DUjRfVFNEIHwgWDg2X0NSNF9ERVxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjRfUFNFIHwgWDg2X0NSNF9QQUUgfCBYODZfQ1I0X01DRSAgICAgXFxcXFxcbitcXHRcXHRcXHQgIHwgWDg2X0NSNF9QR0UgfCBYODZfQ1I0X1BDRSB8IFg4Nl9DUjRfT1NGWFNSIHwgWDg2X0NSNF9QQ0lERSBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X09TWFNBVkUgfCBYODZfQ1I0X1NNRVAgfCBYODZfQ1I0X0ZTR1NCQVNFIFxcXFxcXG4rXFx0XFx0XFx0ICB8IFg4Nl9DUjRfT1NYTU1FWENQVCB8IFg4Nl9DUjRfTEE1NyB8IFg4Nl9DUjRfVk1YRSBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X1NNQVAgfCBYODZfQ1I0X1BLRSB8IFg4Nl9DUjRfVU1JUCBcXFxcXFxuK1xcdFxcdFxcdCAgfCBYODZfQ1I0X0xBTV9TVVAgfCBYODZfQ1I0X0NFVCkpXFxuK1xcbisjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXFxuK1xcbisjZGVmaW5lIERSNl9CVVNfTE9DSyAgICgxIFxcdTAwM2NcXHUwMDNjIDExKVxcbisjZGVmaW5lIERSNl9CRFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDEzKVxcbisjZGVmaW5lIERSNl9CU1xcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE0KVxcbisjZGVmaW5lIERSNl9CVFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDE1KVxcbisjZGVmaW5lIERSNl9SVE1cXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyAxNilcXG4rLypcXG4rICogRFI2X0FDVElWRV9MT1cgY29tYmluZXMgZml4ZWQtMSBhbmQgYWN0aXZlLWxvdyBiaXRzLlxcbisgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XFxuKyAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcXG4rICogaW4gdGhlIGZ1dHVyZSBpdCB3aWxsIHJlcXVpcmUgbm8gY29kZSBjaGFuZ2UuXFxuKyAqXFxuKyAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxcbisgKi9cXG4rI2RlZmluZSBEUjZfQUNUSVZFX0xPV1xcdDB4ZmZmZjBmZjBcXG4rI2RlZmluZSBEUjZfVk9MQVRJTEVcXHQweDAwMDFlODBmXFxuKyNkZWZpbmUgRFI2X0ZJWEVEXzFcXHQoRFI2X0FDVElWRV9MT1cgXFx1MDAyNiB+RFI2X1ZPTEFUSUxFKVxcbitcXG4rI2RlZmluZSBEUjdfQlBfRU5fTUFTS1xcdDB4MDAwMDAwZmZcXG4rI2RlZmluZSBEUjdfR0VcXHRcXHQoMSBcXHUwMDNjXFx1MDAzYyA5KVxcbisjZGVmaW5lIERSN19HRFxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDEzKVxcbisjZGVmaW5lIERSN19WT0xBVElMRVxcdDB4ZmZmZjJiZmZcXG4rXFxuIHZvaWQga3ZtX3Bvc3Rfc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgb2xkX2NyMCwgdW5zaWduZWQgbG9uZyBjcjApO1xcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTtcXG4gaW50IGt2bV9zZXRfY3IwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjApO1xcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdHNzLmggYi9hcmNoL3g4Ni9rdm0vdHNzLmhcXG5pbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3Rzcy5oXFxuKysrIGIvYXJjaC94ODYva3ZtL3Rzcy5oXFxuQEAgLTIsNiArMiwxMCBAQFxcbiAjaWZuZGVmIF9fVFNTX1NFR01FTlRfSFxcbiAjZGVmaW5lIF9fVFNTX1NFR01FTlRfSFxcbiBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2J1aWxkX2J1Zy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RkZGVmLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC90eXBlcy5oXFx1MDAzZVxcbitcXG4gc3RydWN0IHRzc19zZWdtZW50XzMyIHtcXG4gXFx0dTMyIHByZXZfdGFza19saW5rO1xcbiBcXHR1MzIgZXNwMDtcXG5AQCAtNjQsNCArNjgsNyBAQCBzdHJ1Y3QgdHNzX3NlZ21lbnRfMTYge1xcbiAjZGVmaW5lIFJNT0RFX1RTU19TSVpFXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHQoVFNTX0JBU0VfU0laRSArIFRTU19SRURJUkVDVElPTl9TSVpFICsgVFNTX0lPUEJfU0laRSArIDEpXFxuIFxcbitzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XFxuK3N0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMikgPT0gVFNTX0JBU0VfU0laRSk7XFxuK1xcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXFxuaW5kZXggMDYyNmU4MzVlOWViNzcuLjVlZTZkMGMzMzAwOTUzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC0xMTUsNiArMTE1LDE1IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XFxuIFxcbiAjZGVmaW5lIEtWTV9DQVBfUE1VX1ZBTElEX01BU0sgS1ZNX1BNVV9DQVBfRElTQUJMRVxcbiBcXG4rI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxcXFxuK1xcdChLVk1fR1VFU1REQkdfRU5BQkxFIHwgXFxcXFxcbitcXHRLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9CUCB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXFxcXG4rXFx0S1ZNX0dVRVNUREJHX0JMT0NLSVJRKVxcbitcXG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1xcdFxcdHwgXFxcXFxcbiBcXHRcXHRcXHRcXHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcXHR8IFxcXFxcXG4gXFx0XFx0XFx0XFx0ICAgIEtWTV9YMkFQSUNfRU5BQkxFX1NVUFBSRVNTX0VPSV9CUk9BRENBU1RcXHR8IFxcXFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXFxuaW5kZXggOGVjZTQ2ODA4N2E4ZWUuLjQ5NGQ5N2U5YTljOWYzIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuaFxcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuaFxcbkBAIC00ODIsNiArNDgyLDEyIEBAIGludCBrdm1fZW11bGF0ZV93YmludmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4gXFxuIHZvaWQga3ZtX3ZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3Rvcik7XFxuIFxcbitlbnVtIGt2bV90YXNrX3N3aXRjaF9yZWFzb24ge1xcbitcXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcXG4rXFx0VEFTS19TV0lUQ0hfSVJFVCA9IDEsXFxuK1xcdFRBU0tfU1dJVENIX0pNUCA9IDIsXFxuK1xcdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxcbit9O1xcbiBpbnQga3ZtX3Rhc2tfc3dpdGNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2IHRzc19zZWxlY3RvciwgaW50IGlkdF9pbmRleCxcXG4gXFx0XFx0ICAgIGludCByZWFzb24sIGJvb2wgaGFzX2Vycm9yX2NvZGUsIHUzMiBlcnJvcl9jb2RlKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjgxOTQxNjYzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTMzODAwNjA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRkYTcxYjAxZDcxNDhhNTY5NjRiYjA5NGE1NGQ2NGRmMzhjYzk4YjJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAyMjo0Mjo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCBiNTE3MjU3YTYzMTUzMi4uZmRiODk1M2FlZWIxNTcgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtMTI1LDI0ICsxMjUsNiBAQFxuICNkZWZpbmUgS1ZNX1JFUV9VUERBVEVfUFJPVEVDVEVEX0dVRVNUX1NUQVRFIFxcXG4gXHRLVk1fQVJDSF9SRVFfRkxBR1MoMzQsIEtWTV9SRVFVRVNUX1dBSVQpXG4gXG4tI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi1cdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjBfUEUgfCBYODZfQ1IwX01QIHwgWDg2X0NSMF9FTSB8IFg4Nl9DUjBfVFMgXFxcbi1cdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuLVx0XHRcdCAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKVxuLVxuLSNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9QU0UgfCBYODZfQ1I0X1BBRSB8IFg4Nl9DUjRfTUNFICAgICBcXFxuLVx0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXFxcbi1cdFx0XHQgIHwgWDg2X0NSNF9PU1hNTUVYQ1BUIHwgWDg2X0NSNF9MQTU3IHwgWDg2X0NSNF9WTVhFIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4tXHRcdFx0ICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSlcbi1cbi0jZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4tXG4tXG4tXG4gI2RlZmluZSBJTlZBTElEX1BBR0UgKH4oaHBhX3QpMClcbiAjZGVmaW5lIFZBTElEX1BBR0UoeCkgKCh4KSAhPSBJTlZBTElEX1BBR0UpXG4gXG5AQCAtMjMwLDM3ICsyMTIsNiBAQCBlbnVtIHg4Nl9pbnRlcmNlcHRfc3RhZ2U7XG4gXG4gI2RlZmluZSBLVk1fTlJfREJfUkVHU1x0NFxuIFxuLSNkZWZpbmUgRFI2X0JVU19MT0NLICAgKDEgXHUwMDNjXHUwMDNjIDExKVxuLSNkZWZpbmUgRFI2X0JEXHRcdCgxIFx1MDAzY1x1MDAzYyAxMylcbi0jZGVmaW5lIERSNl9CU1x0XHQoMSBcdTAwM2NcdTAwM2MgMTQpXG4tI2RlZmluZSBEUjZfQlRcdFx0KDEgXHUwMDNjXHUwMDNjIDE1KVxuLSNkZWZpbmUgRFI2X1JUTVx0XHQoMSBcdTAwM2NcdTAwM2MgMTYpXG4tLypcbi0gKiBEUjZfQUNUSVZFX0xPVyBjb21iaW5lcyBmaXhlZC0xIGFuZCBhY3RpdmUtbG93IGJpdHMuXG4tICogV2UgY2FuIHJlZ2FyZCBhbGwgdGhlIGJpdHMgaW4gRFI2X0ZJWEVEXzEgYXMgYWN0aXZlX2xvdyBiaXRzO1xuLSAqIHRoZXkgd2lsbCBuZXZlciBiZSAwIGZvciBub3csIGJ1dCB3aGVuIHRoZXkgYXJlIGRlZmluZWRcbi0gKiBpbiB0aGUgZnV0dXJlIGl0IHdpbGwgcmVxdWlyZSBubyBjb2RlIGNoYW5nZS5cbi0gKlxuLSAqIERSNl9BQ1RJVkVfTE9XIGlzIGFsc28gdXNlZCBhcyB0aGUgaW5pdC9yZXNldCB2YWx1ZSBmb3IgRFI2LlxuLSAqL1xuLSNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbi0jZGVmaW5lIERSNl9WT0xBVElMRVx0MHgwMDAxZTgwZlxuLSNkZWZpbmUgRFI2X0ZJWEVEXzFcdChEUjZfQUNUSVZFX0xPVyBcdTAwMjYgfkRSNl9WT0xBVElMRSlcbi1cbi0jZGVmaW5lIERSN19CUF9FTl9NQVNLXHQweDAwMDAwMGZmXG4tI2RlZmluZSBEUjdfR0VcdFx0KDEgXHUwMDNjXHUwMDNjIDkpXG4tI2RlZmluZSBEUjdfR0RcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuLSNkZWZpbmUgRFI3X1ZPTEFUSUxFXHQweGZmZmYyYmZmXG4tXG4tI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuLVx0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4tXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbi1cdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuLVx0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4tXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4tXG4gI2RlZmluZSBQRkVSUl9QUkVTRU5UX01BU0tcdEJJVCgwKVxuICNkZWZpbmUgUEZFUlJfV1JJVEVfTUFTS1x0QklUKDEpXG4gI2RlZmluZSBQRkVSUl9VU0VSX01BU0tcdFx0QklUKDIpXG5AQCAtMjkwLDE5ICsyNDEsMTEgQEAgZW51bSB4ODZfaW50ZXJjZXB0X3N0YWdlO1xuICNkZWZpbmUgUEZFUlJfUFJJVkFURV9BQ0NFU1MgICBCSVRfVUxMKDQ5KVxuICNkZWZpbmUgUEZFUlJfU1lOVEhFVElDX01BU0sgICAoUEZFUlJfSU1QTElDSVRfQUNDRVNTIHwgUEZFUlJfUFJJVkFURV9BQ0NFU1MpXG4gXG4tLyogYXBpYyBhdHRlbnRpb24gYml0cyAqL1xuLSNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbi0vKlxuLSAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxuLSAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbi0gKiB0aGlzIGJpdCB3aXRoIFBWLUVPSSBpbiBndWVzdCBtZW1vcnkuXG4tICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXG4tICovXG4tI2RlZmluZSBLVk1fQVBJQ19QVl9FT0lfUEVORElOR1x0MVxuLVxuIHN0cnVjdCBrdm1fa2VybmVsX2lycWZkO1xuIHN0cnVjdCBrdm1fa2VybmVsX2lycV9yb3V0aW5nX2VudHJ5O1xuIFxuK3N0cnVjdCBrdm1fYXBpY19tYXA7XG4rXG4gc3RydWN0IGt2bV94ODZfbXNyX2ZpbHRlcjtcbiBzdHJ1Y3Qga3ZtX3g4Nl9wbXVfZXZlbnRfZmlsdGVyO1xuIFxuQEAgLTcwNSw5NSArNjQ4LDYgQEAgc3RydWN0IGt2bV9tdHJyIHtcbiBcdHU2NCBkZWZ0eXBlO1xuIH07XG4gXG4tLyogSHlwZXItViBTeW5JQyB0aW1lciAqL1xuLXN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIge1xuLVx0c3RydWN0IGhydGltZXIgdGltZXI7XG4tXHRpbnQgaW5kZXg7XG4tXHR1bmlvbiBodl9zdGltZXJfY29uZmlnIGNvbmZpZztcbi1cdHU2NCBjb3VudDtcbi1cdHU2NCBleHBfdGltZTtcbi1cdHN0cnVjdCBodl9tZXNzYWdlIG1zZztcbi1cdGJvb2wgbXNnX3BlbmRpbmc7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHN5bnRoZXRpYyBpbnRlcnJ1cHQgY29udHJvbGxlciAoU3luSUMpKi9cbi1zdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3luaWMge1xuLVx0dTY0IHZlcnNpb247XG4tXHR1NjQgY29udHJvbDtcbi1cdHU2NCBtc2dfcGFnZTtcbi1cdHU2NCBldnRfcGFnZTtcbi1cdGF0b21pYzY0X3Qgc2ludFtIVl9TWU5JQ19TSU5UX0NPVU5UXTtcbi1cdGF0b21pY190IHNpbnRfdG9fZ3NpW0hWX1NZTklDX1NJTlRfQ09VTlRdO1xuLVx0REVDTEFSRV9CSVRNQVAoYXV0b19lb2lfYml0bWFwLCAyNTYpO1xuLVx0REVDTEFSRV9CSVRNQVAodmVjX2JpdG1hcCwgMjU2KTtcbi1cdGJvb2wgYWN0aXZlO1xuLVx0Ym9vbCBkb250X3plcm9fc3luaWNfcGFnZXM7XG4tfTtcbi1cbi0vKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyBvbiB0aGUgVExCIGZsdXNoIGZpZm8uICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSAoMTYpXG4tLypcbi0gKiBOb3RlOiB0aGUgZm9sbG93aW5nICdtYWdpYycgZW50cnkgaXMgbWFkZSB1cCBieSBLVk0gdG8gYXZvaWQgcHV0dGluZ1xuLSAqIGFueXRoaW5nIGJlc2lkZXMgR1ZBIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gSXQgaXMgdGhlb3JldGljYWxseSBwb3NzaWJsZVxuLSAqIHRvIG9ic2VydmUgYSByZXF1ZXN0IHRvIGZsdXNoIDQwOTUgUEZOcyBzdGFydGluZyBmcm9tIDB4ZmZmZmZmZmZmZmZmZjAwMFxuLSAqIHdoaWNoIHdpbGwgbG9vayBpZGVudGljYWwuIEtWTSdzIGFjdGlvbiB0byAnZmx1c2ggZXZlcnl0aGluZycgaW5zdGVhZCBvZlxuLSAqIGZsdXNoaW5nIHRoZXNlIHBhcnRpY3VsYXIgYWRkcmVzc2VzIGlzLCBob3dldmVyLCBmdWxseSBsZWdpdGltYXRlIGFzXG4tICogZmx1c2hpbmcgbW9yZSB0aGFuIHJlcXVlc3RlZCBpcyBhbHdheXMgT0suXG4tICovXG4tI2RlZmluZSBLVk1fSFZfVExCX0ZMVVNIQUxMX0VOVFJZICAoKHU2NCktMSlcbi1cbi1lbnVtIGh2X3RsYl9mbHVzaF9maWZvcyB7XG4tXHRIVl9MMV9UTEJfRkxVU0hfRklGTyxcbi1cdEhWX0wyX1RMQl9GTFVTSF9GSUZPLFxuLVx0SFZfTlJfVExCX0ZMVVNIX0ZJRk9TLFxuLX07XG4tXG4tc3RydWN0IGt2bV92Y3B1X2h2X3RsYl9mbHVzaF9maWZvIHtcbi1cdHNwaW5sb2NrX3Qgd3JpdGVfbG9jaztcbi1cdERFQ0xBUkVfS0ZJRk8oZW50cmllcywgdTY0LCBLVk1fSFZfVExCX0ZMVVNIX0ZJRk9fU0laRSk7XG4tfTtcbi1cbi0vKiBIeXBlci1WIHBlciB2Y3B1IGVtdWxhdGlvbiBjb250ZXh0ICovXG4tc3RydWN0IGt2bV92Y3B1X2h2IHtcbi1cdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbi1cdHUzMiB2cF9pbmRleDtcbi1cdHU2NCBodl92YXBpYztcbi1cdHM2NCBydW50aW1lX29mZnNldDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyBzeW5pYztcbi1cdHN0cnVjdCBrdm1faHlwZXJ2X2V4aXQgZXhpdDtcbi1cdHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgc3RpbWVyW0hWX1NZTklDX1NUSU1FUl9DT1VOVF07XG4tXHRERUNMQVJFX0JJVE1BUChzdGltZXJfcGVuZGluZ19iaXRtYXAsIEhWX1NZTklDX1NUSU1FUl9DT1VOVCk7XG4tXHRib29sIGVuZm9yY2VfY3B1aWQ7XG4tXHRzdHJ1Y3Qge1xuLVx0XHR1MzIgZmVhdHVyZXNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRUFYICovXG4tXHRcdHUzMiBmZWF0dXJlc19lYng7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQlggKi9cbi1cdFx0dTMyIGZlYXR1cmVzX2VkeDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVEWCAqL1xuLVx0XHR1MzIgZW5saWdodGVubWVudHNfZWF4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQVggKi9cbi1cdFx0dTMyIGVubGlnaHRlbm1lbnRzX2VieDsgLyogSFlQRVJWX0NQVUlEX0VOTElHSFRNRU5UX0lORk8uRUJYICovXG4tXHRcdHUzMiBzeW5kYmdfY2FwX2VheDsgLyogSFlQRVJWX0NQVUlEX1NZTkRCR19QTEFURk9STV9DQVBBQklMSVRJRVMuRUFYICovXG4tXHRcdHUzMiBuZXN0ZWRfZWF4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVBWCAqL1xuLVx0XHR1MzIgbmVzdGVkX2VieDsgLyogSFlQRVJWX0NQVUlEX05FU1RFRF9GRUFUVVJFUy5FQlggKi9cbi1cdH0gY3B1aWRfY2FjaGU7XG4tXG4tXHRzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8gdGxiX2ZsdXNoX2ZpZm9bSFZfTlJfVExCX0ZMVVNIX0ZJRk9TXTtcbi1cbi1cdC8qXG4tXHQgKiBQcmVhbGxvY2F0ZWQgYnVmZmVycyBmb3IgaGFuZGxpbmcgaHlwZXJjYWxscyB0aGF0IHBhc3Mgc3BhcnNlIHZDUFVcbi1cdCAqIHNldHMgKGZvciBoaWdoIHZDUFUgY291bnRzLCB0aGV5J3JlIHRvbyBsYXJnZSB0byBjb21mb3J0YWJseSBmaXQgb25cbi1cdCAqIHRoZSBzdGFjaykuXG4tXHQgKi9cbi1cdHU2NCBzcGFyc2VfYmFua3NbSFZfTUFYX1NQQVJTRV9WQ1BVX0JBTktTXTtcbi1cdERFQ0xBUkVfQklUTUFQKHZjcHVfbWFzaywgS1ZNX01BWF9WQ1BVUyk7XG4tXG4tXHRzdHJ1Y3QgaHZfdnBfYXNzaXN0X3BhZ2UgdnBfYXNzaXN0X3BhZ2U7XG4tXG4tXHRzdHJ1Y3Qge1xuLVx0XHR1NjQgcGFfcGFnZV9ncGE7XG4tXHRcdHU2NCB2bV9pZDtcbi1cdFx0dTMyIHZwX2lkO1xuLVx0fSBuZXN0ZWQ7XG4tfTtcbi1cbiBzdHJ1Y3Qga3ZtX2h5cGVydmlzb3JfY3B1aWQge1xuIFx0dTMyIGJhc2U7XG4gXHR1MzIgbGltaXQ7XG5AQCAtODI0LDYgKzY3OCw4IEBAIHN0cnVjdCBrdm1fdmNwdV94ZW4ge1xuIH07XG4gI2VuZGlmXG4gXG4rc3RydWN0IGt2bV92Y3B1X2h2O1xuK1xuIHN0cnVjdCBrdm1fcXVldWVkX2V4Y2VwdGlvbiB7XG4gXHRib29sIHBlbmRpbmc7XG4gXHRib29sIGluamVjdGVkO1xuQEAgLTExODEsMzkgKzEwMzcsNiBAQCBzdHJ1Y3Qga3ZtX2FyY2hfbWVtb3J5X3Nsb3Qge1xuIFx0dW5zaWduZWQgc2hvcnQgKmdmbl93cml0ZV90cmFjaztcbiB9O1xuIFxuLS8qXG4tICogVHJhY2sgdGhlIG1vZGUgb2YgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCwgYXMgdGhlIHJ1bGVzIGZvciBkZWNvZGluZyB0aGVcbi0gKiBkZXN0aW5hdGlvbiB2YXJ5IHBlciBtb2RlLiAgRW5hYmxpbmcgdGhlIG9wdGltaXplZCBsb2dpY2FsIG1hcCByZXF1aXJlcyBhbGxcbi0gKiBzb2Z0d2FyZS1lbmFibGVkIGxvY2FsIEFQSXMgdG8gYmUgaW4gdGhlIHNhbWUgbW9kZSwgZWFjaCBhZGRyZXNzYWJsZSBBUElDIHRvXG4tICogYmUgbWFwcGVkIHRvIG9ubHkgb25lIE1EQSwgYW5kIGVhY2ggTURBIHRvIG1hcCB0byBhdCBtb3N0IG9uZSBBUElDLlxuLSAqL1xuLWVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIHtcbi1cdC8qIEFsbCBsb2NhbCBBUElDcyBhcmUgc29mdHdhcmUgZGlzYWJsZWQuICovXG4tXHRLVk1fQVBJQ19NT0RFX1NXX0RJU0FCTEVELFxuLVx0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geEFQSUMgY2x1c3RlciBhZGRyZXNzaW5nIG1vZGUuICovXG4tXHRLVk1fQVBJQ19NT0RFX1hBUElDX0NMVVNURVIsXG4tXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBmbGF0IGFkZHJlc3NpbmcgbW9kZS4gKi9cbi1cdEtWTV9BUElDX01PREVfWEFQSUNfRkxBVCxcbi1cdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHgyQVBJQyBtb2RlLiAqL1xuLVx0S1ZNX0FQSUNfTU9ERV9YMkFQSUMsXG4tXHQvKlxuLVx0ICogT3B0aW1pemVkIG1hcCBkaXNhYmxlZCwgZS5nLiBub3QgYWxsIGxvY2FsIEFQSUNzIGluIHRoZSBzYW1lIGxvZ2ljYWxcbi1cdCAqIG1vZGUsIHNhbWUgbG9naWNhbCBJRCBhc3NpZ25lZCB0byBtdWx0aXBsZSBBUElDcywgZXRjLlxuLVx0ICovXG4tXHRLVk1fQVBJQ19NT0RFX01BUF9ESVNBQkxFRCxcbi19O1xuLVxuLXN0cnVjdCBrdm1fYXBpY19tYXAge1xuLVx0c3RydWN0IHJjdV9oZWFkIHJjdTtcbi1cdGVudW0ga3ZtX2FwaWNfbG9naWNhbF9tb2RlIGxvZ2ljYWxfbW9kZTtcbi1cdHUzMiBtYXhfYXBpY19pZDtcbi1cdHVuaW9uIHtcbi1cdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfZmxhdF9tYXBbOF07XG4tXHRcdHN0cnVjdCBrdm1fbGFwaWMgKnhhcGljX2NsdXN0ZXJfbWFwWzE2XVs0XTtcbi1cdH07XG4tXHRzdHJ1Y3Qga3ZtX2xhcGljICpwaHlzX21hcFtdO1xuLX07XG4tXG4gLyogSHlwZXItViBzeW50aGV0aWMgZGVidWdnZXIgKFN5bkRiZykqL1xuIHN0cnVjdCBrdm1faHZfc3luZGJnIHtcbiBcdHN0cnVjdCB7XG5AQCAtMjAxOSwxMyArMTg0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21zcih1bnNpZ25lZCBsb25nIG1zcilcbiB9XG4gI2VuZGlmXG4gXG4tZW51bSB7XG4tXHRUQVNLX1NXSVRDSF9DQUxMID0gMCxcbi1cdFRBU0tfU1dJVENIX0lSRVQgPSAxLFxuLVx0VEFTS19TV0lUQ0hfSk1QID0gMixcbi1cdFRBU0tfU1dJVENIX0dBVEUgPSAzLFxuLX07XG4tXG4gI2RlZmluZSBIRl9HVUVTVF9NQVNLXHRcdCgxIFx1MDAzY1x1MDAzYyAwKSAvKiBWQ1BVIGlzIGluIGd1ZXN0LW1vZGUgKi9cbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9TTU1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmggYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmhcbmluZGV4IDFjOGY3YWFhYjA2M2QwLi42MjU4ZWQyNzdhN2I0NyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuaFxuKysrIGIvYXJjaC94ODYva3ZtL2h5cGVydi5oXG5AQCAtMjcsNiArMjcsOTYgQEBcbiBcbiAjaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcbiBcbitcbisvKiBIeXBlci1WIFN5bklDIHRpbWVyICovXG4rc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciB7XG4rXHRzdHJ1Y3QgaHJ0aW1lciB0aW1lcjtcbitcdGludCBpbmRleDtcbitcdHVuaW9uIGh2X3N0aW1lcl9jb25maWcgY29uZmlnO1xuK1x0dTY0IGNvdW50O1xuK1x0dTY0IGV4cF90aW1lO1xuK1x0c3RydWN0IGh2X21lc3NhZ2UgbXNnO1xuK1x0Ym9vbCBtc2dfcGVuZGluZztcbit9O1xuK1xuKy8qIEh5cGVyLVYgc3ludGhldGljIGludGVycnVwdCBjb250cm9sbGVyIChTeW5JQykqL1xuK3N0cnVjdCBrdm1fdmNwdV9odl9zeW5pYyB7XG4rXHR1NjQgdmVyc2lvbjtcbitcdHU2NCBjb250cm9sO1xuK1x0dTY0IG1zZ19wYWdlO1xuK1x0dTY0IGV2dF9wYWdlO1xuK1x0YXRvbWljNjRfdCBzaW50W0hWX1NZTklDX1NJTlRfQ09VTlRdO1xuK1x0YXRvbWljX3Qgc2ludF90b19nc2lbSFZfU1lOSUNfU0lOVF9DT1VOVF07XG4rXHRERUNMQVJFX0JJVE1BUChhdXRvX2VvaV9iaXRtYXAsIDI1Nik7XG4rXHRERUNMQVJFX0JJVE1BUCh2ZWNfYml0bWFwLCAyNTYpO1xuK1x0Ym9vbCBhY3RpdmU7XG4rXHRib29sIGRvbnRfemVyb19zeW5pY19wYWdlcztcbit9O1xuK1xuKy8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIG9uIHRoZSBUTEIgZmx1c2ggZmlmby4gKi9cbisjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFICgxNilcbisvKlxuKyAqIE5vdGU6IHRoZSBmb2xsb3dpbmcgJ21hZ2ljJyBlbnRyeSBpcyBtYWRlIHVwIGJ5IEtWTSB0byBhdm9pZCBwdXR0aW5nXG4rICogYW55dGhpbmcgYmVzaWRlcyBHVkEgb24gdGhlIFRMQiBmbHVzaCBmaWZvLiBJdCBpcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlXG4rICogdG8gb2JzZXJ2ZSBhIHJlcXVlc3QgdG8gZmx1c2ggNDA5NSBQRk5zIHN0YXJ0aW5nIGZyb20gMHhmZmZmZmZmZmZmZmZmMDAwXG4rICogd2hpY2ggd2lsbCBsb29rIGlkZW50aWNhbC4gS1ZNJ3MgYWN0aW9uIHRvICdmbHVzaCBldmVyeXRoaW5nJyBpbnN0ZWFkIG9mXG4rICogZmx1c2hpbmcgdGhlc2UgcGFydGljdWxhciBhZGRyZXNzZXMgaXMsIGhvd2V2ZXIsIGZ1bGx5IGxlZ2l0aW1hdGUgYXNcbisgKiBmbHVzaGluZyBtb3JlIHRoYW4gcmVxdWVzdGVkIGlzIGFsd2F5cyBPSy5cbisgKi9cbisjZGVmaW5lIEtWTV9IVl9UTEJfRkxVU0hBTExfRU5UUlkgICgodTY0KS0xKVxuK1xuK2VudW0gaHZfdGxiX2ZsdXNoX2ZpZm9zIHtcbitcdEhWX0wxX1RMQl9GTFVTSF9GSUZPLFxuK1x0SFZfTDJfVExCX0ZMVVNIX0ZJRk8sXG4rXHRIVl9OUl9UTEJfRkxVU0hfRklGT1MsXG4rfTtcbitcbitzdHJ1Y3Qga3ZtX3ZjcHVfaHZfdGxiX2ZsdXNoX2ZpZm8ge1xuK1x0c3BpbmxvY2tfdCB3cml0ZV9sb2NrO1xuK1x0REVDTEFSRV9LRklGTyhlbnRyaWVzLCB1NjQsIEtWTV9IVl9UTEJfRkxVU0hfRklGT19TSVpFKTtcbit9O1xuK1xuKy8qIEh5cGVyLVYgcGVyIHZjcHUgZW11bGF0aW9uIGNvbnRleHQgKi9cbitzdHJ1Y3Qga3ZtX3ZjcHVfaHYge1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0dTMyIHZwX2luZGV4O1xuK1x0dTY0IGh2X3ZhcGljO1xuK1x0czY0IHJ1bnRpbWVfb2Zmc2V0O1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2X3N5bmljIHN5bmljO1xuK1x0c3RydWN0IGt2bV9oeXBlcnZfZXhpdCBleGl0O1xuK1x0c3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciBzdGltZXJbSFZfU1lOSUNfU1RJTUVSX0NPVU5UXTtcbitcdERFQ0xBUkVfQklUTUFQKHN0aW1lcl9wZW5kaW5nX2JpdG1hcCwgSFZfU1lOSUNfU1RJTUVSX0NPVU5UKTtcbitcdGJvb2wgZW5mb3JjZV9jcHVpZDtcbitcdHN0cnVjdCB7XG4rXHRcdHUzMiBmZWF0dXJlc19lYXg7IC8qIEhZUEVSVl9DUFVJRF9GRUFUVVJFUy5FQVggKi9cbitcdFx0dTMyIGZlYXR1cmVzX2VieDsgLyogSFlQRVJWX0NQVUlEX0ZFQVRVUkVTLkVCWCAqL1xuK1x0XHR1MzIgZmVhdHVyZXNfZWR4OyAvKiBIWVBFUlZfQ1BVSURfRkVBVFVSRVMuRURYICovXG4rXHRcdHUzMiBlbmxpZ2h0ZW5tZW50c19lYXg7IC8qIEhZUEVSVl9DUFVJRF9FTkxJR0hUTUVOVF9JTkZPLkVBWCAqL1xuK1x0XHR1MzIgZW5saWdodGVubWVudHNfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfRU5MSUdIVE1FTlRfSU5GTy5FQlggKi9cbitcdFx0dTMyIHN5bmRiZ19jYXBfZWF4OyAvKiBIWVBFUlZfQ1BVSURfU1lOREJHX1BMQVRGT1JNX0NBUEFCSUxJVElFUy5FQVggKi9cbitcdFx0dTMyIG5lc3RlZF9lYXg7IC8qIEhZUEVSVl9DUFVJRF9ORVNURURfRkVBVFVSRVMuRUFYICovXG4rXHRcdHUzMiBuZXN0ZWRfZWJ4OyAvKiBIWVBFUlZfQ1BVSURfTkVTVEVEX0ZFQVRVUkVTLkVCWCAqL1xuK1x0fSBjcHVpZF9jYWNoZTtcbitcbitcdHN0cnVjdCBrdm1fdmNwdV9odl90bGJfZmx1c2hfZmlmbyB0bGJfZmx1c2hfZmlmb1tIVl9OUl9UTEJfRkxVU0hfRklGT1NdO1xuK1xuK1x0LypcbitcdCAqIFByZWFsbG9jYXRlZCBidWZmZXJzIGZvciBoYW5kbGluZyBoeXBlcmNhbGxzIHRoYXQgcGFzcyBzcGFyc2UgdkNQVVxuK1x0ICogc2V0cyAoZm9yIGhpZ2ggdkNQVSBjb3VudHMsIHRoZXkncmUgdG9vIGxhcmdlIHRvIGNvbWZvcnRhYmx5IGZpdCBvblxuK1x0ICogdGhlIHN0YWNrKS5cbitcdCAqL1xuK1x0dTY0IHNwYXJzZV9iYW5rc1tIVl9NQVhfU1BBUlNFX1ZDUFVfQkFOS1NdO1xuK1x0REVDTEFSRV9CSVRNQVAodmNwdV9tYXNrLCBLVk1fTUFYX1ZDUFVTKTtcbitcbitcdHN0cnVjdCBodl92cF9hc3Npc3RfcGFnZSB2cF9hc3Npc3RfcGFnZTtcbitcbitcdHN0cnVjdCB7XG4rXHRcdHU2NCBwYV9wYWdlX2dwYTtcbitcdFx0dTY0IHZtX2lkO1xuK1x0XHR1MzIgdnBfaWQ7XG4rXHR9IG5lc3RlZDtcbit9O1xuK1xuIC8qIFwiSHYjMVwiIHNpZ25hdHVyZSAqL1xuICNkZWZpbmUgSFlQRVJWX0NQVUlEX1NJR05BVFVSRV9FQVggMHgzMTIzNzY0OFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDZmMzBiYmRkZGI1YWE5Li4wMzU0ZGIwZjJjMGYwMyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTc1LDYgKzc1LDE2IEBAIG1vZHVsZV9wYXJhbShsYXBpY190aW1lcl9hZHZhbmNlLCBib29sLCAwNDQ0KTtcbiAvKiBzdGVwLWJ5LXN0ZXAgYXBwcm94aW1hdGlvbiB0byBtaXRpZ2F0ZSBmbHVjdHVhdGlvbiAqL1xuICNkZWZpbmUgTEFQSUNfVElNRVJfQURWQU5DRV9BREpVU1RfU1RFUCA4XG4gXG4rLyogYXBpYyBhdHRlbnRpb24gYml0cyAqL1xuKyNkZWZpbmUgS1ZNX0FQSUNfQ0hFQ0tfVkFQSUNcdDBcbisvKlxuKyAqIFRoZSBmb2xsb3dpbmcgYml0IGlzIHNldCB3aXRoIFBWLUVPSSwgdW5zZXQgb24gRU9JLlxuKyAqIFdlIGRldGVjdCBQVi1FT0kgY2hhbmdlcyBieSBndWVzdCBieSBjb21wYXJpbmdcbisgKiB0aGlzIGJpdCB3aXRoIFBWLUVPSSBpbiBndWVzdCBtZW1vcnkuXG4rICogU2VlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBhcGljX3VwZGF0ZV9wdl9lb2kuXG4rICovXG4rI2RlZmluZSBLVk1fQVBJQ19QVl9FT0lfUEVORElOR1x0MVxuK1xuIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgdmVjdG9yX2hhc2hpbmdfZW5hYmxlZCA9IHRydWU7XG4gbW9kdWxlX3BhcmFtX25hbWVkKHZlY3Rvcl9oYXNoaW5nLCB2ZWN0b3JfaGFzaGluZ19lbmFibGVkLCBib29sLCAwNDQ0KTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaCBiL2FyY2gveDg2L2t2bS9sYXBpYy5oXG5pbmRleCA1OGRiYjk0Zjk4MGRhMi4uYmQxMDk4Yzg5ZDk5ODAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuaFxuKysrIGIvYXJjaC94ODYva3ZtL2xhcGljLmhcbkBAIC0zMiw2ICszMiwzOSBAQCBlbnVtIGxhcGljX21vZGUge1xuIFx0TEFQSUNfTU9ERV9YMkFQSUMgPSBNU1JfSUEzMl9BUElDQkFTRV9FTkFCTEUgfCBYMkFQSUNfRU5BQkxFLFxuIH07XG4gXG4rLypcbisgKiBUcmFjayB0aGUgbW9kZSBvZiB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwLCBhcyB0aGUgcnVsZXMgZm9yIGRlY29kaW5nIHRoZVxuKyAqIGRlc3RpbmF0aW9uIHZhcnkgcGVyIG1vZGUuICBFbmFibGluZyB0aGUgb3B0aW1pemVkIGxvZ2ljYWwgbWFwIHJlcXVpcmVzIGFsbFxuKyAqIHNvZnR3YXJlLWVuYWJsZWQgbG9jYWwgQVBJcyB0byBiZSBpbiB0aGUgc2FtZSBtb2RlLCBlYWNoIGFkZHJlc3NhYmxlIEFQSUMgdG9cbisgKiBiZSBtYXBwZWQgdG8gb25seSBvbmUgTURBLCBhbmQgZWFjaCBNREEgdG8gbWFwIHRvIGF0IG1vc3Qgb25lIEFQSUMuXG4rICovXG4rZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUge1xuK1x0LyogQWxsIGxvY2FsIEFQSUNzIGFyZSBzb2Z0d2FyZSBkaXNhYmxlZC4gKi9cbitcdEtWTV9BUElDX01PREVfU1dfRElTQUJMRUQsXG4rXHQvKiBBbGwgc29mdHdhcmUgZW5hYmxlZCBsb2NhbCBBUElDcyBpbiB4QVBJQyBjbHVzdGVyIGFkZHJlc3NpbmcgbW9kZS4gKi9cbitcdEtWTV9BUElDX01PREVfWEFQSUNfQ0xVU1RFUixcbitcdC8qIEFsbCBzb2Z0d2FyZSBlbmFibGVkIGxvY2FsIEFQSUNzIGluIHhBUElDIGZsYXQgYWRkcmVzc2luZyBtb2RlLiAqL1xuK1x0S1ZNX0FQSUNfTU9ERV9YQVBJQ19GTEFULFxuK1x0LyogQWxsIHNvZnR3YXJlIGVuYWJsZWQgbG9jYWwgQVBJQ3MgaW4geDJBUElDIG1vZGUuICovXG4rXHRLVk1fQVBJQ19NT0RFX1gyQVBJQyxcbitcdC8qXG4rXHQgKiBPcHRpbWl6ZWQgbWFwIGRpc2FibGVkLCBlLmcuIG5vdCBhbGwgbG9jYWwgQVBJQ3MgaW4gdGhlIHNhbWUgbG9naWNhbFxuK1x0ICogbW9kZSwgc2FtZSBsb2dpY2FsIElEIGFzc2lnbmVkIHRvIG11bHRpcGxlIEFQSUNzLCBldGMuXG4rXHQgKi9cbitcdEtWTV9BUElDX01PREVfTUFQX0RJU0FCTEVELFxuK307XG4rXG4rc3RydWN0IGt2bV9hcGljX21hcCB7XG4rXHRzdHJ1Y3QgcmN1X2hlYWQgcmN1O1xuK1x0ZW51bSBrdm1fYXBpY19sb2dpY2FsX21vZGUgbG9naWNhbF9tb2RlO1xuK1x0dTMyIG1heF9hcGljX2lkO1xuK1x0dW5pb24ge1xuK1x0XHRzdHJ1Y3Qga3ZtX2xhcGljICp4YXBpY19mbGF0X21hcFs4XTtcbitcdFx0c3RydWN0IGt2bV9sYXBpYyAqeGFwaWNfY2x1c3Rlcl9tYXBbMTZdWzRdO1xuK1x0fTtcbitcdHN0cnVjdCBrdm1fbGFwaWMgKnBoeXNfbWFwW107XG4rfTtcbitcbiBlbnVtIGxhcGljX2x2dF9lbnRyeSB7XG4gXHRMVlRfVElNRVIsXG4gXHRMVlRfVEhFUk1BTF9NT05JVE9SLFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9tbXUuaCBiL2FyY2gveDg2L2t2bS9tbXUuaFxuaW5kZXggYzlmNjI4Yjk3ZGFlYjkuLjg1YmM1MDNkZTFiNmZkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21tdS5oXG4rKysgYi9hcmNoL3g4Ni9rdm0vbW11LmhcbkBAIC02LDE0ICs2LDE0IEBAXG4gI2luY2x1ZGUgXCJyZWdzLmhcIlxuICNpbmNsdWRlIFwiY3B1aWQuaFwiXG4gXG4tZXh0ZXJuIGJvb2wgdGRwX2VuYWJsZWQ7XG4rZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSB0ZHBfZW5hYmxlZDtcbiAjaWZkZWYgQ09ORklHX1g4Nl82NFxuLWV4dGVybiBib29sIHRkcF9tbXVfZW5hYmxlZDtcbitleHRlcm4gYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9tbXVfZW5hYmxlZDtcbiAjZWxzZVxuICNkZWZpbmUgdGRwX21tdV9lbmFibGVkIGZhbHNlXG4gI2VuZGlmXG4gZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlbmFibGVfbW1pb19jYWNoaW5nO1xuLWV4dGVybiBib29sIGVhZ2VyX3BhZ2Vfc3BsaXQ7XG4rZXh0ZXJuIGJvb2wgX19yZWFkX21vc3RseSBlYWdlcl9wYWdlX3NwbGl0O1xuIFxuICNkZWZpbmUgS1ZNX01FTVNMT1RfUEFHRVNfVE9fTU1VX1BBR0VTX1JBVElPIDUwXG4gI2RlZmluZSBLVk1fTUlOX0FMTE9DX01NVV9QQUdFUyA2NFVMXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbmluZGV4IDZjMTNkYTk0MmJmY2NjLi5hZjM4MjAxMzZmN2MyMSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbisrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmNcbkBAIC0xMDQsNyArMTA0LDcgQEAgbW9kdWxlX3BhcmFtX25hbWVkKGZsdXNoX29uX3JldXNlLCBmb3JjZV9mbHVzaF9hbmRfc3luY19vbl9yZXVzZSwgYm9vbCwgMDY0NCk7XG4gICogMi4gd2hpbGUgZG9pbmcgMS4gaXQgd2Fsa3MgZ3Vlc3QtcGh5c2ljYWwgdG8gaG9zdC1waHlzaWNhbFxuICAqIElmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gc2hhZG93IHBhZ2luZy5cbiAgKi9cbi1ib29sIHRkcF9lbmFibGVkID0gZmFsc2U7XG4rYm9vbCBfX3JlYWRfbW9zdGx5IHRkcF9lbmFibGVkID0gZmFsc2U7XG4gXG4gc3RhdGljIGJvb2wgX19yb19hZnRlcl9pbml0IHRkcF9tbXVfYWxsb3dlZDtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5oIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuaW5kZXggYjY5ODk4M2UzN2ZiNjEuLjljNWM2YjMzZTU4ZjU3IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL21zcnMuaFxuKysrIGIvYXJjaC94ODYva3ZtL21zcnMuaFxuQEAgLTEsNiArMSw2IEBAXG4gLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbi0jaWZuZGVmIEFSQ0hfWDg2X0tWTV9NU1JfSFxuLSNkZWZpbmUgQVJDSF9YODZfS1ZNX01TUl9IXG4rI2lmbmRlZiBBUkNIX1g4Nl9LVk1fTVNSU19IXG4rI2RlZmluZSBBUkNIX1g4Nl9LVk1fTVNSU19IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3VzZXItcmV0dXJuLW5vdGlmaWVyLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vcmVncy5oIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxuaW5kZXggOTRmZDg2NzI4ZmVkMjkuLjQ0N2YwZWMzZTYzZTRlIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3JlZ3MuaFxuKysrIGIvYXJjaC94ODYva3ZtL3JlZ3MuaFxuQEAgLTE2LDYgKzE2LDQ0IEBAXG4gXG4gc3RhdGljX2Fzc2VydCghKEtWTV9QT1NTSUJMRV9DUjBfR1VFU1RfQklUUyBcdTAwMjYgWDg2X0NSMF9QRFBUUl9CSVRTKSk7XG4gXG4rI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbitcdCh+KHVuc2lnbmVkIGxvbmcpKFg4Nl9DUjBfUEUgfCBYODZfQ1IwX01QIHwgWDg2X0NSMF9FTSB8IFg4Nl9DUjBfVFMgXFxcbitcdFx0XHQgIHwgWDg2X0NSMF9FVCB8IFg4Nl9DUjBfTkUgfCBYODZfQ1IwX1dQIHwgWDg2X0NSMF9BTSBcXFxuK1x0XHRcdCAgfCBYODZfQ1IwX05XIHwgWDg2X0NSMF9DRCB8IFg4Nl9DUjBfUEcpKVxuK1xuKyNkZWZpbmUgQ1I0X1JFU0VSVkVEX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4rXHQofih1bnNpZ25lZCBsb25nKShYODZfQ1I0X1ZNRSB8IFg4Nl9DUjRfUFZJIHwgWDg2X0NSNF9UU0QgfCBYODZfQ1I0X0RFXFxcbitcdFx0XHQgIHwgWDg2X0NSNF9QU0UgfCBYODZfQ1I0X1BBRSB8IFg4Nl9DUjRfTUNFICAgICBcXFxuK1x0XHRcdCAgfCBYODZfQ1I0X1BHRSB8IFg4Nl9DUjRfUENFIHwgWDg2X0NSNF9PU0ZYU1IgfCBYODZfQ1I0X1BDSURFIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfT1NYU0FWRSB8IFg4Nl9DUjRfU01FUCB8IFg4Nl9DUjRfRlNHU0JBU0UgXFxcbitcdFx0XHQgIHwgWDg2X0NSNF9PU1hNTUVYQ1BUIHwgWDg2X0NSNF9MQTU3IHwgWDg2X0NSNF9WTVhFIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfU01BUCB8IFg4Nl9DUjRfUEtFIHwgWDg2X0NSNF9VTUlQIFxcXG4rXHRcdFx0ICB8IFg4Nl9DUjRfTEFNX1NVUCB8IFg4Nl9DUjRfQ0VUKSlcbitcbisjZGVmaW5lIENSOF9SRVNFUlZFRF9CSVRTICh+KHVuc2lnbmVkIGxvbmcpWDg2X0NSOF9UUFIpXG4rXG4rI2RlZmluZSBEUjZfQlVTX0xPQ0sgICAoMSBcdTAwM2NcdTAwM2MgMTEpXG4rI2RlZmluZSBEUjZfQkRcdFx0KDEgXHUwMDNjXHUwMDNjIDEzKVxuKyNkZWZpbmUgRFI2X0JTXHRcdCgxIFx1MDAzY1x1MDAzYyAxNClcbisjZGVmaW5lIERSNl9CVFx0XHQoMSBcdTAwM2NcdTAwM2MgMTUpXG4rI2RlZmluZSBEUjZfUlRNXHRcdCgxIFx1MDAzY1x1MDAzYyAxNilcbisvKlxuKyAqIERSNl9BQ1RJVkVfTE9XIGNvbWJpbmVzIGZpeGVkLTEgYW5kIGFjdGl2ZS1sb3cgYml0cy5cbisgKiBXZSBjYW4gcmVnYXJkIGFsbCB0aGUgYml0cyBpbiBEUjZfRklYRURfMSBhcyBhY3RpdmVfbG93IGJpdHM7XG4rICogdGhleSB3aWxsIG5ldmVyIGJlIDAgZm9yIG5vdywgYnV0IHdoZW4gdGhleSBhcmUgZGVmaW5lZFxuKyAqIGluIHRoZSBmdXR1cmUgaXQgd2lsbCByZXF1aXJlIG5vIGNvZGUgY2hhbmdlLlxuKyAqXG4rICogRFI2X0FDVElWRV9MT1cgaXMgYWxzbyB1c2VkIGFzIHRoZSBpbml0L3Jlc2V0IHZhbHVlIGZvciBEUjYuXG4rICovXG4rI2RlZmluZSBEUjZfQUNUSVZFX0xPV1x0MHhmZmZmMGZmMFxuKyNkZWZpbmUgRFI2X1ZPTEFUSUxFXHQweDAwMDFlODBmXG4rI2RlZmluZSBEUjZfRklYRURfMVx0KERSNl9BQ1RJVkVfTE9XIFx1MDAyNiB+RFI2X1ZPTEFUSUxFKVxuK1xuKyNkZWZpbmUgRFI3X0JQX0VOX01BU0tcdDB4MDAwMDAwZmZcbisjZGVmaW5lIERSN19HRVx0XHQoMSBcdTAwM2NcdTAwM2MgOSlcbisjZGVmaW5lIERSN19HRFx0XHQoMSBcdTAwM2NcdTAwM2MgMTMpXG4rI2RlZmluZSBEUjdfVk9MQVRJTEVcdDB4ZmZmZjJiZmZcbitcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjAsIHVuc2lnbmVkIGxvbmcgY3IwKTtcbiB2b2lkIGt2bV9wb3N0X3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIG9sZF9jcjQsIHVuc2lnbmVkIGxvbmcgY3I0KTtcbiBpbnQga3ZtX3NldF9jcjAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyMCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3Rzcy5oIGIvYXJjaC94ODYva3ZtL3Rzcy5oXG5pbmRleCAxMTdiZjhiZWMwN2RjYS4uNTVjZWQ4OTc1ODQwNjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vdHNzLmhcbisrKyBiL2FyY2gveDg2L2t2bS90c3MuaFxuQEAgLTIsNiArMiwxMCBAQFxuICNpZm5kZWYgX19UU1NfU0VHTUVOVF9IXG4gI2RlZmluZSBfX1RTU19TRUdNRU5UX0hcbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9idWlsZF9idWcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3N0ZGRlZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuK1xuIHN0cnVjdCB0c3Nfc2VnbWVudF8zMiB7XG4gXHR1MzIgcHJldl90YXNrX2xpbms7XG4gXHR1MzIgZXNwMDtcbkBAIC02NCw0ICs2OCw3IEBAIHN0cnVjdCB0c3Nfc2VnbWVudF8xNiB7XG4gI2RlZmluZSBSTU9ERV9UU1NfU0laRVx0XHRcdFx0XHRcdFx0XFxcbiBcdChUU1NfQkFTRV9TSVpFICsgVFNTX1JFRElSRUNUSU9OX1NJWkUgKyBUU1NfSU9QQl9TSVpFICsgMSlcbiBcbitzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCB0c3Nfc2VnbWVudF8zMiwgaW9fbWFwKSA9PSBUU1NfSU9QQl9CQVNFX09GRlNFVCk7XG4rc3RhdGljX2Fzc2VydChzaXplb2Yoc3RydWN0IHRzc19zZWdtZW50XzMyKSA9PSBUU1NfQkFTRV9TSVpFKTtcbitcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDA2MjZlODM1ZTllYjc3Li41ZWU2ZDBjMzMwMDk1MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xuKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5AQCAtMTE1LDYgKzExNSwxNSBAQCBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2hvc3QpO1xuIFxuICNkZWZpbmUgS1ZNX0NBUF9QTVVfVkFMSURfTUFTSyBLVk1fUE1VX0NBUF9ESVNBQkxFXG4gXG4rI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSURfTUFTSyBcXFxuK1x0KEtWTV9HVUVTVERCR19FTkFCTEUgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX1NJTkdMRVNURVAgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX1VTRV9IV19CUCB8IFxcXG4rXHRLVk1fR1VFU1REQkdfVVNFX1NXX0JQIHwgXFxcbitcdEtWTV9HVUVTVERCR19JTkpFQ1RfQlAgfCBcXFxuK1x0S1ZNX0dVRVNUREJHX0lOSkVDVF9EQiB8IFxcXG4rXHRLVk1fR1VFU1REQkdfQkxPQ0tJUlEpXG4rXG4gI2RlZmluZSBLVk1fWDJBUElDX0FQSV9WQUxJRF9GTEFHUyAoS1ZNX1gyQVBJQ19BUElfVVNFXzMyQklUX0lEU1x0XHR8IFxcXG4gXHRcdFx0XHQgICAgS1ZNX1gyQVBJQ19BUElfRElTQUJMRV9CUk9BRENBU1RfUVVJUktcdHwgXFxcbiBcdFx0XHRcdCAgICBLVk1fWDJBUElDX0VOQUJMRV9TVVBQUkVTU19FT0lfQlJPQURDQVNUXHR8IFxcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5oIGIvYXJjaC94ODYva3ZtL3g4Ni5oXG5pbmRleCA4ZWNlNDY4MDg3YThlZS4uNDk0ZDk3ZTlhOWM5ZjMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmhcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuaFxuQEAgLTQ4Miw2ICs0ODIsMTIgQEAgaW50IGt2bV9lbXVsYXRlX3diaW52ZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuIHZvaWQga3ZtX3ZjcHVfZGVsaXZlcl9zaXBpX3ZlY3RvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3Rvcik7XG4gXG4rZW51bSBrdm1fdGFza19zd2l0Y2hfcmVhc29uIHtcbitcdFRBU0tfU1dJVENIX0NBTEwgPSAwLFxuK1x0VEFTS19TV0lUQ0hfSVJFVCA9IDEsXG4rXHRUQVNLX1NXSVRDSF9KTVAgPSAyLFxuK1x0VEFTS19TV0lUQ0hfR0FURSA9IDMsXG4rfTtcbiBpbnQga3ZtX3Rhc2tfc3dpdGNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTE2IHRzc19zZWxlY3RvciwgaW50IGlkdF9pbmRleCxcbiBcdFx0ICAgIGludCByZWFzb24sIGJvb2wgaGFzX2Vycm9yX2NvZGUsIHUzMiBlcnJvcl9jb2RlKTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDIyOjQyOjQ0LjgxOTQxODE0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMzc5Nzc5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIHg4NiBDb2RlIFJlZmFjdG9yaW5nIEFuYWx5c2lzKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhpcyBwYXRjaCBpcyBwcmltYXJpbHkgZm9jdXNlZCBvbiByZW9yZ2FuaXppbmcgYW5kIHRpZHlpbmcgdXAgdGhlIEtWTSB4ODYgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgbW92aW5nIG1hY3JvIGFuZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJvdW5kLiBTcGVjaWZpY2FsbHksIHRoaW5ncyBhcmUgYmVpbmcgbW92ZWQgb3V0IG9mIGBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oYCBhbmQgcmVkaXN0cmlidXRlZCBpbnRvIHZhcmlvdXMgb3RoZXIgeDg2IEtWTSBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcyBsaWtlIGBoeXBlcnYuaGAsIGBsYXBpYy5jYCwgYGxhcGljLmhgLCBgcmVncy5oYCwgYHg4Ni5jYCwgYW5kIGB4ODYuaGAuIE5vIGZ1bmRhbWVudGFsIGxvZ2ljIGNoYW5nZXMgdGhlcmUsIGp1c3QgcmUtYXJyYW5naW5nLlxuXG5UaGUgYWRkaXRpb24gb2YgYF9fcmVhZF9tb3N0bHlgIHRvIGB0ZHBfZW5hYmxlZGAsIGB0ZHBfbW11X2VuYWJsZWRgLCBhbmQgYGVhZ2VyX3BhZ2Vfc3BsaXRgIHdpdGhpbiBgYXJjaC94ODYva3ZtL21tdS5oYCBhbmQgYG1tdS5jYCBhbHNvIGNhdGNoZXMgbXkgZXllLiBUaGlzIGlzIGEgY2xhc3NpYyBvcHRpbWl6YXRpb247IGEgaGludCB0byB0aGUgY29tcGlsZXIgdG8gcGxhY2UgdGhlc2UgdmFyaWFibGVzIGluIGEgcmVhZC1tb3N0bHkgc2VjdGlvbiwgbGlrZWx5IGZvciBjYWNoZSBlZmZpY2llbmN5LiBUaGF0J3MgYSBsYXlvdXQgY2hhbmdlLCBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0ZXJtcyBvZiB0aGUgYWN0dWFsIGFsZ29yaXRobSBvciBiZWhhdmlvci5cblxuVGhlbiB0aGVyZSBhcmUgdGhvc2UgYHN0YXRpY19hc3NlcnRgcyBhZGRlZCBpbiBgYXJjaC94ODYva3ZtL3Rzcy5oYC4gVGhlc2UgYXJlIGNvbXBpbGUtdGltZSBjaGVja3MsIGVuc3VyaW5nIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGB0c3Nfc2VnbWVudF8zMmAgc3RydWN0dXJlIGhvbGQgdHJ1ZS4gQWdhaW4sIG5vIHJ1bnRpbWUgaW1wYWN0IG9uIGZ1bmN0aW9uYWxpdHkuXG5cbkkgaGFkIHRvIGRvdWJsZS1jaGVjayB0aGUgZW51bSBjaGFuZ2UuIFJlbmFtaW5nIHRoZSBlbnVtIGZvciB0YXNrIHN3aXRjaCByZWFzb25zIGZyb20gYW4gYW5vbnltb3VzIGVudW0gdG8gYGt2bV90YXNrX3N3aXRjaF9yZWFzb25gIGlzIGRlZmluaXRlbHkganVzdCBmb3IgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LlxuXG5BbmQgdGhhdCBpbmNsdWRlIGd1YXJkIGZpeCBpbiBgYXJjaC94ODYva3ZtL21zcnMuaGAsIGNoYW5naW5nIHRoZSBgI2lmbmRlZmAgbWFjcm8gbmFtZSwgdGhhdCdzIGp1c3QgZ29vZCBoeWdpZW5lLlxuXG5JIHRvb2sgYSBnb29kIGxvb2sgYXQgdGhlIGBfX3JlYWRfbW9zdGx5YCBjaGFuZ2VzIGluIG1vcmUgZGV0YWlsIGFuZCBjb25maXJtZWQgdGhhdCB0aGV5IGFyZSBqdXN0IHNlY3Rpb24gYXR0cmlidXRlcyBhbmQgdGhlcmVmb3JlIG5vdCByZWxhdGVkIHRvIGFueSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuU28sIGFmdGVyIGEgdGhvcm91Z2ggcmV2aWV3LCB0aGlzIHBhdGNoIGFwcGVhcnMgdG8gYmUgcHVyZWx5IGEgcmVmYWN0b3JpbmcgZWZmb3J0LiBJdCdzIGEgY2xlYW51cCwgaW1wcm92aW5nIGNvZGUgb3JnYW5pemF0aW9uIGFuZCBwb3RlbnRpYWxseSBwZXJmb3JtYW5jZSB3aXRoIGBfX3JlYWRfbW9zdGx5YC4gSSdtIGNvbmZpZGVudCB0aGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBhbHRlcmF0aW9ucyB0aGF0IHJlcXVpcmUgZnV6emluZy4gTXkgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMjgsIk91dHB1dFRva2VucyI6NzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQyMjo0Mjo1NC4xNTczOTg4MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW92ZXMgZGVmaW5pdGlvbnMsIG1hY3JvcywgYW5kIHN0cnVjdHMgYmV0d2VlbiBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcywgYWRkcyBfX3JlYWRfbW9zdGx5IGF0dHJpYnV0ZXMsIGFuZCBpbnRyb2R1Y2VzIGNvbXBpbGUtdGltZSBzdGF0aWNfYXNzZXJ0cy4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb3ZlcyBkZWZpbml0aW9ucywgbWFjcm9zLCBhbmQgc3RydWN0cyBiZXR3ZWVuIGhlYWRlciBhbmQgc291cmNlIGZpbGVzLCBhZGRzIF9fcmVhZF9tb3N0bHkgYXR0cmlidXRlcywgYW5kIGludHJvZHVjZXMgY29tcGlsZS10aW1lIHN0YXRpY19hc3NlcnRzLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowm89sv[1] Phase: Running StartedAt: 2026-06-25 22:43:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm89sv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-25 22:43:06 +0000 UTC FinishedAt: 2026-06-25 22:43:11 +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,}