From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH 4/7] drm/i915: enable fastboot for everyone Date: Tue, 23 Jun 2015 13:50:43 +0200 Message-ID: <20150623115043.GW25769@phenom.ffwll.local> References: <1434700950-16242-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434700950-16242-5-git-send-email-maarten.lankhorst@linux.intel.com> <20150622152100.GR25769@phenom.ffwll.local> <5589373A.7020402@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTP id C38D56E631 for ; Tue, 23 Jun 2015 04:47:56 -0700 (PDT) Received: by wibdq8 with SMTP id dq8so14110520wib.1 for ; Tue, 23 Jun 2015 04:47:55 -0700 (PDT) Content-Disposition: inline In-Reply-To: <5589373A.7020402@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMjMsIDIwMTUgYXQgMTI6Mzg6NTBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMjItMDYtMTUgb20gMTc6MjEgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+ ID4+IC0JLyoKPiA+PiAtCSAqIEZJWE1FOiBCSU9TIGxpa2VzIHRvIHNldCB1cCBhIGNsb25lZCBj b25maWcgd2l0aCBsdmRzK2V4dGVybmFsCj4gPj4gLQkgKiBzY3JlZW4uIFNpbmNlIHdlIGRvbid0 IHlldCByZS1jb21wdXRlIHRoZSBwaXBlIGNvbmZpZyB3aGVuIG1vdmluZwo+ID4+IC0JICoganVz dCB0aGUgbHZkcyBwb3J0IGF3YXkgdG8gYW5vdGhlciBwaXBlIHRoZSBzdyB0cmFja2luZyB3b24n dCBtYXRjaC4KPiA+PiAtCSAqCj4gPj4gLQkgKiBQcm9wZXIgYXRvbWljIG1vZGVzZXRzIHdpdGgg cmVjb21wdXRlZCBnbG9iYWwgc3RhdGUgd2lsbCBmaXggdGhpcy4KPiA+PiAtCSAqIFVudGlsIHRo ZW4ganVzdCBkb24ndCBjaGVjayBnbWNoIHN0YXRlIGZvciBpbmhlcml0ZWQgbW9kZXMuCj4gPj4g LQkgKi8KPiA+PiAgCWlmICghUElQRV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0lOSEVS SVRFRF9NT0RFKSkgewo+ID4gVGhpcyBzZWVtcyBsaWtlIGEgc2VwYXJhdGUgY2hhbmdlIC0gd2l0 aCByZWNvbXB1dGluZyBzdGF0ZSBvbiBhbGwgcGlwZXMKPiA+IHVuY29uZGl0aW9uYWxseSB3ZSBz aG91bGQgYmUgYWJsZSB0byBkcm9wIHRoaXM/Cj4gV2UgcmVwdXJwb3NlIGluaGVyaXRlZCBtb2Rl IGhlcmUgdG8gc2tpcCBzb21lIGNoZWNrcyBvbiBmaXJzdCBib290IHRoYXQKPiB3aWxsIGJlIHBh dGNoZWQgdXAgb24gZmlyc3QgYXRvbWljIGNvbW1pdC4KClllYWgsIGJ1dCBzaW5jZSB5b3UgZGVs ZXRlIHRoZSBGSVhNRSBjb21tZW50IChJIGFncmVlIHRoYXQncyBhZHJlc3NlZCkKdGhlcmUgc2hv dWxkbid0IGJlIGFueSByZWFzb24gYW55IG1vcmUgZm9yIHRoaXMuIElmIHRoZXJlIHN0aWxsIGlz IHRoZW4gd2UKbmVlZCBhIG5ldyBjb21tZW50IGltby4gQW5kIHdlIGRvIHJlYWQgb3V0IHBmaXQg c3RhdGUgY29ycmVjdGx5LCBzbyB0aGlzCnNob3VsZG4ndCBjYXVzZSBhbnkgcGlwZSBjb25maWcg bWlzbWF0Y2hlcyBvbiB0aGUgaW5pdGlhbCBzdGF0ZS4KCj4gPj4gQEAgLTEzMTQ3LDcgKzEzMTIy LDEwIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gPj4gIAkJaWYgKG5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpICYmIGNydGMt PnN0YXRlLT5hY3RpdmUpIHsKPiA+PiAgCQkJdXBkYXRlX3NjYW5saW5lX29mZnNldCh0b19pbnRl bF9jcnRjKGNydGMpKTsKPiA+PiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0 Yyk7Cj4gPj4gLQkJfQo+ID4+ICsJCX0gZWxzZSBpZiAodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj X3N0YXRlKS0+cXVpcmtzICYKPiA+PiArCQkJICAgUElQRV9DT05GSUdfUVVJUktfSU5IRVJJVEVE X01PREUpCj4gPj4gKwkJCS8qIGZvcmNlIGh3IHJlYWRvdXQgY2hlY2sgKi8KPiA+PiArCQkJYW55 X21zID0gdHJ1ZTsKPiA+IEltbyB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIHBhdGNoIHNpbmNl IGZvcmNpbmcgYSBtb2Rlc2V0IGNoZWNrIGFmdGVyCj4gPiB0aGUgaW5pdGlhbCB0YWtlb3ZlciBp cyBhIGdvb2QgdGhpbmcuIEFsc28gbWF5YmUgZG8gYQo+ID4gcy9hbnlfbXMvZG9fbW9kZXNldF9j aGVja3MvIGZvciBjbGFyaXR5IG9mIHdoYXQgdGhpcyBkb2VzLgo+IEl0J3MgdXNlZCBmb3Igb3Ro ZXIgcmVhc29ucyB0b28sIGxpa2UgdXBkYXRpbmcgcG93ZXIgZG9tYWlucyB3aGVuIGNydGMKPiBz dGF0ZXMgY2hhbmdlLiBTbyBkb19tb2Rlc2V0X2NoZWNrcyB3b3VsZCBiZSBtaXNsZWFkaW5nLgoK WWVhaCBJIGdvdCBjb25mdXNlZCByZWFkaW5nIGNvZGUgc2luY2UgaXQgbG9va3Mgc28gZGlmZmVy ZW50LiBhbnlfbXMKdG90YWxseSBkb2VzIG5vdCB3aGF0IEkgdGhvdWdodCBpdCBkb2VzLCBhbmQg dGhlIG5hbWUgaXMgZ29vZCBhcy1pcy4KCj4gPj4gIAo+ID4+ICAJCWRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9wbGFuZXNfb25fY3J0YyhjcnRjX3N0YXRlKTsKPiA+PiAgCX0KPiA+PiBAQCAtMTM0 MzAsOCArMTM0MDgsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICpzZXQpCj4gPj4gIAlpZiAocmV0KQo+ID4+ICAJCWdvdG8gb3V0Owo+ID4+ ICAKPiA+PiAtCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0YyhzZXQtPmNydGMp KTsKPiA+PiAtCj4gPj4gIAlyZXQgPSBpbnRlbF9zZXRfbW9kZV9jaGVja2VkKHN0YXRlKTsKPiA+ PiAgCWlmIChyZXQpIHsKPiA+PiAgCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUg b24gW0NSVEM6JWRdLCBlcnIgPSAlZFxuIiwKPiA+PiBAQCAtMTM3MTgsMTAgKzEzNjk0LDYgQEAg aW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4g IAlpZiAoIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4gPj4gIAkJcmV0dXJuOwo+ID4+ICAKPiA+PiAt CWlmIChzdGF0ZS0+dmlzaWJsZSkKPiA+PiAtCQkvKiBGSVhNRToga2lsbCB0aGlzIGZhc3Rib290 IGhhY2sgKi8KPiA+PiAtCQlpbnRlbF91cGRhdGVfcGlwZV9zaXplKGludGVsX2NydGMpOwo+ID4+ IC0KPiA+PiAgCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIGZi LCBjcnRjLT54LCBjcnRjLT55KTsKPiA+PiAgfQo+ID4+ICAKPiA+PiBAQCAtMTM3NDEsNiArMTM3 MTMsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiA+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKPiA+PiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQo+ID4+ ICsJCXRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwo+ID4+ICAKPiA+PiAgCWlm ICghbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4gPj4gIAkJaW50ZWxfcHJlX3BsYW5lX3Vw ZGF0ZShpbnRlbF9jcnRjKTsKPiA+PiBAQCAtMTM3NTYsNyArMTM3MzAsMTAgQEAgc3RhdGljIHZv aWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4+ICAJ CQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjLAo+ID4+ICAJCQkJCQkmaW50ZWxf Y3J0Yy0+YXRvbWljLnN0YXJ0X3ZibF9jb3VudCk7Cj4gPj4gIAo+ID4+IC0JaWYgKCFuZWVkc19t b2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ID4+ICsJ aWYgKCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBjcnRjLT5zdGF0ZS0+YWN0aXZlICYm Cj4gPj4gKwkgICAgb2xkX2ludGVsX3N0YXRlLT5xdWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19J TkhFUklURURfTU9ERSkKPiA+PiArCQlpbnRlbF91cGRhdGVfZmFzdGJvb3QoaW50ZWxfY3J0Yywg b2xkX2ludGVsX3N0YXRlKTsKPiA+IE5hY2ssIGZhc3Rib290IG9ubHkgZm9yIHRoZSBpbml0aWFs IG1vZGUgaXMgbm90IHdoYXQgSSB3YW50LiBXZSBzaG91bGQgYmUKPiA+IGFibGUgdG8gc3BlZWQg dXAgX2FueV8gbW9kZXNldCB3aGVyZSB3ZSBqdXN0IGRpc2FibGUgdGhlIHBmaXQuIEFsbG93aW5n Cj4gPiBmYXN0IHBmaXQgcmVtb3ZhbCB1bmNvbmRpdGlvbmFsbHkgd2lsbCBhbHNvIGFsbG93IHVz IHRvIGVhc2lseSB0ZXN0IHRoaXMKPiA+IHBhcnQgb2YgZmFzdGJvb3Qgd2l0aCBhbiBpZ3QsIHdo aWNoIEknZCBhbHNvIGxpa2UgdG8gc2VlLgo+IFlvdSdyZSByaWdodCwgYnV0IEkgdGhpbmsgYmVj YXVzZSB0aGlzIG5lZWRzIG1vcmUgaW5mcmFzdHJ1Y3R1cmUuIEkgb25seSB3YW50IHRvIGNvbnZl cnQgZmFzdGJvb3QgYXQgZmlyc3QuCj4gRm9yIE1TVCB3ZSBtaWdodCBhbHNvIG5lZWQgYSB2YXJp YW50IHdoaWNoIG9ubHkgcGVyZm9ybXMgYSBwaXBlIG1vZGVzZXQsIHJhdGhlciB0aGFuIGEgZnVs bCBtb2Rlc2V0Lgo+IFN0aWxsIHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB3ZSB3aWxsIG5lZWQgdG8g Zm9yY2UgYSBtb2Rlc2V0IHJlZ2FyZGxlc3MsIGZvciBleGFtcGxlIHdoZW4gZGV2aWNlIGZyZXF1 ZW5jeQo+IGNoYW5nZXMuCj4gCj4gSW4gZWl0aGVyIGNhc2UgdGhpcyBwcm9iYWJseSByZXF1aXJl cyBhIGxvdCBvZiBjb2RlIG1heSBkaWZmZXIgb24gZWFjaCBwbGF0Zm9ybS4gOigKClRoaXMgaXNu J3QgYWJvdXQgYW55dGhpbmcgZWxzZSBidXQgZmFzdGJvb3Q6IEkganVzdCB3YW50IHRoZSBwZml0 LWRpc2FibGUKdHJpY2sgdG8gd29yayBvbiBfYW55XyBtb2Rlc2V0LCBzaW5jZSBpZiB3ZSBkb24n dCBkbyB0aGF0IHRoZW4gd2UgY2FuJ3QKdGVzdCBpdCB3aXRoIGlndC4gQW5kIHRoYXQncyBiYWQu IHBmaXQtZGlzYWJsaW5nIHJlYWxseSBzaG91bGQgYmUKb3J0aG9nb25hbCB0byBhbnkgaW5oZXJp dGVkIHN0YXRlIGNsZWFudXAsIGlmIGl0J3Mgbm90IHRoZSBnb29kIGlzbid0IHlldApyZWFkeSBm b3IgcHJpbWUgdGltZSBpbW8uCgo+ID4+ICsJZWxzZSBpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+ c3RhdGUpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gPj4gIAkJc2tsX2RldGFjaF9z Y2FsZXJzKGludGVsX2NydGMpOwo+ID4gQWxzbyBJIHRoaW5rIGl0J2QgYmUgY2xlYXJlciBpZiB3 ZSBoYXZlIHN0YXRlIGZsYWdzIChsaWtlIGZvciB0aGUgcGFnZWZsaXAKPiA+IHN0dWZmKSBpbiBj cnRjX3N0YXRlIHRvIGVuYWJsZSB0aGVzZSBmaXh1cCBmdW5jdGlvbnMgb24gYW4gYXMtbmVlZGVk Cj4gPiBiYXNpcy4KPiBJIHRoaW5rIHRoaXMgY2FsbCBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIHBs YW5lIGNvbW1pdCBmdW5jdGlvbiBpbnN0ZWFkLCB3aXRoIGEgc2luZ2xlCj4gZGV0YWNoX3NjYWxl ciB0byBkaXNhYmxlIHRoZSByZWxldmFudCBzY2FsZXIsIGlmIHRoZSBzY2FsZXIncyBub3QgdXNl ZCBhZnRlcndhcmRzLgo+IAo+IGZhc3Rib290IHVwZGF0ZXMgd291bGQgZGlzYWJsZSBpdCBmb3Ig dGhlIGNydGMsIGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRvIGNhbGwgaXQgc2VwYXJhdGVseS4KClll YWggdGhhdCBtYWtlcyBzZW5zZS4KPiAKPiA+PiAgfQo+ID4+ICAKPiA+PiBAQCAtMTUwOTYsNiAr MTUwNzMsMTE0IEBAIGludGVsX2NoZWNrX3BsYW5lX21hcHBpbmcoc3RydWN0IGludGVsX2NydGMg KmNydGMpCj4gPj4gIAlyZXR1cm4gdHJ1ZTsKPiA+PiAgfQo+ID4+ICAKPiA+PiArc3RhdGljIGJv b2wKPiA+PiAraW50ZWxfY29tcGFyZV9tX24odW5zaWduZWQgaW50IG0sIHVuc2lnbmVkIGludCBu LAo+ID4+ICsJCSAgdW5zaWduZWQgaW50IG0yLCB1bnNpZ25lZCBpbnQgbjIpCj4gPj4gK3sKPiA+ PiArCWlmIChtID09IG0yICYmIG4gPT0gbjIpCj4gPj4gKwkJcmV0dXJuIHRydWU7Cj4gPj4gKwo+ ID4+ICsJaWYgKCFtIHx8ICFuIHx8ICFtMiB8fCAhbjIpCj4gPj4gKwkJcmV0dXJuIGZhbHNlOwo+ ID4+ICsKPiA+PiArCWlmIChtID4gbTIpIHsKPiA+PiArCQl3aGlsZSAobSA+IG0yKSB7Cj4gPj4g KwkJCW0gPj49IDE7Cj4gPj4gKwkJCW4gPj49IDE7Cj4gPj4gKwkJfQo+ID4+ICsJfSBlbHNlIGlm IChtIDwgbTIpIHsKPiA+PiArCQl3aGlsZSAobSA8IG0yKSB7Cj4gPj4gKwkJCW0yID4+PSAxOwo+ ID4+ICsJCQluMiA+Pj0gMTsKPiA+PiArCQl9Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IG0gPT0gbTIgJiYgbiA9PSBuMjsKPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIGJvb2wKPiA+ PiAraW50ZWxfY29tcGFyZV9saW5rX21fbihjb25zdCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1f biwKPiA+PiArCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2xpbmtfbV9uICptMl9uMikKPiA+ PiArewo+ID4+ICsJaWYgKG1fbi0+dHUgPT0gbTJfbjItPnR1ICYmCj4gPj4gKwkgICAgaW50ZWxf Y29tcGFyZV9tX24obV9uLT5nbWNoX20sIG1fbi0+Z21jaF9uLAo+ID4+ICsJCQkgICAgICBtMl9u Mi0+Z21jaF9tLCBtMl9uMi0+Z21jaF9uKSAmJgo+ID4+ICsJICAgIGludGVsX2NvbXBhcmVfbV9u KG1fbi0+bGlua19tLCBtX24tPmxpbmtfbiwKPiA+PiArCQkJICAgICAgbTJfbjItPmxpbmtfbSwg bTJfbjItPmxpbmtfbikpCj4gPj4gKwkJcmV0dXJuIHRydWU7Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IGZhbHNlOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCBpbnRlbF9mYXN0Ym9vdF9j YWxjX21vZGVzZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPj4gKwkJCQkJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmh3X3N0YXRlLAo+ID4+ICsJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZykKPiA+PiArewo+ID4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmJhc2UuZGV2Owo+ID4+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgc3dfc3RhdGU7 Cj4gPj4gKwo+ID4+ICsJaWYgKG5lZWRzX21vZGVzZXQoJnBpcGVfY29uZmlnLT5iYXNlKSkgewo+ ID4+ICsJCURSTV9ERUJVR19LTVMoIlNraXBwaW5nIGZhc3Rib290IGNoZWNrcywgbW9kZXNldCBm b3JjZWRcbiIpOwo+ID4+ICsJCXJldHVybjsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwltZW1zZXQo JnN3X3N0YXRlLCAwLCBzaXplb2Yoc3dfc3RhdGUpKTsKPiA+PiArCXN3X3N0YXRlLmJhc2UgPSBw aXBlX2NvbmZpZy0+YmFzZTsKPiA+PiArCXN3X3N0YXRlLnNjYWxlcl9zdGF0ZSA9IHBpcGVfY29u ZmlnLT5zY2FsZXJfc3RhdGU7Cj4gPj4gKwlzd19zdGF0ZS5zaGFyZWRfZHBsbCA9IHBpcGVfY29u ZmlnLT5zaGFyZWRfZHBsbDsKPiA+PiArCXN3X3N0YXRlLmRwbGxfaHdfc3RhdGUgPSBwaXBlX2Nv bmZpZy0+ZHBsbF9od19zdGF0ZTsKPiA+PiArCXN3X3N0YXRlLmRkaV9wbGxfc2VsID0gcGlwZV9j b25maWctPmRkaV9wbGxfc2VsOwo+ID4+ICsJaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZygmY3J0 Yy0+YmFzZSwgJnN3X3N0YXRlKTsKPiA+PiArCXN3X3N0YXRlLnF1aXJrcyA9IGh3X3N0YXRlLT5x dWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZTkNfRkxBR1M7Cj4gPj4gKwo+ID4+ICsJ aWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmZkaV9tX24sICZod19zdGF0ZS0+ ZmRpX21fbikpCj4gPj4gKwkJc3dfc3RhdGUuZmRpX21fbiA9IGh3X3N0YXRlLT5mZGlfbV9uOwo+ ID4+ICsKPiA+PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpIHsKPiA+PiArCQlpZiAo aW50ZWxfY29tcGFyZV9saW5rX21fbigmc3dfc3RhdGUuZHBfbV9uLAo+ID4+ICsJCQkJCSAgICZo d19zdGF0ZS0+ZHBfbV9uKSkKPiA+PiArCQkJc3dfc3RhdGUuZHBfbV9uID0gaHdfc3RhdGUtPmRw X21fbjsKPiA+PiArCj4gPj4gKwkJaWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRl LmRwX20yX24yLAo+ID4+ICsJCQkJCSAgICZod19zdGF0ZS0+ZHBfbTJfbjIpKQo+ID4+ICsJCQlz d19zdGF0ZS5kcF9tMl9uMiA9IGh3X3N0YXRlLT5kcF9tMl9uMjsKPiA+PiArCX0gZWxzZSB7Cj4g Pj4gKwkJaWYgKGludGVsX2NvbXBhcmVfbGlua19tX24oJnN3X3N0YXRlLmRwX21fbiwKPiA+PiAr CQkJCQkgICAmaHdfc3RhdGUtPmRwX21fbikpIHsKPiA+PiArCQkJc3dfc3RhdGUuZHBfbV9uID0g aHdfc3RhdGUtPmRwX21fbjsKPiA+PiArCQkJaHdfc3RhdGUtPmRwX20yX24yID0gc3dfc3RhdGUu ZHBfbTJfbjI7Cj4gPj4gKwkJfSBlbHNlIGlmIChpbnRlbF9jb21wYXJlX2xpbmtfbV9uKCZzd19z dGF0ZS5kcF9tMl9uMiwKPiA+PiArCQkJCQkJICAmaHdfc3RhdGUtPmRwX21fbikpIHsKPiA+PiAr CQkJc3dfc3RhdGUuZHBfbTJfbjIgPSBod19zdGF0ZS0+ZHBfbV9uOwo+ID4+ICsKPiA+PiArCQkJ aHdfc3RhdGUtPmRwX21fbiA9IHN3X3N0YXRlLmRwX21fbjsKPiA+PiArCQkJaHdfc3RhdGUtPmRw X20yX24yID0gc3dfc3RhdGUuZHBfbTJfbjI7Cj4gPj4gKwkJfQo+ID4+ICsJfQo+ID4gTm90IHRv byBoYXBweSB3aXRoIHNwbGl0dGluZyB1cCB0aGUgbW9kZXNldCBzdGF0ZSBjb21wYXJlIGNvZGUg bGlrZSB0aGlzLgo+ID4gSWYgd2UgYWRkIGVudW0gbW9kZSB7IEVYQUNULCBDT01QQVRJQkxFIH0g dG8gaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZSB3ZQo+ID4gY291bGQgdGllIHRoaW5ncyB0b2dl dGhlciB3ZWxsIGFuZCBoYXZlIGFsbCB0aGUgcGlwZSBjb25maWcgY29kZSBncm91cGVkCj4gPiBp biBvbmUgcGxhY2UuIEJ1dCB0aGVuIHRoZSBfY29tcGFyZSgpIGlzIGEgYml0IG1pc2xlYWRpbmcg c2luY2UgaXQnZCBhbHNvCj4gPiB1cGRhdGUgdGhlIHN3X3N0YXRlLCBzbyBtYXliZSBiZXR0ZXIg dG8gY2FsbCBpdCBjb21wYXJlX2FuZF9hanVzdC4KPiBPciBwYXNzIGEgYm9vbCBhZGp1c3QsIHNp bmNlIGNoZWNraW5nIHN0YXRlIGFmdGVyIGEgbW9kZXNldCBuZWVkcyB0byBtYXRjaCBleGFjdGx5 LAo+IGFuZCBubyBhZGp1c3RtZW50IGNhbiBiZSBkb25lLgoKWWVhaCBhZGp1c3QgaXMgYSBiZXR0 ZXIgbmFtZS4gVGhlIHBvaW50IGJlaGluZCB0aGUgZW51bSBpcyB0aGF0IGlmIHlvdQpoYXZlIGEg cGlsZSBvZiBib29sIGFyZ3VtZW50cyBpdCdzIGhhcmQgdG8ga25vdyB3aXRob3V0IGxvb2tpbmcg YXQgdGhlCmZ1bmN0aW9uIHdoYXQncyBnb2luZyBvbi4gV2l0aCBlbnVtcyB5b3UgY2FuIGdvIHdp dGggc2VsZi1kZXNjcmlwdGl2ZQpuYW1lcy4gV2UncmUgbm90IGRvaW5nIHRoaXMgeWV0IGV2ZXJ5 d2hlcmUsIGJ1dCBhcyBhIHJ1bGUgSSdkIGxpa2UgdG8gc2VlCml0IGlmIHRoZXJlJ3MgbW9yZSB0 aGFuIG9uZSBib29sIGluIHRoZSBhcmcgbGlzdC4KCj4gPiBUaGUgbWFjcm9zIHdvdWxkIHRoZW4g ZWl0aGVyIGNvcHkgdGhlIGh3X3N0YXRlIHRvIHN3X3N0YXRlIChpZiBpdCdzIHNvbWUKPiA+IGlu dGVybWVkaWF0ZSBzdGF0ZSB3ZSBkb24ndCBjYXJlIGFib3V0KSBvciBjb21wYXJlIGl0ICh3aXRo IG1heWJlIHNvbWUKPiA+IGFkanVzdG1lbnRzIG1hZGUpLiBCdXQgSSdkIHJlYWxseSBsaWtlIHRv IGhhdmUgYWxsIHRoYXQgY29tcGFyZS9hZGp1c3QKPiA+IGxvZ2ljIGluIG9uZSBwbGFjZSBpZiBw b3NzaWJsZS4KPiA+Cj4gPj4gKwo+ID4+ICsJLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBmb3JjZSBh IG1vZGVzZXQgKi8KPiA+PiArCWlmICghaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsICZz d19zdGF0ZSwgaHdfc3RhdGUsIHRydWUpKSB7Cj4gPj4gKwkJRFJNX0lORk8oIltDUlRDOiVpXSBz dyBzdGF0ZSBpbmNvbXBhdGlibGUsIGZvcmNpbmcgbW9kZXNldFxuIiwKPiA+PiArCQkJIGNydGMt PmJhc2UuYmFzZS5pZCk7Cj4gPj4gKwkJcGlwZV9jb25maWctPmJhc2UubW9kZV9jaGFuZ2VkID0g dHJ1ZTsKPiA+PiArCX0gZWxzZSB7Cj4gPj4gKwkJRFJNX0lORk8oIltDUlRDOiVpXSBzdyBzdGF0 ZSBhbmQgaHcgc3RhdGUgZmFzdGJvb3QgY29tcGF0aWJsZVxuIiwKPiA+PiArCQkJIGNydGMtPmJh c2UuYmFzZS5pZCk7Cj4gPj4gKwo+ID4+ICsJCSpwaXBlX2NvbmZpZyA9IHN3X3N0YXRlOwo+ID4+ ICsJCWludGVsX2R1bXBfcGlwZV9jb25maWcoY3J0YywgcGlwZV9jb25maWcsCj4gPj4gKwkJCQkg ICAgICAgIltuZXcgZmFzdGJvb3Qgc3RhdGVdIik7Cj4gPj4gKwo+ID4+ICsJCS8qIHByZXZlbnQg YSBtb2Rlc2V0IGJ5IHBhdGNoaW5nIHVwIG1vZGUgc3RydWN0ICovCj4gPj4gKwo+ID4+ICsJCWh3 X3N0YXRlLT5iYXNlLm1vZGUudHlwZSA9IHBpcGVfY29uZmlnLT5iYXNlLm1vZGUudHlwZSA9Cj4g Pj4gKwkJaHdfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS50eXBlID0gcGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZS50eXBlOwo+ID4+ICsKPiA+PiArCQkvKiBjbG9jayByZWFkb3V0IGNh biBiZSBhcHByb3hpbWF0ZSwganVzdCBjb3B5IGl0LiAqLwo+ID4+ICsJCWh3X3N0YXRlLT5iYXNl Lm1vZGUuY2xvY2sgPSBwaXBlX2NvbmZpZy0+YmFzZS5tb2RlLmNsb2NrID0gcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5jbG9jazsKPiA+IFdoeSBkbyB3ZSBzdGlsbCBuZWVkIHRoaXM/ IElmIHdlIHVzZSBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlIHRvIGNvbXB1dGUKPiA+IG1vZGVf Y2hhbmdlZCB0aGVuIHdlIGhvcGVmdWxseSBkb24ndCBuZWVkIHRvIGhhY2sgYXJvdW5kIHRoaW5n cyBhbnkgbW9yZS4KPiA+IEkgZ3Vlc3MgdGhpcyBpcyB3aGVyZSB3ZSBuZWVkIHlvdXIgcGxhbiB0 byBzcGxpdCBvdXQgY29ubmVjdG9yX2NoYW5nZWQKPiA+IGZyb20gbW9kZV9jaGFuZ2VkIGFuZCB0 aGVuIHJlcGxhY2UgdGhlIG1vZGVfY2hhbmdlZCBjb21wdXRlZCBieSB0aGUKPiA+IGhlbHBlcnMg Ynkgd2hhdCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlIHRoaW5ncyBpcyBqdXN0aWZpZWQuCj4g TXkgZGlzcGxheSBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgY2xvY2sgYW5kIG1vZGUtPnR5cGUg aW4gZWRpZC4gUGF0Y2hpbmcgdGhpcyB1cCBwcmV2ZW50ZWQgdGhlIG1vZGVzZXQuCj4gVGhlcmUg Y2FuIGFsc28gYmUgb3RoZXIgcmVhc29ucyBmb3IgbW9kZXNldCwgbGlrZSBDRENMSyBjaGFuZ2Vz LgoKWWVhaCBJIGtub3cgd2UgbmVlZCB0byBwYXRjaCB0aGlzIHVwLCBidXQgd2Ugc2hvdWxkIHBh dGNoIHVwIHRoZSByZXF1ZXN0ZWQKbW9kZS4gSW5zdGVhZCBhbGxvd2luZyBzb21lIHNsaWdodCBt aXNtYXRjaGVzIGluIHRoZSBhZGp1c3RlZCBtb2RlIChhbmQKY29weWluZyBvdmVyIHRoZSBkcGxs IHN0YXRlIGlmIHRoYXQncyB0aGUgY2FzZSkgc2hvdWxkIGJlIGFsbCB0aGF0J3MKbmVlZGVkLgoK TWF5YmUgaGVscGVycyBzaG91bGQgYWxzbyBsb29rIGF0IGFkanVzdGVkIG1vZGVzIGluc3RlYWQg b2YgcmVxdWVzdGVkCm1vZGVzPyBXb3VsZCBiZSBhIGJpZyBjaGFuZ2UsIGJ1dCBJIHRoaW5rIGl0 IG1ha2VzIHNlbnNlIGluIGdlbmVyYWwgLQphZGp1c3RlZF9tb2RlIGlzIHRoZSBvbmUgdGhlIGNy dGMgaXMgc3VwcG9zZWQgdG8gb3V0cHV0LiBUaGF0IHdvdWxkIGFsc28KaGVscCB3aXRoIGhhbmRs aW5nIHBmaXQgY2hhbmdlcyBjb3JyZWN0bHkgaW4gaTkxNS4KCj4gCj4gPj4gKwl9Cj4gPj4gK30K PiA+PiArCj4gPj4gIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVs X2NydGMgKmNydGMsCj4gPj4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCj4gPj4gIAkJCQlib29sIGZvcmNlX3Jlc3RvcmUpCj4gPj4gQEAgLTE1MTM1LDM3ICsxNTIy MCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ID4+ICAJCXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSA9ICEhZW5hYmxlOwo+ID4+ ICAJfQo+ID4+ICAKPiA+PiAtCWlmIChod19zdGF0ZS0+cXVpcmtzICYgUElQRV9DT05GSUdfUVVJ UktfV1JPTkdfUExBTkUpIHsKPiA+PiAtCQlpZiAoZm9yY2VfcmVzdG9yZSB8fCBpOTE1LmZhc3Ri b290KQo+ID4+IC0JCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ID4+ IC0JCWVsc2UKPiA+PiAtCQkJcGlwZV9jb25maWctPmJhc2UuYWN0aXZlID0gZmFsc2U7Cj4gPj4g LQl9Cj4gPj4gLQo+ID4+IC0JLyogWFhYOiBUaGlzIGlzIG5lZWRzIHRvIGJlIG1vZGlmaWVkIGZv ciBtYWtpbmcgZmFzdGJvb3QgcG9zc2libGUKPiA+PiAtCSAqIGJ5IGRlZmF1bHQgd2l0aG91dCBy ZXF1aXJpbmcgYSBtb2Rlc2V0Lgo+ID4+IC0JICovCj4gPj4gLQlpZiAoaHdfc3RhdGUtPmJhc2Uu YWN0aXZlICYmIHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSkgewo+ID4+IC0JCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlIHN3X3N0YXRlOwo+ID4+IC0KPiA+PiAtCQltZW1zZXQoJnN3X3N0YXRlLCAw LCBzaXplb2Yoc3dfc3RhdGUpKTsKPiA+PiAtCQlzd19zdGF0ZS5iYXNlID0gcGlwZV9jb25maWct PmJhc2U7Cj4gPj4gLQkJc3dfc3RhdGUuc2NhbGVyX3N0YXRlID0gcGlwZV9jb25maWctPnNjYWxl cl9zdGF0ZTsKPiA+PiAtCQlzd19zdGF0ZS5zaGFyZWRfZHBsbCA9IHBpcGVfY29uZmlnLT5zaGFy ZWRfZHBsbDsKPiA+PiAtCQlzd19zdGF0ZS5kcGxsX2h3X3N0YXRlID0gcGlwZV9jb25maWctPmRw bGxfaHdfc3RhdGU7Cj4gPj4gLQkJc3dfc3RhdGUuZGRpX3BsbF9zZWwgPSBwaXBlX2NvbmZpZy0+ ZGRpX3BsbF9zZWw7Cj4gPj4gLQo+ID4+IC0JCWludGVsX21vZGVzZXRfcGlwZV9jb25maWcoJmNy dGMtPmJhc2UsICZzd19zdGF0ZSk7Cj4gPj4gLQo+ID4+IC0JCS8qIENoZWNrIGlmIHdlIG5lZWQg dG8gZm9yY2UgYSBtb2Rlc2V0ICovCj4gPj4gLQkJaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21w YXJlKGRldiwgJnN3X3N0YXRlLCBod19zdGF0ZSwgIWk5MTUuZmFzdGJvb3QpKSB7Cj4gPj4gLQkJ CURSTV9ERUJVR19LTVMoInN3IGFuZCBodyBzdGF0ZSBkaWZmZXIsIGZvcmNpbmcgbW9kZXNldFxu Iik7Cj4gPj4gLQkJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gPj4g LQkJfSBlbHNlIHsKPiA+PiAtCQkJKnBpcGVfY29uZmlnID0gc3dfc3RhdGU7Cj4gPj4gLQkJfQo+ ID4+IC0JfQo+ID4+ICsJaWYgKGh3X3N0YXRlLT5xdWlya3MgJiBQSVBFX0NPTkZJR19RVUlSS19X Uk9OR19QTEFORSkKPiA+PiArCQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlX2NoYW5nZWQgPSB0cnVl Owo+ID4+ICAKPiA+PiArCWVsc2UgaWYgKGh3X3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiBwaXBlX2Nv bmZpZy0+YmFzZS5hY3RpdmUpCj4gPj4gKwkJaW50ZWxfZmFzdGJvb3RfY2FsY19tb2Rlc2V0KGNy dGMsIGh3X3N0YXRlLCBwaXBlX2NvbmZpZyk7Cj4gPj4gIAo+ID4+ICAJaWYgKGRldl9wcml2LT5x dWlya3MgJiBRVUlSS19QSVBFQV9GT1JDRSAmJiAhaHdfc3RhdGUtPmJhc2UuYWN0aXZlICYmCj4g Pj4gIAkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2 ZSkgewo+ID4+IEBAIC0xNTU4NCw2ICsxNTY0Myw3IEBAIGludGVsX21vZGVzZXRfc2V0dXBfaHdf c3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBmb3JjZV9yZXN0b3JlKQo+ID4+ICAJ CWNydGNfc3RhdGUtPnBsYW5lc19jaGFuZ2VkID0gZmFsc2U7Cj4gPj4gIAo+ID4+ICAJCWlmIChj cnRjLT5zdGF0ZS0+ZW5hYmxlKSB7Cj4gPj4gKwkJCW1lbXNldCgmY3J0Yy0+bW9kZSwgMCwgc2l6 ZW9mKGNydGMtPm1vZGUpKTsKPiA+PiAgCQkJaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKCZj cnRjLT5tb2RlLAo+ID4+ICAJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOwo+ ID4+ICAJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGMtPnN0YXRlLT5hZGp1c3Rl ZF9tb2RlLAo+ID4+IEBAIC0xNTY3OCw5ICsxNTczOCwxMiBAQCB2b2lkIGludGVsX21vZGVzZXRf Z2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YQo+ID4+ICAJCWludCBqOwo+ID4+ICAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBj LT5wcmltYXJ5Owo+ID4+ICAKPiA+PiArCQlpZiAoIWMtPnN0YXRlLT5hY3RpdmUpCj4gPj4gKwkJ CWNvbnRpbnVlOwo+ID4+ICsKPiA+PiAgCQlvYmogPSBpbnRlbF9mYl9vYmoocHJpbWFyeS0+c3Rh dGUtPmZiKTsKPiA+PiAgCQlpZiAob2JqID09IE5VTEwpCj4gPj4gLQkJCWdvdG8gZGlzYWJsZTsK PiA+PiArCQkJY29udGludWU7Cj4gPj4gIAo+ID4+ICAJCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+PiAgCQlyZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihwcmltYXJ5 LCBwcmltYXJ5LT5zdGF0ZS0+ZmIsCj4gPj4gQEAgLTE1NzE1LDYgKzE1Nzc4LDggQEAgdm9pZCBp bnRlbF9tb2Rlc2V0X2dlbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGEKPiA+PiAgCQkgKi8KPiA+PiAgCj4gPj4gIGRpc2FibGU6Cj4gPj4g KwkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWldIE5vIGZiIG9yIGZvcmNlZCBpbmFjdGl2ZSwgZGlz YWJsaW5nLlxuIiwKPiA+PiArCQkJICAgICAgYy0+YmFzZS5pZCk7Cj4gPj4gIAkJY3J0Y19zdGF0 ZS0+YWN0aXZlID0gY3J0Y19zdGF0ZS0+ZW5hYmxlID0gZmFsc2U7Cj4gPj4gIAo+ID4+ICAJCXJl dCA9IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoY3J0Y19zdGF0ZSwgTlVMTCk7Cj4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gPj4gaW5kZXggNmFjNDk5MGEwYzExLi4yYzQ5 NGQ3ODY1MmEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJk ZXYuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiA+PiBA QCAtNDg2LDE1ICs0ODYsMTAgQEAgcmV0cnk6Cj4gPj4gIAkJCSAqIGNvbmZpZywgbm90IHRoZSBp bnB1dCBtb2RlLCB3aGljaCBpcyB3aGF0IGNydGMtPm1vZGUKPiA+PiAgCQkJICogdXN1YWxseSBj b250YWlucy4gQnV0IHNpbmNlIG91ciBjdXJyZW50IGZhc3Rib290Cj4gPj4gIAkJCSAqIGNvZGUg cHV0cyBhIG1vZGUgZGVyaXZlZCBmcm9tIHRoZSBwb3N0LXBmaXQgdGltaW5ncwo+ID4+IC0JCQkg KiBpbnRvIGNydGMtPm1vZGUgdGhpcyB3b3JrcyBvdXQgY29ycmVjdGx5LiBXZSBkb24ndAo+ID4+ IC0JCQkgKiB1c2UgaHdtb2RlIGFueXdoZXJlIHJpZ2h0IG5vdywgc28gdXNlIGl0IGZvciB0aGlz Cj4gPj4gLQkJCSAqIHNpbmNlIHRoZSBmYiBoZWxwZXIgbGF5ZXIgd2FudHMgYSBwb2ludGVyIHRv Cj4gPj4gLQkJCSAqIHNvbWV0aGluZyB3ZSBvd24uCj4gPj4gKwkJCSAqIGludG8gY3J0Yy0+bW9k ZSB0aGlzIHdvcmtzIG91dCBjb3JyZWN0bHkuCj4gPj4gIAkJCSAqLwo+ID4+ICAJCQlEUk1fREVC VUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+ID4+ ICAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiA+PiAtCQkJaW50ZWxfbW9kZV9mcm9tX3Bp cGVfY29uZmlnKCZlbmNvZGVyLT5jcnRjLT5od21vZGUsCj4gPj4gLQkJCQkJCSAgICB0b19pbnRl bF9jcnRjKGVuY29kZXItPmNydGMpLT5jb25maWcpOwo+ID4+ICAJCQltb2Rlc1tpXSA9ICZlbmNv ZGVyLT5jcnRjLT5od21vZGU7Cj4gPj4gIAkJfQo+ID4+ICAJCWNydGNzW2ldID0gbmV3X2NydGM7 Cj4gPj4gQEAgLTU4NCw5ICs1NzksNiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmRldl9pbml0X2Jp b3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+PiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+ID4+ICAJdW5zaWduZWQgaW50IG1heF9zaXplID0gMDsKPiA+PiAgCj4gPj4gLQlp ZiAoIWk5MTUuZmFzdGJvb3QpCj4gPj4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gSSB0aGluayBpdCdk IGJlIHVzZWZ1bCB0byBzcGxpdCB0aGUgZmJkZXYgcGFydCBvZiB0aGUgZmFzdGJvb3QgcmVtb3Zh bCBvdXQKPiA+IGludG8gYSBzZXBhcmF0ZSBwYXRjaC4gT3IgZG8gSSBtaXNzIGEgZGVwZW5jeSBo ZXJlPyBBc3N1bWluZyBvZmMgdGhhdCB3ZQo+ID4gZW5hYmxlIHRoZSBwZml0IHRyaWNrIGZvciBt b2Rlc2V0cyBpbiBnZW5lcmFsLgo+ID4KPiBJIHRoaW5rIHlvdSBkaWQgbWlzcyBhIGRlcGVuZGVu Y3kuIE5vdCBjb21wZXRlbHkgc3VyZSB0aG91Z2guLgoKV2VsbCB5ZWFoIHRoYXQncyBsaWtlbHks IGJ1dCBzaW5jZSBJIGRpZG4ndCBzZWUgaXQgeW91IG5lZWQgdG8gaGVscCBtZSBvdXQKOy0pCi1E YW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==