From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] Revert "drm/i915/skl: New ddb allocation algorithm" Date: Fri, 16 Jun 2017 00:10:41 +0300 Message-ID: <87fuf1vtwu.fsf@intel.com> References: <1497376350-3400-1-git-send-email-rodrigo.vivi@intel.com> <20170613180705.GJ19328@mdroper-desk.amr.corp.intel.com> <1497440826.14142.2.camel@gmail.com> <6117a22b-f454-f72b-1dba-59b2790458db@intel.com> <1497509627.3260.1.camel@gmail.com> <878tktxb5e.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA32A6E81C for ; Thu, 15 Jun 2017 21:10:57 +0000 (UTC) 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: Rodrigo Vivi Cc: intel-gfx , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxNSBKdW4gMjAxNywgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAZ21haWwuY29t PiB3cm90ZToKPiBPbiBUaHUsIEp1biAxNSwgMjAxNyBhdCAxOjEzIFBNLCBKYW5pIE5pa3VsYQo+ IDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+PiBPbiBUaHUsIDE1IEp1biAy MDE3LCBBbmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmEgPGNvbnNlbHZhbjJAZ21haWwuY29tPiB3 cm90ZToKPj4+IE9uIFRodSwgMjAxNy0wNi0xNSBhdCAwOTo0NCArMDUzMCwgTWFoZXNoIEt1bWFy IHdyb3RlOgo+Pj4+IEhpIEFuZGVyLAo+Pj4+Cj4+Pj4KPj4+PiBPbiBXZWRuZXNkYXkgMTQgSnVu ZSAyMDE3IDA1OjE3IFBNLCBBbmRlciBDb25zZWx2YW4gRGUgT2xpdmVpcmEgd3JvdGU6Cj4+Pj4g PiBPbiBUdWUsIDIwMTctMDYtMTMgYXQgMTI6MDYgLTA3MDAsIFJvZHJpZ28gVml2aSB3cm90ZToK Pj4+PiA+ID4gT24gVHVlLCBKdW4gMTMsIDIwMTcgYXQgMTE6MDcgQU0sIE1hdHQgUm9wZXIgPG1h dHRoZXcuZC5yb3BlckBpbnRlbC5jb20+IHdyb3RlOgo+Pj4+ID4gPiA+IE9uIFR1ZSwgSnVuIDEz LCAyMDE3IGF0IDEwOjUyOjMwQU0gLTA3MDAsIFJvZHJpZ28gVml2aSB3cm90ZToKPj4+PiA+ID4g PiA+IFRoaXMgcmV2ZXJ0cyBjb21taXQgYmI5ZDg1ZjZlOWRlOGZlZjUyMzZjMDc2NTMwZWFiNjdh MmYyNDMxYi4KPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4gPiBOZXcgZGRiIGFsbG9jYXRpb24gYWxn b3JpdGhtIGlzIGEgc2hvdyBzdG9wcGVyIG9uIG15IFNLTCBzeXN0ZW0uCj4+Pj4gPiA+ID4gPgo+ Pj4+ID4gPiA+ID4gQmVzaWRlcyBub3QgYmUgYWJsZSB0byBnZXQgZXh0ZXJuYWwgRFAgNGtANjAg KHRocm91Z2ggVVNCIHR5cGUgQyksCj4+Pj4gPiA+ID4gPiBJdCBmdWxseSBoYW5nIG15IHNjcmVl biB3aGVuIHVucGx1Z2dpbmcgdGhlIFVTQiB0eXBlIEMuCj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ ID4gQ2M6IE1haGVzaCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Cj4+Pj4gPiA+ID4g PiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KPj4+PiA+ID4gPiA+IENjOiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29t Pgo+Pj4+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlA aW50ZWwuY29tPgo+Pj4+ID4gPiA+Cj4+Pj4gPiA+ID4gSXMgdGhlcmUgYSBidWd6aWxsYSBlbnRy eSB3aXRoIGRldGFpbHMvbG9ncyBmcm9tIHRoZSBmYWlsdXJlIHdlIGNhbgo+Pj4+ID4gPiA+IHJl ZmVyIHRvPwo+Pj4+ID4gPgo+Pj4+ID4gPiBub3BlLCBzaW5jZSBJIGtub3cgaXQgd2FzIHdvcmtp bmcgZmV3IHdlZWtzIGFnbyBhbmQgdGhlbiBzdG9wcGVkCj4+Pj4gPiA+IHdvcmtpbmcgSSB3ZW50 IGRpcmVjdGx5Cj4+Pj4gPiA+IHRvIGJpc2VjdCBzbyBJIGNvdWxkIGdldCBteSBzeXN0ZW0gdXNh YmxlIHF1aWNrbHkgYWdhaW4uCj4+Pj4gPiA+Cj4+Pj4gPiA+IEJ1dCB5ZXMsIEkgbmVlZCB0byBv cGVuIGEgcHJvcGVyIGJ1Z3ppbGxhIGFuZCBwcm92aWRlIGxvZ3MuCj4+Pj4gPiA+IFNob3VsZCB3 ZSByZXZlcnQgZmlyc3QgYW5kIGdyYWIgbG9ncyBsYXR0ZXIgb3Igd2UgYXJlIGdvaW5nIHRvIHRy eSB0bwo+Pj4+ID4gPiBhbmFseXNlIGxvZ3MgYW5kIGZpeD8KPj4+PiA+ID4KPj4+PiA+ID4gQW55 d2F5cyB0aGlzIGlzIGEgYmlnIHNob3cgc3RvcHBlciBzbyBJIGJlbGlldmUgd2UgcmV2ZXJ0IGF0 IGxlYXN0Cj4+Pj4gPiA+IGJlZm9yZSBuZXh0IHB1bGwgcmVxdWVzdC4KPj4+PiA+Cj4+Pj4gPiBU aGlzIHBhdGNoIGFsc28gY2F1c2VzIGFydGlmYWN0cyBpbiBkdWFsIHNjcmVlbiBzZXR1cHMuIEFs bCB0aGUgc2NhbmxpbmVzIGJlbG93Cj4+Pj4gPiB0aGUgbW91c2UgY3Vyc29yIGFyZSB3cm9uZywg c29tZXRpbWVzIGNvbnRhaW5pbmcgYSBzaGFkZSBvZiBncmF5IGFuZCBvdGhlcnMKPj4+PiA+IHJl cGVhdGluZyB0aGUgaW1hZ2UgYWJvdmUuIEkndmUgc2VlbiB0aGlzIGluIEFQTCBhbmQgR0xLIHVz aW5nIERTSStIRE1JLAo+Pj4+ID4gZURQK0hETUkgYW5kIERTSStEUC4gSW4gdGhlIERQIGNhc2Us IGhvd2V2ZXIsIHRoZSBzY3JlZW4gZ29lcyBibGFuayBhbmQgcmVwb3J0cwo+Pj4+ID4gbGFjayBv ZiBzaWduYWwuCj4+Pj4gPgo+Pj4+ID4gSSd2ZSBub3RpY2VkIGZpZm8gdW5kZXJydW4gbWVzc2Fn ZXMuIEkgY29tcGFyZWQgdGhlIGRkYiBhbGxvY2F0aW9uIGluIEdMSyB3aXRoIGEKPj4+PiA+IHdv cmtpbmcgYW5kIG5vbi13b3JraW5nIGtlcm5lbCwgYnV0IHRoZXkgd2VyZSB0aGUgc2FtZS4KPj4+ Pgo+Pj4+IHlvdXIgb2JzZXJ2YXRpb24gbG9va3MgbGlrZSBvbmUgd2Ugb2JzZXJ2ZWQgaW4gb25l IG9mIHRoZSBMaW51eCB2YXJpYW50Cj4+Pj4gcHJvZ3JhbS4KPj4+PiBUaGVyZSB3YXMgYW4gY29u ZmlndXJhdGlvbiB3aGVyZSBsb3dlciBXTS1sZXZlbCBoYXZpbmcgaGlnaGVyIEREQgo+Pj4+IHJl cXVpcmVtZW50IHRoYW4gaGlnaGVyIGxldmVscy4gV2hpY2ggd2FzIGxlYWRpbmcgdG8gbG93ZXIg V00gbGV2ZWxzCj4+Pj4gZ2V0dGluZyBkaXNhYmxlZC4KPj4+Pgo+Pj4+IENhbiB5b3UgcGxlYXNl IHRyeSB3aXRoIGZvbGxvd2luZyBwYXRjaCB0byBzZWUgaWYgaXQncyBzb2x2aW5nIHRoZSBwcm9i bGVtLgo+Pj4+Cj4+Pj4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE2 MTU3MS8KPj4+Cj4+PiBJIHRlc3RlZCB0aGF0IGluIG15IEdMSywgYnV0IGl0IGRpZG4ndCBoZWxw LiBTdGlsbCBnZXR0aW5nIGFydGlmYWN0cyBmb2xsb3dpbmcKPj4+IHRoZSBtb3VzZSBjdXJzb3Iu Cj4+Cj4+IElmIHRoZSByZXZlcnQgaGVscHMgdGhlIEdMSyBjYXNlIGFzIHdlbGwsIHBsZWFzZSBs ZXQncyByZXZlcnQuIFdlCj4+IGdlbmVyYWxseSB3YXN0ZSB0b28gbXVjaCB0aW1lIHRyeWluZyB0 byBnZXQgdGhpbmdzIGZpeGVkIHdoZW4gdGhlIHJldmVydAo+PiBhbmQgcmV0dXJuIHRvIHRoZSBk cmF3aW5nIGJvYXJkIGlzIHRoZSB3YXkgdG8gZ28uCj4KPiBBZ3JlZWQuCj4gQnV0Ogo+Cj4gZGlt OiBFUlJPUjogMTFjYWJkNDI0NTg3Yzc3NTk2Y2ViMTk4Mjg0YTRjNTBhMjc4NDYwMiBpcyBsYWNr aW5nCj4gbWFuZGF0b3J5IHJldmlldywgYWJvcnRpbmcKClRoZW4gc2hvdmUgaW4KCkFja2VkLWJ5 OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKPgo+Pgo+PiBSb2RyaWdvLCBw bGVhc2UgYWRkIHRoZSBCdWd6aWxsYTogcmVmZXJlbmNlIGFuZCBwcm9wZXIgRml4ZXM6IGxpbmUu Cj4KPiBEbyB3ZSBuZWVkICJGaXhlczoiIG9uIHRoZSBSZXZlcnQgd2hvIGFscmVhZHkgcmVmZXJl bmNlcyB0aGUgb3JpZ2luYWwKPiBnaXQgY29tbWl0Pwo+IEkgZGlkbid0IGZpbmQgYW55IFJldmVy dCBwYXRjaCBpbiBvdXIgdHJlZSB3aXRoIHRoZSBGaXhlcyB0aGlzIGlzIHdoeQo+IEknbSBhc2tp bmcuCgpXZSBuZWVkIGl0IGJlY2F1c2UgRml4ZXM6IGlzIHRoZSB0aGluZyB0aGF0IHRvb2xpbmcg bG9va3MgYXQuIFdoZXJldmVyIGEKPGNvbW1pdD4gZ29lcywgRml4ZXM6IDxjb21taXQ+IGZvbGxv d3MuCgpCUiwKSmFuaS4KCj4KPj4KPj4gQlIsCj4+IEphbmkuCj4+Cj4+Cj4+Pgo+Pj4gQW5kZXIK Pj4+Cj4+Pj4gUm9kcmlnbywKPj4+Pgo+Pj4+IENhbiB5b3UgcGxlYXNlIGFsc28gY2hlY2sgaWYg dGhpcyBpcyB0aGUgc2FtZSByZWFzb24gZm9yIHlvdXIgZmFpbHVyZS4KPj4+PiBJJ20gYXJyYW5n aW5nIGZvciBhIHN5c3RlbSB3aXRoIFNLTCtVU0IgdHlwZS1DIERQIDRLQDYwICYgZURQLiB3aWxs Cj4+Pj4gZGVidWcgdGhpcyBmdXJ0aGVyLgo+Pj4+Cj4+Pj4gLU1haGVzaAo+Pj4+Cj4+Pj4gPgo+ Pj4+ID4gQW5kZXIKPj4+PiA+ID4gV2hlbiB5b3Ugc2F5IHlvdSBjYW4ndCBnZXQgRFAgNGtANjAs IGFyZSB5b3Ugc2VlaW5nIG1lc3NhZ2VzCj4+Pj4gPiA+ID4gaW4gZG1lc2cgYWJvdXQgdGhlIHNl dHVwIGJlaW5nIG91dHNpZGUgc3lzdGVtIHdhdGVybWFyayBsaW1pdGF0aW9ucyBvcgo+Pj4+ID4g PiA+IGFyZSB5b3UganVzdCBnZXR0aW5nIGEgYmxhY2sgc2NyZWVuPwo+Pj4+ID4gPgo+Pj4+ID4g PiBqdXN0IGdldHRpbmcgYSBibGFuayBzY3JlZW4gb24gRFAgd2hlbiBwbHVnZ2luZyB1c2ItYyBh bmQgYSBsb2NrZWQtdXAKPj4+PiA+ID4gc2NyZWVuIG9uIGVEUCB3aGVuIHJlbW92aW5nIHVzYi1j Lgo+Pj4+ID4gPgo+Pj4+ID4gPiA+Cj4+Pj4gPiA+ID4gTWF0dAo+Pj4+ID4gPiA+Cj4+Pj4gPiA+ ID4gPiAtLS0KPj4+PiA+ID4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8 IDI1NyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4gPiA+ID4g PiAgIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxNTkgZGVsZXRpb25zKC0pCj4+ Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4+Pj4gPiA+ID4g PiBpbmRleCBhYTlkOGNlLi5kYzQyNzVkIDEwMDY0NAo+Pj4+ID4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+Pj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uYwo+Pj4+ID4gPiA+ID4gQEAgLTQxNDAsNDEgKzQxNDAsMTMgQEAg aW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+Pj4+ID4gPiA+ID4gICAgICAgIG1pbmltdW1bUExBTkVfQ1VSU09SXSA9IHNrbF9j dXJzb3JfYWxsb2NhdGlvbihudW1fYWN0aXZlKTsKPj4+PiA+ID4gPiA+ICAgfQo+Pj4+ID4gPiA+ ID4KPj4+PiA+ID4gPiA+IC1zdGF0aWMgdm9pZAo+Pj4+ID4gPiA+ID4gLXNrbF9lbmFibGVfcGxh bmVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+ PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBwbGFuZV9kZGIsCj4+ Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbWF4X2xldmVsLAo+ Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBza2xfcGxhbmVfd20g KndtKQo+Pj4+ID4gPiA+ID4gLXsKPj4+PiA+ID4gPiA+IC0gICAgIGludCBsZXZlbDsKPj4+PiA+ ID4gPiA+IC0gICAgIC8qCj4+Pj4gPiA+ID4gPiAtICAgICAgKiBOb3cgZW5hYmxlIGFsbCBsZXZl bHMgaW4gV00gc3RydWN0dXJlIHdoaWNoIGNhbiBiZSBlbmFibGVkCj4+Pj4gPiA+ID4gPiAtICAg ICAgKiB1c2luZyBjdXJyZW50IEREQiBhbGxvY2F0aW9uCj4+Pj4gPiA+ID4gPiAtICAgICAgKi8K Pj4+PiA+ID4gPiA+IC0gICAgIGZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2 KTsgbGV2ZWwgPj0gMDsgbGV2ZWwtLSkgewo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICBzdHJ1 Y3Qgc2tsX3dtX2xldmVsICpsZXZlbF93bSA9ICZ3bS0+d21bbGV2ZWxdOwo+Pj4+ID4gPiA+ID4g LQo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICBpZiAobGV2ZWwgPiBtYXhfbGV2ZWwgfHwgbGV2 ZWxfd20tPnBsYW5lX3Jlc19iID09IDAKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHx8IGxldmVsX3dtLT5wbGFuZV9yZXNfbCA+PSAzMQo+Pj4+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbGV2ZWxfd20tPnBsYW5l X3Jlc19iID49IHBsYW5lX2RkYikgewo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg IGxldmVsX3dtLT5wbGFuZV9lbiA9IGZhbHNlOwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgIGxldmVsX3dtLT5wbGFuZV9yZXNfYiA9IDA7Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgbGV2ZWxfd20tPnBsYW5lX3Jlc19sID0gMDsKPj4+PiA+ID4gPiA+IC0gICAg ICAgICAgICAgfSBlbHNlIHsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBsZXZl bF93bS0+cGxhbmVfZW4gPSB0cnVlOwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICB9Cj4+Pj4g PiA+ID4gPiAtICAgICB9Cj4+Pj4gPiA+ID4gPiAtfQo+Pj4+ID4gPiA+ID4gLQo+Pj4+ID4gPiA+ ID4gICBzdGF0aWMgaW50Cj4+Pj4gPiA+ID4gPiAgIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20sCj4+Pj4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKQo+Pj4+ ID4gPiA+ID4gICB7Cj4+Pj4gPiA+ID4gPiAgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwo+Pj4+ID4gPiA+ID4gICAgICAgIHN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+Pj4+ID4gPiA+ID4gICAgICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4+Pj4gPiA+ID4gPiAtICAgICBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+Pj4gPiA+ID4g PiAgICAgICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+Pj4+ID4gPiA+ID4gICAgICAgIGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPj4+PiA+ID4gPiA+ICAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3N0 YXRlLT53bS5za2wuZGRiOwo+Pj4+ID4gPiA+ID4gQEAgLTQxODcsOSArNDE1OSw2IEBAIGludCBz a2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKPj4+PiA+ID4gPiA+ICAgICAgICB1bnNpZ25lZCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhf UExBTkVTXSA9IHt9Owo+Pj4+ID4gPiA+ID4gICAgICAgIHVuc2lnbmVkIHBsYW5lX3lfZGF0YV9y YXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPj4+PiA+ID4gPiA+ICAgICAgICB1aW50MTZfdCB0 b3RhbF9taW5fYmxvY2tzID0gMDsKPj4+PiA+ID4gPiA+IC0gICAgIHVpbnQxNl90IHRvdGFsX2xl dmVsX2RkYjsKPj4+PiA+ID4gPiA+IC0gICAgIHVpbnQxNl90IHBsYW5lX2Jsb2NrcyA9IDA7Cj4+ Pj4gPiA+ID4gPiAtICAgICBpbnQgbWF4X2xldmVsLCBsZXZlbDsKPj4+PiA+ID4gPiA+Cj4+Pj4g PiA+ID4gPiAgICAgICAgLyogQ2xlYXIgdGhlIHBhcnRpdGlvbmluZyBmb3IgZGlzYWJsZWQgcGxh bmVzLiAqLwo+Pj4+ID4gPiA+ID4gICAgICAgIG1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBz aXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOwo+Pj4+ID4gPiA+ID4gQEAgLTQyMjgsNDggKzQxOTcs MTAgQEAgaW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4+Pj4gPiA+ID4gPiAgICAgICAgfQo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+IC0gICAgIGFs bG9jX3NpemUgLT0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+Pj4+ID4gPiA+ID4gLSAgICAgZGRi LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtCj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtaW5pbXVtW1BMQU5FX0NVUlNPUl07Cj4+Pj4gPiA+ID4gPiArICAgICBhbGxvY19zaXplIC09 IHRvdGFsX21pbl9ibG9ja3M7Cj4+Pj4gPiA+ID4gPiArICAgICBkZGItPnBsYW5lW3BpcGVdW1BM QU5FX0NVUlNPUl0uc3RhcnQgPSBhbGxvYy0+ZW5kIC0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ Pj4+ID4gPiA+ID4gICAgICAgIGRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5lbmQgPSBh bGxvYy0+ZW5kOwo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+IC0gICAgIGZvciAobGV2ZWwgPSBp bGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsgbGV2ZWwgPj0gMDsgbGV2ZWwtLSkgewo+Pj4+ID4g PiA+ID4gLSAgICAgICAgICAgICB0b3RhbF9sZXZlbF9kZGIgPSAwOwo+Pj4+ID4gPiA+ID4gLSAg ICAgICAgICAgICBmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lk KSB7Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgLyoKPj4+PiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgKiBUT0RPOiBXZSBzaG91bGQgY2FsY3VsYXRlIHdhdGVybWFy ayB2YWx1ZXMgZm9yIFkvVVYKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgKiBw bGFuZSBib3RoIGluIGNhc2Ugb2YgTlYxMiBmb3JtYXQgYW5kIHVzZSBib3RoIHZhbHVlcwo+Pj4+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAqIGZvciBkZGIgY2FsY3VsYXRpb24uIE5W MTIgaXMgZGlzYWJsZWQgYXMgb2Ygbm93LCBTbwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAqIHVzaW5nIG9ubHkgc2luZ2xlL1VWIHBsYW5lIHZhbHVlIGhlcmUuCj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICovCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5l X2lkXTsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBwbGFuZV9y ZXNfYiA9IHdtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2I7Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgdWludDE2X3QgbWluID0gbWluaW11bVtwbGFuZV9pZF0gKyB5X21pbmltdW1b cGxhbmVfaWRdOwo+Pj4+ID4gPiA+ID4gLQo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAg ICAgIGlmIChwbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4+Pj4gPiA+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+PiA+ID4gPiA+IC0KPj4+PiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICB0b3RhbF9sZXZlbF9kZGIgKz0gbWF4KHBsYW5lX3Jlc19i LCBtaW4pOwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICB9Cj4+Pj4gPiA+ID4gPiAtCj4+Pj4g PiA+ID4gPiAtICAgICAgICAgICAgIC8qCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAqIElm IFRoaXMgbGV2ZWwgY2FuIHN1Y2Nlc3NmdWxseSBiZSBlbmFibGVkIHdpdGggdGhlCj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAqIHBpcGUncyBjdXJyZW50IEREQiBhbGxvY2F0aW9uLCB0aGVu IGFsbCBsb3dlciBsZXZlbHMgYXJlCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAqIGd1YXJh bnRlZWQgdG8gc3VjY2VlZCBhcyB3ZWxsLgo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgKi8K Pj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgaWYgKHRvdGFsX2xldmVsX2RkYiA8PSBhbGxvY19z aXplKQo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ID4gPiA+ ID4gLSAgICAgfQo+Pj4+ID4gPiA+ID4gLQo+Pj4+ID4gPiA+ID4gLSAgICAgaWYgKChsZXZlbCA8 IDApIHx8ICh0b3RhbF9taW5fYmxvY2tzID4gYWxsb2Nfc2l6ZSkpIHsKPj4+PiA+ID4gPiA+IC0g ICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3BsYXkgY29uZmlndXJhdGlv biBleGNlZWRzIHN5c3RlbSBEREIgbGltaXRhdGlvbnMiKTsKPj4+PiA+ID4gPiA+IC0gICAgICAg ICAgICAgRFJNX0RFQlVHX0tNUygibWluaW11bSByZXF1aXJlZCAlZC8lZFxuIiwgKGxldmVsIDwg MCkgPwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfbGV2 ZWxfZGRiIDogdG90YWxfbWluX2Jsb2NrcywgYWxsb2Nfc2l6ZSk7Cj4+Pj4gPiA+ID4gPiAtICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+ID4gPiA+ID4gLSAgICAgfQo+Pj4+ID4gPiA+ ID4gLSAgICAgbWF4X2xldmVsID0gbGV2ZWw7Cj4+Pj4gPiA+ID4gPiAtICAgICBhbGxvY19zaXpl IC09IHRvdGFsX2xldmVsX2RkYjsKPj4+PiA+ID4gPiA+IC0KPj4+PiA+ID4gPiA+ICAgICAgICAv Kgo+Pj4+ID4gPiA+ID4gICAgICAgICAqIDIuIERpc3RyaWJ1dGUgdGhlIHJlbWFpbmluZyBzcGFj ZSBpbiBwcm9wb3J0aW9uIHRvIHRoZSBhbW91bnQgb2YKPj4+PiA+ID4gPiA+ICAgICAgICAgKiBk YXRhIGVhY2ggcGxhbmUgbmVlZHMgdG8gZmV0Y2ggZnJvbSBtZW1vcnkuCj4+Pj4gPiA+ID4gPiBA QCAtNDI3OSwyNCArNDIxMCwxMyBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3BpeGVsX3JhdGUo c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+Pj4gPiA+ID4gPiAgICAgICAgdG90YWxf ZGF0YV9yYXRlID0gc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3N0YXRlLAo+Pj4+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBsYW5lX2RhdGFfcmF0ZSwKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZV95X2RhdGFfcmF0 ZSk7Cj4+Pj4gPiA+ID4gPiAtICAgICAvKgo+Pj4+ID4gPiA+ID4gLSAgICAgICogUExBTkVfQ1VS U09SIGRhdGEgcmF0ZSBpcyBub3QgaW5jbHVkZWQgaW4gdG90YWxfZGF0YV9yYXRlLgo+Pj4+ID4g PiA+ID4gLSAgICAgICogSWYgb25seSBjdXJzb3IgcGxhbmUgaXMgZW5hYmxlZCB3ZSBoYXZlIHRv IGVuYWJsZSBpdHMgV00gbGV2ZWxzCj4+Pj4gPiA+ID4gPiAtICAgICAgKiBleHBsaWNpdGx5IGJl Zm9yZSByZXR1cm5pbmcuIEN1cnNvciBoYXMgZml4ZWQgZGRiIGFsbG9jYXRpb24sCj4+Pj4gPiA+ ID4gPiAtICAgICAgKiBTbyBpdCdzIG9rIHRvIGFsd2F5cyBjaGVjayBjdXJzb3IgV00gZW5hYmxp bmcgYmVmb3JlIHJldHVybi4KPj4+PiA+ID4gPiA+IC0gICAgICAqLwo+Pj4+ID4gPiA+ID4gLSAg ICAgcGxhbmVfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW1BM QU5FX0NVUlNPUl0pOwo+Pj4+ID4gPiA+ID4gLSAgICAgc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZl bHMoZGV2X3ByaXYsIHBsYW5lX2Jsb2NrcywgbWF4X2xldmVsLAo+Pj4+ID4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpcGVfd20tPnBsYW5lc1tQTEFORV9DVVJTT1Jd KTsKPj4+PiA+ID4gPiA+ICAgICAgICBpZiAodG90YWxfZGF0YV9yYXRlID09IDApCj4+Pj4gPiA+ ID4gPiAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4gPiAg ICAgICAgc3RhcnQgPSBhbGxvYy0+c3RhcnQ7Cj4+Pj4gPiA+ID4gPiAgICAgICAgZm9yX2VhY2hf cGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+Pj4+ID4gPiA+ID4gICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Cj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgIHVpbnQxNl90IHBsYW5lX2Jsb2NrcyA9IDAsIHlfcGxhbmVfYmxv Y2tzID0gMDsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAq d20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAg ICAgdWludDE2X3QgcGxhbmVfcmVzX2IgPSB3bS0+d21bbWF4X2xldmVsXS5wbGFuZV9yZXNfYjsK Pj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5l X2Jsb2NrcyA9IDA7Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgaWYg KHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7Cj4+Pj4gPiA+ID4gPiBAQCAtNDMwOCwzNiArNDIyOCwzMyBAQCBpbnQg c2tsX2NoZWNrX3BpcGVfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMsCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgKiBwcm9tb3RlIHRoZSBleHByZXNzaW9u IHRvIDY0IGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3dpbmcsIHRoZQo+Pj4+ID4gPiA+ID4gICAgICAg ICAgICAgICAgICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFsX2Rh dGFfcmF0ZSA8IDEKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAqLwo+Pj4+ID4gPiA+ID4g KyAgICAgICAgICAgICBwbGFuZV9ibG9ja3MgPSBtaW5pbXVtW3BsYW5lX2lkXTsKPj4+PiA+ID4g PiA+ICsgICAgICAgICAgICAgcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9j X3NpemUgKiBkYXRhX3JhdGUsCj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRvdGFsX2RhdGFfcmF0ZSk7Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4g ICAgICAgICAgICAgICAgLyogTGVhdmUgZGlzYWJsZWQgcGxhbmVzIGF0ICgwLDApICovCj4+Pj4g PiA+ID4gPiAgICAgICAgICAgICAgICBpZiAoZGF0YV9yYXRlKSB7Cj4+Pj4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgcGxhbmVfYmxvY2tzID0gbWF4KG1pbmltdW1bcGxhbmVfaWRdLCBw bGFuZV9yZXNfYik7Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgcGxhbmVfYmxv Y2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKgo+Pj4+ID4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3JhdGUsIHRvdGFsX2RhdGFfcmF0 ZSk7Cj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIGRkYi0+cGxhbmVbcGlwZV1b cGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Cj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgIGRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdLmVuZCA9IHN0YXJ0ICsgcGxhbmVfYmxvY2tz Owo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IHBsYW5lX2Jsb2Nr czsKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIH0KPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4g PiArICAgICAgICAgICAgIHN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKPj4+PiA+ID4gPiA+ICsKPj4+ PiA+ID4gPiA+ICAgICAgICAgICAgICAgIC8qCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg KiBhbGxvY2F0aW9uIGZvciB5X3BsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKPj4+PiA+ID4g PiA+IC0gICAgICAgICAgICAgICogVE9ETzogT25jZSB3ZSBzdGFydCBjYWxjdWxhdGluZyB3YXRl cm1hcmsgdmFsdWVzIGZvciBZL1VWCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAqIHBsYW5l IGJvdGggY29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9ja3MuCj4+Pj4gPiA+ ID4gPiAgICAgICAgICAgICAgICAgKi8KPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIHlfZGF0 YV9yYXRlID0gcGxhbmVfeV9kYXRhX3JhdGVbcGxhbmVfaWRdOwo+Pj4+ID4gPiA+ID4KPj4+PiA+ ID4gPiA+ICsgICAgICAgICAgICAgeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1bcGxhbmVfaWRd Owo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICB5X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1 aW50NjRfdClhbGxvY19zaXplICogeV9kYXRhX3JhdGUsCj4+Pj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2RhdGFfcmF0ZSk7Cj4+Pj4gPiA+ID4g PiArCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICBpZiAoeV9kYXRhX3JhdGUpIHsKPj4+PiA+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICB5X3BsYW5lX2Jsb2NrcyA9IHlfbWluaW11bVtw bGFuZV9pZF07Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgeV9wbGFuZV9ibG9j a3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4+Pj4gPiA+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlfZGF0YV9yYXRlLCB0b3RhbF9kYXRhX3Jh dGUpOwo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICBkZGItPnlfcGxhbmVbcGlw ZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Cj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAg ICAgICAgIGRkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0uZW5kID0gc3RhcnQgKyB5X3BsYW5l X2Jsb2NrczsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBzdGFydCArPSB5X3Bs YW5lX2Jsb2NrczsKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIH0KPj4+PiA+ID4gPiA+IC0g ICAgICAgICAgICAgc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMoZGV2X3ByaXYsCj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX2Jsb2Nr cywKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWF4X2xldmVsLAo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3bSk7Cj4+Pj4gPiA+ID4gPiArCj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgIHN0 YXJ0ICs9IHlfcGxhbmVfYmxvY2tzOwo+Pj4+ID4gPiA+ID4gICAgICAgIH0KPj4+PiA+ID4gPiA+ Cj4+Pj4gPiA+ID4gPiAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gPiA+ID4gPiBAQCAtNDQyNyw5ICs0 MzQ0LDExIEBAIHN0YXRpYyB1aW50X2ZpeGVkXzE2XzE2X3Qgc2tsX3dtX21ldGhvZDIodWludDMy X3QgcGl4ZWxfcmF0ZSwKPj4+PiA+ID4gPiA+ICAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFu ZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+Pj4gPiA+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSwKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKPj4+PiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAo+Pj4+ ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwKPj4+PiA+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAqb3V0X2Jsb2Nr cywgLyogb3V0ICovCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50OF90ICpvdXRfbGluZXMgLyogb3V0ICovKQo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0X2xpbmVzLCAvKiBvdXQgKi8KPj4+PiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmVuYWJsZWQgLyogb3V0ICovKQo+ Pj4+ID4gPiA+ID4gICB7Cj4+Pj4gPiA+ID4gPiAgICAgICAgc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKGludGVsX3BzdGF0ZS0+YmFzZS5wbGFuZSk7Cj4+Pj4gPiA+ ID4gPiAgICAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gJmludGVs X3BzdGF0ZS0+YmFzZTsKPj4+PiA+ID4gPiA+IEBAIC00NDUyLDggKzQzNzEsMTAgQEAgc3RhdGlj IGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4+Pj4gPiA+ID4gPiAgICAgICAgYm9vbCB5X3RpbGVkLCB4X3RpbGVkOwo+Pj4+ ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICAgICAgICBpZiAobGF0ZW5jeSA9PSAwIHx8Cj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3Rh dGUpKQo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNzdGF0 ZSwgaW50ZWxfcHN0YXRlKSkgewo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAqZW5hYmxlZCA9 IGZhbHNlOwo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gPiA+ID4g PiArICAgICB9Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gICAgICAgIHlfdGlsZWQgPSBmYi0+ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPj4+PiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsKPj4+ PiA+ID4gPiA+IEBAIC00NTQxLDYgKzQ0NjIsOSBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3Bs YW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+PiA+ID4g PiA+ICAgICAgICAgICAgICAgIGlmICgoY3BwICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19odG90YWwgLyA1MTIgPCAxKSAmJgo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg IChwbGFuZV9ieXRlc19wZXJfbGluZSAvIDUxMiA8IDEpKQo+Pj4+ID4gPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICBzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwo+Pj4+ID4gPiA+ID4gKyAg ICAgICAgICAgICBlbHNlIGlmICgoZGRiX2FsbG9jYXRpb24gJiYgZGRiX2FsbG9jYXRpb24gLwo+ Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGZpeGVkXzE2XzE2X3RvX3UzMl9yb3Vu ZF91cChwbGFuZV9ibG9ja3NfcGVyX2xpbmUpKSA+PSAxKQo+Pj4+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZF8xNl8xNihtZXRob2QxLCBt ZXRob2QyKTsKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxhdGVuY3kgPj0g bGluZXRpbWVfdXMpCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVk X3Jlc3VsdCA9IG1pbl9maXhlZF8xNl8xNihtZXRob2QxLCBtZXRob2QyKTsKPj4+PiA+ID4gPiA+ ICAgICAgICAgICAgICAgIGVsc2UKPj4+PiA+ID4gPiA+IEBAIC00NTYwLDQyICs0NDg0LDY0IEBA IHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgfQo+Pj4+ID4gPiA+ ID4gICAgICAgIH0KPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4gPiAtICAgICBpZiAocmVzX2xpbmVz ID49IDMxICYmIGxldmVsID09IDApIHsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUgPSBwc3RhdGUtPnBsYW5lOwo+Pj4+ID4gPiA+ID4gKyAgICAgaWYg KHJlc19ibG9ja3MgPj0gZGRiX2FsbG9jYXRpb24gfHwgcmVzX2xpbmVzID4gMzEpIHsKPj4+PiA+ ID4gPiA+ICsgICAgICAgICAgICAgKmVuYWJsZWQgPSBmYWxzZTsKPj4+PiA+ID4gPiA+Cj4+Pj4g PiA+ID4gPiAtICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNv bmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKPj4+ PiA+ID4gPiA+IC0gICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVkOiVzXSBsaW5l cyByZXF1aXJlZCA9ICV1LzMxXG4iLAo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLCByZXNfbGluZXMpOwo+Pj4+ID4g PiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiA+ID4gPiA+ICsgICAgICAg ICAgICAgLyoKPj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgICogSWYgdGhlcmUgYXJlIG5vIHZh bGlkIGxldmVsIDAgd2F0ZXJtYXJrcywgdGhlbiB3ZSBjYW4ndAo+Pj4+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgKiBzdXBwb3J0IHRoaXMgZGlzcGxheSBjb25maWd1cmF0aW9uLgo+Pj4+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgKi8KPj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKGxldmVs KSB7Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gPiA+ ID4gPiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBwc3RhdGUtPnBsYW5lOwo+Pj4+ID4gPiA+ ID4gKwo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJl cXVlc3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxp bWl0YXRpb25zXG4iKTsKPj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBEUk1fREVC VUdfS01TKCJbUExBTkU6JWQ6JXNdIGJsb2NrcyByZXF1aXJlZCA9ICV1LyV1LCBsaW5lcyByZXF1 aXJlZCA9ICV1LzMxXG4iLAo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+Pj4+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzX2Jsb2NrcywgZGRiX2FsbG9jYXRpb24s IHJlc19saW5lcyk7Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgIH0KPj4+PiA+ID4gPiA+ICAgICAgICB9 Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gICAgICAgICpvdXRfYmxvY2tzID0gcmVzX2Jsb2Nr czsKPj4+PiA+ID4gPiA+ICAgICAgICAqb3V0X2xpbmVzID0gcmVzX2xpbmVzOwo+Pj4+ID4gPiA+ ID4gKyAgICAgKmVuYWJsZWQgPSB0cnVlOwo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICAgICAg ICByZXR1cm4gMDsKPj4+PiA+ID4gPiA+ICAgfQo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICAg c3RhdGljIGludAo+Pj4+ID4gPiA+ID4gICBza2xfY29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4+Pj4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+Pj4+ID4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICppbnRlbF9wc3RhdGUsCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2tsX3BsYW5lX3dtICp3bSkKPj4+PiA+ID4gPiA+ICAgewo+Pj4+ID4gPiA+ID4gKyAgICAgc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5j cnRjKTsKPj4+PiA+ID4gPiA+ICsgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gaW50ZWxf cHN0YXRlLT5iYXNlLnBsYW5lOwo+Pj4+ID4gPiA+ID4gKyAgICAgc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPj4+PiA+ID4gPiA+ICsgICAg IHVpbnQxNl90IGRkYl9ibG9ja3M7Cj4+Pj4gPiA+ID4gPiArICAgICBlbnVtIHBpcGUgcGlwZSA9 IGludGVsX2NydGMtPnBpcGU7Cj4+Pj4gPiA+ID4gPiAgICAgICAgaW50IGxldmVsLCBtYXhfbGV2 ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPj4+PiA+ID4gPiA+ICAgICAgICBpbnQg cmV0Owo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICAgICAgICBpZiAoV0FSTl9PTighaW50ZWxf cHN0YXRlLT5iYXNlLmZiKSkKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICsgICAgIGRkYl9ibG9ja3MgPSBza2xfZGRi X2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1baW50ZWxfcGxhbmUtPmlkXSk7Cj4+Pj4gPiA+ ID4gPiArCj4+Pj4gPiA+ID4gPiAgICAgICAgZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9s ZXZlbDsgbGV2ZWwrKykgewo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgc3RydWN0IHNrbF93 bV9sZXZlbCAqcmVzdWx0ID0gJndtLT53bVtsZXZlbF07Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ ID4gICAgICAgICAgICAgICAgcmV0ID0gc2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsCj4+ Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3Rh dGUsCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnRlbF9wc3RhdGUsCj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRkYl9ibG9ja3MsCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHQtPnBsYW5lX3Jlc19iLAo+Pj4+ID4g PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0LT5w bGFuZV9yZXNfbCk7Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZyZXN1bHQtPnBsYW5lX3Jlc19sLAo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0LT5wbGFuZV9lbik7Cj4+Pj4gPiA+ ID4gPiAgICAgICAgICAgICAgICBpZiAocmV0KQo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+Pj4+ID4gPiA+ID4gICAgICAgIH0KPj4+PiA+ID4gPiA+IEBA IC00NjYxLDcgKzQ2MDcsOCBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBlX3dtKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gICAgICAg ICAgICAgICAgd20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPj4+PiA+ID4gPiA+Cj4+ Pj4gPiA+ID4gPiAtICAgICAgICAgICAgIHJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZf cHJpdiwgY3N0YXRlLCBpbnRlbF9wc3RhdGUsIHdtKTsKPj4+PiA+ID4gPiA+ICsgICAgICAgICAg ICAgcmV0ID0gc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGRldl9wcml2LCBkZGIsIGNzdGF0ZSwKPj4+ PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVs X3BzdGF0ZSwgd20pOwo+Pj4+ID4gPiA+ID4gICAgICAgICAgICAgICAgaWYgKHJldCkKPj4+PiA+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+PiA+ID4gPiA+ICAg ICAgICAgICAgICAgIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3N0YXRlLCAmd20tPnRyYW5z X3dtKTsKPj4+PiA+ID4gPiA+IEBAIC00Nzc0LDQ1ICs0NzIxLDYgQEAgYm9vbCBza2xfZGRiX2Fs bG9jYXRpb25fb3ZlcmxhcHMoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKiplbnRyaWVzLAo+ Pj4+ID4gPiA+ID4gICAgICAgIHJldHVybiBmYWxzZTsKPj4+PiA+ID4gPiA+ICAgfQo+Pj4+ID4g PiA+ID4KPj4+PiA+ID4gPiA+IC1zdGF0aWMgaW50Cj4+Pj4gPiA+ID4gPiAtc2tsX2RkYl9hZGRf YWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4+Pj4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAq b2xkX3BpcGVfd20sCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSkKPj4+PiA+ID4gPiA+IC17Cj4+Pj4gPiA+ID4g PiAtICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3Rh dGU7Cj4+Pj4gPiA+ID4gPiAtICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRl djsKPj4+PiA+ID4gPiA+IC0gICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFz ZS5jcnRjOwo+Pj4+ID4gPiA+ID4gLSAgICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+Pj4+ID4gPiA+ID4gLSAgICAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+Pj4+ID4gPiA+ID4gLSAgICAgc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3Rh dGUoc3RhdGUpOwo+Pj4+ID4gPiA+ID4gLSAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAq bmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kZGI7Cj4+Pj4gPiA+ID4gPiAtICAg ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9wcml2LT53bS5za2xf aHcuZGRiOwo+Pj4+ID4gPiA+ID4gLSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGU7Cj4+Pj4gPiA+ID4gPiAtICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4+PiA+ ID4gPiA+IC0gICAgIGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4+PiA+ID4g PiA+IC0KPj4+PiA+ID4gPiA+IC0gICAgIFdBUk5fT04oIWRybV9hdG9taWNfZ2V0X2V4aXN0aW5n X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpKTsKPj4+PiA+ID4gPiA+IC0KPj4+PiA+ID4gPiA+IC0g ICAgIGRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFzZS5wbGFu ZV9tYXNrKSB7Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgIGVudW0gcGxhbmVfaWQgcGxhbmVf aWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVf aWRdOwo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dt ICpvbGRfd20gPSAmb2xkX3BpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4+Pj4gPiA+ID4gPiAt Cj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgIGlmICgoc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3Vy X2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdLAo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKSAm Jgo+Pj4+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3Vy X2RkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lk XSkpICYmCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAhbWVtY21wKHdtLCBvbGRfd20s IHNpemVvZihzdHJ1Y3Qgc2tsX3BsYW5lX3dtKSkpCj4+Pj4gPiA+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgY29udGludWU7Cj4+Pj4gPiA+ID4gPiAtCj4+Pj4gPiA+ID4gPiAtICAgICAgICAg ICAgIHBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5l KTsKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgaWYgKElTX0VSUihwbGFuZV9zdGF0ZSkpCj4+ Pj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocGxhbmVfc3Rh dGUpOwo+Pj4+ID4gPiA+ID4gLSAgICAgfQo+Pj4+ID4gPiA+ID4gLQo+Pj4+ID4gPiA+ID4gLSAg ICAgcmV0dXJuIDA7Cj4+Pj4gPiA+ID4gPiAtfQo+Pj4+ID4gPiA+ID4gLQo+Pj4+ID4gPiA+ID4g ICBzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNz dGF0ZSwKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHNrbF9waXBlX3dtICpvbGRfcGlwZV93bSwKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtLCAvKiBvdXQgKi8KPj4+ PiA+ID4gPiA+IEBAIC00ODI2LDE3ICs0NzM0LDYgQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3Bp cGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4+Pj4gPiA+ID4gPiAgICAgICAg aWYgKHJldCkKPj4+PiA+ID4gPiA+ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gPiA+ ID4gPgo+Pj4+ID4gPiA+ID4gLSAgICAgcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGludGVs X2NzdGF0ZSwgcGlwZV93bSwgZGRiKTsKPj4+PiA+ID4gPiA+IC0gICAgIGlmIChyZXQpCj4+Pj4g PiA+ID4gPiAtICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gPiA+ID4gPiAtICAgICAvKgo+ Pj4+ID4gPiA+ID4gLSAgICAgICogVE9ETzogUGxhbmVzIGFyZSBpbmNsdWRlZCBpbiBzdGF0ZSB0 byBhcm0gV00gcmVnaXN0ZXJzLgo+Pj4+ID4gPiA+ID4gLSAgICAgICogU2NvcGUgdG8gb3B0aW1p emUgZnVydGhlciwgYnkganVzdCByZXdyaXRpbmcgcGxhbmUgc3VyZiByZWdpc3Rlci4KPj4+PiA+ ID4gPiA+IC0gICAgICAqLwo+Pj4+ID4gPiA+ID4gLSAgICAgcmV0ID0gc2tsX2RkYl9hZGRfYWZm ZWN0ZWRfcGxhbmVzKGludGVsX2NzdGF0ZSwgb2xkX3BpcGVfd20sIHBpcGVfd20pOwo+Pj4+ID4g PiA+ID4gLSAgICAgaWYgKHJldCkKPj4+PiA+ID4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuIHJl dDsKPj4+PiA+ID4gPiA+IC0KPj4+PiA+ID4gPiA+ICAgICAgICBpZiAoIW1lbWNtcChvbGRfcGlw ZV93bSwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCj4+Pj4gPiA+ID4gPiAgICAgICAgICAg ICAgICAqY2hhbmdlZCA9IGZhbHNlOwo+Pj4+ID4gPiA+ID4gICAgICAgIGVsc2UKPj4+PiA+ID4g PiA+IEBAIC00ODU5LDcgKzQ3NTYsNDEgQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4+Pj4gPiA+ID4gPiAgIH0KPj4+PiA+ID4g PiA+Cj4+Pj4gPiA+ID4gPiAgIHN0YXRpYyBpbnQKPj4+PiA+ID4gPiA+IC1za2xfaW5jbHVkZV9h ZmZlY3RlZF9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+Pj4gPiA+ID4g PiArc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUpCj4+Pj4gPiA+ID4gPiArewo+Pj4+ID4gPiA+ID4gKyAgICAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwo+Pj4+ID4gPiA+ID4gKyAgICAg c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4+Pj4gPiA+ID4gPiArICAgICBz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKPj4+PiA+ID4gPiA+ICsg ICAgIHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK Pj4+PiA+ID4gPiA+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPj4+PiA+ID4gPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPj4+PiA+ID4gPiA+ ICsgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIgPSAmaW50ZWxfc3RhdGUt PndtX3Jlc3VsdHMuZGRiOwo+Pj4+ID4gPiA+ID4gKyAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2Nh dGlvbiAqY3VyX2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPj4+PiA+ID4gPiA+ICsg ICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+Pj4+ID4gPiA+ID4gKyAg ICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4+Pj4gPiA+ID4gPiArICAgICBlbnVtIHBpcGUg cGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+Pj4gPiA+ID4gPiArCj4+Pj4gPiA+ID4gPiArICAg ICBXQVJOX09OKCFkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRj KSk7Cj4+Pj4gPiA+ID4gPiArCj4+Pj4gPiA+ID4gPiArICAgICBkcm1fZm9yX2VhY2hfcGxhbmVf bWFzayhwbGFuZSwgZGV2LCBjc3RhdGUtPmJhc2UucGxhbmVfbWFzaykgewo+Pj4+ID4gPiA+ID4g KyAgICAgICAgICAgICBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxh bmUpLT5pZDsKPj4+PiA+ID4gPiA+ICsKPj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgaWYgKHNr bF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPj4+PiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19kZGItPnBs YW5lW3BpcGVdW3BsYW5lX2lkXSkgJiYKPj4+PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIHNr bF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLAo+Pj4+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2RkYi0+ eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0pKQo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlOwo+Pj4+ID4gPiA+ID4gKwo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICBw bGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7Cj4+ Pj4gPiA+ID4gPiArICAgICAgICAgICAgIGlmIChJU19FUlIocGxhbmVfc3RhdGUpKQo+Pj4+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHBsYW5lX3N0YXRlKTsK Pj4+PiA+ID4gPiA+ICsgICAgIH0KPj4+PiA+ID4gPiA+ICsKPj4+PiA+ID4gPiA+ICsgICAgIHJl dHVybiAwOwo+Pj4+ID4gPiA+ID4gK30KPj4+PiA+ID4gPiA+ICsKPj4+PiA+ID4gPiA+ICtzdGF0 aWMgaW50Cj4+Pj4gPiA+ID4gPiArc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPj4+PiA+ID4gPiA+ICAgewo+Pj4+ID4gPiA+ID4gICAgICAgIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+Pj4+ID4gPiA+ID4gICAgICAgIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4+PiA+ID4gPiA+IEBA IC00OTIzLDYgKzQ4NTQsMTQgQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0 IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4+Pj4gPiA+ID4gPiAgICAgICAgICAgICAgICBjc3Rh dGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+Pj4+ ID4gPiA+ID4gICAgICAgICAgICAgICAgaWYgKElTX0VSUihjc3RhdGUpKQo+Pj4+ID4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjc3RhdGUpOwo+Pj4+ID4gPiA+ ID4gKwo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICByZXQgPSBza2xfYWxsb2NhdGVfcGlwZV9k ZGIoY3N0YXRlLCBkZGIpOwo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAocmV0KQo+Pj4+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gPiA+ID4gPiAr Cj4+Pj4gPiA+ID4gPiArICAgICAgICAgICAgIHJldCA9IHNrbF9kZGJfYWRkX2FmZmVjdGVkX3Bs YW5lcyhjc3RhdGUpOwo+Pj4+ID4gPiA+ID4gKyAgICAgICAgICAgICBpZiAocmV0KQo+Pj4+ID4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gPiA+ID4gPiAgICAg ICAgfQo+Pj4+ID4gPiA+ID4KPj4+PiA+ID4gPiA+ICAgICAgICByZXR1cm4gMDsKPj4+PiA+ID4g PiA+IEBAIC01MDEyLDcgKzQ5NTEsNyBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZSwKPj4+PiA+ID4gPiA+ICAgICAgICAvKiBDbGVh ciBhbGwgZGlydHkgZmxhZ3MgKi8KPj4+PiA+ID4gPiA+ICAgICAgICByZXN1bHRzLT5kaXJ0eV9w aXBlcyA9IDA7Cj4+Pj4gPiA+ID4gPgo+Pj4+ID4gPiA+ID4gLSAgICAgcmV0ID0gc2tsX2luY2x1 ZGVfYWZmZWN0ZWRfY3J0Y3Moc3RhdGUpOwo+Pj4+ID4gPiA+ID4gKyAgICAgcmV0ID0gc2tsX2Nv bXB1dGVfZGRiKHN0YXRlKTsKPj4+PiA+ID4gPiA+ICAgICAgICBpZiAocmV0KQo+Pj4+ID4gPiA+ ID4gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4gPiAt LQo+Pj4+ID4gPiA+ID4gMS45LjEKPj4+PiA+ID4gPiA+Cj4+Pj4gPiA+ID4KPj4+PiA+ID4gPiAt LQo+Pj4+ID4gPiA+IE1hdHQgUm9wZXIKPj4+PiA+ID4gPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdp bmVlcgo+Pj4+ID4gPiA+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9wbWVudAo+Pj4+ ID4gPiA+IEludGVsIENvcnBvcmF0aW9uCj4+Pj4gPiA+ID4gKDkxNikgMzU2LTI3OTUKPj4+PiA+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+ ID4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4+PiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+Pj4gPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4+PiA+ID4KPj4+PiA+ID4KPj4+PiA+Cj4+Pj4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+ID4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+Pj4+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKPj4+Pgo+Pj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+Pj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPj4KPj4gLS0KPj4gSmFuaSBOaWt1bGEsIEludGVs IE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9w ZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=