From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH v5] drm/i915: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Tue, 9 Jul 2019 15:53:59 +0530 Message-ID: <444a9502-e9b8-1d01-e5c7-d31eb2b3485d@intel.com> References: <20190709020927.15121-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4F0D989E36 for ; Tue, 9 Jul 2019 10:24:03 +0000 (UTC) In-Reply-To: <20190709020927.15121-1-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C , intel-gfx , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwoKU2hhc2hhbmsKCk9uIDcvOS8yMDE5IDc6MzkgQU0sIFJhbWFsaW5nYW0gQyB3cm90 ZToKPiAgRnJvbSBHZW4xMiBvbndhcmRzLCBIRENQIEhXIGJsb2NrIGlzIGltcGxlbWVudGVkIHdp dGhpbiB0cmFuc2NvZGVycy4KPiBUaWxsIEdlbjExIEhEQ1AgSFcgYmxvY2sgd2FzIHBhcnQgb2Yg RERJLgo+Cj4gSGVuY2UgcmVxdWlyZWQgY2hhbmdlcyBpbiBIVyBwcm9ncmFtbWluZyBpcyBoYW5k bGVkIGhlcmUuCj4KPiB2MjoKPiAgICBfTU1JT19UUkFOUyBpcyB1c2VkIFtMdWNhcyBhbmQgRGFu aWVsXQo+ICAgIHBsYXRmb3JtIGNoZWNrIGlzIG1vdmVkIGludG8gdGhlIGNhbGxlciBbTHVjYXNd Cj4gdjM6Cj4gICAgcGxhdGZvcm0gY2hlY2sgaXMgbW92ZWQgaW50byBhIG1hY3JvIFtTaGFzaGFu a10KPiB2NDoKPiAgICBGZXcgb3B0aW1pemF0aW9ucyBpbiB0aGUgY29kaW5nIFtTaGFzaGFua10K PiB2NToKPiAgICBGaXhlZCBhbGlnbm1lbnQgaW4gbWFjcm8gZGVmaW5pdGlvbiBpbiBpOTE1X3Jl Zy5oIFtTaGFzaGFua10KPiAgICB1bnVzZWQgdmFyaWFibGVzICJyZWciIGlzIHJlbW92ZWQuCj4K PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4g LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYyB8IDEzMyAr KysrKysrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2hkbWkuYyB8ICAgOSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgICAgICAgfCAxMjAgKysrKysrKysrKysrKysrKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgIDggKysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgMjA3 IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9oZGNwLmMKPiBpbmRleCBiYzNhOTRkNDkxYzQuLjIzZGMzYWQ0YmE0YyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCj4gQEAgLTE3 LDYgKzE3LDcgQEAKPiAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAgICNpbmNsdWRlICJpbnRl bF9oZGNwLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKPiArI2luY2x1ZGUgImlu dGVsX2Nvbm5lY3Rvci5oIgo+ICAgCj4gICAjZGVmaW5lIEtFWV9MT0FEX1RSSUVTCTUKPiAgICNk ZWZpbmUgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMJNTAKPiBAQCAtMTA0LDI0ICsx MDUsMTcgQEAgYm9vbCBpbnRlbF9oZGNwMl9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiAgIAlyZXR1cm4gY2FwYWJsZTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5s aW5lIGJvb2wgaW50ZWxfaGRjcF9pbl91c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfaGRjcF9pbl91c2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBw b3J0IHBvcnQpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+IC0JZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0 b3ItPmVuY29kZXItPnBvcnQ7Cj4gLQl1MzIgcmVnOwo+IC0KPiAtCXJlZyA9IEk5MTVfUkVBRChQ T1JUX0hEQ1BfU1RBVFVTKHBvcnQpKTsKPiAtCXJldHVybiByZWcgJiBIRENQX1NUQVRVU19FTkM7 Cj4gKwlyZXR1cm4gSTkxNV9SRUFEKEhEQ1BfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkg JiBIRENQX1NUQVRVU19FTkM7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlubGluZSBib29sIGludGVs X2hkY3AyX2luX3VzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3N0YXRp YyBpbmxpbmUgYm9vbCBpbnRlbF9oZGNwMl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkJICAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcG9ydCBwb3J0KQo+ ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25u ZWN0b3ItPmJhc2UuZGV2KTsKPiAtCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVy LT5wb3J0Owo+IC0JdTMyIHJlZzsKPiAtCj4gLQlyZWcgPSBJOTE1X1JFQUQoSERDUDJfU1RBVFVT X0RESShwb3J0KSk7Cj4gLQlyZXR1cm4gcmVnICYgTElOS19FTkNSWVBUSU9OX1NUQVRVUzsKPiAr CXJldHVybiBJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSkgJgo+ ICsJICAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVM7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBp bnQgaW50ZWxfaGRjcF9wb2xsX2tzdl9maWZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0LAo+IEBAIC0yNTMsOSArMjQ3LDI4IEBAIHN0YXRpYyBpbnQgaW50ZWxfd3Jp dGVfc2hhX3RleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgc2hhX3Rl eHQpCj4gICB9Cj4gICAKPiAgIHN0YXRpYwo+IC11MzIgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJf Y3RsKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICt1MzIgaW50 ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiArCQkJCWVudW0gcGlwZSBwaXBlLCBlbnVtIHBvcnQgcG9ydCkKPiAgIHsKPiAtCWVudW0g cG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiArCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEyKSB7Cj4gKwkJc3dpdGNoIChwaXBlKSB7Cj4gKwkJY2FzZSBQSVBFX0E6 Cj4gKwkJCXJldHVybiBIRENQX1RSQU5TQV9SRVBfUFJFU0VOVCB8Cj4gKwkJCSAgICAgICBIRENQ X1RSQU5TQV9TSEExX00wOwo+ICsJCWNhc2UgUElQRV9COgo+ICsJCQlyZXR1cm4gSERDUF9UUkFO U0JfUkVQX1BSRVNFTlQgfAo+ICsJCQkgICAgICAgSERDUF9UUkFOU0JfU0hBMV9NMDsKPiArCQlj YXNlIFBJUEVfQzoKPiArCQkJcmV0dXJuIEhEQ1BfVFJBTlNDX1JFUF9QUkVTRU5UIHwKPiArCQkJ ICAgICAgIEhEQ1BfVFJBTlNDX1NIQTFfTTA7Cj4gKwkJLyogRklYTUU6IEFkZCBhIGNhc2UgZm9y IFBJUEVfRCAqLwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCURSTV9FUlJPUigiVW5rbm93biBwaXBlICVk XG4iLCBwaXBlKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJ fQo+ICsKPiAgIAlzd2l0Y2ggKHBvcnQpIHsKPiAgIAljYXNlIFBPUlRfQToKPiAgIAkJcmV0dXJu IEhEQ1BfRERJQV9SRVBfUFJFU0VOVCB8IEhEQ1BfRERJQV9TSEExX00wOwo+IEBAIC0yNjgsMTgg KzI4MSwyMSBAQCB1MzIgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICAgCWNhc2UgUE9SVF9FOgo+ICAgCQlyZXR1 cm4gSERDUF9ERElFX1JFUF9QUkVTRU5UIHwgSERDUF9ERElFX1NIQTFfTTA7Cj4gICAJZGVmYXVs dDoKPiArCQlEUk1fRVJST1IoIlVua25vd24gcG9ydCAlZFxuIiwgcG9ydCk7Cj4gICAJCWJyZWFr Owo+ICAgCX0KPiAtCURSTV9FUlJPUigiVW5rbm93biBwb3J0ICVkXG4iLCBwb3J0KTsKPiAgIAly ZXR1cm4gLUVJTlZBTDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljCj4gLWludCBpbnRlbF9oZGNwX3Zh bGlkYXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Cj4gK2ludCBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICAgCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0s Cj4gICAJCQkJdTggKmtzdl9maWZvLCB1OCBudW1fZG93bnN0cmVhbSwgdTggKmJzdGF0dXMpCj4g ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5f dG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXY7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNvbm5lY3Rvci0+aGRjcC5waXBlOwo+ICsJZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICAgCXUzMiB2cHJpbWUs IHNoYV90ZXh0LCBzaGFfbGVmdG92ZXJzLCByZXBfY3RsOwo+ICAgCWludCByZXQsIGksIGosIHNo YV9pZHg7Cj4gICAKPiBAQCAtMzA2LDcgKzMyMiw3IEBAIGludCBpbnRlbF9oZGNwX3ZhbGlkYXRl X3ZfcHJpbWUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gICAJ c2hhX2lkeCA9IDA7Cj4gICAJc2hhX3RleHQgPSAwOwo+ICAgCXNoYV9sZWZ0b3ZlcnMgPSAwOwo+ IC0JcmVwX2N0bCA9IGludGVsX2hkY3BfZ2V0X3JlcGVhdGVyX2N0bChpbnRlbF9kaWdfcG9ydCk7 Cj4gKwlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGRldl9wcml2LCBwaXBl LCBwb3J0KTsKPiAgIAlJOTE1X1dSSVRFKEhEQ1BfUkVQX0NUTCwgcmVwX2N0bCB8IEhEQ1BfU0hB MV9URVhUXzMyKTsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2Rvd25zdHJlYW07IGkrKykgewo+ ICAgCQl1bnNpZ25lZCBpbnQgc2hhX2VtcHR5Owo+IEBAIC01NDQsNyArNTYwLDcgQEAgaW50IGlu dGVsX2hkY3BfYXV0aF9kb3duc3RyZWFtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiAgIAkgKiBWIHByaW1lIGF0bGVhc3QgdHdpY2UuCj4gICAJICovCj4gICAJZm9yIChpID0g MDsgaSA8IHRyaWVzOyBpKyspIHsKPiAtCQlyZXQgPSBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJp bWUoaW50ZWxfZGlnX3BvcnQsIHNoaW0sCj4gKwkJcmV0ID0gaW50ZWxfaGRjcF92YWxpZGF0ZV92 X3ByaW1lKGNvbm5lY3Rvciwgc2hpbSwKPiAgIAkJCQkJCSAga3N2X2ZpZm8sIG51bV9kb3duc3Ry ZWFtLAo+ICAgCQkJCQkJICBic3RhdHVzKTsKPiAgIAkJaWYgKCFyZXQpCj4gQEAgLTU3Miw2ICs1 ODgsNyBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gICAJY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3AtPnNo aW07Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICsJZW51bSBwaXBl IHBpcGUgPSBjb25uZWN0b3ItPmhkY3AucGlwZTsKPiAgIAllbnVtIHBvcnQgcG9ydDsKPiAgIAl1 bnNpZ25lZCBsb25nIHIwX3ByaW1lX2dlbl9zdGFydDsKPiAgIAlpbnQgcmV0LCBpLCB0cmllcyA9 IDI7Cj4gQEAgLTYxMSwxOSArNjI4LDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAo+ICAgCS8qIEluaXRpYWxpemUg QW4gd2l0aCAyIHJhbmRvbSB2YWx1ZXMgYW5kIGFjcXVpcmUgaXQgKi8KPiAgIAlmb3IgKGkgPSAw OyBpIDwgMjsgaSsrKQo+IC0JCUk5MTVfV1JJVEUoUE9SVF9IRENQX0FOSU5JVChwb3J0KSwgZ2V0 X3JhbmRvbV91MzIoKSk7Cj4gLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9DT05GKHBvcnQpLCBIRENQ X0NPTkZfQ0FQVFVSRV9BTik7Cj4gKwkJSTkxNV9XUklURShIRENQX0FOSU5JVChkZXZfcHJpdiwg cGlwZSwgcG9ydCksIGdldF9yYW5kb21fdTMyKCkpOwo+ICsJSTkxNV9XUklURShIRENQX0NPTkYo ZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCBIRENQX0NPTkZfQ0FQVFVSRV9BTik7Cj4gICAKPiAgIAkv KiBXYWl0IGZvciBBbiB0byBiZSBhY3F1aXJlZCAqLwo+IC0JaWYgKGludGVsX3dhaXRfZm9yX3Jl Z2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLCBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpLAo+ICsJaWYg KGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ICsJCQkJICAgIEhE Q1BfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSwKPiAgIAkJCQkgICAgSERDUF9TVEFUVVNf QU5fUkVBRFksCj4gICAJCQkJICAgIEhEQ1BfU1RBVFVTX0FOX1JFQURZLCAxKSkgewo+ICAgCQlE Uk1fRVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBBblxuIik7Cj4gICAJCXJldHVybiAtRVRJ TUVET1VUOwo+ICAgCX0KPiAgIAo+IC0JYW4ucmVnWzBdID0gSTkxNV9SRUFEKFBPUlRfSERDUF9B TkxPKHBvcnQpKTsKPiAtCWFuLnJlZ1sxXSA9IEk5MTVfUkVBRChQT1JUX0hEQ1BfQU5ISShwb3J0 KSk7Cj4gKwlhbi5yZWdbMF0gPSBJOTE1X1JFQUQoSERDUF9BTkxPKGRldl9wcml2LCBwaXBlLCBw b3J0KSk7Cj4gKwlhbi5yZWdbMV0gPSBJOTE1X1JFQUQoSERDUF9BTkhJKGRldl9wcml2LCBwaXBl LCBwb3J0KSk7Cj4gICAJcmV0ID0gc2hpbS0+d3JpdGVfYW5fYWtzdihpbnRlbF9kaWdfcG9ydCwg YW4uc2hpbSk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiBAQCAtNjQxLDI0ICs2 NTksMjQgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICAgCQlyZXR1cm4gLUVQRVJNOwo+ICAgCX0KPiAgIAo+IC0JSTkxNV9X UklURShQT1JUX0hEQ1BfQktTVkxPKHBvcnQpLCBia3N2LnJlZ1swXSk7Cj4gLQlJOTE1X1dSSVRF KFBPUlRfSERDUF9CS1NWSEkocG9ydCksIGJrc3YucmVnWzFdKTsKPiArCUk5MTVfV1JJVEUoSERD UF9CS1NWTE8oZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCBia3N2LnJlZ1swXSk7Cj4gKwlJOTE1X1dS SVRFKEhEQ1BfQktTVkhJKGRldl9wcml2LCBwaXBlLCBwb3J0KSwgYmtzdi5yZWdbMV0pOwo+ICAg Cj4gICAJcmV0ID0gc2hpbS0+cmVwZWF0ZXJfcHJlc2VudChpbnRlbF9kaWdfcG9ydCwgJnJlcGVh dGVyX3ByZXNlbnQpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAJaWYgKHJl cGVhdGVyX3ByZXNlbnQpCj4gICAJCUk5MTVfV1JJVEUoSERDUF9SRVBfQ1RMLAo+IC0JCQkgICBp bnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoaW50ZWxfZGlnX3BvcnQpKTsKPiArCQkJICAgaW50 ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGRldl9wcml2LCBwaXBlLCBwb3J0KSk7Cj4gICAKPiAg IAlyZXQgPSBzaGltLT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4g ICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IC0JSTkxNV9XUklURShQT1JUX0hE Q1BfQ09ORihwb3J0KSwgSERDUF9DT05GX0FVVEhfQU5EX0VOQyk7Cj4gKwlJOTE1X1dSSVRFKEhE Q1BfQ09ORihkZXZfcHJpdiwgcGlwZSwgcG9ydCksIEhEQ1BfQ09ORl9BVVRIX0FORF9FTkMpOwo+ ICAgCj4gICAJLyogV2FpdCBmb3IgUjAgcmVhZHkgKi8KPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JF QUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJgo+ICsJaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChI RENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkpICYKPiAgIAkJICAgICAoSERDUF9TVEFU VVNfUjBfUkVBRFkgfCBIRENQX1NUQVRVU19FTkMpLCAxKSkgewo+ICAgCQlEUk1fRVJST1IoIlRp bWVkIG91dCB3YWl0aW5nIGZvciBSMCByZWFkeVxuIik7Cj4gICAJCXJldHVybiAtRVRJTUVET1VU Owo+IEBAIC02ODYsMjIgKzcwNCwyMyBAQCBzdGF0aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJCXJldCA9IHNoaW0tPnJlYWRfcmlf cHJpbWUoaW50ZWxfZGlnX3BvcnQsIHJpLnNoaW0pOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0 dXJuIHJldDsKPiAtCQlJOTE1X1dSSVRFKFBPUlRfSERDUF9SUFJJTUUocG9ydCksIHJpLnJlZyk7 Cj4gKwkJSTkxNV9XUklURShIRENQX1JQUklNRShkZXZfcHJpdiwgcGlwZSwgcG9ydCksIHJpLnJl Zyk7Cj4gICAKPiAgIAkJLyogV2FpdCBmb3IgUmkgcHJpbWUgbWF0Y2ggKi8KPiAtCQlpZiAoIXdh aXRfZm9yKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAmCj4gKwkJaWYgKCF3YWl0 X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCj4gICAJ CSAgICAoSERDUF9TVEFUVVNfUklfTUFUQ0ggfCBIRENQX1NUQVRVU19FTkMpLCAxKSkKPiAgIAkJ CWJyZWFrOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChpID09IHRyaWVzKSB7Cj4gICAJCURSTV9ERUJV R19LTVMoIlRpbWVkIG91dCB3YWl0aW5nIGZvciBSaSBwcmltZSBtYXRjaCAoJXgpXG4iLAo+IC0J CQkgICAgICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOwo+ICsJCQkgICAgICBJ OTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSk7Cj4gICAJCXJldHVy biAtRVRJTUVET1VUOwo+ICAgCX0KPiAgIAo+ICAgCS8qIFdhaXQgZm9yIGVuY3J5cHRpb24gY29u ZmlybWF0aW9uICovCj4gLQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51 bmNvcmUsIFBPUlRfSERDUF9TVEFUVVMocG9ydCksCj4gKwlpZiAoaW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXIoJmRldl9wcml2LT51bmNvcmUsCj4gKwkJCQkgICAgSERDUF9TVEFUVVMoZGV2X3ByaXYs IHBpcGUsIHBvcnQpLAo+ICAgCQkJCSAgICBIRENQX1NUQVRVU19FTkMsIEhEQ1BfU1RBVFVTX0VO QywKPiAgIAkJCQkgICAgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpKSB7Cj4gICAJ CURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGVuY3J5cHRpb25cbiIpOwo+IEBAIC03 MjYsMTUgKzc0NSwxNiBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25u ZWN0b3IpOwo+ICAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsK PiArCWVudW0gcGlwZSBwaXBlID0gaGRjcC0+cGlwZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJ RFJNX0RFQlVHX0tNUygiWyVzOiVkXSBIRENQIGlzIGJlaW5nIGRpc2FibGVkLi4uXG4iLAo+ICAg CQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQpOwo+ ICAgCj4gICAJaGRjcC0+aGRjcF9lbmNyeXB0ZWQgPSBmYWxzZTsKPiAtCUk5MTVfV1JJVEUoUE9S VF9IRENQX0NPTkYocG9ydCksIDApOwo+ICsJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3ByaXYs IHBpcGUsIHBvcnQpLCAwKTsKPiAgIAlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9w cml2LT51bmNvcmUsCj4gLQkJCQkgICAgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwgfjAsIDAsCj4g KwkJCQkgICAgSERDUF9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpLCB+MCwgMCwKPiAgIAkJ CQkgICAgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpKSB7Cj4gICAJCURSTV9FUlJP UigiRmFpbGVkIHRvIGRpc2FibGUgSERDUCwgdGltZW91dCBjbGVhcmluZyBzdGF0dXNcbiIpOwo+ ICAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiBAQCAtODA2LDkgKzgyNiwxMSBAQCBzdGF0aWMgaW50 IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNl LmRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7Cj4gICAJZW51bSBwb3J0IHBv cnQgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5wb3J0Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gICAJ aW50IHJldCA9IDA7Cj4gICAKPiAgIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gKwlwaXBl ID0gaGRjcC0+cGlwZTsKPiAgIAo+ICAgCS8qIENoZWNrX2xpbmsgdmFsaWQgb25seSB3aGVuIEhE Q1AxLjQgaXMgZW5hYmxlZCAqLwo+ICAgCWlmIChoZGNwLT52YWx1ZSAhPSBEUk1fTU9ERV9DT05U RU5UX1BST1RFQ1RJT05fRU5BQkxFRCB8fAo+IEBAIC04MTcsMTAgKzgzOSwxMCBAQCBzdGF0aWMg aW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gICAJCWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+IC0JaWYgKFdBUk5fT04oIWludGVsX2hk Y3BfaW5fdXNlKGNvbm5lY3RvcikpKSB7Cj4gKwlpZiAoV0FSTl9PTighaW50ZWxfaGRjcF9pbl91 c2UoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSkgewo+ICAgCQlEUk1fRVJST1IoIiVzOiVkIEhEQ1Ag bGluayBzdG9wcGVkIGVuY3J5cHRpb24sJXhcbiIsCj4gICAJCQkgIGNvbm5lY3Rvci0+YmFzZS5u YW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKPiAtCQkJICBJOTE1X1JFQUQoUE9SVF9IRENQ X1NUQVRVUyhwb3J0KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwg cGlwZSwgcG9ydCkpKTsKPiAgIAkJcmV0ID0gLUVOWElPOwo+ICAgCQloZGNwLT52YWx1ZSA9IERS TV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9ERVNJUkVEOwo+ICAgCQlzY2hlZHVsZV93b3JrKCZo ZGNwLT5wcm9wX3dvcmspOwo+IEBAIC0xNDkxLDEwICsxNTEzLDExIEBAIHN0YXRpYyBpbnQgaGRj cDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmRldik7Cj4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5o ZGNwOwo+ICAgCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJ ZW51bSBwaXBlIHBpcGUgPSBoZGNwLT5waXBlOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCVdBUk5f T04oSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9OX1NU QVRVUyk7Cj4gLQo+ICsJV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBw aXBlLCBwb3J0KSkgJgo+ICsJCUxJTktfRU5DUllQVElPTl9TVEFUVVMpOwo+ICAgCWlmIChoZGNw LT5zaGltLT50b2dnbGVfc2lnbmFsbGluZykgewo+ICAgCQlyZXQgPSBoZGNwLT5zaGltLT50b2dn bGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4gICAJCWlmIChyZXQpIHsKPiBA QCAtMTUwNCwxNCArMTUyNywxNSBAQCBzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0aW9u KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAkJfQo+ICAgCX0KPiAgIAo+ IC0JaWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmIExJTktfQVVUSF9TVEFU VVMpIHsKPiArCWlmIChJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0 KSkgJiBMSU5LX0FVVEhfU1RBVFVTKSB7Cj4gICAJCS8qIExpbmsgaXMgQXV0aGVudGljYXRlZC4g Tm93IHNldCBmb3IgRW5jcnlwdGlvbiAqLwo+IC0JCUk5MTVfV1JJVEUoSERDUDJfQ1RMX0RESShw b3J0KSwKPiAtCQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTF9EREkocG9ydCkpIHwKPiArCQlJOTE1 X1dSSVRFKEhEQ1AyX0NUTChkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gKwkJCSAgIEk5MTVfUkVB RChIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSB8Cj4gICAJCQkgICBDVExfTElOS19F TkNSWVBUSU9OX1JFUSk7Cj4gICAJfQo+ICAgCj4gLQlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdp c3RlcigmZGV2X3ByaXYtPnVuY29yZSwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKPiArCXJldCA9 IGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ICsJCQkJICAgICAg SERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSwKPiAgIAkJCQkgICAgICBMSU5LX0VO Q1JZUFRJT05fU1RBVFVTLAo+ICAgCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4g ICAJCQkJICAgICAgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMpOwo+IEBAIC0xNTI1 LDE0ICsxNTQ5LDE3IEBAIHN0YXRpYyBpbnQgaGRjcDJfZGlzYWJsZV9lbmNyeXB0aW9uKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAgCXN0cnVjdCBp bnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiAgIAllbnVtIHBvcnQgcG9ydCA9 IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiArCWVudW0gcGlwZSBwaXBlID0gaGRjcC0+cGlw ZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gLQlXQVJOX09OKCEoSTkxNV9SRUFEKEhEQ1AyX1NUQVRV U19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9OX1NUQVRVUykpOwo+ICsJV0FSTl9PTighKEk5 MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSAmCj4gKwkJTElOS19F TkNSWVBUSU9OX1NUQVRVUykpOwo+ICsJSTkxNV9XUklURShIRENQMl9DVEwoZGV2X3ByaXYsIHBp cGUsIHBvcnQpLAo+ICsJCSAgIEk5MTVfUkVBRChIRENQMl9DVEwoZGV2X3ByaXYsIHBpcGUsIHBv cnQpKSAmCj4gKwkJICAgfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPiAgIAo+IC0JSTkxNV9X UklURShIRENQMl9DVExfRERJKHBvcnQpLAo+IC0JCSAgIEk5MTVfUkVBRChIRENQMl9DVExfRERJ KHBvcnQpKSAmIH5DVExfTElOS19FTkNSWVBUSU9OX1JFUSk7Cj4gLQo+IC0JcmV0ID0gaW50ZWxf d2FpdF9mb3JfcmVnaXN0ZXIoJmRldl9wcml2LT51bmNvcmUsIEhEQ1AyX1NUQVRVU19EREkocG9y dCksCj4gKwlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwK PiArCQkJCSAgICAgIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCksCj4gICAJCQkJ ICAgICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUywgMHgwLAo+ICAgCQkJCSAgICAgIEVOQ1JZUFRf U1RBVFVTX0NIQU5HRV9USU1FT1VUX01TKTsKPiAgIAlpZiAocmV0ID09IC1FVElNRURPVVQpCj4g QEAgLTE2MzEsOSArMTY1OCwxMSBAQCBzdGF0aWMgaW50IGludGVsX2hkY3AyX2NoZWNrX2xpbmso c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gICAJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICAgCWVudW0gcG9ydCBw b3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gICAJ aW50IHJldCA9IDA7Cj4gICAKPiAgIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gKwlwaXBl ID0gaGRjcC0+cGlwZTsKPiAgIAo+ICAgCS8qIGhkY3AyX2NoZWNrX2xpbmsgaXMgZXhwZWN0ZWQg b25seSB3aGVuIEhEQ1AyLjIgaXMgRW5hYmxlZCAqLwo+ICAgCWlmIChoZGNwLT52YWx1ZSAhPSBE Uk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRCB8fAo+IEBAIC0xNjQyLDkgKzE2NzEs OSBAQCBzdGF0aWMgaW50IGludGVsX2hkY3AyX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ICAgCQlnb3RvIG91dDsKPiAgIAl9Cj4gICAKPiAtCWlmIChXQVJO X09OKCFpbnRlbF9oZGNwMl9pbl91c2UoY29ubmVjdG9yKSkpIHsKPiArCWlmIChXQVJOX09OKCFp bnRlbF9oZGNwMl9pbl91c2UoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSkgewo+ICAgCQlEUk1fRVJS T1IoIkhEQ1AyLjIgbGluayBzdG9wcGVkIHRoZSBlbmNyeXB0aW9uLCAleFxuIiwKPiAtCQkJICBJ OTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQ Ml9TVEFUVVMoZGV2X3ByaXYsIHBpcGUsIHBvcnQpKSk7Cj4gICAJCXJldCA9IC1FTlhJTzsKPiAg IAkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKPiAg IAkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKPiBAQCAtMTg1Nyw2ICsxODg2LDgg QEAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiAgIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gICAJV0FSTl9PTihoZGNwLT52YWx1 ZSA9PSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRCk7Cj4gICAKPiArCWhkY3At PnBpcGUgPSBpbnRlbF9jb25uZWN0b3JfZ2V0X3BpcGUoY29ubmVjdG9yKTsKPiArCj4gICAJLyoK PiAgIAkgKiBDb25zaWRlcmluZyB0aGF0IEhEQ1AyLjIgaXMgbW9yZSBzZWN1cmUgdGhhbiBIRENQ MS40LCBJZiB0aGUgc2V0dXAKPiAgIAkgKiBpcyBjYXBhYmxlIG9mIEhEQ1AyLjIsIGl0IGlzIHBy ZWZlcnJlZCB0byB1c2UgSERDUDIuMi4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2hkbWkuYwo+IGluZGV4IDBlYmVjNjliYmJmYy4uMjA5NmFlZTE3NGIyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKPiBAQCAtMTQ5MSw3ICsxNDkx LDEwIEBAIGJvb2wgaW50ZWxfaGRtaV9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0KPiAgIAkJaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0KPiArCQkJCWlu dGVsX2RpZ19wb3J0LT5oZG1pLmF0dGFjaGVkX2Nvbm5lY3RvcjsKClRoaXMgbGluZSBzaG91bGQg YmUgYWxpZ24gYXMgYWJvdmUgb25lLCB3aXRoIHRoaXMgY29tbWVudCBmaXhlZCwgcGxlYXNlIApm ZWVsIGZyZWUgdG8gdXNlOgoKUmV2aWV3ZWQtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsu c2hhcm1hQGludGVsLmNvbT4KClJlZ2FyZHMKClNoYXNoYW5rCgo+ICAgCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPiArCWVudW0gcGlwZSBwaXBlID0gY29ubmVj dG9yLT5oZGNwLnBpcGU7Cj4gICAJaW50IHJldDsKPiAgIAl1bmlvbiB7Cj4gICAJCXUzMiByZWc7 Cj4gQEAgLTE1MDIsMTMgKzE1MDUsMTMgQEAgYm9vbCBpbnRlbF9oZG1pX2hkY3BfY2hlY2tfbGlu ayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgIAlpZiAocmV0 KQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiAtCUk5MTVfV1JJVEUoUE9SVF9IRENQX1JQUklN RShwb3J0KSwgcmkucmVnKTsKPiArCUk5MTVfV1JJVEUoSERDUF9SUFJJTUUoZGV2X3ByaXYsIHBp cGUsIHBvcnQpLCByaS5yZWcpOwo+ICAgCj4gICAJLyogV2FpdCBmb3IgUmkgcHJpbWUgbWF0Y2gg Ki8KPiAtCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJgo+ ICsJaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkpICYKPiAgIAkJICAgICAoSERDUF9TVEFUVVNfUklfTUFUQ0ggfCBIRENQX1NUQVRVU19FTkMp LCAxKSkgewo+ICAgCQlEUk1fRVJST1IoIlJpJyBtaXNtYXRjaCBkZXRlY3RlZCwgbGluayBjaGVj ayBmYWlsZWQgKCV4KVxuIiwKPiAtCQkJICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0 KSkpOwo+ICsJCQkgIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9ydCkp KTsKPiAgIAkJcmV0dXJuIGZhbHNlOwo+ICAgCX0KPiAgIAlyZXR1cm4gdHJ1ZTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPiBpbmRleCA1ODk4ZjU5ZTNkZDcuLjNlYTAzNDMzZjRmNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC05MjQ0LDEyICs5MjQ0LDIwIEBAIGVudW0gc2ts X3Bvd2VyX2dhdGUgewo+ICAgCj4gICAvKiBIRENQIFJlcGVhdGVyIFJlZ2lzdGVycyAqLwo+ICAg I2RlZmluZSBIRENQX1JFUF9DVEwJCQlfTU1JTygweDY2ZDAwKQo+ICsjZGVmaW5lICBIRENQX1RS QU5TQV9SRVBfUFJFU0VOVAlCSVQoMzEpCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNCX1JFUF9QUkVT RU5UCUJJVCgzMCkKPiArI2RlZmluZSAgSERDUF9UUkFOU0NfUkVQX1BSRVNFTlQJQklUKDI5KQo+ ICsjZGVmaW5lICBIRENQX1RSQU5TRF9SRVBfUFJFU0VOVAlCSVQoMjgpCj4gICAjZGVmaW5lICBI RENQX0RESUJfUkVQX1BSRVNFTlQJCUJJVCgzMCkKPiAgICNkZWZpbmUgIEhEQ1BfRERJQV9SRVBf UFJFU0VOVAkJQklUKDI5KQo+ICAgI2RlZmluZSAgSERDUF9ERElDX1JFUF9QUkVTRU5UCQlCSVQo MjgpCj4gICAjZGVmaW5lICBIRENQX0RESURfUkVQX1BSRVNFTlQJCUJJVCgyNykKPiAgICNkZWZp bmUgIEhEQ1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2KQo+ICAgI2RlZmluZSAgSERDUF9ERElF X1JFUF9QUkVTRU5UCQlCSVQoMjUpCj4gKyNkZWZpbmUgIEhEQ1BfVFJBTlNBX1NIQTFfTTAJCSgx IDw8IDIwKQo+ICsjZGVmaW5lICBIRENQX1RSQU5TQl9TSEExX00wCQkoMiA8PCAyMCkKPiArI2Rl ZmluZSAgSERDUF9UUkFOU0NfU0hBMV9NMAkJKDMgPDwgMjApCj4gKyNkZWZpbmUgIEhEQ1BfVFJB TlNEX1NIQTFfTTAJCSg0IDw8IDIwKQo+ICAgI2RlZmluZSAgSERDUF9ERElCX1NIQTFfTTAJCSgx IDw8IDIwKQo+ICAgI2RlZmluZSAgSERDUF9ERElBX1NIQTFfTTAJCSgyIDw8IDIwKQo+ICAgI2Rl ZmluZSAgSERDUF9ERElDX1NIQTFfTTAJCSgzIDw8IDIwKQo+IEBAIC05Mjg5LDE1ICs5Mjk3LDg5 IEBAIGVudW0gc2tsX3Bvd2VyX2dhdGUgewo+ICAgCQkJCQkgIF9QT1JURV9IRENQX0FVVEhFTkMs IFwKPiAgIAkJCQkJICBfUE9SVEZfSERDUF9BVVRIRU5DKSArICh4KSkKPiAgICNkZWZpbmUgUE9S VF9IRENQX0NPTkYocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDApCj4gKyNkZWZp bmUgX1RSQU5TQV9IRENQX0NPTkYJCTB4NjY0MDAKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQ09O RgkJMHg2NjUwMAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfQ09ORih0cmFucykJCV9NTUlPX1RSQU5T KHRyYW5zLCBfVFJBTlNBX0hEQ1BfQ09ORiwgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQX0NP TkYpCj4gKyNkZWZpbmUgSERDUF9DT05GKGRldl9wcml2LCBwaXBlLCBwb3J0KQkoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9DT05GKHBpcGUpIDogXAo+ ICsJCQkJCSBQT1JUX0hEQ1BfQ09ORihwb3J0KSkKPiArCj4gICAjZGVmaW5lICBIRENQX0NPTkZf Q0FQVFVSRV9BTgkJQklUKDApCj4gICAjZGVmaW5lICBIRENQX0NPTkZfQVVUSF9BTkRfRU5DCQko QklUKDEpIHwgQklUKDApKQo+ICAgI2RlZmluZSBQT1JUX0hEQ1BfQU5JTklUKHBvcnQpCQlfUE9S VF9IRENQX0FVVEhFTkMocG9ydCwgMHg0KQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9BTklOSVQJ CTB4NjY0MDQKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQU5JTklUCQkweDY2NTA0Cj4gKyNkZWZp bmUgVFJBTlNfSERDUF9BTklOSVQodHJhbnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gKwkJCQkJ CSAgICBfVFJBTlNBX0hEQ1BfQU5JTklULCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQU5J TklUKQo+ICsjZGVmaW5lIEhEQ1BfQU5JTklUKGRldl9wcml2LCBwaXBlLCBwb3J0KSBcCj4gKwkJ CQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfQU5J TklUKHBpcGUpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQU5JTklUKHBvcnQpKQo+ICsKPiAgICNk ZWZpbmUgUE9SVF9IRENQX0FOTE8ocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDgp Cj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX0FOTE8JCTB4NjY0MDgKPiArI2RlZmluZSBfVFJBTlNC X0hEQ1BfQU5MTwkJMHg2NjUwOAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfQU5MTyh0cmFucykJCV9N TUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQU5MTywgXAo+ICsJCQkJCQkgICAgX1RSQU5T Ql9IRENQX0FOTE8pCj4gKyNkZWZpbmUgSERDUF9BTkxPKGRldl9wcml2LCBwaXBlLCBwb3J0KQko SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9BTkxPKHBp cGUpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQU5MTyhwb3J0KSkKPiArCj4gICAjZGVmaW5lIFBP UlRfSERDUF9BTkhJKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHhDKQo+ICsjZGVm aW5lIF9UUkFOU0FfSERDUF9BTkhJCQkweDY2NDBDCj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FO SEkJCTB4NjY1MEMKPiArI2RlZmluZSBUUkFOU19IRENQX0FOSEkodHJhbnMpCQlfTU1JT19UUkFO Uyh0cmFucywgX1RSQU5TQV9IRENQX0FOSEksIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9B TkhJKQo+ICsjZGVmaW5lIEhEQ1BfQU5ISShkZXZfcHJpdiwgcGlwZSwgcG9ydCkJKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfQU5ISShwaXBlKSA6IFwK PiArCQkJCQkgUE9SVF9IRENQX0FOSEkocG9ydCkpCj4gKwo+ICAgI2RlZmluZSBQT1JUX0hEQ1Bf QktTVkxPKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHgxMCkKPiArI2RlZmluZSBf VFJBTlNBX0hEQ1BfQktTVkxPCQkweDY2NDEwCj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX0JLU1ZM TwkJMHg2NjUxMAo+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfQktTVkxPKHRyYW5zKQlfTU1JT19UUkFO Uyh0cmFucywgXAo+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQX0JLU1ZMTywgXAo+ICsJCQkJCQkg ICAgX1RSQU5TQl9IRENQX0JLU1ZMTykKPiArI2RlZmluZSBIRENQX0JLU1ZMTyhkZXZfcHJpdiwg cGlwZSwgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJ CQkJCSBUUkFOU19IRENQX0JLU1ZMTyhwaXBlKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX0JLU1ZM Tyhwb3J0KSkKPiArCj4gICAjZGVmaW5lIFBPUlRfSERDUF9CS1NWSEkocG9ydCkJCV9QT1JUX0hE Q1BfQVVUSEVOQyhwb3J0LCAweDE0KQo+ICsjZGVmaW5lIF9UUkFOU0FfSERDUF9CS1NWSEkJCTB4 NjY0MTQKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1BfQktTVkhJCQkweDY2NTE0Cj4gKyNkZWZpbmUg VFJBTlNfSERDUF9CS1NWSEkodHJhbnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCj4gKwkJCQkJCSAg ICBfVFJBTlNBX0hEQ1BfQktTVkhJLCBcCj4gKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1BfQktTVkhJ KQo+ICsjZGVmaW5lIEhEQ1BfQktTVkhJKGRldl9wcml2LCBwaXBlLCBwb3J0KSBcCj4gKwkJCQkJ KElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1BfQktTVkhJ KHBpcGUpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1BfQktTVkhJKHBvcnQpKQo+ICsKPiAgICNkZWZp bmUgUE9SVF9IRENQX1JQUklNRShwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MTgp Cj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQX1JQUklNRQkJMHg2NjQxOAo+ICsjZGVmaW5lIF9UUkFO U0JfSERDUF9SUFJJTUUJCTB4NjY1MTgKPiArI2RlZmluZSBUUkFOU19IRENQX1JQUklNRSh0cmFu cykJX01NSU9fVFJBTlModHJhbnMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJTUUs IFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUF9SUFJJTUUpCj4gKyNkZWZpbmUgSERDUF9SUFJJ TUUoZGV2X3ByaXYsIHBpcGUsIHBvcnQpIFwKPiArCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUF9SUFJJTUUocGlwZSkgOiBcCj4gKwkJCQkJIFBP UlRfSERDUF9SUFJJTUUocG9ydCkpCj4gKwo+ICAgI2RlZmluZSBQT1JUX0hEQ1BfU1RBVFVTKHBv cnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHgxQykKPiArI2RlZmluZSBfVFJBTlNBX0hE Q1BfU1RBVFVTCQkweDY2NDFDCj4gKyNkZWZpbmUgX1RSQU5TQl9IRENQX1NUQVRVUwkJMHg2NjUx Qwo+ICsjZGVmaW5lIFRSQU5TX0hEQ1BfU1RBVFVTKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywg XAo+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQX1NUQVRVUywgXAo+ICsJCQkJCQkgICAgX1RSQU5T Ql9IRENQX1NUQVRVUykKPiArI2RlZmluZSBIRENQX1NUQVRVUyhkZXZfcHJpdiwgcGlwZSwgcG9y dCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAo+ICsJCQkJCSBUUkFO U19IRENQX1NUQVRVUyhwaXBlKSA6IFwKPiArCQkJCQkgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkK PiArCj4gICAjZGVmaW5lICBIRENQX1NUQVRVU19TVFJFQU1fQV9FTkMJQklUKDMxKQo+ICAgI2Rl ZmluZSAgSERDUF9TVEFUVVNfU1RSRUFNX0JfRU5DCUJJVCgzMCkKPiAgICNkZWZpbmUgIEhEQ1Bf U1RBVFVTX1NUUkVBTV9DX0VOQwlCSVQoMjkpCj4gQEAgLTkzMjQsMjMgKzk0MDYsNDMgQEAgZW51 bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gICAJCQkJCSAgX1BPUlREX0hEQ1AyX0JBU0UsIFwKPiAgIAkJ CQkJICBfUE9SVEVfSERDUDJfQkFTRSwgXAo+ICAgCQkJCQkgIF9QT1JURl9IRENQMl9CQVNFKSAr ICh4KSkKPiAtCj4gLSNkZWZpbmUgSERDUDJfQVVUSF9EREkocG9ydCkJCV9QT1JUX0hEQ1AyX0JB U0UocG9ydCwgMHg5OCkKPiArI2RlZmluZSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkJCV9QT1JUX0hE Q1AyX0JBU0UocG9ydCwgMHg5OCkKPiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX0FVVEgJCTB4NjY0 OTgKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1AyX0FVVEgJCTB4NjY1OTgKPiArI2RlZmluZSBUUkFO U19IRENQMl9BVVRIKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUDJfQVVU SCwgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQMl9BVVRIKQo+ICAgI2RlZmluZSAgIEFVVEhf TElOS19BVVRIRU5USUNBVEVECUJJVCgzMSkKPiAgICNkZWZpbmUgICBBVVRIX0xJTktfVFlQRQkJ QklUKDMwKQo+ICAgI2RlZmluZSAgIEFVVEhfRk9SQ0VfQ0xSX0lOUFVUQ1RSCUJJVCgxOSkKPiAg ICNkZWZpbmUgICBBVVRIX0NMUl9LRVlTCQkJQklUKDE4KQo+IC0KPiAtI2RlZmluZSBIRENQMl9D VExfRERJKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjApCj4gKyNkZWZpbmUgSERD UDJfQVVUSChkZXZfcHJpdiwgcGlwZSwgcG9ydCkgXAo+ICsJCQkJCShJTlRFTF9HRU4oZGV2X3By aXYpID49IDEyID8gXAo+ICsJCQkJCSBUUkFOU19IRENQMl9BVVRIKHBpcGUpIDogXAo+ICsJCQkJ CSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkpCj4gKwo+ICsjZGVmaW5lIFBPUlRfSERDUDJfQ1RMKHBv cnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjApCj4gKyNkZWZpbmUgX1RSQU5TQV9IRENQ Ml9DVEwJCTB4NjY0QjAKPiArI2RlZmluZSBfVFJBTlNCX0hEQ1AyX0NUTAkJMHg2NjVCMAo+ICsj ZGVmaW5lIFRSQU5TX0hEQ1AyX0NUTCh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNB X0hEQ1AyX0NUTCwgXAo+ICsJCQkJCQkgICAgX1RSQU5TQl9IRENQMl9DVEwpCj4gICAjZGVmaW5l ICAgQ1RMX0xJTktfRU5DUllQVElPTl9SRVEJQklUKDMxKQo+IC0KPiAtI2RlZmluZSBIRENQMl9T VEFUVVNfRERJKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjQpCj4gLSNkZWZpbmUg ICBTVFJFQU1fRU5DUllQVElPTl9TVEFUVVNfQQlCSVQoMzEpCj4gLSNkZWZpbmUgICBTVFJFQU1f RU5DUllQVElPTl9TVEFUVVNfQglCSVQoMzApCj4gLSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElP Tl9TVEFUVVNfQwlCSVQoMjkpCj4gKyNkZWZpbmUgSERDUDJfQ1RMKGRldl9wcml2LCBwaXBlLCBw b3J0KQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKPiArCQkJCQkgVFJBTlNfSERDUDJf Q1RMKHBpcGUpIDogXAo+ICsJCQkJCSBQT1JUX0hEQ1AyX0NUTChwb3J0KSkKPiArCj4gKyNkZWZp bmUgUE9SVF9IRENQMl9TVEFUVVMocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCNCkK PiArI2RlZmluZSBfVFJBTlNBX0hEQ1AyX1NUQVRVUwkJMHg2NjRCNAo+ICsjZGVmaW5lIF9UUkFO U0JfSERDUDJfU1RBVFVTCQkweDY2NUI0Cj4gKyNkZWZpbmUgVFJBTlNfSERDUDJfU1RBVFVTKHRy YW5zKQlfTU1JT19UUkFOUyh0cmFucywgXAo+ICsJCQkJCQkgICAgX1RSQU5TQV9IRENQMl9TVEFU VVMsIFwKPiArCQkJCQkJICAgIF9UUkFOU0JfSERDUDJfU1RBVFVTKQo+ICAgI2RlZmluZSAgIExJ TktfVFlQRV9TVEFUVVMJCUJJVCgyMikKPiAgICNkZWZpbmUgICBMSU5LX0FVVEhfU1RBVFVTCQlC SVQoMjEpCj4gICAjZGVmaW5lICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUwlCSVQoMjApCj4gKyNk ZWZpbmUgSERDUDJfU1RBVFVTKGRldl9wcml2LCBwaXBlLCBwb3J0KSBcCj4gKwkJCQkJKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCj4gKwkJCQkJIFRSQU5TX0hEQ1AyX1NUQVRVUyhwaXBl KSA6IFwKPiArCQkJCQkgUE9SVF9IRENQMl9TVEFUVVMocG9ydCkpCj4gICAKPiAgIC8qIFBlci1w aXBlIERESSBGdW5jdGlvbiBDb250cm9sICovCj4gICAjZGVmaW5lIF9UUkFOU19ERElfRlVOQ19D VExfQQkJMHg2MDQwMAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMjRjNjNlZDQ1 YzZmLi43NDFmYTIxYzNlNTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0z NjUsNiArMzY1LDE0IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiAgIAl3YWl0X3F1ZXVlX2hlYWRf dCBjcF9pcnFfcXVldWU7Cj4gICAJYXRvbWljX3QgY3BfaXJxX2NvdW50Owo+ICAgCWludCBjcF9p cnFfY291bnRfY2FjaGVkOwo+ICsKPiArCS8qCj4gKwkgKiBHZW4gMTIgb253YXJkcywgSERDUCBp cyBwYXJ0IG9mIHRyYW5zY29kZXIocHJldmlvdXNseSBEREkpLgo+ICsJICogU28gY2hhY2hlaW5n IHRoZSBwaXBlIGFzc29jaWF0ZWQgdG8gY29ubmVjdG9yIGF0IGhkY3BfZW5hYmxlCj4gKwkgKiB3 b3VsZCBoZWxwIGluIHN1YnNlcXVlbnQgZnVuY3Rpb25zIHRvIGRlcml2ZSB0aGUgcmlnaHQgb2Zm c2V0cwo+ICsJICogZm9yIEhEQ1AgcmVnaXN0ZXJzLgo+ICsJICovCj4gKwllbnVtIHBpcGUgcGlw ZTsKPiAgIH07Cj4gICAKPiAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgewpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=