From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH v2 9/9] drm/i915: Add render decompression support Date: Tue, 28 Feb 2017 15:20:38 -0800 Message-ID: <20170228232037.GB7989@mail.bwidawsk.net> References: <20170104184232.23048-10-ville.syrjala@linux.intel.com> <20170105151454.12862-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: 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: Jason Ekstrand Cc: Vandana Kannan , intel-gfx@lists.freedesktop.org, Maling list - DRI developers , Chad Versace , Paulo Zanoni List-Id: dri-devel@lists.freedesktop.org T24gMTctMDItMjggMTI6MTg6MzksIEphc29uIEVrc3RyYW5kIHdyb3RlOgo+T24gVGh1LCBKYW4g NSwgMjAxNyBhdCA3OjE0IEFNLCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3Rl Ogo+Cj4+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4+Cj4+IFNLTCsgZGlzcGxheSBlbmdpbmUgY2FuIHNjYW4gb3V0IGNlcnRhaW4ga2luZHMg b2YgY29tcHJlc3NlZCBzdXJmYWNlcwo+PiBwcm9kdWNlZCBieSB0aGUgcmVuZGVyIGVuZ2luZS4g VGhpcyBpbnZvbHZlZCB0ZWxsaW5nIHRoZSBkaXNwbGF5IGVuZ2luZQo+PiB0aGUgbG9jYXRpb24g b2YgdGhlIGNvbG9yIGNvbnRyb2wgc3VyZmFlIChDQ1MpIHdoaWNoIGRlc2NyaWJlcwo+PiB3aGlj aCBwYXJ0cyBvZiB0aGUgbWFpbiBzdXJmYWNlIGFyZSBjb21wcmVzc2VkIGFuZCB3aGljaCBhcmUg bm90LiBUaGUKPj4gbG9jYXRpb24gb2YgQ0NTIGlzIHByb3ZpZGVkIGJ5IHVzZXJzcGFjZSBhcyBq dXN0IGFub3RoZXIgcGxhbmUgd2l0aCBpdHMKPj4gb3duIG9mZnNldC4KPj4KPj4gQWRkIHRoZSBy ZXF1aXJlZCBzdHVmZiB0byB2YWxpZGF0ZSB0aGUgdXNlciBwcm92aWRlZCBBVVggcGxhbmUgbWV0 YWRhdGEKPj4gYW5kIGNvbnZlcnQgdGhlIHVzZXIgcHJvdmlkZWQgbGluZWFyIG9mZnNldCBpbnRv IHNvbWV0aGluZyB0aGUgaGFyZHdhcmUKPj4gY2FuIGNvbnN1bWUuCj4+Cj4+IER1ZSB0byBoYXJk d2FyZSBsaW1pdGF0aW9ucyB3ZSByZXF1aXJlIHRoYXQgdGhlIG1haW4gc3VyZmFjZSBhbmQKPj4g dGhlIEFVWCBzdXJmYWNlIChDQ1MpIGJlIHBhcnQgb2YgdGhlIHNhbWUgYm8uIFRoZSBoYXJkd2Fy ZSBhbHNvCj4+IG1ha2VzIGxpZmUgaGFyZCBieSBub3QgYWxsb3dpbmcgeW91IHRvIHByb3ZpZGUg c2VwYXJhdGUgeC95IG9mZnNldHMKPj4gZm9yIHRoZSBtYWluIGFuZCBBVVggc3VyZmFjZXMgKGV4 Y3BldCB3aXRoIE5WMTIpLCBzbyBmaW5kaW5nIHN1aXRhYmxlCj4+IG9mZnNldHMgZm9yIGJvdGgg cmVxdWlyZXMgYSBiaXQgb2Ygd29yay4gQXNzdW1pbmcgd2Ugc3RpbGwgd2FudCBrZWVwCj4+IHBs YXlpbmcgdHJpY2tzIHdpdGggdGhlIG9mZnNldHMuIEkndmUganVzdCBnb25lIHdpdGggYSBkdW1i ICJzZWFyY2gKPj4gYmFja3dhcmQgZm9yIHN1aXRhYmxlIG9mZnNldHMiIGFwcHJvYWNoLCB3aGlj aCBpcyBmYXIgZnJvbSBvcHRpbWFsLAo+PiBidXQgaXQgd29ya3MuCj4+Cj4+IEFsc28gbm90IGFs bCBwbGFuZXMgd2lsbCBiZSBjYXBhYmxlIG9mIHNjYW5uaW5nIG91dCBjb21wcmVzc2VkIHN1cmZh Y2VzLAo+PiBhbmQgZWcuIDkwLzI3MCBkZWdyZWUgcm90YXRpb24gaXMgbm90IHN1cHBvcnRlZCBp biBjb21iaW5hdGlvbiB3aXRoCj4+IGRlY29tcHJlc3Npb24gZWl0aGVyLgo+Pgo+PiBUaGlzIHBh dGNoIG1heSBjb250YWluIHdvcmsgZnJvbSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIHBlb3BsZToK Pj4gKiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+PiAqIERhbmll bCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPj4gKiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdz ay5uZXQ+Cj4+Cj4+IHYyOiBEZWFsIHdpdGggZGlzcGxheSB3b3JrYXJvdW5kcyAwMzkwLCAwNTMx LCAxMTI1IChQYXVsbykKPj4KPj4gQ2M6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50 ZWwuY29tPgo+PiBDYzogVmFuZGFuYSBLYW5uYW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4K Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPj4gQ2M6IEJlbiBXaWRhd3Nr eSA8YmVuQGJ3aWRhd3NrLm5ldD4KPj4gQ2M6IEphc29uIEVrc3RyYW5kIDxqYXNvbkBqbGVrc3Ry YW5kLm5ldD4KPj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICAgICAgfCAgMjMgKysrKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiArKy0tLQo+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgIDI5ICsrKystCj4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDUgKwo+PiAgNCBmaWxlcyBjaGFuZ2Vk LCAyNzQgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV8KPj4gcmVnLmgKPj4gaW5kZXggMDA5NzBhYTc3YWZhLi42ODQ5YmE5M2YxZDkgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBAQCAtNjIwOSw2ICs2MjA5LDI4IEBAIGVudW0gewo+ PiAgICAgICAgICAgICAgICAgICAgICAgICBfSUQoaWQsIF9QU19FQ0NfU1RBVF8xQSwgX1BTX0VD Q19TVEFUXzJBKSwgICBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIF9JRChpZCwgX1BTX0VD Q19TVEFUXzFCLCBfUFNfRUNDX1NUQVRfMkIpKQo+Pgo+PiArI2RlZmluZSBQTEFORV9BVVhfRElT VF8xX0EgICAgICAgICAgICAgMHg3MDFjMAo+PiArI2RlZmluZSBQTEFORV9BVVhfRElTVF8yX0Eg ICAgICAgICAgICAgMHg3MDJjMAo+PiArI2RlZmluZSBQTEFORV9BVVhfRElTVF8xX0IgICAgICAg ICAgICAgMHg3MTFjMAo+PiArI2RlZmluZSBQTEFORV9BVVhfRElTVF8yX0IgICAgICAgICAgICAg MHg3MTJjMAo+PiArI2RlZmluZSBfUExBTkVfQVVYX0RJU1RfMShwaXBlKSBcCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIF9QSVBFKHBpcGUsIFBMQU5FX0FVWF9ESVNUXzFfQSwgUExBTkVfQVVY X0RJU1RfMV9CKQo+PiArI2RlZmluZSBfUExBTkVfQVVYX0RJU1RfMihwaXBlKSBcCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIF9QSVBFKHBpcGUsIFBMQU5FX0FVWF9ESVNUXzJfQSwgUExBTkVf QVVYX0RJU1RfMl9CKQo+PiArI2RlZmluZSBQTEFORV9BVVhfRElTVChwaXBlLCBwbGFuZSkgICAg IFwKPj4gKyAgICAgICBfTU1JT19QTEFORShwbGFuZSwgX1BMQU5FX0FVWF9ESVNUXzEocGlwZSks Cj4+IF9QTEFORV9BVVhfRElTVF8yKHBpcGUpKQo+PiArCj4+ICsjZGVmaW5lIFBMQU5FX0FVWF9P RkZTRVRfMV9BICAgICAgICAgICAweDcwMWM0Cj4+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRf Ml9BICAgICAgICAgICAweDcwMmM0Cj4+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRfMV9CICAg ICAgICAgICAweDcxMWM0Cj4+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRfMl9CICAgICAgICAg ICAweDcxMmM0Cj4+ICsjZGVmaW5lIF9QTEFORV9BVVhfT0ZGU0VUXzEocGlwZSkgICAgICAgXAo+ PiArICAgICAgICAgICAgICAgX1BJUEUocGlwZSwgUExBTkVfQVVYX09GRlNFVF8xX0EsIFBMQU5F X0FVWF9PRkZTRVRfMV9CKQo+PiArI2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8yKHBpcGUpICAg ICAgIFwKPj4gKyAgICAgICAgICAgICAgIF9QSVBFKHBpcGUsIFBMQU5FX0FVWF9PRkZTRVRfMl9B LCBQTEFORV9BVVhfT0ZGU0VUXzJfQikKPj4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVChwaXBl LCBwbGFuZSkgICBcCj4+ICsgICAgICAgX01NSU9fUExBTkUocGxhbmUsIF9QTEFORV9BVVhfT0ZG U0VUXzEocGlwZSksCj4+IF9QTEFORV9BVVhfT0ZGU0VUXzIocGlwZSkpCj4+ICsKPj4gIC8qIGxl Z2FjeSBwYWxldHRlICovCj4+ICAjZGVmaW5lIF9MR0NfUEFMRVRURV9BICAgICAgICAgICAweDRh MDAwCj4+ICAjZGVmaW5lIF9MR0NfUEFMRVRURV9CICAgICAgICAgICAweDRhODAwCj4+IEBAIC02 NDMzLDYgKzY0NTUsNyBAQCBlbnVtIHsKPj4gICMgZGVmaW5lIENISUNLRU4zX0RHTUdfRE9ORV9G SVhfRElTQUJMRSAgICAgICAgICAgICAgICAoMSA8PCAyKQo+Pgo+PiAgI2RlZmluZSBDSElDS0VO X1BBUjFfMSAgICAgICAgIF9NTUlPKDB4NDIwODApCj4+ICsjZGVmaW5lICBTS0xfUkNfSEFTSF9P VVRTSURFICAgKDEgPDwgMTUpCj4+ICAjZGVmaW5lICBEUEFfTUFTS19WQkxBTktfU1JEICAgKDEg PDwgMTUpCj4+ICAjZGVmaW5lICBGT1JDRV9BUkJfSURMRV9QTEFORVMgKDEgPDwgMTQpCj4+ICAj ZGVmaW5lICBTS0xfRURQX1BTUl9GSVhfUkRXUkFQICAgICAgICAoMSA8PCAzKQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDM4ZGU5ZGYwZWM2MC4uMjIzNmFi ZWJkOGJjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0y MDY0LDExICsyMDY0LDE5IEBAIGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0Cj4+ IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSkKPj4gICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIDEyODsKPj4gICAgICAgICAgICAgICAgIGVsc2UKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIDUxMjsKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJ TEVEX0NDUzoKPj4gKyAgICAgICAgICAgICAgIGlmIChwbGFuZSA9PSAxKQo+PiArICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gNjQ7Cj4+ICsgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91 Z2ggKi8KPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+PiAgICAgICAg ICAgICAgICAgaWYgKElTX0dFTjIoZGV2X3ByaXYpIHx8IEhBU18xMjhfQllURV9ZX1RJTElORyhk ZXZfcHJpdikpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxMjg7Cj4+ICAgICAg ICAgICAgICAgICBlbHNlCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA1MTI7Cj4+ ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgo+PiArICAgICAgICAg ICAgICAgaWYgKHBsYW5lID09IDEpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA2 NDsKPj4KPgo+SSd2ZSBzYWlkIGl0IGJlZm9yZSBidXQgcmVhZGluZyB0aHJvdWdoIEJlbidzIHBh dGNoZXMgYWdhaW4gbWFrZSBtZSB3YW50IHRvCj5iZSBwZXNraWVyIGFib3V0IGl0LiAgSSB3b3Vs ZCByZWFsbHkgbGlrZSB0aGUgVUFCSSB0byB0cmVhdCB0aGUgQ0NTIGFzIGlmCj5pdCdzIFktdGls ZWQgd2l0aCBhIHRpbGUgc2l6ZSBvZiAxMjhCIHggMzIgcm93cy4gIFdoeT8gIEJlY2F1c2UgdGhp cyBpcwo+d2hhdCBhbGwgdGhlIGRvY3Mgc2F5IGl0IGlzLiAgRnJvbSB0aGUgZGlzcGxheSBkb2Nz IGZvciAiQ29sb3IgQ29udHJvbAo+U3VyZmFjZSI6Cj4KPiJUaGUgQ29sb3IgQ29udHJvbCBTdXJm YWNlIChDQ1MpIGNvbnRhaW5zIHRoZSBjb21wcmVzc2lvbiBzdGF0dXMgb2YgdGhlCj5jYWNoZS1s aW5lIHBhaXJzLiBUaGUKPmNvbXByZXNzaW9uIHN0YXRlIG9mIHRoZSBjYWNoZS1saW5lIHBhaXIg aXMgc3BlY2lmaWVkIGJ5IDIgYml0cyBpbiB0aGUgQ0NTLgo+RWFjaCBDQ1MgY2FjaGUtbGluZSBy ZXByZXNlbnRzCj5hbiBhcmVhIG9uIHRoZSBtYWluIHN1cmZhY2Ugb2YgMTYgeDE2IHNldHMgb2Yg MTI4IGJ5dGUgWS10aWxlZAo+Y2FjaGUtbGluZS1wYWlycy4gQ0NTIGlzIGFsd2F5cyBZIHRpbGVk LiIKPgo+VGhpcyBjb250YWlucyA5NSUgb2YgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBrbm93 IHRoZSByZWxhdGlvbiBiZXR3ZWVuCj50aGUgQ0NTIGFuZCB0aGUgbWFpbiBzdXJmYWNlLiAgVGhl IG90aGVyIDUlICh3aGljaCBpcyBiYWRseSBkb2N1bWVudGVkKSBpcwo+dGhhdCBjYWNoZSBsaW5l IHBhaXJzIGFyZSBob3Jpem9udGFsbHkgYWRqYWNlbnQuICBUaGlzIGdpdmVzIGEgcmVsYXRpb25z aGlwCj5vZiBvbmUgY2FjaGUgbGluZSBpbiB0aGUgQ0NTIG1hcHMgdG8gMzJ4NjQgY2FjaGUgbGlu ZXMgaW4gdGhlIG1haW4gc3VyZmFjZS4KPgo+QnV0IGl0J3Mgbm90IGFjdHVhbGx5IFktdGlsZWQ/ ICBPZiBjb3Vyc2Ugbm90LiAgSSd2ZSB3b3JrZWQgb3V0IHRoZSBleGFjdAo+dGlsaW5nIGFuZCBp dCBsb29rcyBzb21ldGhpbmcgbGlrZSBZIGJ1dCBpc24ndCBxdWl0ZSB0aGUgc2FtZS4gIEhvd2V2 ZXIsCj50aGlzIGlzbid0IHVuaXF1ZSB0byBDQ1MuICBTdGVuY2lsIChXLXRpbGVkKSwgSGlaLCBh bmQgZ2VuNy04Cj5zaW5nbGUtc2FtcGxlZCBNQ1MgYWxzbyBlYWNoIGhhdmUgdGhlaXIgb3duIHRp bGluZyAoSGFzd2VsbCBNQ1MgaXMKPmVzcGVjaWFsbHkgZXhvdGljKSBidXQgdGhlIGRvY3MgY2Fs bCBhbGwgb2YgdGhlbSBZLXRpbGVkIGFuZCBJIHRoaW5rIHRoZQo+aGFyZHdhcmUgaW50ZXJuYWxs eSB0cmVhdHMgdGhlbSBhcyBZLXRpbGVkIHdpdGggdGhlIGNhY2hlIGxpbmVzIHNodWZmbGVkCj5h cm91bmQgYSBiaXQuCj4KPkdpdmVuIHRoZSBmYWN0IHRoYXQgdGhleSBzZWVtIHRvIGxpa2UgdG8g Y2hhbmdlIHRoZSBNQ1MvQ0NTIHRpbGluZyBhcm91bmQKPm9uIGV2ZXJ5IGhhcmR3YXJlIGdlbmVy YXRpb24sIEknbSByZWx1Y3RhbnQgdG8gYmFzZSBVQUJJIG9uIHRoZSBmYWN0IHRoYXQKPnRoZSBD Q1MgYXBwZWFycyB0byBoYXZlIDY0eDY0ICJwaXhlbHMiIHBlciB0aWxlIHdpdGggZWFjaCAicGl4 ZWwiCj5jb3JyZXNwb25kaW5nIHRvIDE2eDggcGl4ZWxzIGluIHRoZSBjb2xvciBzdXJmYWNlLiAg VGhhdCdzIG5vdCB3aGF0IHdlIGhhZAo+b24gYW55IHByZXZpb3VzIGdlbiBhbmQgbWF5IGNoYW5n ZSBvbiBnZW4xMCBmb3Igbm8gYXBhcmVudCByZWFzb24uICBJJ2QKPm11Y2ggcmF0aGVyIGJhc2Ug aXQgb24gWS10aWxpbmcgYW5kIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gY2FjaGUgbGluZXMKPndo aWNoLCBldmVuIGlmIHRoZXkgY2hhbmdlIHRoZSBleGFjdCBzd2l6emxlIG9uIGdlbjEwLCB3aWxs IHByb2JhYmx5IHJlbWFpbgo+dGhlIHNhbWUuICAoRm9yIHRoZSBnZW43LTggYW5hbG9ndWUgb2Yg Q0NTLCB0aGV5IGNoYW5nZWQgdGhlIHRpbGluZyBldmVyeQo+Z2VuZXJhdGlvbiBidXQgdGhlIHJl bGF0aW9uc2hpcCBvZiBvbmUgTUNTIGNhY2hlIGxpbmUgbWFwcyB0byAzMngxMjggY29sb3IKPmNh Y2hlIGxpbmVzIHJlbWFpbmVkIHRoZSBzYW1lKS4KPgo+T2ssIEkndmUgc2FpZCBteSBwZWljZS4g IElmIHdlIGhhdmUgdG8gZGl2aWRlIGJ5IDIgaW4gdXNlcnNwYWNlLCB3ZSB3b24ndAo+ZGllLCBi dXQgSSdkIGxpa2UgdG8gZ2V0IHRoZSBVQUJJIHJpZ2h0IGJlZm9yZSB3ZSBjaGlzc2VsIGl0IGlu IHN0b25lLgo+Cj4tLUphc29uCj4KPgoKSSB2b3RlIHdlIG1ha2UgdGhlIHN0cmlkZSBpbiB1bml0 cyBvZiB0aWxlcyB3aGVuIHdlIGhhdmUgdGhlIENDUyBtb2RpZmllci4KCj4+ICsgICAgICAgICAg ICAgICAvKiBmYWxsIHRocm91Z2ggKi8KPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRDoKPj4gICAgICAgICAgICAgICAgIC8qCj4+ICAgICAgICAgICAgICAgICAgKiBCc3Bl YyBzZWVtcyB0byBzdWdnZXN0IHRoYXQgdGhlIFlmIHRpbGUgd2lkdGggd291bGQKPj4gQEAgLTIx NTYsNyArMjE2NCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQo Y29uc3QKPj4gc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4+ICAgICAgICAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShmYi0+ZGV2KTsKPj4KPj4gICAgICAg ICAvKiBBVVhfRElTVCBuZWVkcyBvbmx5IDRLIGFsaWdubWVudCAqLwo+PiAtICAgICAgIGlmIChm Yi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCj4+ICsg ICAgICAgaWYgKHBsYW5lID09IDEpCj4+ICAgICAgICAgICAgICAgICByZXR1cm4gNDA5NjsKPj4K Pj4gICAgICAgICBzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+PiBAQCAtMjE2Niw2ICsyMTc0LDgg QEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdubWVudChjb25zdAo+PiBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPj4gICAgICAgICAgICAgICAgIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyNTYgKiAx MDI0Owo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZf VElMRURfQ0NTOgo+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4+ICAg ICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4+ICAgICAgICAgICAgICAgICBy ZXR1cm4gMSAqIDEwMjQgKiAxMDI0Owo+PiBAQCAtMjQ3Miw2ICsyNDgyLDcgQEAgc3RhdGljIHVu c2lnbmVkIGludCBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmcodWludDY0X3QKPj4gZmJfbW9k aWZpZXIpCj4+ICAgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPj4gICAgICAg ICAgICAgICAgIHJldHVybiBJOTE1X1RJTElOR19YOwo+PiAgICAgICAgIGNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6Cj4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9D Q1M6Cj4+ICAgICAgICAgICAgICAgICByZXR1cm4gSTkxNV9USUxJTkdfWTsKPj4gICAgICAgICBk ZWZhdWx0Ogo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIEk5MTVfVElMSU5HX05PTkU7Cj4+IEBA IC0yNTM2LDYgKzI1NDcsMzUgQEAgaW50ZWxfZmlsbF9mYl9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlCj4+ICpkZXZfcHJpdiwKPj4KPj4gICAgICAgICAgICAgICAgIGludGVsX2ZiX29mZnNl dF90b194eSgmeCwgJnksIGZiLCBpKTsKPj4KPj4gKyAgICAgICAgICAgICAgIGlmICgoZmItPm1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+PiArICAgICAgICAgICAg ICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUykgJiYg aSA9PQo+PiAxKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBtYWluX3gsIG1haW5f eTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNjc194LCBjY3NfeTsKPj4gKwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgKiBF YWNoIGJ5dGUgb2YgQ0NTIGNvcnJlc3BvbmRzIHRvIGEgMTZ4OCBhcmVhIG9mCj4+IHRoZSBtYWlu IHN1cmZhY2UsIGFuZAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgKiBlYWNoIENDUyB0aWxl IGlzIDY0eDY0IGJ5dGVzLgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY2NzX3ggPSAoeCAqIDE2KSAlICg2NCAqIDE2KTsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgY2NzX3kgPSAoeSAqIDgpICUgKDY0ICogOCk7Cj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIG1haW5feCA9IGludGVsX2ZiLT5ub3JtYWxbMF0ueCAlICg2NCAqIDE2 KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbWFpbl95ID0gaW50ZWxfZmItPm5vcm1hbFsw XS55ICUgKDY0ICogOCk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyoKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICogQ0NTIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIHgveSBvZmZz ZXQgcmVnaXN0ZXIsCj4+IHNvIHRoZSBpbnRyYSBDQ1MgdGlsZQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgKiB4L3kgb2Zmc2V0cyBtdXN0IG1hdGNoIGJldHdlZW4gQ0NTIGFuZCB0aGUgbWFp bgo+PiBzdXJmYWNlLgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgaWYgKG1haW5feCAhPSBjY3NfeCB8fCBtYWluX3kgIT0gY2NzX3kpIHsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJCYWQgQ0NT IHgveSAobWFpbiAlZCwlZCBjY3MKPj4gJWQsJWQpIGZ1bGwgKG1haW4gJWQsJWQgY2NzICVkLCVk KVxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h aW5feCwgbWFpbl95LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2NzX3gsIGNjc195LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ZWxfZmItPm5vcm1hbFswXS54LAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZmItPm5vcm1hbFswXS55LAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSk7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiAgICAgICAgICAgICAg ICAgLyoKPj4gICAgICAgICAgICAgICAgICAqIFRoZSBmZW5jZSAoaWYgdXNlZCkgaXMgYWxpZ25l ZCB0byB0aGUgc3RhcnQgb2YgdGhlCj4+IG9iamVjdAo+PiAgICAgICAgICAgICAgICAgICogc28g aGF2aW5nIHRoZSBmcmFtZWJ1ZmZlciB3cmFwIGFyb3VuZCBhY3Jvc3MgdGhlIGVkZ2UKPj4gb2Yg dGhlCj4+IEBAIC0yODczLDYgKzI5MTMsOSBAQCBzdGF0aWMgaW50IHNrbF9tYXhfcGxhbmVfd2lk dGgoY29uc3Qgc3RydWN0Cj4+IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSwKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgICAgICAgICB9Cj4+ICAgICAg ICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0NDUzoKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M6Cj4+ICsg ICAgICAgICAgICAgICAvKiBGSVhNRSBBVVggcGxhbmU/ICovCj4+ICAgICAgICAgY2FzZSBJOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRDoKPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9U SUxFRDoKPj4gICAgICAgICAgICAgICAgIHN3aXRjaCAoY3BwKSB7Cj4+IEBAIC0yODk1LDYgKzI5 MzgsNDIgQEAgc3RhdGljIGludCBza2xfbWF4X3BsYW5lX3dpZHRoKGNvbnN0IHN0cnVjdAo+PiBk cm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCj4+ICAgICAgICAgcmV0dXJuIDIwNDg7Cj4+ ICB9Cj4+Cj4+ICtzdGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlCj4+ICpwbGFuZV9zdGF0ZSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMgo+ PiBtYWluX29mZnNldCkKPj4gK3sKPj4gKyAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+PiArICAgICAgIGludCBhdXhfeCA9IHBs YW5lX3N0YXRlLT5hdXgueDsKPj4gKyAgICAgICBpbnQgYXV4X3kgPSBwbGFuZV9zdGF0ZS0+YXV4 Lnk7Cj4+ICsgICAgICAgdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+YXV4Lm9mZnNldDsK Pj4gKyAgICAgICB1MzIgYWxpZ25tZW50ID0gaW50ZWxfc3VyZl9hbGlnbm1lbnQoZmIsIDEpOwo+ PiArCj4+ICsgICAgICAgd2hpbGUgKGF1eF9vZmZzZXQgPj0gbWFpbl9vZmZzZXQgJiYgYXV4X3kg PD0gbWFpbl95KSB7Cj4+ICsgICAgICAgICAgICAgICBpbnQgeCwgeTsKPj4gKwo+PiArICAgICAg ICAgICAgICAgaWYgKGF1eF94ID09IG1haW5feCAmJiBhdXhfeSA9PSBtYWluX3kpCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArCj4+ICsgICAgICAgICAgICAgICBpZiAoYXV4 X29mZnNldCA9PSAwKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gKwo+PiAr ICAgICAgICAgICAgICAgeCA9IGF1eF94IC8gMTY7Cj4+ICsgICAgICAgICAgICAgICB5ID0gYXV4 X3kgLyA4Owo+PiArICAgICAgICAgICAgICAgYXV4X29mZnNldCA9IGludGVsX2FkanVzdF90aWxl X29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLAo+PiAxLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXhfb2Zmc2V0LAo+PiBhdXhfb2Zm c2V0IC0gYWxpZ25tZW50KTsKPj4gKyAgICAgICAgICAgICAgIGF1eF94ID0geCAqIDE2ICsgYXV4 X3ggJSAxNjsKPj4gKyAgICAgICAgICAgICAgIGF1eF95ID0geSAqIDggKyBhdXhfeSAlIDg7Cj4+ ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgaWYgKGF1eF94ICE9IG1haW5feCB8fCBhdXhfeSAh PSBtYWluX3kpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKyAgICAg ICBwbGFuZV9zdGF0ZS0+YXV4Lm9mZnNldCA9IGF1eF9vZmZzZXQ7Cj4+ICsgICAgICAgcGxhbmVf c3RhdGUtPmF1eC54ID0gYXV4X3g7Cj4+ICsgICAgICAgcGxhbmVfc3RhdGUtPmF1eC55ID0gYXV4 X3k7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPj4gK30KPj4gKwo+PiAgc3RhdGljIGlu dCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4+ICB7Cj4+ICAgICAgICAgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIg PSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPj4gQEAgLTI5MzcsNyArMzAxNiw3IEBAIHN0YXRpYyBp bnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QKPj4gaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+Pgo+PiAgICAgICAgICAgICAgICAgd2hpbGUgKCh4ICsgdykgKiBjcHAgPiBm Yi0+cGl0Y2hlc1swXSkgewo+PiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID09 IDApIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJV bmFibGUgdG8gZmluZCBzdWl0YWJsZQo+PiBkaXNwbGF5IHN1cmZhY2Ugb2Zmc2V0XG4iKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJVbmFibGUgdG8g ZmluZCBzdWl0YWJsZQo+PiBkaXNwbGF5IHN1cmZhY2Ugb2Zmc2V0IGR1ZSB0byBYLXRpbGluZ1xu Iik7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4KPj4gQEAgLTI5NDYsNiArMzAyNSwyNiBAQCBz dGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZhY2Uoc3RydWN0Cj4+IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPj4gICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICB9Cj4+Cj4+ ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBDQ1MgQVVYIHN1cmZhY2UgZG9lc24ndCBoYXZlIGl0 cyBvd24geC95IG9mZnNldHMsIHdlIG11c3QgbWFrZQo+PiBzdXJlCj4+ICsgICAgICAgICogdGhl eSBtYXRjaCB3aXRoIHRoZSBtYWluIHN1cmZhY2UgeC95IG9mZnNldHMuCj4+ICsgICAgICAgICov Cj4+ICsgICAgICAgaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9D Q1MgfHwKPj4gKyAgICAgICAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9U SUxFRF9DQ1MpIHsKPj4gKyAgICAgICAgICAgICAgIHdoaWxlICghc2tsX2NoZWNrX21haW5fY2Nz X2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LAo+PiBvZmZzZXQpKSB7Cj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQg PSBpbnRlbF9hZGp1c3RfdGlsZV9vZmZzZXQoJngsICZ5LAo+PiBwbGFuZV9zdGF0ZSwgMCwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCwgb2Zmc2V0IC0KPj4gYWxpZ25tZW50KTsKPj4gKyAgICAgICAgICAgICAgIH0KPj4g Kwo+PiArICAgICAgICAgICAgICAgaWYgKHggIT0gcGxhbmVfc3RhdGUtPmF1eC54IHx8IHkgIT0g cGxhbmVfc3RhdGUtPmF1eC55KSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJV R19LTVMoIlVuYWJsZSB0byBmaW5kIHN1aXRhYmxlIGRpc3BsYXkKPj4gc3VyZmFjZSBvZmZzZXQg ZHVlIHRvIENDU1xuIik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+PiArICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0KPj4gKwo+PiAgICAgICAgIHBsYW5l X3N0YXRlLT5tYWluLm9mZnNldCA9IG9mZnNldDsKPj4gICAgICAgICBwbGFuZV9zdGF0ZS0+bWFp bi54ID0geDsKPj4gICAgICAgICBwbGFuZV9zdGF0ZS0+bWFpbi55ID0geTsKPj4gQEAgLTI5ODIs NiArMzA4MSw0NyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVj dAo+PiBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4+ICAgICAgICAgcmV0dXJuIDA7 Cj4+ICB9Cj4+Cj4+ICtzdGF0aWMgaW50IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlCj4+ICpwbGFuZV9zdGF0ZSkKPj4gK3sKPj4gKyAgICAgICBzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPgo+PiBi YXNlLnBsYW5lKTsKPj4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMocGxhbmVfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4+ICsgICAgICAgaW50IHNyY194ID0gcGxh bmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+PiArICAgICAgIGludCBzcmNfeSA9IHBsYW5l X3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKPj4gKyAgICAgICBpbnQgeCA9IHNyY194IC8gMTY7 Cj4+ICsgICAgICAgaW50IHkgPSBzcmNfeSAvIDg7Cj4+ICsgICAgICAgdTMyIG9mZnNldDsKPj4g Kwo+PiArICAgICAgIHN3aXRjaCAocGxhbmUtPmlkKSB7Cj4+ICsgICAgICAgY2FzZSBQTEFORV9Q UklNQVJZOgo+PiArICAgICAgIGNhc2UgUExBTkVfU1BSSVRFMDoKPj4gKyAgICAgICAgICAgICAg IGJyZWFrOwo+PiArICAgICAgIGRlZmF1bHQ6Cj4+ICsgICAgICAgICAgICAgICBEUk1fREVCVUdf S01TKCJSQyBzdXBwb3J0IG9ubHkgb24gcGxhbmUgMSBhbmQgMlxuIik7Cj4+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBpZiAoY3J0 Yy0+cGlwZSA9PSBQSVBFX0MpIHsKPj4gKyAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIk5v IFJDIHN1cHBvcnQgb24gcGlwZSBDXG4iKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlmIChwbGFuZV9zdGF0ZS0+YmFzZS5y b3RhdGlvbiAmJgo+PiArICAgICAgICAgICBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiAmIH4o RFJNX1JPVEFURV8wIHwgRFJNX1JPVEFURV8xODApKQo+PiB7Cj4+ICsgICAgICAgICAgICAgICBE Uk1fREVCVUdfS01TKCJSQyBzdXBwb3J0IG9ubHkgd2l0aCAwLzE4MCBkZWdyZWUgcm90YXRpb24K Pj4gJXhcbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3N0YXRlLT5i YXNlLnJvdGF0aW9uKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAg ICAgIH0KPj4gKwo+PiArICAgICAgIGludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVf c3RhdGUsIDEpOwo+PiArICAgICAgIG9mZnNldCA9IGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQo JngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7Cj4+ICsKPj4gKyAgICAgICBwbGFuZV9zdGF0ZS0+YXV4 Lm9mZnNldCA9IG9mZnNldDsKPj4gKyAgICAgICBwbGFuZV9zdGF0ZS0+YXV4LnggPSB4ICogMTYg KyBzcmNfeCAlIDE2Owo+PiArICAgICAgIHBsYW5lX3N0YXRlLT5hdXgueSA9IHkgKiA4ICsgc3Jj X3kgJSA4Owo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gIGludCBza2xf Y2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+PiAgewo+PiAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmJhc2UuZmI7Cj4+IEBAIC0zMDAyLDYgKzMxNDIsMTEgQEAgaW50IHNrbF9jaGVj a19wbGFuZV9zdXJmYWNlKHN0cnVjdAo+PiBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4+ICAgICAgICAgICAgICAgICByZXQgPSBza2xfY2hlY2tfbnYxMl9hdXhfc3VyZmFjZShwbGFu ZV9zdGF0ZSk7Cj4+ICAgICAgICAgICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgICAgIH0gZWxzZSBpZiAoZmItPm1vZGlmaWVyID09 IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+PiArICAgICAgICAgICAgICAgICAgZmIt Pm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1MpIHsKPj4gKyAgICAgICAg ICAgICAgIHJldCA9IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2UocGxhbmVfc3RhdGUpOwo+PiAr ICAgICAgICAgICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPj4gICAgICAgICB9IGVsc2Ugewo+PiAgICAgICAgICAgICAgICAgcGxhbmVfc3RhdGUt PmF1eC5vZmZzZXQgPSB+MHhmZmY7Cj4+ICAgICAgICAgICAgICAgICBwbGFuZV9zdGF0ZS0+YXV4 LnggPSAwOwo+PiBAQCAtMzM1Nyw4ICszNTAyLDEyIEBAIHUzMiBza2xfcGxhbmVfY3RsX3RpbGlu Zyh1aW50NjRfdCBmYl9tb2RpZmllcikKPj4gICAgICAgICAgICAgICAgIHJldHVybiBQTEFORV9D VExfVElMRURfWDsKPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+PiAg ICAgICAgICAgICAgICAgcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZOwo+PiArICAgICAgIGNhc2Ug STkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBM QU5FX0NUTF9USUxFRF9ZIHwgUExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fRU5BQkxFOwo+PiAgICAg ICAgIGNhc2UgSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+PiAgICAgICAgICAgICAgICAgcmV0 dXJuIFBMQU5FX0NUTF9USUxFRF9ZRjsKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRF9DQ1M6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lG IHwgUExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fCj4+IEVOQUJMRTsKPj4gICAgICAgICBkZWZhdWx0 Ogo+PiAgICAgICAgICAgICAgICAgTUlTU0lOR19DQVNFKGZiX21vZGlmaWVyKTsKPj4gICAgICAg ICB9Cj4+IEBAIC0zNDAxLDYgKzM1NTAsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9w cmltYXJ5X3BsYW5lKHN0cnVjdAo+PiBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgICAgICAgIHUzMiBw bGFuZV9jdGw7Cj4+ICAgICAgICAgdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUt PmJhc2Uucm90YXRpb247Cj4+ICAgICAgICAgdTMyIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJpZGUo ZmIsIDAsIHJvdGF0aW9uKTsKPj4gKyAgICAgICB1MzIgYXV4X3N0cmlkZSA9IHNrbF9wbGFuZV9z dHJpZGUoZmIsIDEsIHJvdGF0aW9uKTsKPj4gICAgICAgICB1MzIgc3VyZl9hZGRyID0gcGxhbmVf c3RhdGUtPm1haW4ub2Zmc2V0Owo+PiAgICAgICAgIGludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0 ZS0+c2NhbGVyX2lkOwo+PiAgICAgICAgIGludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5tYWluLng7 Cj4+IEBAIC0zNDM2LDYgKzM1ODYsMTAgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QKPj4gZHJtX3BsYW5lICpwbGFuZSwKPj4gICAgICAgICBJOTE1X1dS SVRFKFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZV9pZCksIChzcmNfeSA8PCAxNikgfCBzcmNfeCk7 Cj4+ICAgICAgICAgSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgcGxhbmVfaWQpLCBzdHJp ZGUpOwo+PiAgICAgICAgIEk5MTVfV1JJVEUoUExBTkVfU0laRShwaXBlLCBwbGFuZV9pZCksIChz cmNfaCA8PCAxNikgfCBzcmNfdyk7Cj4+ICsgICAgICAgSTkxNV9XUklURShQTEFORV9BVVhfRElT VChwaXBlLCBwbGFuZV9pZCksCj4+ICsgICAgICAgICAgICAgICAgICAocGxhbmVfc3RhdGUtPmF1 eC5vZmZzZXQgLSBzdXJmX2FkZHIpIHwgYXV4X3N0cmlkZSk7Cj4+ICsgICAgICAgSTkxNV9XUklU RShQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwKPj4gKyAgICAgICAgICAgICAgICAg IChwbGFuZV9zdGF0ZS0+YXV4LnkgPDwgMTYpIHwgcGxhbmVfc3RhdGUtPmF1eC54KTsKPj4KPj4g ICAgICAgICBpZiAoc2NhbGVyX2lkID49IDApIHsKPj4gICAgICAgICAgICAgICAgIHVpbnQzMl90 IHBzX2N0cmwgPSAwOwo+PiBAQCAtOTgwNywxMCArOTk2MSwxNiBAQCBza3lsYWtlX2dldF9pbml0 aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QKPj4gaW50ZWxfY3J0YyAqY3J0YywKPj4gICAgICAgICAg ICAgICAgIGZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+PiAgICAgICAg ICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgY2FzZSBQTEFORV9DVExfVElMRURfWToKPj4gLSAg ICAgICAgICAgICAgIGZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOwo+PiAr ICAgICAgICAgICAgICAgaWYgKHZhbCAmIFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJMRSkK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRURfQ0NTOwo+PiArICAgICAgICAgICAgICAgZWxzZQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDsKPj4gICAgICAg ICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgIGNhc2UgUExBTkVfQ1RMX1RJTEVEX1lGOgo+PiAt ICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+ PiArICAgICAgICAgICAgICAgaWYgKHZhbCAmIFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJM RSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEX0NDUzsKPj4gKyAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+PiAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICAgICAgICAgZGVmYXVsdDoKPj4gICAgICAgICAgICAg ICAgIE1JU1NJTkdfQ0FTRSh0aWxpbmcpOwo+PiBAQCAtMTIwMTQsNyArMTIxNzQsNyBAQCBzdGF0 aWMgdm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjCj4+ICppbnRlbF9jcnRj LAo+PiAgICAgICAgIHUzMiBjdGwsIHN0cmlkZSA9IHNrbF9wbGFuZV9zdHJpZGUoZmIsIDAsIHJv dGF0aW9uKTsKPj4KPj4gICAgICAgICBjdGwgPSBJOTE1X1JFQUQoUExBTkVfQ1RMKHBpcGUsIDAp KTsKPj4gLSAgICAgICBjdGwgJj0gflBMQU5FX0NUTF9USUxFRF9NQVNLOwo+PiArICAgICAgIGN0 bCAmPSB+KFBMQU5FX0NUTF9USUxFRF9NQVNLIHwgUExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fRU5B QkxFKTsKPj4gICAgICAgICBzd2l0Y2ggKGZiLT5tb2RpZmllcikgewo+PiAgICAgICAgIGNhc2Ug RFJNX0ZPUk1BVF9NT0RfTk9ORToKPj4gICAgICAgICAgICAgICAgIGJyZWFrOwo+PiBAQCAtMTIw MjQsOSArMTIxODQsMTUgQEAgc3RhdGljIHZvaWQgc2tsX2RvX21taW9fZmxpcChzdHJ1Y3QgaW50 ZWxfY3J0Ywo+PiAqaW50ZWxfY3J0YywKPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9Z X1RJTEVEOgo+PiAgICAgICAgICAgICAgICAgY3RsIHw9IFBMQU5FX0NUTF9USUxFRF9ZOwo+PiAg ICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRF9DQ1M6Cj4+ICsgICAgICAgICAgICAgICBjdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1kgfCBQ TEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEU7Cj4+ICsgICAgICAgICAgICAgICBicmVhazsK Pj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPj4gICAgICAgICAgICAg ICAgIGN0bCB8PSBQTEFORV9DVExfVElMRURfWUY7Cj4+ICAgICAgICAgICAgICAgICBicmVhazsK Pj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M6Cj4+ICsgICAgICAg ICAgICAgICBjdGwgfD0gUExBTkVfQ1RMX1RJTEVEX1lGIHwgUExBTkVfQ1RMX0RFQ09NUFJFU1NJ T05fCj4+IEVOQUJMRTsKPj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgIGRlZmF1 bHQ6Cj4+ICAgICAgICAgICAgICAgICBNSVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyKTsKPj4gICAg ICAgICB9Cj4+IEBAIC0xNTkyNSw5ICsxNjA5MSwxMCBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1l YnVmZmVyX2luaXQoc3RydWN0Cj4+IGRybV9kZXZpY2UgKmRldiwKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICB7 Cj4+ICAgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+PiArICAgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJmludGVsX2ZiLT5i YXNlOwo+PiAgICAgICAgIHVuc2lnbmVkIGludCB0aWxpbmcgPSBpOTE1X2dlbV9vYmplY3RfZ2V0 X3RpbGluZyhvYmopOwo+PiAtICAgICAgIGludCByZXQ7Cj4+IC0gICAgICAgdTMyIHBpdGNoX2xp bWl0LCBzdHJpZGVfYWxpZ25tZW50Owo+PiArICAgICAgIGludCByZXQsIGk7Cj4+ICsgICAgICAg dTMyIHBpdGNoX2xpbWl0Owo+PiAgICAgICAgIHN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZv cm1hdF9uYW1lOwo+Pgo+PiAgICAgICAgIFdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5z dHJ1Y3RfbXV0ZXgpKTsKPj4gQEAgLTE1OTUzLDYgKzE2MTIwLDE5IEBAIHN0YXRpYyBpbnQgaW50 ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QKPj4gZHJtX2RldmljZSAqZGV2LAo+Pgo+PiAgICAg ICAgIC8qIFBhc3NlZCBpbiBtb2RpZmllciBzYW5pdHkgY2hlY2tpbmcuICovCj4+ICAgICAgICAg c3dpdGNoIChtb2RlX2NtZC0+bW9kaWZpZXJbMF0pIHsKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUzoKPj4gKyAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9U SUxFRF9DQ1M6Cj4+ICsgICAgICAgICAgICAgICBzd2l0Y2ggKG1vZGVfY21kLT5waXhlbF9mb3Jt YXQpIHsKPj4gKyAgICAgICAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKPj4gKyAg ICAgICAgICAgICAgIGNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPj4gKyAgICAgICAgICAgICAg IGNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKPj4gKyAgICAgICAgICAgICAgIGNhc2UgRFJNX0ZP Uk1BVF9BUkdCODg4ODoKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAg ICAgICAgICAgICBkZWZhdWx0Ogo+PiArICAgICAgICAgICAgICAgICAgICAgICBEUk1fREVCVUdf S01TKCJSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODgKPj4gZm9ybWF0c1xuIik7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgICAgICAgICAg fQo+PiArICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCj4+ICAgICAgICAgY2FzZSBJ OTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPj4gICAgICAgICBjYXNlIEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRDoKPj4gICAgICAgICAgICAgICAgIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkg ewo+PiBAQCAtMTYwNTksMjIgKzE2MjM5LDQ2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZm ZXJfaW5pdChzdHJ1Y3QKPj4gZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgIGlmIChtb2RlX2Nt ZC0+b2Zmc2V0c1swXSAhPSAwKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ Cj4+IC0gICAgICAgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KGRldiwgJmludGVsX2Zi LT5iYXNlLCBtb2RlX2NtZCk7Cj4+ICsgICAgICAgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3Ry dWN0KGRldiwgZmIsIG1vZGVfY21kKTsKPj4KPj4gLSAgICAgICBzdHJpZGVfYWxpZ25tZW50ID0g aW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudCgmaW50ZWxfZmItPmJhc2UsIDApOwo+PiAtICAgICAg IGlmIChtb2RlX2NtZC0+cGl0Y2hlc1swXSAmIChzdHJpZGVfYWxpZ25tZW50IC0gMSkpIHsKPj4g LSAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoInBpdGNoICglZCkgbXVzdCBiZSBhdCBsZWFz dCAldSBieXRlCj4+IGFsaWduZWRcbiIsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZGVfY21kLT5waXRjaGVzWzBdLCBzdHJpZGVfYWxpZ25tZW50KTsKPj4gLSAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBmYi0+Zm9ybWF0 LT5udW1fcGxhbmVzOyBpKyspIHsKPj4gKyAgICAgICAgICAgICAgIHUzMiBzdHJpZGVfYWxpZ25t ZW50Owo+PiArCj4+ICsgICAgICAgICAgICAgICBpZiAobW9kZV9jbWQtPmhhbmRsZXNbaV0gIT0g bW9kZV9jbWQtPmhhbmRsZXNbMF0pIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgRFJNX0RF QlVHX0tNUygiYmFkIHBsYW5lICVkIGhhbmRsZVxuIiwgaSk7Cj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgICAgICAgICAgfQo+PiArCj4+ICsgICAg ICAgICAgICAgICBzdHJpZGVfYWxpZ25tZW50ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChm YiwgaSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIC8qCj4+ICsgICAgICAgICAgICAgICAgKiBE aXNwbGF5IFdBICMwNTMxOiBza2wsYnh0LGtibCxnbGsKPj4gKyAgICAgICAgICAgICAgICAqCj4+ ICsgICAgICAgICAgICAgICAgKiBSZW5kZXIgZGVjb21wcmVzc2lvbiBhbmQgcGxhbmUgd2lkdGgg PiAzODQwCj4+ICsgICAgICAgICAgICAgICAgKiBjb21iaW5lZCB3aXRoIGhvcml6b250YWwgcGFu bmluZyByZXF1aXJlcyB0aGUKPj4gKyAgICAgICAgICAgICAgICAqIHBsYW5lIHN0cmlkZSB0byBi ZSBhIG11bHRpcGxlIG9mIDQuIFdlJ2xsIGp1c3QKPj4gKyAgICAgICAgICAgICAgICAqIHJlcXVp cmUgdGhlIGVudGlyZSBmYiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2b2lkCj4+ICsgICAgICAg ICAgICAgICAgKiBwb3RlbnRpYWwgcnVudGltZSBlcnJvcnMgYXQgcGxhbmUgY29uZmlndXJhdGlv biB0aW1lLgo+Pgo+Cj5Ob3RlIHRvIEJlbjogVXNlcnNwYWNlIG5lZWRzIHRvIGtub3cgYWJvdXQg dGhpcyB0b28uICBJbiB0aGlzIGNhc2UsIEkKPmJlbGlldmUgIm11bHRpcGxlIG9mIDQiIG1lYW5z ICJtdWx0aXBsZSBvZiA0IHRpbGVzIi4gIFlvdSd2ZSBuZXZlciBoaXQgdGhpcwo+YmVjYXVzZSB0 aGUgc3RhbmRhcmQgMTkyMHgxMDgwIGlzIDYwIHRpbGVzIHdpZGUgd2hpY2ggaXMgYSBtdWx0aXBs ZSBvZiA0Lgo+Cj4KPj4gKyAgICAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAgaWYg KElTX0dFTjkoZGV2X3ByaXYpICYmIGkgPT0gMCAmJiBmYi0+d2lkdGggPiAzODQwICYmCj4+ICsg ICAgICAgICAgICAgICAgICAgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxF RF9DQ1MgfHwKPj4gKyAgICAgICAgICAgICAgICAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZZl9USUxFRF9DQ1MpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVf YWxpZ25tZW50ICo9IDQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChmYi0+cGl0Y2hlc1tp XSAmIChzdHJpZGVfYWxpZ25tZW50IC0gMSkpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg RFJNX0RFQlVHX0tNUygicGxhbmUgJWQgcGl0Y2ggKCVkKSBtdXN0IGJlIGF0Cj4+IGxlYXN0ICV1 IGJ5dGUgYWxpZ25lZFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpLCBmYi0+cGl0Y2hlc1tpXSwgc3RyaWRlX2FsaWdubWVudCk7Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgICAgICAgICAgfQo+PiAgICAgICAg IH0KPj4KPj4gICAgICAgICBpbnRlbF9mYi0+b2JqID0gb2JqOwo+Pgo+PiAtICAgICAgIHJldCA9 IGludGVsX2ZpbGxfZmJfaW5mbyhkZXZfcHJpdiwgJmludGVsX2ZiLT5iYXNlKTsKPj4gKyAgICAg ICByZXQgPSBpbnRlbF9maWxsX2ZiX2luZm8oZGV2X3ByaXYsIGZiKTsKPj4gICAgICAgICBpZiAo cmV0KQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4KPj4gLSAgICAgICByZXQgPSBk cm1fZnJhbWVidWZmZXJfaW5pdChkZXYsICZpbnRlbF9mYi0+YmFzZSwgJmludGVsX2ZiX2Z1bmNz KTsKPj4gKyAgICAgICByZXQgPSBkcm1fZnJhbWVidWZmZXJfaW5pdChkZXYsIGZiLCAmaW50ZWxf ZmJfZnVuY3MpOwo+PiAgICAgICAgIGlmIChyZXQpIHsKPj4gICAgICAgICAgICAgICAgIERSTV9F UlJPUigiZnJhbWVidWZmZXIgaW5pdCBmYWlsZWQgJWRcbiIsIHJldCk7Cj4+ICAgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsXwo+PiBwbS5jCj4+IGluZGV4IDI0 OTYyM2Q0NWJlMC4uMjU3ODJjZDE3NGMwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK Pj4gQEAgLTYyLDYgKzYyLDIwIEBAIHN0YXRpYyB2b2lkIGdlbjlfaW5pdF9jbG9ja19nYXRpbmco c3RydWN0Cj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgICAgICAgIEk5MTVfV1JJ VEUoQ0hJQ0tFTl9QQVIxXzEsCj4+ICAgICAgICAgICAgICAgICAgICBJOTE1X1JFQUQoQ0hJQ0tF Tl9QQVIxXzEpIHwgU0tMX0VEUF9QU1JfRklYX1JEV1JBUCk7Cj4+Cj4+ICsgICAgICAgLyoKPj4g KyAgICAgICAgKiBEaXNwbGF5IFdBIzAzOTA6IHNrbCxieHQsa2JsLGdsawo+PiArICAgICAgICAq Cj4+ICsgICAgICAgICogTXVzdCBtYXRjaCBTYW1wbGVyLCBQaXhlbCBCYWNrIEVuZCwgYW5kIE1l ZGlhCj4+ICsgICAgICAgICogKDB4RTE5NCBiaXQgOCwgMHg3MDE0IGJpdCAxMywgMHg0RERDIGJp dHMgMjcgYW5kIDMxKS4KPj4gKyAgICAgICAgKgo+PiArICAgICAgICAqIEluY2x1ZGluZyBiaXRz IG91dHNpZGUgdGhlIHBhZ2UgaW4gdGhlIGhhc2ggd291bGQKPj4gKyAgICAgICAgKiByZXF1aXJl IDIgKG9yIDQ/KSBNaUIgYWxpZ25tZW50IG9mIHJlc291cmNlcy4gSnVzdAo+PiArICAgICAgICAq IGFzc3VtZSB0aGUgZGVmYXVsIGhhc2hpbmcgbW9kZSB3aGljaCBvbmx5IHVzZXMgYml0cwo+PiAr ICAgICAgICAqIHdpdGhpbiB0aGUgcGFnZS4KPj4gKyAgICAgICAgKi8KPj4gKyAgICAgICBJOTE1 X1dSSVRFKENISUNLRU5fUEFSMV8xLAo+PiArICAgICAgICAgICAgICAgICAgSTkxNV9SRUFEKENI SUNLRU5fUEFSMV8xKSAmIH5TS0xfUkNfSEFTSF9PVVRTSURFKTsKPj4gKwo+PiAgICAgICAgIEk5 MTVfV1JJVEUoR0VOOF9DT05GSUcwLAo+PiAgICAgICAgICAgICAgICAgICAgSTkxNV9SRUFEKEdF TjhfQ09ORklHMCkgfCBHRU45X0RFRkFVTFRfRklYRVMpOwo+Pgo+PiBAQCAtMzMxNCw3ICszMzI4 LDkgQEAgc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZQo+PiAq cHN0YXRlLAo+Pgo+PiAgICAgICAgIC8qIEZvciBOb24gWS10aWxlIHJldHVybiA4LWJsb2NrcyAq Lwo+PiAgICAgICAgIGlmIChmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQg JiYKPj4gLSAgICAgICAgICAgZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCkKPj4gKyAgICAgICAgICAgZmItPm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCAmJgo+PiArICAgICAgICAgICBmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RURfQ0NTICYmCj4+ICsgICAgICAgICAgIGZiLT5tb2RpZmllciAhPSBJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRURfQ0NTKQo+PiAgICAgICAgICAgICAgICAgcmV0dXJuIDg7Cj4+Cj4+ICAgICAgICAg c3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4+ IEBAIC0zNTkwLDcgKzM2MDYsOSBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNv bnN0IHN0cnVjdAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAgICAgICB9Cj4+ Cj4+ICAgICAgICAgeV90aWxlZCA9IGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCB8fAo+PiAtICAgICAgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEOwo+PiArICAgICAgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEIHx8Cj4+ICsgICAgICAgICAgICAgICAgIGZiLT5tb2RpZmllciA9 PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwKPj4gKyAgICAgICAgICAgICAgICAgZmIt Pm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M7Cj4+ICAgICAgICAgeF90 aWxlZCA9IGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKPj4KPj4gICAg ICAgICAvKiBEaXNwbGF5IFdBICMxMTQxOiBrYmwuICovCj4+IEBAIC0zNjc1LDYgKzM2OTMsMTMg QEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QKPj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAgICAgICAgcmVzX2xpbmVzID0gRElWX1JPVU5EX1VQ KHNlbGVjdGVkX3Jlc3VsdC52YWwsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBsYW5lX2Jsb2Nrc19wZXJfbGluZS52YWwpOwo+Pgo+PiArICAgICAgIC8qIERpc3BsYXkgV0Eg IzExMjU6IHNrbCxieHQsa2JsLGdsayAqLwo+PiArICAgICAgIGlmIChsZXZlbCA9PSAwICYmCj4+ ICsgICAgICAgICAgIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NT IHx8Cj4+ICsgICAgICAgICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEX0NDUykpCj4+ICsgICAgICAgICAgICAgICByZXNfYmxvY2tzICs9IGZpeGVkXzE2XzE2X3Rv X3UzMl9yb3VuZF91cCh5X3RpbGVfbWluaW11bSk7Cj4+ICsKPj4gKyAgICAgICAvKiBEaXNwbGF5 IFdBICMxMTI2OiBza2wsYnh0LGtibCxnbGsgKi8KPj4gICAgICAgICBpZiAobGV2ZWwgPj0gMSAm JiBsZXZlbCA8PSA3KSB7Cj4+ICAgICAgICAgICAgICAgICBpZiAoeV90aWxlZCkgewo+PiAgICAg ICAgICAgICAgICAgICAgICAgICByZXNfYmxvY2tzICs9IGZpeGVkXzE2XzE2X3RvX3UzMl9yb3Vu ZF91cCh5Xwo+PiB0aWxlX21pbmltdW0pOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJp dGUuYwo+PiBpbmRleCA3MDMxYmM3MzNkOTcuLjA2M2E5OTQ4MTVkMCAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gQEAgLTIxMCw2ICsyMTAsNyBAQCBza2xfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPj4gICAgICAgICB1MzIgc3VyZl9h ZGRyID0gcGxhbmVfc3RhdGUtPm1haW4ub2Zmc2V0Owo+PiAgICAgICAgIHVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+PiAgICAgICAgIHUzMiBzdHJp ZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZiLCAwLCByb3RhdGlvbik7Cj4+ICsgICAgICAgdTMyIGF1 eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZiLCAxLCByb3RhdGlvbik7Cj4+ICAgICAgICAg aW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKPj4gICAgICAgICBpbnQgY3J0 Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+PiAgICAgICAgIHVpbnQzMl90IGNydGNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+PiBAQCAtMjQ4LDYg KzI0OSwxMCBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwK Pj4gICAgICAgICBJOTE1X1dSSVRFKFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZV9pZCksICh5IDw8 IDE2KSB8IHgpOwo+PiAgICAgICAgIEk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5l X2lkKSwgc3RyaWRlKTsKPj4gICAgICAgICBJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxh bmVfaWQpLCAoc3JjX2ggPDwgMTYpIHwgc3JjX3cpOwo+PiArICAgICAgIEk5MTVfV1JJVEUoUExB TkVfQVVYX0RJU1QocGlwZSwgcGxhbmVfaWQpLAo+PiArICAgICAgICAgICAgICAgICAgKHBsYW5l X3N0YXRlLT5hdXgub2Zmc2V0IC0gc3VyZl9hZGRyKSB8IGF1eF9zdHJpZGUpOwo+PiArICAgICAg IEk5MTVfV1JJVEUoUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZV9pZCksCj4+ICsgICAgICAg ICAgICAgICAgICAocGxhbmVfc3RhdGUtPmF1eC55IDw8IDE2KSB8IHBsYW5lX3N0YXRlLT5hdXgu eCk7Cj4+Cj4+ICAgICAgICAgLyogcHJvZ3JhbSBwbGFuZSBzY2FsZXIgKi8KPj4gICAgICAgICBp ZiAocGxhbmVfc3RhdGUtPnNjYWxlcl9pZCA+PSAwKSB7Cj4+IC0tCj4+IDIuMTAuMgo+Pgo+Pgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK