From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/13] drm/i915: Split the gamma/csc enable bits from the plane_ctl() function Date: Thu, 17 Jan 2019 18:34:42 +0200 Message-ID: <20190117163442.GG20097@intel.com> References: <20190111170823.4441-1-ville.syrjala@linux.intel.com> <20190111170823.4441-3-ville.syrjala@linux.intel.com> <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> <20190114171110.GD20097@intel.com> <20190114191132.GF20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01B7C6F4EB for ; Thu, 17 Jan 2019 16:34:45 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKYW4gMTYsIDIwMTkgYXQgMDU6MTE6MjZQTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBJbnRlbC1n ZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmddIE9uIEJl aGFsZiBPZgo+ID5WaWxsZSBTeXJqw6Rsw6QKPiA+U2VudDogVHVlc2RheSwgSmFudWFyeSAxNSwg MjAxOSAxMjo0MiBBTQo+ID5UbzogUm9wZXIsIE1hdHRoZXcgRCA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KPiA+Q2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+U3ViamVj dDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSCAwMi8xM10gZHJtL2k5MTU6IFNwbGl0IHRoZSBnYW1t YS9jc2MgZW5hYmxlIGJpdHMKPiA+ZnJvbSB0aGUgcGxhbmVfY3RsKCkgZnVuY3Rpb24KPiA+Cj4g Pk9uIE1vbiwgSmFuIDE0LCAyMDE5IGF0IDA3OjExOjEwUE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzD pCB3cm90ZToKPiA+PiBPbiBGcmksIEphbiAxMSwgMjAxOSBhdCAwNDo0MTozN1BNIC0wODAwLCBN YXR0IFJvcGVyIHdyb3RlOgo+ID4+ID4gT24gRnJpLCBKYW4gMTEsIDIwMTkgYXQgMDc6MDg6MTJQ TSArMDIwMCwgVmlsbGUgU3lyamFsYSB3cm90ZToKPiA+PiA+ID4gRnJvbTogVmlsbGUgU3lyasOk bMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+PiA+ID4KPiA+PiA+ID4gT24g ZzR4KyB0aGUgcGlwZSBnYW1tYSBlbmFibGUgYml0IGZvciB0aGUgcHJpbWFyeSBwbGFuZSBhZmZl Y3RzCj4gPj4gPiA+IHRoZSBwaXBlIGJvdHRvbSBjb2xvciBhcyB3ZWxsLiBUaGUgc2FtZSBmb3Ig dGhlIHBpcGUgY3NjIGVuYWJsZQo+ID4+ID4gPiBiaXQgb24gaWxrKy4gVGh1cyB3ZSBtdXN0IGNv bmZpZ3VyZSB0aG9zZSBiaXRzIGNvcnJlY3RseSBldmVuIHdoZW4KPiA+PiA+ID4gdGhlIHByaW1h cnkgcGxhbmUgaXMgZGlzYWJsZWQuCj4gPj4gPgo+ID4+ID4gVGhpcyBpcyBvbmx5IHRydWUgZm9y IDxnZW45LCByaWdodD8gU3RhcnRpbmcgd2l0aCBnZW45LCB3ZSBoYXZlCj4gPj4gPiBkZWRpY2F0 ZWQgYml0cyB0aGF0IGNvbnRyb2wgdGhpcywgc28gSSBkb24ndCB0aGluayB0aGUgcHJpbWF5Cj4g Pj4gPiBwbGFuZSdzIHNldHRpbmdzIHNob3VsZCBoYXZlIGFueSBpbXBhY3Qgd2hlbiBkaXNhYmxl ZC4gIEkuZS4sIHdlCj4gPj4gPiBhbHNvIG5lZWQgdGhlIGJpdHMgc2V0IGluIHRoaXMgcGF0Y2g6 Cj4gPj4gPgo+ID4+ID4gICAgICAgICBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcv cGF0Y2gvMjcxMTA5Lwo+ID4+Cj4gPj4gWWVzLiBJIGhhZCB0aGUgc2FtZSBiaXRzIChvciBzb21l dGhpbmcgc2ltaWxhciBpbiBhIGxhdGVyIHBhdGNoIGluIHRoZQo+ID4+IHNlcmllcykuIEJ1dCB3 ZSBzaG91bGQgcHJvYmFibHkganVzdCBsYW5kIHlvdXIgc3R1ZmYgZmlyc3QuCj4gPj4KPiA+PiA+ Cj4gPj4gPiA+IFRvIG1ha2UgdGhlIGZlYXNpYmxlIGxldCdzIHNwbGl0IHRob3NlIHNldHRpbmdz IGZyb20gdGhlCj4gPj4gPiA+IHBsYW5lX2N0bCgpIGZ1bmN0aW9uIGludG8gYSBzZXByYXRlIGZ1 bmNpdG9uIHRoYXQgd2UgY2FuIGNhbGwgZnJvbQo+IAo+IFR5cG8gaGVyZS4KPiAKPiA+PiA+ID4g dGhlIC0+ZGlzYWJsZV9wbGFuZSgpIGhvb2sgYXMgd2VsbC4KPiA+PiA+Cj4gPj4gPiBJcyBjYWxs aW5nIGl0IGZyb20gLT5kaXNhYmxlX3BsYW5lKCkgZW5vdWdoPyAgSWYgd2UganVzdCBkaXNhYmxl IHRoZQo+ID4+ID4gcHJpbWFyeSBwbGFuZSwgdGhlbiB0aG9zZSBiaXRzIHdpbGwgcmVtYWluIHNl dCB3aGlsZSB0aGUgY3J0Ywo+ID4+ID4gcmVtYWlucyBhY3RpdmUuICBCdXQgaWYgeW91IHRoZW4g ZGlzYWJsZSB0aGUgd2hvbGUgY3J0YyBhbmQKPiA+PiA+IHJlLWVuYWJsZSBpdCBhZ2FpbiBsYXRl ciwgd29uJ3Qgd2UgaGF2ZSBsb3N0IHRoZSBiaXRzIGF0IHRoYXQgcG9pbnQ/Cj4gCj4gSnVzdCBj dXJpb3VzLCBvbmNlIGNydGMgaXMgcmUtZW5hYmxlZCBwbGFuZSBlbmFibGUgd2lsbCBldmVudHVh bGx5IGhhcHBlbgo+IHdoZXJlIHRoaXMgY2FuIGFnYWluIGJlIGVuYWJsZWQuIFNvIGlzIHRoaXMg dGhlIGNvcm5lciBjYXNlIHdoZXJlIGNydGMgZ2V0cyAKPiBlbmFibGVkIGFuZCBwcmltYXJ5IHBs YW5lIGlzIG5vdCBlbmFibGVkIGFuZCBpdCB3b3JrcyB3aXRoIGp1c3Qgb3ZlcmxheXMgPwoKWWVz LgoKPiAKPiBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3aHkgbm90IGp1c3QgZXhwbGljaXRseSBlbmFi bGUgdGhlc2Ugc2VwYXJhdGVseSBpbiBjcnRjIGVuYWJsZQo+IHNlcXVlbmNlIGFuZCBub3QgcmVs eSBvbiBwcmltYXJ5IHBsYW5lIGVuYWJsaW5nIHBhdGggdG8gc2V0IHRoaXMgZm9yIHVzLiBXaGF0 Cj4gY291bGQgYmUgdGhlIHBvdGVudGlhbCBwcm9ibGVtIGlmIHdlIGRvIHRoaXMgPwoKV2UgaGF2 ZSB0byBjb25maWd1cmUgdGhlbSB3aGVuZXZlciBnYW1tYV9lbmFibGUvY3NjX2VuYWJsZSBjaGFu Z2UuIE5vdApqdXN0IGNydGNfZW5hYmxlLiBTbyB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIHRoZSBE U1BDTlRSIHJlZyB3cml0ZXMgaW4KY29sb3JfY29tbWl0KCkvc29tZXRoaW5nIHdoaWNoIHdvdWxk IGFsc28gbWVhbiBkb2luZyBhbiB1Z2x5IFJNVyBzaW5jZQp3ZSB3b3VsZG4ndCBoYXZlIHRoZSBw bGFuZSBzdGF0ZSBhcm91bmQuIE11Y2ggY2xlYW5lciB0byBqdXN0IGFkZCB0aGUKcGxhbmUgdG8g dGhlIHN0YXRlIGFuZCBsZXQgdGhlIG5vcm1hbCBjb2RlcGF0aCBoYW5kbGUgaXQuCgo+IAo+ID4+ Cj4gPj4gSG1tLiBZZXMsIHByb2JhYmx5Lgo+ID4+Cj4gPj4gSnVzdCBhZGRpbmcgYSBuZWVkc19t b2Rlc2V0KCkgY2hlY2sgaW50bwo+ID4+IGludGVsX2NvbG9yX2FkZF9hZmZlY3RlZF9wbGFuZXMo KSAoaW50cm9kdWNlZCBpbiBhIGxhdGVyIHBhdGNoKSBjb3VsZAo+ID4+IGJlIG9uZSB3YXkuIEJ1 dCB0aGF0IG1lYW5zIHRoZSBwbGFuZSBjb250cm9sIHJlZyB3b24ndCBiZSB1cGRhdGVkCj4gPj4g YmVmb3JlIHRoZSBwaXBlIGlzIGFscmVhZHkgYWN0aXZlLiBTbyB3ZSBtaWdodCBuZWVkIGEgc3Bl Y2lhbCBjYXNlIGZvcgo+ID4+IHRoYXQgdG9vLgo+ID4+Cj4gPj4gVGhhdCBzYWlkLCBJIGtpbmRh IGhhdGUgdGhlIHBpcGUgZW5hYmxlIHNwZWNpYWwgY2FzZXMgZm9yIHRoZSBjb2xvcgo+ID4+IG1h bmFnZW1lbnQgc3R1ZmYuIFNvIEknbSB3b25kZXJpbmcgaWYgd2UgY291bGQgZWxpbWluYXRlIGl0 IGFsbCBhbmQKPiA+PiBqdXN0IHJlbHkgb24gdGhlIG5vcm1hbCBwaXBlK3BsYW5lIHVwZGF0ZSB0 byBkbyB0aGluZ3MgY29ycmVjdGx5LiBCdXQKPiA+PiB0byBtYWtlIHRoYXQgY29uc2lzdGVudCB3 ZSBtaWdodCBoYXZlIHRvIGhhdmUgYW5vdGhlciBzcGVjaWFsIGNhc2UgdG8KPiA+PiBkaXNhYmxl IGdhbW1hL2V0Yy4gcHJpb3IgdG8gZW5hYmxpbmcgdGhlIHBpcGUgc28gdGhhdCBpdCBjYW4gYWxs IGJlCj4gPj4gZW5hYmxlZCBhdG9taWNhbGx5IGxhdGVyLiBIbW0uIEkgc3VwcG9zZSB0aGF0IGNv dWxkIGJlIGFjaGlldmVkIGJ5Cj4gPj4gY2xlYXJpbmcgYWxsIHJlbGV2YW50IGNvbnRyb2wgYml0 cyBpbiBkaXNhYmxlX3BsYW5lKCkgKG9yIGluCj4gPj4gY3J0Y19kaXNhYmxlKCkgZm9yIHNrbCsp IGlmIHRoZSBjcnRjIGlzIG5vIGxvbmdlciBhY3RpdmUuCj4gPj4KPiA+PiBBbmQgSSBndWVzcyB3 ZSBjb3VsZCBzdGlsbCBrZWVwIHRoZSAubG9hZF9sdXRzKCkgc3BlY2lhbCBjYXNlIHNpbmNlCj4g Pj4gZ3VhcmFudGVlaW5nIHRoZSBhdG9taWNpdHkgZm9yIHRoYXQgaXNuJ3QgYXMgZWFzeS4KPiA+ Pgo+ID4+IEl0IHdvdWxkIG1lYW4gdGhlIHBpcGUgYWx3YXN5IGNvbWVzIHVwIHdpdGggZ2FtbWEg YW5kIGNzYyBkaXNhYmxlZC4KPiA+PiBCdXQgc2luY2UgaXQncyBhbGwgc29tZSBzaGFkZSBvZiBi bGFjayBhbnl3YXkgSSBndWVzcyBpdCBzaG91bGRuJ3QgYmUKPiA+PiBhIGJpZyBkZWFsLgo+ID4K PiA+QmFoLiBUaGF0IHdvbid0IGFjdHVhbGx5IHdvcmsgd2l0aG91dCBtb3JlIGhhY2tzIGZvciB0 aGUgY2FzZSB3aGVyZSB0aGUgY3J0Ywo+ID53YXMgZW5hYmxlZCBhbHJlYWR5LiBJIGd1ZXNzIEkn bGwganVzdCBoYXZlIHRvIHN0aWNrIGFuIGV4cGxpY2l0IHByaW1hcnktCj4gPj5kaXNhYmxlX3Bs YW5lKCkgY2FsbCBpbnRvIHRoZSBjcnRjX2VuYWJsZSgpIHBhdGggOigKPiAKPiA+Pgo+ID4+ID4K PiA+PiA+Cj4gPj4gPiBNYXR0Cj4gPj4gPgo+ID4+ID4gPgo+ID4+ID4gPiBGb3IgY29uc2lzdGVu Y3kgd2UnbGwgZG8gdGhhdCBvbiBhbGwgdGhlIHBsYW5lIHR5cGVzLiBXaGlsZSB0aGF0Cj4gPj4g PiA+IGhhcyBubyByZWFsIGJlbmVmaXRzIGF0IHRoaXMgdGltZSwgaXQnbGwgYmVjb21lIHVzZWZ1 bCB3aGVuIHdlCj4gPj4gPiA+IHN0YXJ0IHRvIGNvbnRyb2wgdGhlIHBpcGUgZ2FtbWEvY3NjIGVu YWJsZSBiaXRzIGR5bmFtaWNhbGx5IHdoZW4KPiA+PiA+ID4gd2Ugb3ZlcmhhdWwgdGhlIGNvbG9y IG1hbmFnZW1lbnQgY29kZS4KPiA+PiA+ID4KPiA+PiA+ID4gT24gcHJlLWc0eCB0aGVyZSBkb2Vz bid0IGFwcGVhciB0byBiZSBhbnkgd2F5IHRvIGdhbW1hIGNvcnJlY3QgdGhlCj4gPj4gPiA+IHBp cGUgYm90dG9tIGNvbG9yLCBidXQgc3RpY2tpbmcgdG8gdGhlIHNhbWUgcGF0dGVybiBkb2Vzbid0 IGh1cnQuCj4gPj4gPiA+IEFuZCBpdCdsbCBzdGlsbCBoZWxwIHVzIHRvIGRvIGNydGMgc3RhdGUg cmVhZG91dCBjb3JyZWN0bHkgZm9yIHRoZQo+ID4+ID4gPiBwaXBlIGdhbW1hIGVuYWJsZSBiaXQg Zm9yIHRoZSBjb2xvciBtYW5hZ2VtZW50IG92ZXJoYXVsLgo+ID4+ID4gPgo+ID4+ID4gPiBBbiBh bHRlcm5hdGl2ZSBhcHBvcmFjaCB3b3VsZCBiZSB0byBzdGlsbCBwcmVjb21wdXRlIHRoZXNlIGJp dHMKPiAKPiBUeXBvIGluIGFwcHJvYWNoLgo+IAo+ID4+ID4gPiBpbnRvIHBsYW5lX3N0YXRlLT5j dGwsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgdGhhdCB3ZSBydW4gdGhyb3VnaAo+ID4+ID4gPiB0 aGUgcGxhbmUgY2hlY2sgZXZlbiB3aGVuIHRoZSBwbGFuZSBpc24ndCBsb2dpY2FsbHkgZW5hYmxl ZCBvbiBhbnkKPiA+PiA+ID4gY3J0Yy4gQ3VycmVudGx5IHRoYXQgY29uZGl0aW9uIGNhdXNlcyB1 cyB0byBzaG9ydCBjaXJjdWl0IHRoZQo+ID4+ID4gPiBlbnRpcmUgdGhpbmcgYW5kIG5vdCBjYWxs IC0+Y2hlY2tfcGxhbmUoKS4KPiA+PiA+ID4gVGhlcmUgd291bGQgYWxzbyBiZSBzb21lIGNoaWNr ZW4gYW5kIGVnZyBwcm9ibGVtcyB3aXRoCj4gPj4gPiA+IC0+Y2hlY2tfcGxhbmUoKSB2cy4gY3J0 YyBjb2xvciBzdGF0ZSBjaGVjayB0aGF0IHdvdWxkCj4gPj4gPiA+IHJlcXVpdGUgc3BsaXR0aW5n IGNlcnRhaW4gdGhpbmdzIGludG8gbXVsdGlwbGUgc3RlcHMuCj4gPj4gPiA+IFNvIGFsbCBpbiBh bGwgdGhpcyBzZWVtcyBsaWtlIHRoZSBlYXNpZXIgcm91dGUuCj4gPj4gPiA+Cj4gPj4gPiA+IFNp Z25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gPj4gPiA+IC0tLQo+ID4+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ID4+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAzICstCj4gPj4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgNTQgKysrKysrKystLS0KPiA+PiA+ID4g IDMgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQo+ID4+ ID4gPgo+ID4+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g Pj4gPiA+IGluZGV4IDVkYzBkZTg5YzQ5ZS4uYTM4NzFkYjQ3MDNiIDEwMDY0NAo+ID4+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+PiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gPiA+IEBAIC0zMTgwLDI4 ICszMTgwLDM4IEBAIGk5eHhfcGxhbmVfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUKPiA+ KnBsYW5lLAo+ID4+ID4gPiAgCX0KPiA+PiA+ID4gIH0KPiA+PiA+ID4KPiA+PiA+ID4gK3N0YXRp YyB1MzIgaTl4eF9wbGFuZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ ID4+ID4gPiArKmNydGNfc3RhdGUpIHsKPiA+PiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiA+PiA+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsK PiA+PiA+ID4gKwl1MzIgZHNwY250ciA9IDA7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKwlkc3BjbnRy IHw9IERJU1BQTEFORV9HQU1NQV9FTkFCTEU7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKwlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+PiA+ID4gKwkJ ZHNwY250ciB8PSBESVNQUExBTkVfUElQRV9DU0NfRU5BQkxFOwo+ID4+ID4gPiArCj4gPj4gPiA+ ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1KQo+ID4+ID4gPiArCQlkc3BjbnRyIHw9IERJ U1BQTEFORV9TRUxfUElQRShjcnRjLT5waXBlKTsKPiA+PiA+ID4gKwo+ID4+ID4gPiArCXJldHVy biBkc3BjbnRyOwo+ID4+ID4gPiArfQo+ID4+ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMgdTMyIGk5 eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ID4+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KSAgewo+ID4+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPj4g PiA+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gPj4gPiA+IC0J c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gPj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYjsKPiA+PiA+ID4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFu ZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiA+PiA+ID4gIAl1MzIgZHNwY250cjsKPiA+PiA+ID4K PiA+PiA+ID4gLQlkc3BjbnRyID0gRElTUExBWV9QTEFORV9FTkFCTEUgfCBESVNQUExBTkVfR0FN TUFfRU5BQkxFOwo+ID4+ID4gPiArCWRzcGNudHIgPSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiA+ PiA+ID4KPiA+PiA+ID4gIAlpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJU19HRU4oZGV2X3ByaXYs IDUpIHx8Cj4gPj4gPiA+ICAJICAgIElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdF KGRldl9wcml2KSkKPiA+PiA+ID4gIAkJZHNwY250ciB8PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVE X0RJU0FCTEU7Cj4gPj4gPiA+Cj4gPj4gPiA+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8 IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gPj4gPiA+IC0JCWRzcGNudHIgfD0gRElTUFBMQU5F X1BJUEVfQ1NDX0VOQUJMRTsKPiA+PiA+ID4gLQo+ID4+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNSkKPiA+PiA+ID4gLQkJZHNwY250ciB8PSBESVNQUExBTkVfU0VMX1BJUEUoY3J0 Yy0+cGlwZSk7Cj4gPj4gPiA+IC0KPiA+PiA+ID4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1h dCkgewo+ID4+ID4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiA+PiA+ID4gIAkJZHNwY250ciB8 PSBESVNQUExBTkVfOEJQUDsKPiA+PiA+ID4gQEAgLTMzMjksMTEgKzMzMzksMTMgQEAgc3RhdGlj IHZvaWQgaTl4eF91cGRhdGVfcGxhbmUoc3RydWN0Cj4gPmludGVsX3BsYW5lICpwbGFuZSwKPiA+ PiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5l LT5iYXNlLmRldik7Cj4gPj4gPiA+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBw bGFuZS0+aTl4eF9wbGFuZTsKPiA+PiA+ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+PiA+ID4g LQl1MzIgZHNwY250ciA9IHBsYW5lX3N0YXRlLT5jdGw7Cj4gPj4gPiA+ICAJaW50IHggPSBwbGFu ZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKPiA+PiA+ID4gIAlpbnQgeSA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS55Owo+ID4+ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4g Pj4gPiA+ICAJdTMyIGRzcGFkZHJfb2Zmc2V0Owo+ID4+ID4gPiArCXUzMiBkc3BjbnRyOwo+ID4+ ID4gPiArCj4gPj4gPiA+ICsJZHNwY250ciA9IHBsYW5lX3N0YXRlLT5jdGwgfCBpOXh4X3BsYW5l X2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ID4+ID4gPgo+ID4+ID4gPiAgCWxpbmVhcl9vZmZzZXQg PSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgcGxhbmVfc3RhdGUsIDApOwo+ID4+ID4gPgo+ ID4+ID4gPiBAQCAtMzM5MywxMCArMzQwNSwyMyBAQCBzdGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVf cGxhbmUoc3RydWN0Cj4gPmludGVsX3BsYW5lICpwbGFuZSwKPiA+PiA+ID4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gPj4g PiA+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9wbGFuZTsK PiA+PiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4+ID4gPiArCXUzMiBkc3BjbnRy Owo+ID4+ID4gPiArCj4gPj4gPiA+ICsJLyoKPiA+PiA+ID4gKwkgKiBEU1BDTlRSIHBpcGUgZ2Ft bWEgZW5hYmxlIG9uIGc0eCsgYW5kIHBpcGUgY3NjCj4gPj4gPiA+ICsJICogZW5hYmxlIG9uIGls aysgYWZmZWN0IHRoZSBwaXBlIGJvdHRvbSBjb2xvciBhcwo+ID4+ID4gPiArCSAqIHdlbGwsIHNv IHdlIG11c3QgY29uZmlndXJlIHRoZW0gZXZlbiBpZiB0aGUgcGxhbmUKPiA+PiA+ID4gKwkgKiBp cyBkaXNhYmxlZC4KPiA+PiA+ID4gKwkgKgo+ID4+ID4gPiArCSAqIE9uIHByZS1nNHggdGhlcmUg aXMgbm8gd2F5IHRvIGdhbW1hIGNvcnJlY3QgdGhlCj4gPj4gPiA+ICsJICogcGlwZSBib3R0b20g Y29sb3IgYnV0IHdlJ2xsIGtlZXAgb24gZG9pbmcgdGhpcwo+ID4+ID4gPiArCSAqIGFueXdheS4K PiA+PiA+ID4gKwkgKi8KPiA+PiA+ID4gKwlkc3BjbnRyID0gaTl4eF9wbGFuZV9jdGxfY3J0Yyhj cnRjX3N0YXRlKTsKPiA+PiA+ID4KPiA+PiA+ID4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3By aXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gPj4gPiA+Cj4gPj4gPiA+IC0JSTkxNV9XUklU RV9GVyhEU1BDTlRSKGk5eHhfcGxhbmUpLCAwKTsKPiA+PiA+ID4gKwlJOTE1X1dSSVRFX0ZXKERT UENOVFIoaTl4eF9wbGFuZSksIGRzcGNudHIpOwo+ID4+ID4gPiAgCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpCj4gPj4gPiA+ICAJCUk5MTVfV1JJVEVfRlcoRFNQU1VSRihpOXh4X3BsYW5l KSwgMCk7Cj4gPj4gPiA+ICAJZWxzZQo+ID4+ID4gPiBAQCAtMzYzMSw2ICszNjU2LDIwIEBAIHN0 YXRpYyB1MzIgY25sX3BsYW5lX2N0bF9mbGlwKHVuc2lnbmVkIGludAo+ID5yZWZsZWN0KQo+ID4+ ID4gPiAgCXJldHVybiAwOwo+ID4+ID4gPiAgfQo+ID4+ID4gPgo+ID4+ID4gPiArdTMyIHNrbF9w bGFuZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiA+PiA+ID4gK3sKPiA+PiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiA+PiA+ID4gKwl1MzIgcGxh bmVfY3RsID0gMDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ID4+ID4gPiArCQlyZXR1cm4gcGxh bmVfY3RsOwo+ID4+ID4gPiArCj4gPj4gPiA+ICsJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9QSVBF X0dBTU1BX0VOQUJMRTsKPiA+PiA+ID4gKwlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BJUEVfQ1ND X0VOQUJMRTsKPiA+PiA+ID4gKwo+ID4+ID4gPiArCXJldHVybiBwbGFuZV9jdGw7Cj4gPj4gPiA+ ICt9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiAgCQkgIGNvbnN0IHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpICB7IEBAIC0zNjQ1LDEwCj4gPj4gPiA+ICsz Njg0LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUK PiA+PiA+ID4gKmNydGNfc3RhdGUsCj4gPj4gPiA+Cj4gPj4gPiA+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMCAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiA+PiA+ID4gIAkJ cGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwo+ID4+ID4gPiAt CQlwbGFuZV9jdGwgfD0KPiA+PiA+ID4gLQkJCVBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8 Cj4gPj4gPiA+IC0JCQlQTEFORV9DVExfUElQRV9DU0NfRU5BQkxFIHwKPiA+PiA+ID4gLQkJCVBM QU5FX0NUTF9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ID4+ID4gPiArCQlwbGFuZV9jdGwgfD0gUExB TkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4gPj4gPiA+Cj4gPj4gPiA+ICAJCWlmIChwbGFu ZV9zdGF0ZS0+YmFzZS5jb2xvcl9lbmNvZGluZyA9PQo+ID5EUk1fQ09MT1JfWUNCQ1JfQlQ3MDkp Cj4gPj4gPiA+ICAJCQlwbGFuZV9jdGwgfD0KPiA+UExBTkVfQ1RMX1lVVl9UT19SR0JfQ1NDX0ZP Uk1BVF9CVDcwOTsKPiA+PiA+ID4gQEAgLTM2NzMsMTkgKzM3MDksMjcgQEAgdTMyIHNrbF9wbGFu ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+KmNydGNfc3RhdGUsCj4gPj4g PiA+ICAJcmV0dXJuIHBsYW5lX2N0bDsKPiA+PiA+ID4gIH0KPiA+PiA+ID4KPiA+PiA+ID4gK3Uz MiBnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUK PiA+PiA+ID4gKypjcnRjX3N0YXRlKSB7Cj4gPj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gPj4g PiA+ICsJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiA+PiA+ID4gKwkJcmV0dXJuIHBsYW5lX2NvbG9y X2N0bDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xP Ul9QSVBFX0dBTU1BX0VOQUJMRTsKPiA+PiA+ID4gKwlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVf Q09MT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4+ID4gPiArCj4gPj4gPiA+ICsJcmV0dXJuIHBsYW5l X2NvbG9yX2N0bDsKPiA+PiA+ID4gK30KPiA+PiA+ID4gKwo+ID4+ID4gPiAgdTMyIGdsa19wbGFu ZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g Pj4gPiA+ICAJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSAg ewo+ID4+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPj4gPiA+ IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gPj4gPiA+ICAJY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiA+ PiA+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOwo+ID4+ID4gPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ ID4+ID4gPgo+ID4+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpIHsKPiA+PiA+ ID4gLQkJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1BJUEVfR0FNTUFfRU5BQkxFOwo+ ID4+ID4gPiAtCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9DU0NfRU5BQkxF Owo+ID4+ID4gPiAtCX0KPiA+PiA+ID4gIAlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1Jf UExBTkVfR0FNTUFfRElTQUJMRTsKPiA+PiA+ID4gIAlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xrX3Bs YW5lX2NvbG9yX2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gPj4gPiA+Cj4gPj4gPiA+IEBAIC05 ODY3LDExICs5OTExLDE1IEBAIGk4NDVfY3Vyc29yX21heF9zdHJpZGUoc3RydWN0IGludGVsX3Bs YW5lCj4gPipwbGFuZSwKPiA+PiA+ID4gIAlyZXR1cm4gMjA0ODsKPiA+PiA+ID4gIH0KPiA+PiA+ ID4KPiA+PiA+ID4gK3N0YXRpYyB1MzIgaTg0NV9jdXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUKPiA+PiA+ID4gKypjcnRjX3N0YXRlKSB7Cj4gCj4gTWF5IGJlIHdl IGNhbiBtYWtlIHRoaXMgaW5saW5lIGZ1bmN0aW9uLgoKVGhlIGNvbXBpbGVyIHdpbGwgaW5saW5l IGlmIGl0IGRlZW1zIGl0IGJlbmVmaWNpYWwuCgo+IAo+ID4+ID4gPiArCXJldHVybiBDVVJTT1Jf R0FNTUFfRU5BQkxFOwo+ID4+ID4gPiArfQo+ID4+ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMgdTMy IGk4NDVfY3Vyc29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiA+PiA+ID4gIAkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpICB7Cj4gPj4gPiA+ICAJcmV0dXJuIENVUlNPUl9FTkFCTEUgfAo+ID4+ID4gPiAtCQlD VVJTT1JfR0FNTUFfRU5BQkxFIHwKPiA+PiA+ID4gIAkJQ1VSU09SX0ZPUk1BVF9BUkdCIHwKPiA+ PiA+ID4gIAkJQ1VSU09SX1NUUklERShwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0uc3RyaWRl KTsKPiA+PiA+ID4gIH0KPiA+PiA+ID4gQEAgLTk5NDEsNyArOTk4OSw5IEBAIHN0YXRpYyB2b2lk IGk4NDVfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUKPiA+KnBsYW5lLAo+ID4+ID4g PiAgCQl1bnNpZ25lZCBpbnQgd2lkdGggPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3c7Cj4gPj4g PiA+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2g7Cj4g Pj4gPiA+Cj4gPj4gPiA+IC0JCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ID4+ID4gPiArCQlj bnRsID0gcGxhbmVfc3RhdGUtPmN0bCB8Cj4gPj4gPiA+ICsJCQlpODQ1X2N1cnNvcl9jdGxfY3J0 YyhjcnRjX3N0YXRlKTsKPiA+PiA+ID4gKwo+ID4+ID4gPiAgCQlzaXplID0gKGhlaWdodCA8PCAx MikgfCB3aWR0aDsKPiA+PiA+ID4KPiA+PiA+ID4gIAkJYmFzZSA9IGludGVsX2N1cnNvcl9iYXNl KHBsYW5lX3N0YXRlKTsgQEAgLTEwMDA2LDI3Cj4gPisxMDA1NiwzNgo+ID4+ID4gPiBAQCBpOXh4 X2N1cnNvcl9tYXhfc3RyaWRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gPj4gPiA+ICAJ cmV0dXJuIHBsYW5lLT5iYXNlLmRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRoICogNDsgIH0K PiA+PiA+ID4KPiA+PiA+ID4gLXN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiAtCQkJICAgY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+PiA+ID4gK3N0YXRpYyB1MzIg aTl4eF9jdXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+PiA+ ID4gKypjcnRjX3N0YXRlKQo+ID4+ID4gPiAgewo+ID4+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9Cj4gPj4gPiA+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUtPmRldik7Cj4gPj4gPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPj4gPiA+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gPj4gPiA+ICAJ dTMyIGNudGwgPSAwOwo+ID4+ID4gPgo+ID4+ID4gPiAtCWlmIChJU19HRU4oZGV2X3ByaXYsIDYp IHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gPj4gPiA+IC0JCWNudGwgfD0gTUNVUlNPUl9U UklDS0xFX0ZFRURfRElTQUJMRTsKPiA+PiA+ID4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMSkKPiA+PiA+ID4gKwkJcmV0dXJuIGNudGw7Cj4gPj4gPiA+Cj4gPj4gPiA+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPD0gMTApIHsKPiA+PiA+ID4gLQkJY250bCB8PSBNQ1VSU09SX0dB TU1BX0VOQUJMRTsKPiA+PiA+ID4gKwljbnRsIHw9IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+ID4+ ID4gPgo+ID4+ID4gPiAtCQlpZiAoSEFTX0RESShkZXZfcHJpdikpCj4gPj4gPiA+IC0JCQljbnRs IHw9IE1DVVJTT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4+ID4gPiAtCX0KPiA+PiA+ID4gKwlpZiAo SEFTX0RESShkZXZfcHJpdikpCj4gPj4gPiA+ICsJCWNudGwgfD0gTUNVUlNPUl9QSVBFX0NTQ19F TkFCTEU7Cj4gPj4gPiA+Cj4gPj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYm ICFJU19HNFgoZGV2X3ByaXYpKQo+ID4+ID4gPiAgCQljbnRsIHw9IE1DVVJTT1JfUElQRV9TRUxF Q1QoY3J0Yy0+cGlwZSk7Cj4gPj4gPiA+Cj4gPj4gPiA+ICsJcmV0dXJuIGNudGw7Cj4gPj4gPiA+ ICt9Cj4gPj4gPiA+ICsKPiA+PiA+ID4gK3N0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiArCQkJICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkgewo+ID4+ID4gPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPj4gPiA+ICsJCXRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gPj4gPiA+ICsJdTMyIGNudGwgPSAwOwo+ID4+ ID4gPiArCj4gPj4gPiA+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdF KGRldl9wcml2KSkKPiA+PiA+ID4gKwkJY250bCB8PSBNQ1VSU09SX1RSSUNLTEVfRkVFRF9ESVNB QkxFOwo+ID4+ID4gPiArCj4gPj4gPiA+ICAJc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRj X3cpIHsKPiA+PiA+ID4gIAljYXNlIDY0Ogo+ID4+ID4gPiAgCQljbnRsIHw9IE1DVVJTT1JfTU9E RV82NF9BUkdCX0FYOyBAQCAtMTAxNTEsNyArMTAyMTAsOAo+ID5AQCBzdGF0aWMKPiA+PiA+ID4g dm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+PiA+ ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4+ID4gPgo+ID4+ID4gPiAgCWlmIChwbGFu ZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gPj4gPiA+IC0JCWNudGwg PSBwbGFuZV9zdGF0ZS0+Y3RsOwo+ID4+ID4gPiArCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0bCB8 Cj4gPj4gPiA+ICsJCQlpOXh4X2N1cnNvcl9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiA+PiA+ID4K PiA+PiA+ID4gIAkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAhPSBwbGFuZV9zdGF0ZS0+ YmFzZS5jcnRjX3cpCj4gPj4gPiA+ICAJCQlmYmNfY3RsID0gQ1VSX0ZCQ19DVExfRU4gfCAocGxh bmVfc3RhdGUtPmJhc2UuY3J0Y19oCj4gPi0gMSk7Cj4gPj4gPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPj4gPiA+IGluZGV4IDNiMDUxZmRkMGZjZS4uODhhYzQyYjJkN2Vk IDEwMDY0NAo+ID4+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+ID4gPiBA QCAtMTc1Miw5ICsxNzUyLDEwIEBAIHN0YXRpYyBpbmxpbmUgdTMyCj4gPj4gPiA+IGludGVsX3Bs YW5lX2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4g Pj4gPiA+Cj4gPj4gPiA+ICB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+PiA+ID4gIAkJCWNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+ID4+ID4gPiArdTMyIGdsa19wbGFuZV9jb2xv cl9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4+ID4gPiArKmNydGNf c3RhdGUpOwo+ID4+ID4gPiAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4gPiA+ICAJCSAgY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gPj4gPiA+IC11MzIgZ2xrX2NvbG9yX2N0bChjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKPiA+PiA+ID4gK3UzMiBz a2xfcGxhbmVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+PiA+ID4g KypjcnRjX3N0YXRlKTsKPiA+PiA+ID4gIHUzMiBza2xfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gPj4gPiA+ICAJCSAgICAgaW50IHBs YW5lKTsKPiA+PiA+ID4gIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUKPiA+PiA+ID4gKnBsYW5lX3N0YXRlKTsgZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfc3ByaXRlLmMKPiA+PiA+ID4gaW5kZXggOGYzOTgyYzAzOTI1Li5hNDVlZjk4YjJm OGQgMTAwNjQ0Cj4gPj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jCj4gPj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4g Pj4gPiA+IEBAIC00ODQsOSArNDg0LDE2IEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUsCj4gPj4gPiA+ICAJc3RydWN0IGludGVsX3BsYW5lICpsaW5rZWQgPSBw bGFuZV9zdGF0ZS0+bGlua2VkX3BsYW5lOwo+ID4+ID4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gPj4gPiA+ICAJdTggYWxwaGEg PSBwbGFuZV9zdGF0ZS0+YmFzZS5hbHBoYSA+PiA4Owo+ID4+ID4gPiArCXUzMiBwbGFuZV9jb2xv cl9jdGwgPSAwOwo+ID4+ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPj4gPiA+ICAJ dTMyIGtleW1zaywga2V5bWF4Owo+ID4+ID4gPgo+ID4+ID4gPiArCXBsYW5lX2N0bCB8PSBza2xf cGxhbmVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiA+PiA+ ID4gKwkJcGxhbmVfY29sb3JfY3RsID0gcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCB8Cj4gPj4gPiA+ ICsJCQlnbGtfcGxhbmVfY29sb3JfY3RsX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPj4gPiA+ICsKPiA+ PiA+ID4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ID4+ID4gPiAgCXNyY193LS07Cj4gPj4g PiA+ICAJc3JjX2gtLTsKPiA+PiA+ID4gQEAgLTUzMyw4ICs1NDAsNyBAQCBza2xfcHJvZ3JhbV9w bGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4+ID4gPiAgCX0KPiA+PiA+ID4KPiA+ PiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRl dl9wcml2KSkKPiA+PiA+ID4gLQkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwg cGxhbmVfaWQpLAo+ID4+ID4gPiAtCQkJICAgICAgcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCk7Cj4g Pj4gPiA+ICsJCUk5MTVfV1JJVEVfRlcoUExBTkVfQ09MT1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwK PiA+PiA+ID4gK3BsYW5lX2NvbG9yX2N0bCk7Cj4gPj4gPiA+Cj4gPj4gPiA+ICAJaWYgKGZiLT5m b3JtYXQtPmlzX3l1diAmJiBpY2xfaXNfaGRyX3BsYW5lKHBsYW5lKSkKPiA+PiA+ID4gIAkJaWNs X3Byb2dyYW1faW5wdXRfY3NjKHBsYW5lLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7IEBACj4g Pj4gPiA+IC03MzEsNiArNzM3LDExIEBAIHZsdl91cGRhdGVfY2xyYyhjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUKPiA+KnBsYW5lX3N0YXRlKQo+ID4+ID4gPiAgCQkgICAgICBTUF9TSF9T SU4oc2hfc2luKSB8IFNQX1NIX0NPUyhzaF9jb3MpKTsgIH0KPiA+PiA+ID4KPiA+PiA+ID4gK3N0 YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZQo+ID4+ID4gPiArKmNydGNfc3RhdGUpIHsKPiAKPiBUaGlzIGFzIHdlbGwgYW5kIG90aGVyIHNp bWlsYXIgb25lcy4KPiAKPiA+PiA+ID4gKwlyZXR1cm4gU1BfR0FNTUFfRU5BQkxFOwo+ID4+ID4g PiArfQo+ID4+ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiAgCQkJICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSAgeyBAQCAtCj4gPjczOSw3 Cj4gPj4gPiA+ICs3NTAsNyBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlCj4gPipjcnRjX3N0YXRlLAo+ID4+ID4gPiAgCWNvbnN0IHN0cnVj dCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4g Pj4gPiA+ICAJdTMyIHNwcmN0bDsKPiA+PiA+ID4KPiA+PiA+ID4gLQlzcHJjdGwgPSBTUF9FTkFC TEUgfCBTUF9HQU1NQV9FTkFCTEU7Cj4gPj4gPiA+ICsJc3ByY3RsID0gU1BfRU5BQkxFOwo+ID4+ ID4gPgo+ID4+ID4gPiAgCXN3aXRjaCAoZmItPmZvcm1hdC0+Zm9ybWF0KSB7Cj4gPj4gPiA+ICAJ Y2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4gPj4gPiA+IEBAIC04MDYsNyArODE3LDYgQEAgdmx2X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4+ID4gPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiA+ PiA+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ID4+ID4gPiAgCWVudW0gcGxh bmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Cj4gPj4gPiA+IC0JdTMyIHNwcmN0bCA9IHBsYW5l X3N0YXRlLT5jdGw7Cj4gPj4gPiA+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKPiA+PiA+ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+ PiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0KPiA+ PiA+ID4gJnBsYW5lX3N0YXRlLT5ja2V5OyBAQCAtODE3LDYgKzgyNyw5IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0Cj4gPmludGVsX3BsYW5lICpwbGFuZSwKPiA+PiA+ID4gIAl1aW50MzJfdCB4 ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gPj4gPiA+ICAJdWludDMyX3QgeSA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ID4+ID4gPiAgCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7Cj4gPj4gPiA+ICsJdTMyIHNwcmN0bDsKPiA+PiA+ID4gKwo+ID4+ID4gPiArCXNw cmN0bCA9IHBsYW5lX3N0YXRlLT5jdGwgfCB2bHZfc3ByaXRlX2N0bF9jcnRjKGNydGNfc3RhdGUp Owo+ID4+ID4gPgo+ID4+ID4gPiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICovCj4gPj4gPiA+ICAJ Y3J0Y193LS07Cj4gPj4gPiA+IEBAIC04OTcsNiArOTEwLDE5IEBAIHZsdl9wbGFuZV9nZXRfaHdf c3RhdGUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+PiA+ID4gIAlyZXR1cm4gcmV0Owo+ ID4+ID4gPiAgfQo+ID4+ID4gPgo+ID4+ID4gPiArc3RhdGljIHUzMiBpdmJfc3ByaXRlX2N0bF9j cnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPj4gPiA+ICsqY3J0Y19zdGF0ZSkg ewo+ID4+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ID4+ID4gPiArCXUzMiBzcHJjdGwgPSAwOwo+ ID4+ID4gPiArCj4gPj4gPiA+ICsJc3ByY3RsIHw9IFNQUklURV9HQU1NQV9FTkFCTEU7Cj4gPj4g PiA+ICsKPiA+PiA+ID4gKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxM KGRldl9wcml2KSkKPiA+PiA+ID4gKwkJc3ByY3RsIHw9IFNQUklURV9QSVBFX0NTQ19FTkFCTEU7 Cj4gPj4gPiA+ICsKPiA+PiA+ID4gKwlyZXR1cm4gc3ByY3RsOwo+ID4+ID4gPiArfQo+ID4+ID4g PiArCj4gPj4gPiA+ICBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSAgeyBAQCAtCj4gPjkwNywxNAo+ID4+ID4gPiAr OTMzLDExIEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUKPiA+KmNydGNfc3RhdGUsCj4gPj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+PiA+ID4gIAl1 MzIgc3ByY3RsOwo+ID4+ID4gPgo+ID4+ID4gPiAtCXNwcmN0bCA9IFNQUklURV9FTkFCTEUgfCBT UFJJVEVfR0FNTUFfRU5BQkxFOwo+ID4+ID4gPiArCXNwcmN0bCA9IFNQUklURV9FTkFCTEU7Cj4g Pj4gPiA+Cj4gPj4gPiA+ICAJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gPj4gPiA+ICAJ CXNwcmN0bCB8PSBTUFJJVEVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7Cj4gPj4gPiA+Cj4gPj4gPiA+ IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4g Pj4gPiA+IC0JCXNwcmN0bCB8PSBTUFJJVEVfUElQRV9DU0NfRU5BQkxFOwo+ID4+ID4gPiAtCj4g Pj4gPiA+ICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsKPiA+PiA+ID4gIAljYXNlIERS TV9GT1JNQVRfWEJHUjg4ODg6Cj4gPj4gPiA+ICAJCXNwcmN0bCB8PSBTUFJJVEVfRk9STUFUX1JH Qlg4ODggfAo+ID5TUFJJVEVfUkdCX09SREVSX1JHQlg7IEBACj4gPj4gPiA+IC05NjYsNyArOTg5 LDYgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLCAgewo+ID4+ ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUt PmJhc2UuZGV2KTsKPiA+PiA+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ID4+ ID4gPiAtCXUzMiBzcHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsLCBzcHJzY2FsZSA9IDA7Cj4gPj4g PiA+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLm9m ZnNldDsKPiA+PiA+ID4gIAl1MzIgbGluZWFyX29mZnNldDsKPiA+PiA+ID4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0KPiA+PiA+ID4gJnBsYW5lX3N0YXRl LT5ja2V5OyBAQCAtOTc4LDggKzEwMDAsMTEgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QKPiA+ aW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4+ID4gPiAgCXVpbnQzMl90IHkgPSBwbGFuZV9zdGF0ZS0+ Y29sb3JfcGxhbmVbMF0ueTsKPiA+PiA+ID4gIAl1aW50MzJfdCBzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ID4+ID4gPiAgCXVpbnQzMl90IHNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ID4+ ID4gPiArCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKPiA+PiA+ID4gIAl1bnNpZ25lZCBsb25n IGlycWZsYWdzOwo+ID4+ID4gPgo+ID4+ID4gPiArCXNwcmN0bCA9IHBsYW5lX3N0YXRlLT5jdGwg fCBpdmJfc3ByaXRlX2N0bF9jcnRjKGNydGNfc3RhdGUpOwo+ID4+ID4gPiArCj4gPj4gPiA+ICAJ LyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KPiA+PiA+ID4gIAlzcmNfdy0tOwo+ID4+ID4gPiAgCXNy Y19oLS07Cj4gPj4gPiA+IEBAIC0xMDc0LDYgKzEwOTksMTEgQEAgZzR4X3Nwcml0ZV9tYXhfc3Ry aWRlKHN0cnVjdCBpbnRlbF9wbGFuZQo+ID4qcGxhbmUsCj4gPj4gPiA+ICAJcmV0dXJuIDE2Mzg0 Owo+ID4+ID4gPiAgfQo+ID4+ID4gPgo+ID4+ID4gPiArc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0 bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPj4gPiA+ICsqY3J0Y19zdGF0 ZSkgewo+ID4+ID4gPiArCXJldHVybiBEVlNfR0FNTUFfRU5BQkxFOwo+ID4+ID4gPiArfQo+ID4+ ID4gPiArCj4gPj4gPiA+ICBzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSAgeyBAQCAtCj4gPjEwODQsNwo+ID4+ID4g PiArMTExNCw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUKPiA+KmNydGNfc3RhdGUsCj4gPj4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9p bnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiA+PiA+ID4g IAl1MzIgZHZzY250cjsKPiA+PiA+ID4KPiA+PiA+ID4gLQlkdnNjbnRyID0gRFZTX0VOQUJMRSB8 IERWU19HQU1NQV9FTkFCTEU7Cj4gPj4gPiA+ICsJZHZzY250ciA9IERWU19FTkFCTEU7Cj4gPj4g PiA+Cj4gPj4gPiA+ICAJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gPj4gPiA+ICAJCWR2c2Nu dHIgfD0gRFZTX1RSSUNLTEVfRkVFRF9ESVNBQkxFOyBAQCAtMTE0MCw3ICsxMTcwLDYKPiA+QEAK PiA+PiA+ID4gZzR4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLCAgewo+ ID4+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmUtPmJhc2UuZGV2KTsKPiA+PiA+ID4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ ID4+ID4gPiAtCXUzMiBkdnNjbnRyID0gcGxhbmVfc3RhdGUtPmN0bCwgZHZzc2NhbGUgPSAwOwo+ ID4+ID4gPiAgCXUzMiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsw XS5vZmZzZXQ7Cj4gPj4gPiA+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gPj4gPiA+ICAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9Cj4gPj4gPiA+ICZwbGFuZV9z dGF0ZS0+Y2tleTsgQEAgLTExNTIsOCArMTE4MSwxMSBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVj dAo+ID5pbnRlbF9wbGFuZSAqcGxhbmUsCj4gPj4gPiA+ICAJdWludDMyX3QgeSA9IHBsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS55Owo+ID4+ID4gPiAgCXVpbnQzMl90IHNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gPj4gPiA+ICAJdWludDMy X3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7 Cj4gPj4gPiA+ICsJdTMyIGR2c2NudHIsIGR2c3NjYWxlID0gMDsKPiA+PiA+ID4gIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwo+ID4+ID4gPgo+ID4+ID4gPiArCWR2c2NudHIgPSBwbGFuZV9zdGF0 ZS0+Y3RsIHwgZzR4X3Nwcml0ZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsKPiA+PiA+ID4gKwo+ID4+ ID4gPiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICovCj4gPj4gPiA+ICAJc3JjX3ctLTsKPiA+PiA+ ID4gIAlzcmNfaC0tOwo+ID4+ID4gPiAtLQo+ID4+ID4gPiAyLjE5LjIKPiA+PiA+ID4KPiA+PiA+ Cj4gPj4gPiAtLQo+ID4+ID4gTWF0dCBSb3Blcgo+ID4+ID4gR3JhcGhpY3MgU29mdHdhcmUgRW5n aW5lZXIKPiA+PiA+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudCBJbnRlbCBD b3Jwb3JhdGlvbgo+ID4+ID4gKDkxNikgMzU2LTI3OTUKPiA+Pgo+ID4+IC0tCj4gPj4gVmlsbGUg U3lyasOkbMOkCj4gPj4gSW50ZWwKPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+ID4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+PiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+Cj4gPi0tCj4gPlZpbGxlIFN5cmrDpGzD pAo+ID5JbnRlbAo+ID5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+ID5JbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==