From mboxrd@z Thu Jan 1 00:00:00 1970 From: abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH] drm/msm: Remove dpu_edid_parser Date: Mon, 26 Feb 2018 14:23:40 -0800 Message-ID: References: <20180223191515.155783-1-seanpaul@chromium.org> <20180223215141.GQ223881@art_vandelay> <0569f6fdbf932942defa603f09867c50@codeaurora.org> <20180226153642.GT223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180226153642.GT223881@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm , Jeykumar Sankaran , Rob Clark , nganji-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, "Kristian H. Kristensen" , freedreno , linux-arm-msm-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0wMi0yNiAwNzozNiwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIEZyaSwgRmViIDIzLCAy MDE4IGF0IDA1OjQ4OjQ4UE0gLTA1MDAsIFJvYiBDbGFyayB3cm90ZToKPj4gT24gRnJpLCBGZWIg MjMsIDIwMTggYXQgNTozMSBQTSwgIDxhYmhpbmF2a0Bjb2RlYXVyb3JhLm9yZz4gd3JvdGU6Cj4+ ID4gVGhlIGJpdG1hcHMgaW4gZHJtX2hkbWlfaW5mbyBkb250IHNlZW0gdG8gYmUgZXhwb3NlZCB0 byB1c2Vyc3BhY2UuCj4+ID4KPj4gPiBPdXIgbW9kZSBzZWxlY3Rpb24gbG9naWMgaXMgaW4gdXNl cnNwYWNlIGF0IHRoZSBtb21lbnQgd2hpY2ggbWVhbnMgaXRzCj4+ID4gYmV0dGVyIHVzZXJzcGFj ZSBrbm93cyB3aGljaCBtb2RlcyBzdXBwb3J0IHdoYXQuCj4+ID4KPj4gPiBJZiB3ZSBkZWNpZGUg dG8gbW92ZSBtb2RlIHZhbGlkYXRpb24gZW50aXJlbHkgdG8gdGhlIGRyaXZlciwgd2UgY2FuIHVz ZQo+PiA+IHRoZXNlIGJpdG1hcHMgdG8gdmFsaWRhdGUuCj4+ID4KPj4gPiBCdXQgdGhpcyBpcyBh Z2FpbiBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIHRoZW4uCj4+ID4KPj4gPiBJcyB0aGVyZSBubyB1 c2UtY2FzZSBzbyBmYXIgd2hlcmUgdXNlcnNwYWNlIGhhcyBoYWQgdG8ga25vdyB3aGljaCBtb2Rl cwo+PiA+IHN1cHBvcnQgd2hpY2ggZm9ybWF0cz8KPj4gPgo+PiAKPj4gSSB0aGluayBoaXN0b3Jp Y2FsbHkgYSBsb3QgbW9yZSBvZiB0aGUgZm9jdXMgdXBzdHJlYW0gc28gZmFyIGhhcyBiZWVuCj4+ ICJkZXNrdG9wIHN0eWxlIiB1c2UgY2FzZXMsIHdoZXJlIFJHQiB0byB0aGUgc2luayBtYWtlcyBt b3JlIHNlbnNlLgo+PiBUaGF0IGRvZXNuJ3QgbWVhbiB0aGVyZSBpc24ndCBhIHVzZS1jYXNlIGZv ciBZVVYuICBJJ20gbm90IHN1cmUsIGFuZAo+PiBoYXZlbid0IHJlYWxseSBnaXZlbiBtdWNoIHRo b3VnaHQgaW50bywgaG93IHRvIGV4cG9zZSB0aGlzIHRvCj4+IHVzZXJzcGFjZS4gIEJ1dCBJIGd1 ZXNzIHRoZSBzYW1lIHRoaW5nIGNvbWVzIHVwIHcvIEhEUiBhbmQgaGlnaGVyCj4+IGJpdC1kZXB0 aCBSR0IgbW9kZXMgKGxpa2UgMTBfMTBfMTAgZm9ybWF0cywgZXRjKSwgYW5kIHBlb3BsZSBhcmUK Pj4gZ2l2aW5nIHRob3VnaHQgdG8gdGhvc2UgdGhpbmdzIHRoZXNlIGRheXMuICBJIGhhdmVuJ3Qg YmVlbiBmb2xsb3dpbmcKPj4gdGhlIEhEUiB3b3JrICp0aGF0KiBjbG9zZWx5LCBidXQgSSBndWVz cyBpZiB5b3Ugd2FudCB0byB1c2UgSERSLCB5b3UKPj4gd2FudCB0byBrbm93IHdoYXQgbW9kZXMg c3VwcG9ydCBpdCBhdCB0aGUgc2luay4KPj4gCj4+IEVpdGhlciB3YXksIEkgdGhpbmsgdGhpcyBp cyBzb21ldGhpbmcgd2hpY2ggc2hvdWxkIGJlIHN1cHBvcnRlZCBpbiBkcm0KPj4gY29yZSB3aXRo IGEgc3RhbmRhcmRpemVkIFVBUEksIHJhdGhlciB0aGFuIGJ5IGRyaXZlciByb2xsaW5nIGl0J3Mg b3duCj4+IGVkaWQgcGFyc2luZyBhbmQgY3VzdG9tIFVBUEkuCj4+IAo+PiAoSSBndWVzcyBleHRl bmRpbmcgdGhlIG1vZGVpbmZvIHN0cnVjdCBtaWdodCBiZSBkaWZmaWN1bHQsIGJ1dCBwZXJoYXBz Cj4+IGEgYmxvYiBwcm9wZXJ0eSB3LyBzdXBwbGVtZW50YWwgaW5mbyBtaWdodCBtYWtlIHNlbnNl Pz8gIE9yIG1heWJlCj4+IHNvbWVvbmUgYWxyZWFkeSBoYXMgc29tZSBvdGhlciBpZGVhcz8pCj4g Cj4gCj4gWWVhaCwgaW4gY29uanVuY3Rpb24gd2l0aCBoZHIgc3VwcG9ydCwgc29tZSB0eXBlIG9m IG1vZGVpbmZvIAo+IHN1cHBsZW1lbnRhcnkgZGF0YQo+IHNlZW1zIGFwcHJvcHJpYXRlLgo+IAo+ IFdlIGhhdmUgc29tZSBzcGFjZSBsZWZ0IGluIG1vZGVpbmZvLT5mbGFncywgYnV0IHRoYXQgZG9l c24ndCBzY2FsZSBzbyAKPiB3ZWxsLgo+IEFkZGluZyBhIHByb3BlcnR5IHdvdWxkIGJlIGVhc2ll c3Qgc2luY2Ugd2UgY291bGQganVzdCBleHBvc2UgdGhlIAo+IGJpdG1hcCB0bwo+IHVzZXJzcGFj ZSAobW9yZSBvciBsZXNzKS4gV2UgY291bGQgYWxzbyBjaGFuZ2UgInBhZCIgaW4gCj4gZHJtX21v ZGVfZ2V0X2Nvbm5lY3Rvcgo+IHRvIGZsYWdzIGFuZCBhbGxvdyB1c2Vyc3BhY2UgdG8gcmVxdWVz dCBlbmhhbmNlZCBtb2RlIGluZm8uCj4gCj4gU2Vhbgo+IApZZXMsIHdlIGhhZCBiZWVuIHVzaW5n IGZsYWdzIHNvIGxvbmcgYXMgcGVyIG91ciBlYXJsaWVyIGRpc2N1c3Npb24gd2l0aCAKUm9iIG9u IHRoaXMuCkl0IHdvcmtzIHdlbGwgc28gZmFyIGFuZCB0aGF0cyBwcmV0dHkgbXVjaCB3aGF0IHRo ZSBFRElEIHBhcnNlciB3YXMgCmRvaW5nLiBUaGF0cyB3aHkgSSBtZW50aW9uZWQKdGhhdCB3ZSBj YW4ga2VlcCBzb21lIHBhcnQgb2YgdGhlIHBhcnNlciBhbmQgZ2V0IHJpZCBvZiBtb3N0IG9mIGl0 LgoKSWYgd2Ugd2FudCB0byBtb3ZlIG92ZXIgdG8gYW5vdGhlciBwcm9wZXJ0eSwgd2Ugd2lsbCBl eHBsb3JlIHRoaXMgb3B0aW9uIAptb3ZpbmcgZm9yd2FyZC4KCkFiaGluYXYKPiAKPj4gCj4+IEJS LAo+PiAtUgo+PiAKPj4gPiBUaGFua3MKPj4gPgo+PiA+IEFiaGluYXYKPj4gPgo+PiA+Cj4+ID4g T24gMjAxOC0wMi0yMyAxMzo1MSwgU2VhbiBQYXVsIHdyb3RlOgo+PiA+Pgo+PiA+PiBPbiBGcmks IEZlYiAyMywgMjAxOCBhdCAwMToyOTowM1BNIC0wODAwLCBhYmhpbmF2a0Bjb2RlYXVyb3JhLm9y ZyB3cm90ZToKPj4gPj4+Cj4+ID4+PiBJIGFtIE9LIHdpdGggcmVtb3Zpbmcgc29tZSBwYXJ0cyBv ZiB0aGUgcGFyc2VyIGJ1dCBub3QgZW50aXJlbHkuCj4+ID4+Pgo+PiA+Pj4gRnVuZGFtZW50YWxs eSwgd2Ugd2VudCBhaGVhZCB3aXRoIHRoZSBwYXJzZXIgZm9yIGEgY291cGxlIG9mIHJlYXNvbnM6 Cj4+ID4+Pgo+PiA+Pj4gLT4gV2Ugd291bGQgbGlrZSB0byBiZSBhYmxlIHRvIGFzc29jaWF0ZSB0 aGUgY29sb3IgZm9ybWF0IHdpdGggdGhlIG1vZGUuCj4+ID4+PiBUaGlzIGhlbHBzIHVzIGRlY2lk ZSB0aGF0IGlmIHRoZSBzYW1lIG1vZGUgc3VwcG9ydHMgYm90aCBSR0IvWVVWIHRoZW4KPj4gPj4+ IHdoaWNoCj4+ID4+PiBvbmUgd2UgY2FuIHBpY2suCj4+ID4+Pgo+PiA+Pj4gLT4gVGhlIHVwc3Ry ZWFtIHBhcnNlciBjdXJyZW50bHkganVzdCBhZGRzIGl0IHRvIHRoZSBzdXBwb3J0ZWQgZm9ybWF0 cyBvZgo+PiA+Pj4gdGhlIHNpbmsgaW5mby0+Y29sb3JfZm9ybWF0cyB8PSBEUk1fQ09MT1JfRk9S TUFUX1lDUkNCNDIwOyBIb3dldmVyIHRoZQo+PiA+Pj4gbGluawo+PiA+Pj4gYmV0d2VlbiB0aGUg bW9kZSBhbmQgdGhlIGZvcm1hdCBpdHNlbGYgaXMgdW5jbGVhcgo+PiA+Pj4KPj4gPj4+IEkgd291 bGQgbGlrZSB0byBrbm93IGlmIGFueSBvZiB0aGUgYWJvdmUgaGF2ZSBiZWVuIGFkZHJlc3NlZCBz byBmYXIKPj4gPj4+IGJlZm9yZQo+PiA+Pj4gcmV2ZXJ0aW5nIHRoaXMuCj4+ID4+Cj4+ID4+Cj4+ ID4+IFRoZSBpbmZvcm1hdGlvbiBvZiB3aGljaCBtb2RlcyBzdXBwb3J0IHdoaWNoIGZvcm1hdHMg aXMgc3RvcmVkIGluIGJpdG1hcHMKPj4gPj4gd2l0aGluCj4+ID4+IGRybV9oZG1pX2luZm8uIFRo ZSBkb2N1bWVudGF0aW9uIGlzIGhlcmU6Cj4+ID4+Cj4+ID4+Cj4+ID4+IGh0dHBzOi8vMDEub3Jn L2xpbnV4Z3JhcGhpY3MvZ2Z4LWRvY3MvZHJtL2dwdS9kcm0ta21zLmh0bWw/aGlnaGxpZ2h0PWRy bV9oZG1pX2luZm8jYy5kcm1faGRtaV9pbmZvCj4+ID4+Cj4+ID4+IElzIHRoaXMgc3VmZmljaWVu dD8KPj4gPj4KPj4gPj4gU2Vhbgo+PiA+Pgo+PiA+Pj4KPj4gPj4+IFRoYW5rcwo+PiA+Pj4KPj4g Pj4+IEFiaGluYXYKPj4gPj4+Cj4+ID4+Pgo+PiA+Pj4gT24gMjAxOC0wMi0yMyAxMToxNSwgU2Vh biBQYXVsIHdyb3RlOgo+PiA+Pj4gPiBVc2UgZHJtX2VkaWQgdG8gcGFyc2UgdGhlIGVkaWQgaW5z dGVhZCBvZiB0aGUgaGFuZCByb2xsZWQgZHB1IHZlcnNpb24uCj4+ID4+PiA+Cj4+ID4+PiA+IFNp Z25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+PiA+Pj4gPiAt LS0KPj4gPj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgfCAgIDEg LQo+PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdWRpby5jICAgICB8ICAyMiAr LQo+PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5LmMgICB8ICAgNyAt Cj4+ID4+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX3BhbmVsLmMgICAgIHwgIDc3ICsr LQo+PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5oICAgICB8ICAgNyAr LQo+PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIuYyB8IDY1NyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiA+Pj4gPiAgZHJpdmVycy9ncHUvZHJtL21zbS9k cHVfZWRpZF9wYXJzZXIuaCB8IDE2NiAtLS0tLS0tCj4+ID4+PiA+ICA3IGZpbGVzIGNoYW5nZWQs IDU1IGluc2VydGlvbnMoKyksIDg4MiBkZWxldGlvbnMoLSkKPj4gPj4+ID4gIGRlbGV0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3BhcnNlci5jCj4+ID4+PiA+ICBk ZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIuaAo+ PiA+Pj4gPgo+PiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmls ZQo+PiA+Pj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKPj4gPj4+ID4gaW5kZXgg ZmNkODVhZTI4ZDY2Li4yZmI5YmExMWRmMTkgMTAwNjQ0Cj4+ID4+PiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUKPj4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9N YWtlZmlsZQo+PiA+Pj4gPiBAQCAtODYsNyArODYsNiBAQCBtc20teSA6PSBcCj4+ID4+PiA+ICAg ICAgIGRpc3AvZHB1MS9kcHVfcm0ubyBcCj4+ID4+PiA+ICAgICAgIGRpc3AvZHB1MS9kcHVfdmJp Zi5vIFwKPj4gPj4+ID4gICAgICAgZHB1X2RiZy5vIFwKPj4gPj4+ID4gLSAgICAgZHB1X2VkaWRf cGFyc2VyLm8gXAo+PiA+Pj4gPiAgICAgICBkcHVfaW9fdXRpbC5vIFwKPj4gPj4+ID4gICAgICAg ZHB1X2RiZ19ldnRsb2cubyBcCj4+ID4+PiA+ICAgICAgIGRwdV9wb3dlcl9oYW5kbGUubyBcCj4+ ID4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMKPj4g Pj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1ZGlvLmMKPj4gPj4+ID4gaW5kZXgg NGUwY2RjZDE1YzhjLi5jZTAwYjhiNTI2MzEgMTAwNjQ0Cj4+ID4+PiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZHAvZHBfYXVkaW8uYwo+PiA+Pj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX2F1ZGlvLmMKPj4gPj4+ID4gQEAgLTE4LDYgKzE4LDcgQEAKPj4gPj4+ID4gICNp bmNsdWRlIDxsaW51eC9tc21fZXh0X2Rpc3BsYXkuaD4KPj4gPj4+ID4KPj4gPj4+ID4gICNpbmNs dWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgo+PiA+Pj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZWRp ZC5oPgo+PiA+Pj4gPgo+PiA+Pj4gPiAgI2luY2x1ZGUgImRwX2NhdGFsb2cuaCIKPj4gPj4+ID4g ICNpbmNsdWRlICJkcF9hdWRpby5oIgo+PiA+Pj4gPiBAQCAtNDgwLDcgKzQ4MSw2IEBAIHN0YXRp YyBpbnQgZHBfYXVkaW9fZ2V0X2VkaWRfYmxrKHN0cnVjdAo+PiA+Pj4gPiBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYsCj4+ID4+PiA+ICB7Cj4+ID4+PiA+ICAgICAgIGludCByYyA9IDA7Cj4+ID4+PiA+ ICAgICAgIHN0cnVjdCBkcF9hdWRpb19wcml2YXRlICphdWRpbzsKPj4gPj4+ID4gLSAgICAgc3Ry dWN0IGRwdV9lZGlkX2N0cmwgKmVkaWQ7Cj4+ID4+PiA+Cj4+ID4+PiA+ICAgICAgIGF1ZGlvID0g Z2V0X2F1ZGlvX2dldF9kYXRhKHBkZXYpOwo+PiA+Pj4gPiAgICAgICBpZiAoSVNfRVJSKGF1ZGlv KSkgewo+PiA+Pj4gPiBAQCAtNDg4LDE5ICs0ODgsMjkgQEAgc3RhdGljIGludCBkcF9hdWRpb19n ZXRfZWRpZF9ibGsoc3RydWN0Cj4+ID4+PiA+IHBsYXRmb3JtX2RldmljZSAqcGRldiwKPj4gPj4+ ID4gICAgICAgICAgICAgICBnb3RvIGVuZDsKPj4gPj4+ID4gICAgICAgfQo+PiA+Pj4gPgo+PiA+ Pj4gPiAtICAgICBpZiAoIWF1ZGlvLT5wYW5lbCB8fCAhYXVkaW8tPnBhbmVsLT5lZGlkX2N0cmwp IHsKPj4gPj4+ID4gKyAgICAgaWYgKCFhdWRpby0+cGFuZWwgfHwgIWF1ZGlvLT5wYW5lbC0+ZWRp ZCkgewo+PiA+Pj4gPiAgICAgICAgICAgICAgIHByX2VycigiaW52YWxpZCBwYW5lbCBkYXRhXG4i KTsKPj4gPj4+ID4gICAgICAgICAgICAgICByYyA9IC1FSU5WQUw7Cj4+ID4+PiA+ICAgICAgICAg ICAgICAgZ290byBlbmQ7Cj4+ID4+PiA+ICAgICAgIH0KPj4gPj4+ID4KPj4gPj4+ID4gLSAgICAg ZWRpZCA9IGF1ZGlvLT5wYW5lbC0+ZWRpZF9jdHJsOwo+PiA+Pj4gPiAtCj4+ID4+PiA+ICsvKgo+ PiA+Pj4gPiArICogVE9ETzoKPj4gPj4+ID4gKyAqICAgYXVkaW9fZGF0YV9ibGsgc2hvdWxkIGJl IGNoYW5nZWQgdG8gYmUgYSBjZWFfc2FkIGFycmF5Cj4+ID4+PiA+ICsgKiAgIGF1ZGlvX2RhdGFf YmxrX3NpemUgc2hvdWxkIGJlIGNoYW5nZWQgdG8gY29udGFpbiBhIGNvdW50IG9mIHNhZHMKPj4g Pj4+ID4gKyAqCj4+ID4+PiA+ICsgKiAgIE9uY2UgdGhpcyBpcyBkb25lLCB1c2UgZHJtX2VkaWRf dG9fc2FkKCkgdG8gZXh0cmFjdCB0aGlzIGZyb20KPj4gPj4+ID4gKyAqICAgYXVkaW8tPnBhbmVs LT5lZGlkLiBJJ2QgY2hhbmdlIHRoaXMsIGJ1dCBJIGRvbid0IGhhdmUgdGhhdCBjb2RlCj4+ID4+ PiA+IDovCj4+ID4+PiA+ICsgKi8KPj4gPj4+ID4gKyNpZiAwCj4+ID4+PiA+ICAgICAgIGJsay0+ YXVkaW9fZGF0YV9ibGsgPSBlZGlkLT5hdWRpb19kYXRhX2Jsb2NrOwo+PiA+Pj4gPiAgICAgICBi bGstPmF1ZGlvX2RhdGFfYmxrX3NpemUgPSBlZGlkLT5hZGJfc2l6ZTsKPj4gPj4+ID4gKyNlbmRp Zgo+PiA+Pj4gPiArCj4+ID4+PiA+ICsgICAgIGJsay0+c3BrX2FsbG9jX2RhdGFfYmxrX3NpemUg PSBkcm1fZWRpZF90b19zcGVha2VyX2FsbG9jYXRpb24oCj4+ID4+PiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpby0+cGFuZWwtPmVkaWQsCj4+ID4+ PiA+ICsKPj4gPj4+ID4gYmxrLT5zcGtyX2FsbG9jX2RhdGFfYmxvY2spOwo+PiA+Pj4gPgo+PiA+ Pj4gPiAtICAgICBibGstPnNwa19hbGxvY19kYXRhX2JsayA9IGVkaWQtPnNwa3JfYWxsb2NfZGF0 YV9ibG9jazsKPj4gPj4+ID4gLSAgICAgYmxrLT5zcGtfYWxsb2NfZGF0YV9ibGtfc2l6ZSA9IGVk aWQtPnNhZGJfc2l6ZTsKPj4gPj4+ID4gIGVuZDoKPj4gPj4+ID4gICAgICAgcmV0dXJuIHJjOwo+ PiA+Pj4gPiAgfQo+PiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9k cF9kaXNwbGF5LmMKPj4gPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2Rpc3BsYXku Ywo+PiA+Pj4gPiBpbmRleCA2ZjJjMDY4MDliZjUuLjg0NmVmMzNhZWNiZCAxMDA2NDQKPj4gPj4+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5LmMKPj4gPj4+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kaXNwbGF5LmMKPj4gPj4+ID4gQEAgLTM3Mywx MiArMzczLDYgQEAgc3RhdGljIGludCBkcF9kaXNwbGF5X2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LAo+PiA+Pj4gPiBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4+ID4+PiA+ICAgICAgICAgICAgICAg Z290byBlbmQ7Cj4+ID4+PiA+ICAgICAgIH0KPj4gPj4+ID4KPj4gPj4+ID4gLSAgICAgcmMgPSBk cC0+cGFuZWwtPmRwdV9lZGlkX3JlZ2lzdGVyKGRwLT5wYW5lbCk7Cj4+ID4+PiA+IC0gICAgIGlm IChyYykgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIHByX2VycigiRFJNIERQIEVESUQgcmVnaXN0 ZXIgZmFpbGVkXG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICBnb3RvIGVuZDsKPj4gPj4+ID4g LSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+ICAgICAgIHJjID0gZHAtPnBvd2VyLT5wb3dlcl9j bGllbnRfaW5pdChkcC0+cG93ZXIsICZwcml2LT5waGFuZGxlKTsKPj4gPj4+ID4gICAgICAgaWYg KHJjKSB7Cj4+ID4+PiA+ICAgICAgICAgICAgICAgcHJfZXJyKCJQb3dlciBjbGllbnQgY3JlYXRl IGZhaWxlZFxuIik7Cj4+ID4+PiA+IEBAIC00MTIsNyArNDA2LDYgQEAgc3RhdGljIHZvaWQgZHBf ZGlzcGxheV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LAo+PiA+Pj4gPiBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsCj4+ID4+PiA+ICAgICAgIH0KPj4gPj4+ID4KPj4gPj4+ID4gICAgICAgKHZvaWQp ZHAtPnBvd2VyLT5wb3dlcl9jbGllbnRfZGVpbml0KGRwLT5wb3dlcik7Cj4+ID4+PiA+IC0gICAg ICh2b2lkKWRwLT5wYW5lbC0+ZHB1X2VkaWRfZGVyZWdpc3RlcihkcC0+cGFuZWwpOwo+PiA+Pj4g PiAgICAgICAodm9pZClkcC0+YXV4LT5kcm1fYXV4X2RlcmVnaXN0ZXIoZHAtPmF1eCk7Cj4+ID4+ PiA+ICAgICAgIGRwX2Rpc3BsYXlfZGVpbml0aWFsaXplX2hkY3AoZHApOwo+PiA+Pj4gPiAgfQo+ PiA+Pj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5jCj4+ ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5jCj4+ID4+PiA+IGluZGV4 IDExYzMzMzhlMjNiMS4uNjNmOWJmNDA3NTA4IDEwMDY0NAo+PiA+Pj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RwL2RwX3BhbmVsLmMKPj4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kcC9kcF9wYW5lbC5jCj4+ID4+PiA+IEBAIC0xNiw2ICsxNiw5IEBACj4+ID4+PiA+Cj4+ ID4+PiA+ICAjaW5jbHVkZSAiZHBfcGFuZWwuaCIKPj4gPj4+ID4KPj4gPj4+ID4gKyNpbmNsdWRl IDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+PiA+Pj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5o Pgo+PiA+Pj4gPiArCj4+ID4+PiA+ICAjZGVmaW5lIERQX1BBTkVMX0RFRkFVTFRfQlBQIDI0Cj4+ ID4+PiA+ICAjZGVmaW5lIERQX01BWF9EU19QT1JUX0NPVU5UIDEKPj4gPj4+ID4KPj4gPj4+ID4g QEAgLTE1MSw5ICsxNTQsMTAgQEAgc3RhdGljIGludCBkcF9wYW5lbF9yZWFkX2VkaWQoc3RydWN0 IGRwX3BhbmVsCj4+ID4+PiA+ICpkcF9wYW5lbCwKPj4gPj4+ID4gICAgICAgcGFuZWwgPSBjb250 YWluZXJfb2YoZHBfcGFuZWwsIHN0cnVjdCBkcF9wYW5lbF9wcml2YXRlLAo+PiA+Pj4gPiBkcF9w YW5lbCk7Cj4+ID4+PiA+Cj4+ID4+PiA+ICAgICAgIGRvIHsKPj4gPj4+ID4gLSAgICAgICAgICAg ICBkcHVfZ2V0X2VkaWQoY29ubmVjdG9yLCAmcGFuZWwtPmF1eC0+ZHJtX2F1eC0+ZGRjLAo+PiA+ Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiopJmRwX3BhbmVsLT5lZGlkX2N0cmwp Owo+PiA+Pj4gPiAtICAgICAgICAgICAgIGlmICghZHBfcGFuZWwtPmVkaWRfY3RybC0+ZWRpZCkg ewo+PiA+Pj4gPiArICAgICAgICAgICAgIGtmcmVlKGRwX3BhbmVsLT5lZGlkKTsKPj4gPj4+ID4g KyAgICAgICAgICAgICBkcF9wYW5lbC0+ZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsCj4+ ID4+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhbmVs LT5hdXgtPmRybV9hdXgtPmRkYyk7Cj4+ID4+PiA+ICsgICAgICAgICAgICAgaWYgKCFkcF9wYW5l bC0+ZWRpZCkgewo+PiA+Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJFRElEIHJl YWQgZmFpbGVkXG4iKTsKPj4gPj4+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHJ5X2NudCsr Owo+PiA+Pj4gPiAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwtPmF1eC0+cmVjb25maWcocGFu ZWwtPmF1eCk7Cj4+ID4+PiA+IEBAIC0xNjMsNyArMTY3LDcgQEAgc3RhdGljIGludCBkcF9wYW5l bF9yZWFkX2VkaWQoc3RydWN0IGRwX3BhbmVsCj4+ID4+PiA+ICpkcF9wYW5lbCwKPj4gPj4+ID4g ICAgICAgICAgICAgICB9Cj4+ID4+PiA+ICAgICAgIH0gd2hpbGUgKHJldHJ5X2NudCA8IG1heF9y ZXRyeSk7Cj4+ID4+PiA+Cj4+ID4+PiA+IC0gICAgIHJldHVybiAtRUlOVkFMOwo+PiA+Pj4gPiAr ICAgICByZXR1cm4gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZHBfcGFuZWwtPmVkaWQp Owo+PiA+Pj4gPiAgfQo+PiA+Pj4gPgo+PiA+Pj4gPiAgc3RhdGljIGludCBkcF9wYW5lbF9yZWFk X3NpbmtfY2FwcyhzdHJ1Y3QgZHBfcGFuZWwgKmRwX3BhbmVsLAo+PiA+Pj4gPiBAQCAtMTg4LDcg KzE5Miw3IEBAIHN0YXRpYyBpbnQgZHBfcGFuZWxfcmVhZF9zaW5rX2NhcHMoc3RydWN0IGRwX3Bh bmVsCj4+ID4+PiA+ICpkcF9wYW5lbCwKPj4gPj4+ID4gICAgICAgfQo+PiA+Pj4gPgo+PiA+Pj4g PiAgICAgICByYyA9IGRwX3BhbmVsX3JlYWRfZWRpZChkcF9wYW5lbCwgY29ubmVjdG9yKTsKPj4g Pj4+ID4gLSAgICAgaWYgKHJjKSB7Cj4+ID4+PiA+ICsgICAgIGlmIChyYyA8IDApIHsKPj4gPj4+ ID4gICAgICAgICAgICAgICBwcl9lcnIoInBhbmVsIGVkaWQgcmVhZCBmYWlsZWQsIHNldCBmYWls c2FmZSBtb2RlXG4iKTsKPj4gPj4+ID4gICAgICAgICAgICAgICByZXR1cm4gcmM7Cj4+ID4+PiA+ ICAgICAgIH0KPj4gPj4+ID4gQEAgLTIxNSw3ICsyMTksNyBAQCBzdGF0aWMgdTMyIGRwX3BhbmVs X2dldF9tYXhfcGNsayhzdHJ1Y3QgZHBfcGFuZWwKPj4gPj4+ID4gKmRwX3BhbmVsKQo+PiA+Pj4g Pgo+PiA+Pj4gPiAgICAgICBsaW5rX2luZm8gPSAmZHBfcGFuZWwtPmxpbmtfaW5mbzsKPj4gPj4+ ID4KPj4gPj4+ID4gLSAgICAgYnBjID0gZHB1X2dldF9zaW5rX2JwYyhkcF9wYW5lbC0+ZWRpZF9j dHJsKTsKPj4gPj4+ID4gKyAgICAgYnBjID0gZHBfcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9p bmZvLmJwYzsKPj4gPj4+ID4gICAgICAgYnBwID0gYnBjICogbnVtX2NvbXBvbmVudHM7Cj4+ID4+ PiA+ICAgICAgIGlmICghYnBwKQo+PiA+Pj4gPiAgICAgICAgICAgICAgIGJwcCA9IERQX1BBTkVM X0RFRkFVTFRfQlBQOwo+PiA+Pj4gPiBAQCAtMjkwLDggKzI5NCw4IEBAIHN0YXRpYyBpbnQgZHBf cGFuZWxfZ2V0X21vZGVzKHN0cnVjdCBkcF9wYW5lbAo+PiA+Pj4gPiAqZHBfcGFuZWwsCj4+ID4+ PiA+ICAgICAgIGlmIChkcF9wYW5lbC0+dmlkZW9fdGVzdCkgewo+PiA+Pj4gPiAgICAgICAgICAg ICAgIGRwX3BhbmVsX3NldF90ZXN0X21vZGUocGFuZWwsIG1vZGUpOwo+PiA+Pj4gPiAgICAgICAg ICAgICAgIHJldHVybiAxOwo+PiA+Pj4gPiAtICAgICB9IGVsc2UgaWYgKGRwX3BhbmVsLT5lZGlk X2N0cmwtPmVkaWQpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gX2RwdV9lZGlkX3Vw ZGF0ZV9tb2Rlcyhjb25uZWN0b3IsCj4+ID4+PiA+IGRwX3BhbmVsLT5lZGlkX2N0cmwpOwo+PiA+ Pj4gPiArICAgICB9IGVsc2UgaWYgKGRwX3BhbmVsLT5lZGlkKSB7Cj4+ID4+PiA+ICsgICAgICAg ICAgICAgcmV0dXJuIGRwX3BhbmVsX3JlYWRfZWRpZChkcF9wYW5lbCwgY29ubmVjdG9yKTsKPj4g Pj4+ID4gICAgICAgfQo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAgICAvKiBmYWlsLXNhZmUgbW9kZSAq Lwo+PiA+Pj4gPiBAQCAtMzAwLDYgKzMwNCwyNyBAQCBzdGF0aWMgaW50IGRwX3BhbmVsX2dldF9t b2RlcyhzdHJ1Y3QgZHBfcGFuZWwKPj4gPj4+ID4gKmRwX3BhbmVsLAo+PiA+Pj4gPiAgICAgICBy ZXR1cm4gMTsKPj4gPj4+ID4gIH0KPj4gPj4+ID4KPj4gPj4+ID4gK3N0YXRpYyB1OCBkcF9wYW5l bF9nZXRfZWRpZF9jaGVja3N1bShzdHJ1Y3QgZWRpZCAqZWRpZCkKPj4gPj4+ID4gK3sKPj4gPj4+ ID4gKyAgICAgc3RydWN0IGVkaWQgKmxhc3RfYmxvY2sgPSBOVUxMOwo+PiA+Pj4gPiArICAgICB1 OCAqcmF3X2VkaWQgPSBOVUxMOwo+PiA+Pj4gPiArCj4+ID4+PiA+ICsgICAgIGlmICghZWRpZCkg ewo+PiA+Pj4gPiArICAgICAgICAgICAgIHByX2VycigiaW52YWxpZCBlZGlkIGlucHV0XG4iKTsK Pj4gPj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPj4gPj4+ID4gKyAgICAgfQo+PiA+Pj4g PiArCj4+ID4+PiA+ICsgICAgIHJhd19lZGlkID0gKHU4ICopZWRpZDsKPj4gPj4+ID4gKyAgICAg cmF3X2VkaWQgKz0gKGVkaWQtPmV4dGVuc2lvbnMgKiBFRElEX0xFTkdUSCk7Cj4+ID4+PiA+ICsg ICAgIGxhc3RfYmxvY2sgPSAoc3RydWN0IGVkaWQgKilyYXdfZWRpZDsKPj4gPj4+ID4gKwo+PiA+ Pj4gPiArICAgICBpZiAobGFzdF9ibG9jaykKPj4gPj4+ID4gKyAgICAgICAgICAgICByZXR1cm4g bGFzdF9ibG9jay0+Y2hlY2tzdW07Cj4+ID4+PiA+ICsKPj4gPj4+ID4gKyAgICAgcHJfZXJyKCJJ bnZhbGlkIGJsb2NrLCBubyBjaGVja3N1bVxuIik7Cj4+ID4+PiA+ICsgICAgIHJldHVybiAwOwo+ PiA+Pj4gPiArfQo+PiA+Pj4gPiArCj4+ID4+PiA+ICBzdGF0aWMgdm9pZCBkcF9wYW5lbF9oYW5k bGVfc2lua19yZXF1ZXN0KHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpCj4+ID4+PiA+ICB7Cj4+ ID4+PiA+ICAgICAgIHN0cnVjdCBkcF9wYW5lbF9wcml2YXRlICpwYW5lbDsKPj4gPj4+ID4gQEAg LTMxMiw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCBkcF9wYW5lbF9oYW5kbGVfc2lua19yZXF1ZXN0 KHN0cnVjdAo+PiA+Pj4gPiBkcF9wYW5lbCAqZHBfcGFuZWwpCj4+ID4+PiA+ICAgICAgIHBhbmVs ID0gY29udGFpbmVyX29mKGRwX3BhbmVsLCBzdHJ1Y3QgZHBfcGFuZWxfcHJpdmF0ZSwKPj4gPj4+ ID4gZHBfcGFuZWwpOwo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAgICBpZiAocGFuZWwtPmxpbmstPnNp bmtfcmVxdWVzdCAmIERQX1RFU1RfTElOS19FRElEX1JFQUQpIHsKPj4gPj4+ID4gLSAgICAgICAg ICAgICB1OCBjaGVja3N1bSA9IGRwdV9nZXRfZWRpZF9jaGVja3N1bShkcF9wYW5lbC0+ZWRpZF9j dHJsKTsKPj4gPj4+ID4gKyAgICAgICAgICAgICB1OCBjaGVja3N1bSA9IGRwX3BhbmVsX2dldF9l ZGlkX2NoZWNrc3VtKGRwX3BhbmVsLT5lZGlkKTsKPj4gPj4+ID4KPj4gPj4+ID4gICAgICAgICAg ICAgICBwYW5lbC0+bGluay0+c2VuZF9lZGlkX2NoZWNrc3VtKHBhbmVsLT5saW5rLCBjaGVja3N1 bSk7Cj4+ID4+PiA+ICAgICAgICAgICAgICAgcGFuZWwtPmxpbmstPnNlbmRfdGVzdF9yZXNwb25z ZShwYW5lbC0+bGluayk7Cj4+ID4+PiA+IEBAIC0zODIsMzYgKzQwNyw2IEBAIHN0YXRpYyBpbnQg ZHBfcGFuZWxfdGltaW5nX2NmZyhzdHJ1Y3QgZHBfcGFuZWwKPj4gPj4+ID4gKmRwX3BhbmVsKQo+ PiA+Pj4gPiAgICAgICByZXR1cm4gcmM7Cj4+ID4+PiA+ICB9Cj4+ID4+PiA+Cj4+ID4+PiA+IC1z dGF0aWMgaW50IGRwX3BhbmVsX2VkaWRfcmVnaXN0ZXIoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5l bCkKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgaW50IHJjID0gMDsKPj4gPj4+ID4gLQo+PiA+ Pj4gPiAtICAgICBpZiAoIWRwX3BhbmVsKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcHJfZXJy KCJpbnZhbGlkIGlucHV0XG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByYyA9IC1FSU5WQUw7 Cj4+ID4+PiA+IC0gICAgICAgICAgICAgZ290byBlbmQ7Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ ID4gLQo+PiA+Pj4gPiAtICAgICBkcF9wYW5lbC0+ZWRpZF9jdHJsID0gZHB1X2VkaWRfaW5pdCgp Owo+PiA+Pj4gPiAtICAgICBpZiAoIWRwX3BhbmVsLT5lZGlkX2N0cmwpIHsKPj4gPj4+ID4gLSAg ICAgICAgICAgICBwcl9lcnIoImRwdSBlZGlkIGluaXQgZm9yIERQIGZhaWxlZFxuIik7Cj4+ID4+ PiA+IC0gICAgICAgICAgICAgcmMgPSAtRU5PTUVNOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGdv dG8gZW5kOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC1lbmQ6Cj4+ID4+PiA+IC0gICAgIHJl dHVybiByYzsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtc3RhdGljIHZvaWQgZHBf cGFuZWxfZWRpZF9kZXJlZ2lzdGVyKHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpCj4+ID4+PiA+ IC17Cj4+ID4+PiA+IC0gICAgIGlmICghZHBfcGFuZWwpIHsKPj4gPj4+ID4gLSAgICAgICAgICAg ICBwcl9lcnIoImludmFsaWQgaW5wdXRcbiIpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVy bjsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGRwdV9lZGlkX2Rl aW5pdCgodm9pZCAqKikmZHBfcGFuZWwtPmVkaWRfY3RybCk7Cj4+ID4+PiA+IC19Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gIHN0YXRpYyBpbnQgZHBfcGFuZWxfaW5pdF9wYW5lbF9pbmZvKHN0cnVjdCBk cF9wYW5lbCAqZHBfcGFuZWwpCj4+ID4+PiA+ICB7Cj4+ID4+PiA+ICAgICAgIGludCByYyA9IDA7 Cj4+ID4+PiA+IEBAIC01MDMsOCArNDk4LDYgQEAgc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbF9n ZXQoc3RydWN0IGRwX3BhbmVsX2luCj4+ID4+PiA+ICppbikKPj4gPj4+ID4gICAgICAgZHBfcGFu ZWwgPSAmcGFuZWwtPmRwX3BhbmVsOwo+PiA+Pj4gPiAgICAgICBwYW5lbC0+YXV4X2NmZ191cGRh dGVfZG9uZSA9IGZhbHNlOwo+PiA+Pj4gPgo+PiA+Pj4gPiAtICAgICBkcF9wYW5lbC0+ZHB1X2Vk aWRfcmVnaXN0ZXIgPSBkcF9wYW5lbF9lZGlkX3JlZ2lzdGVyOwo+PiA+Pj4gPiAtICAgICBkcF9w YW5lbC0+ZHB1X2VkaWRfZGVyZWdpc3RlciA9IGRwX3BhbmVsX2VkaWRfZGVyZWdpc3RlcjsKPj4g Pj4+ID4gICAgICAgZHBfcGFuZWwtPmluaXRfaW5mbyA9IGRwX3BhbmVsX2luaXRfcGFuZWxfaW5m bzsKPj4gPj4+ID4gICAgICAgZHBfcGFuZWwtPnRpbWluZ19jZmcgPSBkcF9wYW5lbF90aW1pbmdf Y2ZnOwo+PiA+Pj4gPiAgICAgICBkcF9wYW5lbC0+cmVhZF9zaW5rX2NhcHMgPSBkcF9wYW5lbF9y ZWFkX3NpbmtfY2FwczsKPj4gPj4+ID4gQEAgLTUyNyw1ICs1MjAsNyBAQCB2b2lkIGRwX3BhbmVs X3B1dChzdHJ1Y3QgZHBfcGFuZWwgKmRwX3BhbmVsKQo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAgICBw YW5lbCA9IGNvbnRhaW5lcl9vZihkcF9wYW5lbCwgc3RydWN0IGRwX3BhbmVsX3ByaXZhdGUsCj4+ ID4+PiA+IGRwX3BhbmVsKTsKPj4gPj4+ID4KPj4gPj4+ID4gKyAgICAga2ZyZWUoZHBfcGFuZWwt PmVkaWQpOwo+PiA+Pj4gPiArICAgICBkcF9wYW5lbC0+ZWRpZCA9IE5VTEw7Cj4+ID4+PiA+ICAg ICAgIGRldm1fa2ZyZWUocGFuZWwtPmRldiwgcGFuZWwpOwo+PiA+Pj4gPiAgfQo+PiA+Pj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5oCj4+ID4+PiA+IGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5oCj4+ID4+PiA+IGluZGV4IGE5NWZkMDE1 N2E0ZS4uZDZlYmRiOThmNzY3IDEwMDY0NAo+PiA+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX3BhbmVsLmgKPj4gPj4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9k cF9wYW5lbC5oCj4+ID4+PiA+IEBAIC0xOCw3ICsxOCw4IEBACj4+ID4+PiA+ICAjaW5jbHVkZSAi ZHBfYXV4LmgiCj4+ID4+PiA+ICAjaW5jbHVkZSAiZHBfbGluay5oIgo+PiA+Pj4gPiAgI2luY2x1 ZGUgImRwX3VzYnBkLmgiCj4+ID4+PiA+IC0jaW5jbHVkZSAiZHB1X2VkaWRfcGFyc2VyLmgiCj4+ ID4+PiA+ICsKPj4gPj4+ID4gK3N0cnVjdCBlZGlkOwo+PiA+Pj4gPgo+PiA+Pj4gPiAgZW51bSBk cF9sYW5lX2NvdW50IHsKPj4gPj4+ID4gICAgICAgRFBfTEFORV9DT1VOVF8xID0gMSwKPj4gPj4+ ID4gQEAgLTYzLDcgKzY0LDcgQEAgc3RydWN0IGRwX3BhbmVsIHsKPj4gPj4+ID4gICAgICAgdTgg ZHNfcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9SVFNdOwo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAg ICBzdHJ1Y3QgZHJtX2RwX2xpbmsgbGlua19pbmZvOwo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1 X2VkaWRfY3RybCAqZWRpZF9jdHJsOwo+PiA+Pj4gPiArICAgICBzdHJ1Y3QgZWRpZCAqZWRpZDsK Pj4gPj4+ID4gICAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPj4gPj4+ID4g ICAgICAgc3RydWN0IGRwX3BhbmVsX2luZm8gcGluZm87Cj4+ID4+PiA+ICAgICAgIGJvb2wgdmlk ZW9fdGVzdDsKPj4gPj4+ID4gQEAgLTcxLDggKzcyLDYgQEAgc3RydWN0IGRwX3BhbmVsIHsKPj4g Pj4+ID4gICAgICAgdTMyIHZpYzsKPj4gPj4+ID4gICAgICAgdTMyIG1heF9wY2xrX2toejsKPj4g Pj4+ID4KPj4gPj4+ID4gLSAgICAgaW50ICgqZHB1X2VkaWRfcmVnaXN0ZXIpKHN0cnVjdCBkcF9w YW5lbCAqZHBfcGFuZWwpOwo+PiA+Pj4gPiAtICAgICB2b2lkICgqZHB1X2VkaWRfZGVyZWdpc3Rl cikoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCk7Cj4+ID4+PiA+ICAgICAgIGludCAoKmluaXRf aW5mbykoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCk7Cj4+ID4+PiA+ICAgICAgIGludCAoKnRp bWluZ19jZmcpKHN0cnVjdCBkcF9wYW5lbCAqZHBfcGFuZWwpOwo+PiA+Pj4gPiAgICAgICBpbnQg KCpyZWFkX3NpbmtfY2Fwcykoc3RydWN0IGRwX3BhbmVsICpkcF9wYW5lbCwKPj4gPj4+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2VkaWRfcGFyc2VyLmMKPj4gPj4+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3BhcnNlci5jCj4+ID4+PiA+IGRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAo+PiA+Pj4gPiBpbmRleCAyNGY1ZjQ0YzE0OTIuLjAwMDAwMDAwMDAw MAo+PiA+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9lZGlkX3BhcnNlci5jCj4+ ID4+PiA+ICsrKyAvZGV2L251bGwKPj4gPj4+ID4gQEAgLTEsNjU3ICswLDAgQEAKPj4gPj4+ID4g LS8qIENvcHlyaWdodCAoYykgMjAxNy0yMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KPj4gPj4+ID4gLSAqCj4+ID4+PiA+IC0gKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4+ID4+PiA+IG1v ZGlmeQo+PiA+Pj4gPiAtICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCj4+ID4+PiA+IC0gKiBvbmx5IHZlcnNpb24gMiBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4gPj4+ID4gLSAq Cj4+ID4+PiA+IC0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gPj4+ID4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+ID4+PiA+IC0gKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4+ID4+PiA+IC0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+PiA+Pj4gPiAtICovCj4+ID4+PiA+IC0KPj4gPj4+ID4gLSNpbmNsdWRlIDxkcm0vZHJtX2Vk aWQuaD4KPj4gPj4+ID4gLSNpbmNsdWRlIDxsaW51eC9oZG1pLmg+Cj4+ID4+PiA+IC0KPj4gPj4+ ID4gLSNpbmNsdWRlICJkcHVfa21zLmgiCj4+ID4+PiA+IC0jaW5jbHVkZSAiZHB1X2VkaWRfcGFy c2VyLmgiCj4+ID4+PiA+IC0KPj4gPj4+ID4gLSNkZWZpbmUgREJDX1NUQVJUX09GRlNFVCA0Cj4+ ID4+PiA+IC0jZGVmaW5lIEVESURfRFREX0xFTiAxOAo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1lbnVt IGRhdGFfYmxvY2tfdHlwZXMgewo+PiA+Pj4gPiAtICAgICBSRVNFUlZFRCwKPj4gPj4+ID4gLSAg ICAgQVVESU9fREFUQV9CTE9DSywKPj4gPj4+ID4gLSAgICAgVklERU9fREFUQV9CTE9DSywKPj4g Pj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklDX0RBVEFfQkxPQ0ssCj4+ID4+PiA+IC0gICAgIFNQ RUFLRVJfQUxMT0NBVElPTl9EQVRBX0JMT0NLLAo+PiA+Pj4gPiAtICAgICBWRVNBX0RUQ19EQVRB X0JMT0NLLAo+PiA+Pj4gPiAtICAgICBSRVNFUlZFRDIsCj4+ID4+PiA+IC0gICAgIFVTRV9FWFRF TkRFRF9UQUcKPj4gPj4+ID4gLX07Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyB1OCAqZHB1 X2ZpbmRfZWRpZF9leHRlbnNpb24oc3RydWN0IGVkaWQgKmVkaWQsIGludCBleHRfaWQpCj4+ID4+ PiA+IC17Cj4+ID4+PiA+IC0gICAgIHU4ICplZGlkX2V4dCA9IE5VTEw7Cj4+ID4+PiA+IC0gICAg IGludCBpOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIC8qIE5vIEVESUQgb3IgRURJRCBleHRl bnNpb25zICovCj4+ID4+PiA+IC0gICAgIGlmIChlZGlkID09IE5VTEwgfHwgZWRpZC0+ZXh0ZW5z aW9ucyA9PSAwKQo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAt Cj4+ID4+PiA+IC0gICAgIC8qIEZpbmQgQ0VBIGV4dGVuc2lvbiAqLwo+PiA+Pj4gPiAtICAgICBm b3IgKGkgPSAwOyBpIDwgZWRpZC0+ZXh0ZW5zaW9uczsgaSsrKSB7Cj4+ID4+PiA+IC0gICAgICAg ICAgICAgZWRpZF9leHQgPSAodTggKillZGlkICsgRURJRF9MRU5HVEggKiAoaSArIDEpOwo+PiA+ Pj4gPiAtICAgICAgICAgICAgIGlmIChlZGlkX2V4dFswXSA9PSBleHRfaWQpCj4+ID4+PiA+IC0g ICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ ID4+PiA+IC0gICAgIGlmIChpID09IGVkaWQtPmV4dGVuc2lvbnMpCj4+ID4+PiA+IC0gICAgICAg ICAgICAgcmV0dXJuIE5VTEw7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgcmV0dXJuIGVkaWRf ZXh0Owo+PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1zdGF0aWMgdTggKmRwdV9maW5k X2NlYV9leHRlbnNpb24oc3RydWN0IGVkaWQgKmVkaWQpCj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0g ICAgIHJldHVybiBkcHVfZmluZF9lZGlkX2V4dGVuc2lvbihlZGlkLCBEUFVfQ0VBX0VYVCk7Cj4+ ID4+PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyBpbnQKPj4gPj4+ID4gLWRwdV9j ZWFfZGJfcGF5bG9hZF9sZW4oY29uc3QgdTggKmRiKQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAg ICByZXR1cm4gZGJbMF0gJiAweDFmOwo+PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1z dGF0aWMgaW50Cj4+ID4+PiA+IC1kcHVfY2VhX2RiX3RhZyhjb25zdCB1OCAqZGIpCj4+ID4+PiA+ IC17Cj4+ID4+PiA+IC0gICAgIHJldHVybiBkYlswXSA+PiA1Owo+PiA+Pj4gPiAtfQo+PiA+Pj4g PiAtCj4+ID4+PiA+IC1zdGF0aWMgaW50Cj4+ID4+PiA+IC1kcHVfY2VhX3JldmlzaW9uKGNvbnN0 IHU4ICpjZWEpCj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIHJldHVybiBjZWFbMV07Cj4+ID4+ PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyBpbnQKPj4gPj4+ID4gLWRwdV9jZWFf ZGJfb2Zmc2V0cyhjb25zdCB1OCAqY2VhLCBpbnQgKnN0YXJ0LCBpbnQgKmVuZCkKPj4gPj4+ID4g LXsKPj4gPj4+ID4gLSAgICAgLyogRGF0YSBibG9jayBvZmZzZXQgaW4gQ0VBIGV4dGVuc2lvbiBi bG9jayAqLwo+PiA+Pj4gPiAtICAgICAqc3RhcnQgPSA0Owo+PiA+Pj4gPiAtICAgICAqZW5kID0g Y2VhWzJdOwo+PiA+Pj4gPiAtICAgICBpZiAoKmVuZCA9PSAwKQo+PiA+Pj4gPiAtICAgICAgICAg ICAgICplbmQgPSAxMjc7Cj4+ID4+PiA+IC0gICAgIGlmICgqZW5kIDwgNCB8fCAqZW5kID4gMTI3 KQo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOwo+PiA+Pj4gPiAtICAgICBy ZXR1cm4gMDsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtI2RlZmluZSBkcHVfZm9y X2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVuZCkgXAo+PiA+Pj4gPiAtZm9yICgoaSkgPSAo c3RhcnQpOyBcCj4+ID4+PiA+IC0oaSkgPCAoZW5kKSAmJiAoaSkgKyBkcHVfY2VhX2RiX3BheWxv YWRfbGVuKCYoY2VhKVsoaSldKSA8IChlbmQpOyBcCj4+ID4+PiA+IC0oaSkgKz0gZHB1X2NlYV9k Yl9wYXlsb2FkX2xlbigmKGNlYSlbKGkpXSkgKyAxKQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1zdGF0 aWMgYm9vbCBkcHVfY2VhX2RiX2lzX2hkbWlfaGZfdnNkYihjb25zdCB1OCAqZGIpCj4+ID4+PiA+ IC17Cj4+ID4+PiA+IC0gICAgIGludCBoZG1pX2lkOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAg IGlmIChkcHVfY2VhX2RiX3RhZyhkYikgIT0gVkVORE9SX1NQRUNJRklDX0RBVEFfQkxPQ0spCj4+ ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0g ICAgIGlmIChkcHVfY2VhX2RiX3BheWxvYWRfbGVuKGRiKSA8IDcpCj4+ID4+PiA+IC0gICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGhkbWlfaWQgPSBk YlsxXSB8IChkYlsyXSA8PCA4KSB8IChkYlszXSA8PCAxNik7Cj4+ID4+PiA+IC0KPj4gPj4+ID4g LSAgICAgcmV0dXJuIGhkbWlfaWQgPT0gSERNSV9GT1JVTV9JRUVFX09VSTsKPj4gPj4+ID4gLX0K Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtc3RhdGljIHU4ICpkcHVfZWRpZF9maW5kX2V4dGVuZGVkX3Rh Z19ibG9jayhzdHJ1Y3QgZWRpZCAqZWRpZCwgaW50Cj4+ID4+PiA+IGJsa19pZCkKPj4gPj4+ID4g LXsKPj4gPj4+ID4gLSAgICAgdTggKmRiID0gTlVMTDsKPj4gPj4+ID4gLSAgICAgdTggKmNlYSA9 IE5VTEw7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYgKCFlZGlkKSB7Cj4+ID4+PiA+IC0g ICAgICAgICAgICAgRFBVX0VSUk9SKCIlczogaW52YWxpZCBpbnB1dFxuIiwgX19mdW5jX18pOwo+ PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLSAgICAgY2VhID0gZHB1X2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkKTsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBpZiAoY2VhICYmIGRwdV9jZWFfcmV2aXNpb24oY2Vh KSA+PSAzKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgaW50IGksIHN0YXJ0LCBlbmQ7Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9vZmZzZXRzKGNlYSwg JnN0YXJ0LCAmZW5kKSkKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxM Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgICAgICAgICAgZHB1X2Zvcl9lYWNoX2NlYV9kYihj ZWEsIGksIHN0YXJ0LCBlbmQpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRiID0g JmNlYVtpXTsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmICgoZHB1X2NlYV9kYl90 YWcoZGIpID09IERQVV9FWFRFTkRFRF9UQUcpICYmCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChkYlsxXSA9PSBibGtfaWQpKQo+PiA+Pj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZGI7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgfQo+PiA+Pj4g PiAtICAgICB9Cj4+ID4+PiA+IC0gICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAtfQo+PiA+Pj4g PiAtCj4+ID4+PiA+IC1zdGF0aWMgdTggKgo+PiA+Pj4gPiAtZHB1X2VkaWRfZmluZF9ibG9jayhz dHJ1Y3QgZWRpZCAqZWRpZCwgaW50IGJsa19pZCkKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAg dTggKmRiID0gTlVMTDsKPj4gPj4+ID4gLSAgICAgdTggKmNlYSA9IE5VTEw7Cj4+ID4+PiA+IC0K Pj4gPj4+ID4gLSAgICAgaWYgKCFlZGlkKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VS Uk9SKCIlczogaW52YWxpZCBpbnB1dFxuIiwgX19mdW5jX18pOwo+PiA+Pj4gPiAtICAgICAgICAg ICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAg ICAgY2VhID0gZHB1X2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkKTsKPj4gPj4+ID4gLQo+PiA+Pj4g PiAtICAgICBpZiAoY2VhICYmIGRwdV9jZWFfcmV2aXNpb24oY2VhKSA+PSAzKSB7Cj4+ID4+PiA+ IC0gICAgICAgICAgICAgaW50IGksIHN0YXJ0LCBlbmQ7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAg ICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9vZmZzZXRzKGNlYSwgJnN0YXJ0LCAmZW5kKSkKPj4g Pj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAtCj4+ID4+ PiA+IC0gICAgICAgICAgICAgZHB1X2Zvcl9lYWNoX2NlYV9kYihjZWEsIGksIHN0YXJ0LCBlbmQp IHsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRiID0gJmNlYVtpXTsKPj4gPj4+ID4g LSAgICAgICAgICAgICAgICAgICAgIGlmIChkcHVfY2VhX2RiX3RhZyhkYikgPT0gYmxrX2lkKQo+ PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGI7Cj4+ID4+PiA+ IC0gICAgICAgICAgICAgfQo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0gICAgIHJldHVybiBO VUxMOwo+PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyBj b25zdCB1OCAqX2RwdV9lZGlkX2ZpbmRfYmxvY2soY29uc3QgdTggKmluX2J1ZiwgdTMyCj4+ID4+ PiA+IHN0YXJ0X29mZnNldCwKPj4gPj4+ID4gLSAgICAgdTggdHlwZSwgdTggKmxlbikKPj4gPj4+ ID4gLXsKPj4gPj4+ID4gLSAgICAgLyogdGhlIHN0YXJ0IG9mIGRhdGEgYmxvY2sgY29sbGVjdGlv biwgc3RhcnQgb2YgVmlkZW8gRGF0YSBCbG9jawo+PiA+Pj4gPiAqLwo+PiA+Pj4gPiAtICAgICB1 MzIgb2Zmc2V0ID0gc3RhcnRfb2Zmc2V0Owo+PiA+Pj4gPiAtICAgICB1MzIgZGJjX29mZnNldCA9 IGluX2J1ZlsyXTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMg KyIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAgLyoKPj4gPj4+ID4gLSAgICAgICogKiBlZGlk IGJ1ZmZlciAxLCBieXRlIDIgYmVpbmcgNCBtZWFucyBubyBub24tRFREL0RhdGEgYmxvY2sKPj4g Pj4+ID4gLSAgICAgICogICBjb2xsZWN0aW9uIHByZXNlbnQuCj4+ID4+PiA+IC0gICAgICAqICog ZWRpZCBidWZmZXIgMSwgYnl0ZSAyIGJlaW5nIDAgbWVhbnMgbm8gbm9uLURURC9EQVRBIGJsb2Nr Cj4+ID4+PiA+IC0gICAgICAqICAgY29sbGVjdGlvbiBwcmVzZW50IGFuZCBubyBEVEQgZGF0YSBw cmVzZW50Lgo+PiA+Pj4gPiAtICAgICAgKi8KPj4gPj4+ID4gLSAgICAgaWYgKChkYmNfb2Zmc2V0 ID09IDApIHx8IChkYmNfb2Zmc2V0ID09IDQpKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgRFBV X0VSUk9SKCJFRElEOiBubyBEVEQgb3Igbm9uLURURCBkYXRhIHByZXNlbnRcbiIpOwo+PiA+Pj4g PiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0K Pj4gPj4+ID4gLSAgICAgd2hpbGUgKG9mZnNldCA8IGRiY19vZmZzZXQpIHsKPj4gPj4+ID4gLSAg ICAgICAgICAgICB1OCBibG9ja19sZW4gPSBpbl9idWZbb2Zmc2V0XSAmIDB4MUY7Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoKG9mZnNldCArIGJsb2NrX2xlbiA8PSBkYmNf b2Zmc2V0KSAmJgo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAoaW5fYnVmW29mZnNldF0gPj4g NSkgPT0gdHlwZSkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgKmxlbiA9IGJsb2Nr X2xlbjsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCJibG9j az0lZCBmb3VuZCBAIDB4JXggdy8KPj4gPj4+ID4gbGVuPSVkXG4iLAo+PiA+Pj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBvZmZzZXQsIGJsb2NrX2xlbik7Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbl9idWYgKyBvZmZzZXQ7 Cj4+ID4+PiA+IC0gICAgICAgICAgICAgfQo+PiA+Pj4gPiAtICAgICAgICAgICAgIG9mZnNldCAr PSAxICsgYmxvY2tfbGVuOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAg ICAgcmV0dXJuIE5VTEw7Cj4+ID4+PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyB2 b2lkIGRwdV9lZGlkX2V4dHJhY3RfdmVuZG9yX2lkKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4+ID4+ PiA+ICplZGlkX2N0cmwpCj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIGNoYXIgKnZlbmRvcl9p ZDsKPj4gPj4+ID4gLSAgICAgdTMyIGlkX2NvZGVzOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAg IERQVV9FRElEX0RFQlVHKCIlcyArIiwgX19mdW5jX18pOwo+PiA+Pj4gPiAtICAgICBpZiAoIWVk aWRfY3RybCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiJXM6IGludmFsaWQg aW5wdXRcbiIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4+ID4+ PiA+IC0gICAgIH0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICB2ZW5kb3JfaWQgPSBlZGlkX2N0 cmwtPnZlbmRvcl9pZDsKPj4gPj4+ID4gLSAgICAgaWRfY29kZXMgPSAoKHUzMillZGlkX2N0cmwt PmVkaWQtPm1mZ19pZFswXSA8PCA4KSArCj4+ID4+PiA+IC0gICAgICAgICAgICAgZWRpZF9jdHJs LT5lZGlkLT5tZmdfaWRbMV07Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgdmVuZG9yX2lkWzBd ID0gJ0EnIC0gMSArICgoaWRfY29kZXMgPj4gMTApICYgMHgxRik7Cj4+ID4+PiA+IC0gICAgIHZl bmRvcl9pZFsxXSA9ICdBJyAtIDEgKyAoKGlkX2NvZGVzID4+IDUpICYgMHgxRik7Cj4+ID4+PiA+ IC0gICAgIHZlbmRvcl9pZFsyXSA9ICdBJyAtIDEgKyAoaWRfY29kZXMgJiAweDFGKTsKPj4gPj4+ ID4gLSAgICAgdmVuZG9yX2lkWzNdID0gMDsKPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUco InZlbmRvciBpZCBpcyAlcyAiLCB2ZW5kb3JfaWQpOwo+PiA+Pj4gPiAtICAgICBEUFVfRURJRF9E RUJVRygiJXMgLSIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAt c3RhdGljIHZvaWQgZHB1X2VkaWRfc2V0X3k0MjBfc3VwcG9ydChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+PiA+Pj4gPiAtdTMyIHZpZGVvX2Zvcm1hdCkKPj4gPj4+ID4gLXsKPj4g Pj4+ID4gLSAgICAgdTggY2VhX21vZGUgPSAwOwo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZTsKPj4gPj4+ID4gLSAgICAgdTMyIG1vZGVfZm10X2ZsYWdzID0gMDsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICAvKiBOZWVkIHRvIGFkZCBZNDIwIHN1cHBvcnQgZmxh ZyB0byB0aGUgbW9kZXMgKi8KPj4gPj4+ID4gLSAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShtb2Rl LCAmY29ubmVjdG9yLT5wcm9iZWRfbW9kZXMsIGhlYWQpIHsKPj4gPj4+ID4gLSAgICAgICAgICAg ICAvKiBDYWNoZSB0aGUgZm9ybWF0IGZsYWdzIGJlZm9yZSBjbGVhcmluZyAqLwo+PiA+Pj4gPiAt ICAgICAgICAgICAgIG1vZGVfZm10X2ZsYWdzID0gbW9kZS0+ZmxhZ3M7Cj4+ID4+PiA+IC0gICAg ICAgICAgICAgLyogQ2xlYXIgdGhlIFJHQi9ZVVYgZm9ybWF0IGZsYWdzIGJlZm9yZSBjYWxsaW5n IHVwc3RyZWFtCj4+ID4+PiA+IEFQSSAqLwo+PiA+Pj4gPiAtICAgICAgICAgICAgIG1vZGUtPmZs YWdzICY9IH5EUFVfRFJNX01PREVfRkxBR19GTVRfTUFTSzsKPj4gPj4+ID4gLSAgICAgICAgICAg ICBjZWFfbW9kZSA9IGRybV9tYXRjaF9jZWFfbW9kZShtb2RlKTsKPj4gPj4+ID4gLSAgICAgICAg ICAgICAvKiBSZXN0b3JlIHRoZSBmb3JtYXQgZmxhZ3MgKi8KPj4gPj4+ID4gLSAgICAgICAgICAg ICBtb2RlLT5mbGFncyA9IG1vZGVfZm10X2ZsYWdzOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGlm ICgoY2VhX21vZGUgIT0gMCkgJiYgKGNlYV9tb2RlID09IHZpZGVvX2Zvcm1hdCkpIHsKPj4gPj4+ ID4gLSAgICAgICAgICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCIlcyBmb3VuZCBtYXRjaCBm b3IgJWQgIiwKPj4gPj4+ID4gX19mdW5jX18sCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAg ICB2aWRlb19mb3JtYXQpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgbW9kZS0+Zmxh Z3MgfD0gRFJNX01PREVfRkxBR19TVVBQT1JUU19ZVVY7Cj4+ID4+PiA+IC0gICAgICAgICAgICAg fQo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRp YyB2b2lkIGRwdV9lZGlkX3BhcnNlX1k0MjBDTURCKAo+PiA+Pj4gPiAtc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRwdV9lZGlkX2N0cmwgKmVkaWRfY3RybCwKPj4gPj4+ ID4gLWNvbnN0IHU4ICpkYikKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgdTMyIG9mZnNldCA9 IDA7Cj4+ID4+PiA+IC0gICAgIHU4IGNtZGJfbGVuID0gMDsKPj4gPj4+ID4gLSAgICAgdTggc3Zk X2xlbiA9IDA7Cj4+ID4+PiA+IC0gICAgIGNvbnN0IHU4ICpzdmQgPSBOVUxMOwo+PiA+Pj4gPiAt ICAgICB1MzIgaSA9IDAsIGogPSAwOwo+PiA+Pj4gPiAtICAgICB1MzIgdmlkZW9fZm9ybWF0ID0g MDsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBpZiAoIWVkaWRfY3RybCkgewo+PiA+Pj4gPiAt ICAgICAgICAgICAgIERQVV9FUlJPUigiJXM6IGVkaWRfY3RybCBpcyBOVUxMXG4iLCBfX2Z1bmNf Xyk7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYgKCFkYikgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQ VV9FUlJPUigiJXM6IGludmFsaWQgaW5wdXRcbiIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAg ICAgICAgICByZXR1cm47Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ID4gLSAgICAgRFBVX0VESURf REVCVUcoIiVzICtcbiIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAgY21kYl9sZW4gPSBkYlsw XSAmIDB4MWY7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgLyogQnl0ZSAzIHRvIEwrMSBjb250 YWluIFNWRHMgKi8KPj4gPj4+ID4gLSAgICAgb2Zmc2V0ICs9IDI7Cj4+ID4+PiA+IC0KPj4gPj4+ ID4gLSAgICAgc3ZkID0gZHB1X2VkaWRfZmluZF9ibG9jayhlZGlkX2N0cmwtPmVkaWQsIFZJREVP X0RBVEFfQkxPQ0spOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGlmIChzdmQpIHsKPj4gPj4+ ID4gLSAgICAgICAgICAgICAvKm1vdmluZyB0byB0aGUgbmV4dCBieXRlIGFzIHZpYyBpbmZvIGJl Z2lucyB0aGVyZSovCj4+ID4+PiA+IC0gICAgICAgICAgICAgc3ZkX2xlbiA9IHN2ZFswXSAmIDB4 MWY7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgKytzdmQ7Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ ID4gLQo+PiA+Pj4gPiAtICAgICBmb3IgKGkgPSAwOyBpIDwgc3ZkX2xlbjsgaSsrLCBqKyspIHsK Pj4gPj4+ID4gLSAgICAgICAgICAgICB2aWRlb19mb3JtYXQgPSAqKHN2ZCArIGkpICYgMHg3RjsK Pj4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoY21kYl9sZW4gPT0gMSkgewo+PiA+Pj4gPiAtICAg ICAgICAgICAgICAgICAgICAgLyogSWYgY21kYl9sZW4gaXMgMSwgaXQgbWVhbnMgYWxsIFNWRHMg c3VwcG9ydAo+PiA+Pj4gPiBZVVYgKi8KPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRw dV9lZGlkX3NldF95NDIwX3N1cHBvcnQoY29ubmVjdG9yLAo+PiA+Pj4gPiB2aWRlb19mb3JtYXQp Owo+PiA+Pj4gPiAtICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGJbb2Zmc2V0XSAmICgxIDw8IGop KSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBkcHVfZWRpZF9zZXRfeTQyMF9zdXBw b3J0KGNvbm5lY3RvciwKPj4gPj4+ID4gdmlkZW9fZm9ybWF0KTsKPj4gPj4+ID4gLQo+PiA+Pj4g PiAtICAgICAgICAgICAgICAgICAgICAgaWYgKGogJiAweDgwKSB7Cj4+ID4+PiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGogPSBqLzg7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldCsrOwo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAob2Zmc2V0ID49IGNtZGJfbGVuKQo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAg fQo+PiA+Pj4gPiAtICAgICAgICAgICAgIH0KPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyAtXG4iLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtc3RhdGljIHZvaWQgZHB1X2VkaWRf cGFyc2VfWTQyMFZEQigKPj4gPj4+ID4gLXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmwsCj4+ID4+PiA+IC1jb25zdCB1OCAqZGIp Cj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIHU4IGxlbiA9IGRiWzBdICYgMHgxZjsKPj4gPj4+ ID4gLSAgICAgdTMyIGkgPSAwOwo+PiA+Pj4gPiAtICAgICB1MzIgdmlkZW9fZm9ybWF0ID0gMDsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBpZiAoIWVkaWRfY3RybCkgewo+PiA+Pj4gPiAtICAg ICAgICAgICAgIERQVV9FUlJPUigiJXM6IGludmFsaWQgaW5wdXRcbiIsIF9fZnVuY19fKTsKPj4g Pj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ID4gLQo+ PiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgK1xuIiwgX19mdW5jX18pOwo+PiA+Pj4g PiAtCj4+ID4+PiA+IC0gICAgIC8qIE9mZnNldCB0byBieXRlIDMgKi8KPj4gPj4+ID4gLSAgICAg ZGIgKz0gMjsKPj4gPj4+ID4gLSAgICAgZm9yIChpID0gMDsgaSA8IGxlbiAtIDE7IGkrKykgewo+ PiA+Pj4gPiAtICAgICAgICAgICAgIHZpZGVvX2Zvcm1hdCA9ICooZGIgKyBpKSAmIDB4N0Y7Cj4+ ID4+PiA+IC0gICAgICAgICAgICAgLyoKPj4gPj4+ID4gLSAgICAgICAgICAgICAgKiBtb2RlIHdh cyBhbHJlYWR5IGFkZGVkIGluIGdldF9tb2RlcygpCj4+ID4+PiA+IC0gICAgICAgICAgICAgICog b25seSBuZWVkIHRvIHNldCB0aGUgWTQyMCBzdXBwb3J0IGZsYWcKPj4gPj4+ID4gLSAgICAgICAg ICAgICAgKi8KPj4gPj4+ID4gLSAgICAgICAgICAgICBkcHVfZWRpZF9zZXRfeTQyMF9zdXBwb3J0 KGNvbm5lY3RvciwgdmlkZW9fZm9ybWF0KTsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtICAg ICBEUFVfRURJRF9ERUJVRygiJXMgLSIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLX0KPj4gPj4+ID4g LQo+PiA+Pj4gPiAtc3RhdGljIHZvaWQgZHB1X2VkaWRfc2V0X21vZGVfZm9ybWF0KAo+PiA+Pj4g PiAtc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRwdV9lZGlkX2N0cmwg KmVkaWRfY3RybCkKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgY29uc3QgdTggKmRiID0gTlVM TDsKPj4gPj4+ID4gLSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzICtcbiIsIF9fZnVuY19fKTsKPj4g Pj4+ID4gLSAgICAgLyogU2V0IFlVViBtb2RlIHN1cHBvcnQgZmxhZ3MgZm9yIFlDYmNyNDIwVkRC ICovCj4+ID4+PiA+IC0gICAgIGRiID0gZHB1X2VkaWRfZmluZF9leHRlbmRlZF90YWdfYmxvY2so ZWRpZF9jdHJsLT5lZGlkLAo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgWTQyMF9WSURF T19EQVRBX0JMT0NLKTsKPj4gPj4+ID4gLSAgICAgaWYgKGRiKQo+PiA+Pj4gPiAtICAgICAgICAg ICAgIGRwdV9lZGlkX3BhcnNlX1k0MjBWREIoY29ubmVjdG9yLCBlZGlkX2N0cmwsIGRiKTsKPj4g Pj4+ID4gLSAgICAgZWxzZQo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FRElEX0RFQlVHKCJZ Q2JDcjQyMCBWREIgaXMgbm90IHByZXNlbnRcbiIpOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAg IC8qIFNldCBSR0Igc3VwcG9ydGVkIG9uIGFsbCBtb2RlcyB3aGVyZSBZVVYgaXMgbm90IHNldCAq Lwo+PiA+Pj4gPiAtICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPnBy b2JlZF9tb2RlcywgaGVhZCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIGlmICghKG1vZGUtPmZs YWdzICYgRFJNX01PREVfRkxBR19TVVBQT1JUU19ZVVYpKQo+PiA+Pj4gPiAtICAgICAgICAgICAg ICAgICAgICAgbW9kZS0+ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19TVVBQT1JUU19SR0I7Cj4+ID4+ PiA+IC0gICAgIH0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGRiID0gZHB1 X2VkaWRfZmluZF9leHRlbmRlZF90YWdfYmxvY2soZWRpZF9jdHJsLT5lZGlkLAo+PiA+Pj4gPiAt ICAgICAgICAgICAgICAgICAgICAgWTQyMF9DQVBBQklMSVRZX01BUF9EQVRBX0JMT0NLKTsKPj4g Pj4+ID4gLSAgICAgaWYgKGRiKQo+PiA+Pj4gPiAtICAgICAgICAgICAgIGRwdV9lZGlkX3BhcnNl X1k0MjBDTURCKGNvbm5lY3RvciwgZWRpZF9jdHJsLCBkYik7Cj4+ID4+PiA+IC0gICAgIGVsc2UK Pj4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfRURJRF9ERUJVRygiWUNiQ3I0MjAgQ01EQiBpcyBu b3QgcHJlc2VudFxuIik7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUco IiVzIC1cbiIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtc3Rh dGljIHZvaWQgX2RwdV9lZGlkX3VwZGF0ZV9kY19tb2RlcygKPj4gPj4+ID4gLXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0cmwpCj4+ ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIGludCBpLCBzdGFydCwgZW5kOwo+PiA+Pj4gPiAtICAg ICB1OCAqZWRpZF9leHQsICpoZG1pOwo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf aW5mbyAqZGlzcF9pbmZvOwo+PiA+Pj4gPiAtICAgICB1MzIgaGRtaV9kY195dXZfbW9kZXMgPSAw Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyArXG4iLCBfX2Z1 bmNfXyk7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYgKCFjb25uZWN0b3IgfHwgIWVkaWRf Y3RybCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiaW52YWxpZCBpbnB1dFxu Iik7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLSAgICAgZGlzcF9pbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZv Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGVkaWRfZXh0ID0gZHB1X2ZpbmRfY2VhX2V4dGVu c2lvbihlZGlkX2N0cmwtPmVkaWQpOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGlmICghZWRp ZF9leHQpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfRVJST1IoIm5vIGNlYSBleHRlbnNp b25cbiIpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsKPj4gPj4+ID4gLSAgICAgfQo+ PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGlmIChkcHVfY2VhX2RiX29mZnNldHMoZWRpZF9leHQs ICZzdGFydCwgJmVuZCkpCj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+PiA+Pj4gPiAt Cj4+ID4+PiA+IC0gICAgIGRwdV9mb3JfZWFjaF9jZWFfZGIoZWRpZF9leHQsIGksIHN0YXJ0LCBl bmQpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9pc19oZG1pX2hmX3Zz ZGIoJmVkaWRfZXh0W2ldKSkgewo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICBoZG1pID0gJmVkaWRfZXh0W2ldOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgICAgICAg ICAgICAgICAgICBpZiAoZHB1X2NlYV9kYl9wYXlsb2FkX2xlbihoZG1pKSA8IDcpCj4+ID4+PiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiA+Pj4gPiAtCj4+ID4+ PiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAoaGRtaVs3XSAmIERSTV9FRElEX1lDQkNSNDIw X0RDXzMwKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkbWlfZGNf eXV2X21vZGVzIHw9Cj4+ID4+PiA+IERSTV9FRElEX1lDQkNSNDIwX0RDXzMwOwo+PiA+Pj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUFVfRURJRF9ERUJVRygiWTQyMCAzMC1iaXQK Pj4gPj4+ID4gc3VwcG9ydGVkXG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIH0K Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKGhkbWlbN10gJiBE Uk1fRURJRF9ZQ0JDUjQyMF9EQ18zNikgewo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoZG1pX2RjX3l1dl9tb2RlcyB8PQo+PiA+Pj4gPiBEUk1fRURJRF9ZQ0JDUjQyMF9E Q18zNjsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFBVX0VESURfREVC VUcoIlk0MjAgMzYtYml0Cj4+ID4+PiA+IHN1cHBvcnRlZFxuIik7Cj4+ID4+PiA+IC0gICAgICAg ICAgICAgICAgICAgICB9Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAg IGlmIChoZG1pWzddICYgRFJNX0VESURfWUNCQ1I0MjBfRENfNDgpIHsKPj4gPj4+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGRtaV9kY195dXZfbW9kZXMgfD0KPj4gPj4+ID4gRFJN X0VESURfWUNCQ1I0MjBfRENfMzY7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERQVV9FRElEX0RFQlVHKCJZNDIwIDQ4LWJpdAo+PiA+Pj4gPiBzdXBwb3J0ZWRcbiIpOwo+ PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgfQo+PiA+Pj4gPiAtICAgICAgICAgICAgIH0K Pj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGRpc3BfaW5mby0+ZWRp ZF9oZG1pX2RjX21vZGVzIHw9IGhkbWlfZGNfeXV2X21vZGVzOwo+PiA+Pj4gPiAtCj4+ID4+PiA+ IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyAtXG4iLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC19Cj4+ ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyB2b2lkIF9kcHVfZWRpZF9leHRyYWN0X2F1ZGlvX2Rh dGFfYmxvY2tzKAo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJs KQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICB1OCBsZW4gPSAwOwo+PiA+Pj4gPiAtICAgICB1 OCBhZGJfbWF4ID0gMDsKPj4gPj4+ID4gLSAgICAgY29uc3QgdTggKmFkYiA9IE5VTEw7Cj4+ID4+ PiA+IC0gICAgIHUzMiBvZmZzZXQgPSBEQkNfU1RBUlRfT0ZGU0VUOwo+PiA+Pj4gPiAtICAgICB1 OCAqY2VhID0gTlVMTDsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBpZiAoIWVkaWRfY3RybCkg ewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiaW52YWxpZCBlZGlkX2N0cmxcbiIp Owo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4g PiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgKyIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAg Y2VhID0gZHB1X2ZpbmRfY2VhX2V4dGVuc2lvbihlZGlkX2N0cmwtPmVkaWQpOwo+PiA+Pj4gPiAt ICAgICBpZiAoIWNlYSkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9ERUJVRygiQ0VBIGV4 dGVuc2lvbiBub3QgZm91bmRcbiIpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsKPj4g Pj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGVkaWRfY3RybC0+YWRiX3Np emUgPSAwOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIG1lbXNldChlZGlkX2N0cmwtPmF1ZGlv X2RhdGFfYmxvY2ssIDAsCj4+ID4+PiA+IC0gICAgICAgICAgICAgc2l6ZW9mKGVkaWRfY3RybC0+ YXVkaW9fZGF0YV9ibG9jaykpOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGRvIHsKPj4gPj4+ ID4gLSAgICAgICAgICAgICBsZW4gPSAwOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGFkYiA9IF9k cHVfZWRpZF9maW5kX2Jsb2NrKGNlYSwgb2Zmc2V0LCBBVURJT19EQVRBX0JMT0NLLAo+PiA+Pj4g PiAtICAgICAgICAgICAgICAgICAgICAgJmxlbik7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAg ICAgICAgICBpZiAoKGFkYiA9PSBOVUxMKSB8fCAobGVuID4gTUFYX0FVRElPX0RBVEFfQkxPQ0tf U0laRSB8fAo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgYWRiX21heCA+PSBNQVhfTlVN QkVSX0FEQikpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmICghZWRpZF9jdHJs LT5hZGJfc2l6ZSkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUFVf REVCVUcoIk5vL0ludmFsaWQgQXVkaW8gRGF0YQo+PiA+Pj4gPiBCbG9ja1xuIik7Cj4+ID4+PiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPj4gPj4+ID4gLSAgICAgICAg ICAgICAgICAgICAgIH0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAg Y29udGludWU7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0g ICAgICAgICAgICAgbWVtY3B5KGVkaWRfY3RybC0+YXVkaW9fZGF0YV9ibG9jayArIGVkaWRfY3Ry bC0+YWRiX3NpemUsCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBhZGIgKyAxLCBsZW4p Owo+PiA+Pj4gPiAtICAgICAgICAgICAgIG9mZnNldCA9IChhZGIgLSBjZWEpICsgMSArIGxlbjsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICAgICAgICAgIGVkaWRfY3RybC0+YWRiX3NpemUgKz0g bGVuOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGFkYl9tYXgrKzsKPj4gPj4+ID4gLSAgICAgfSB3 aGlsZSAoYWRiKTsKPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzIC0iLCBfX2Z1bmNf Xyk7Cj4+ID4+PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXN0YXRpYyB2b2lkIF9kcHVfZWRp ZF9leHRyYWN0X3NwZWFrZXJfYWxsb2NhdGlvbl9kYXRhKAo+PiA+Pj4gPiAtICAgICBzdHJ1Y3Qg ZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsKQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICB1OCBs ZW47Cj4+ID4+PiA+IC0gICAgIGNvbnN0IHU4ICpzYWRiID0gTlVMTDsKPj4gPj4+ID4gLSAgICAg dTggKmNlYSA9IE5VTEw7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYgKCFlZGlkX2N0cmwp IHsKPj4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfRVJST1IoImludmFsaWQgZWRpZF9jdHJsXG4i KTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzICsiLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC0gICAg IGNlYSA9IGRwdV9maW5kX2NlYV9leHRlbnNpb24oZWRpZF9jdHJsLT5lZGlkKTsKPj4gPj4+ID4g LSAgICAgaWYgKCFjZWEpIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICBEUFVfREVCVUcoIkNFQSBl eHRlbnNpb24gbm90IGZvdW5kXG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4+ ID4+PiA+IC0gICAgIH0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBzYWRiID0gX2RwdV9lZGlk X2ZpbmRfYmxvY2soY2VhLCBEQkNfU1RBUlRfT0ZGU0VULAo+PiA+Pj4gPiAtICAgICAgICAgICAg IFNQRUFLRVJfQUxMT0NBVElPTl9EQVRBX0JMT0NLLCAmbGVuKTsKPj4gPj4+ID4gLSAgICAgaWYg KChzYWRiID09IE5VTEwpIHx8IChsZW4gIT0gTUFYX1NQS1JfQUxMT0NfREFUQV9CTE9DS19TSVpF KSkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9ERUJVRygiTm8vSW52YWxpZCBTcGVha2Vy IEFsbG9jYXRpb24gRGF0YSBCbG9ja1xuIik7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJu Owo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgbWVtY3B5KGVkaWRf Y3RybC0+c3Brcl9hbGxvY19kYXRhX2Jsb2NrLCBzYWRiICsgMSwgbGVuKTsKPj4gPj4+ID4gLSAg ICAgZWRpZF9jdHJsLT5zYWRiX3NpemUgPSBsZW47Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAg RFBVX0VESURfREVCVUcoInNwZWFrZXIgYWxsb2MgZGF0YSBTUCBieXRlID0gJTA4eAo+PiA+Pj4g PiAlcyVzJXMlcyVzJXMlc1xuIiwKPj4gPj4+ID4gLSAgICAgICAgICAgICBzYWRiWzFdLAo+PiA+ Pj4gPiAtICAgICAgICAgICAgIChzYWRiWzFdICYgQklUKDApKSA/ICJGTC9GUiwiIDogIiIsCj4+ ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBCSVQoMSkpID8gIkxGRSwiIDogIiIsCj4+ ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBCSVQoMikpID8gIkZDLCIgOiAiIiwKPj4g Pj4+ID4gLSAgICAgICAgICAgICAoc2FkYlsxXSAmIEJJVCgzKSkgPyAiUkwvUlIsIiA6ICIiLAo+ PiA+Pj4gPiAtICAgICAgICAgICAgIChzYWRiWzFdICYgQklUKDQpKSA/ICJSQywiIDogIiIsCj4+ ID4+PiA+IC0gICAgICAgICAgICAgKHNhZGJbMV0gJiBCSVQoNSkpID8gIkZMQy9GUkMsIiA6ICIi LAo+PiA+Pj4gPiAtICAgICAgICAgICAgIChzYWRiWzFdICYgQklUKDYpKSA/ICJSTEMvUlJDLCIg OiAiIik7Cj4+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyAtIiwgX19mdW5jX18pOwo+ PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1zdHJ1Y3QgZHB1X2VkaWRfY3RybCAqZHB1 X2VkaWRfaW5pdCh2b2lkKQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2Vk aWRfY3RybCAqZWRpZF9jdHJsID0gTlVMTDsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBEUFVf RURJRF9ERUJVRygiJXMgK1xuIiwgX19mdW5jX18pOwo+PiA+Pj4gPiAtICAgICBlZGlkX2N0cmwg PSBremFsbG9jKHNpemVvZigqZWRpZF9jdHJsKSwgR0ZQX0tFUk5FTCk7Cj4+ID4+PiA+IC0gICAg IGlmICghZWRpZF9jdHJsKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VSUk9SKCJlZGlk X2N0cmwgYWxsb2MgZmFpbGVkXG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gTlVM TDsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtICAgICBtZW1zZXQoKGVkaWRfY3RybCksIDAs IHNpemVvZigqZWRpZF9jdHJsKSk7Cj4+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyAt XG4iLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC0gICAgIHJldHVybiBlZGlkX2N0cmw7Cj4+ID4+PiA+ IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLXZvaWQgZHB1X2ZyZWVfZWRpZCh2b2lkICoqaW5wdXQp Cj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIHN0cnVjdCBkcHVfZWRpZF9jdHJsICplZGlkX2N0 cmwgPSAoc3RydWN0IGRwdV9lZGlkX2N0cmwKPj4gPj4+ID4gKikoKmlucHV0KTsKPj4gPj4+ID4g LQo+PiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgKyIsIF9fZnVuY19fKTsKPj4gPj4+ ID4gLSAgICAga2ZyZWUoZWRpZF9jdHJsLT5lZGlkKTsKPj4gPj4+ID4gLSAgICAgZWRpZF9jdHJs LT5lZGlkID0gTlVMTDsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtdm9pZCBkcHVf ZWRpZF9kZWluaXQodm9pZCAqKmlucHV0KQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICBzdHJ1 Y3QgZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4+ID4+ PiA+ICopKCppbnB1dCk7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUco IiVzICsiLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC0gICAgIGRwdV9mcmVlX2VkaWQoKHZvaWQgKikm ZWRpZF9jdHJsKTsKPj4gPj4+ID4gLSAgICAga2ZyZWUoZWRpZF9jdHJsKTsKPj4gPj4+ID4gLSAg ICAgRFBVX0VESURfREVCVUcoIiVzIC0iLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC19Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLWludCBfZHB1X2VkaWRfdXBkYXRlX21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+ID4+PiA+IC0gICAgIHZvaWQgKmlucHV0KQo+PiA+Pj4gPiAtewo+ PiA+Pj4gPiAtICAgICBpbnQgcmMgPSAwOwo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRf Y3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4+ID4+PiA+ICopKGlucHV0 KTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBEUFVfRURJRF9ERUJVRygiJXMgKyIsIF9fZnVu Y19fKTsKPj4gPj4+ID4gLSAgICAgaWYgKGVkaWRfY3RybC0+ZWRpZCkgewo+PiA+Pj4gPiAtICAg ICAgICAgICAgIGRybV9tb2RlX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShjb25uZWN0 b3IsCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBlZGlkX2N0cmwtPmVkaWQpOwo+PiA+ Pj4gPiAtCj4+ID4+PiA+IC0gICAgICAgICAgICAgcmMgPSBkcm1fYWRkX2VkaWRfbW9kZXMoY29u bmVjdG9yLCBlZGlkX2N0cmwtPmVkaWQpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGRwdV9lZGlk X3NldF9tb2RlX2Zvcm1hdChjb25uZWN0b3IsIGVkaWRfY3RybCk7Cj4+ID4+PiA+IC0gICAgICAg ICAgICAgX2RwdV9lZGlkX3VwZGF0ZV9kY19tb2Rlcyhjb25uZWN0b3IsIGVkaWRfY3RybCk7Cj4+ ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VESURfREVCVUcoIiVzIC0iLCBfX2Z1bmNfXyk7Cj4+ ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIHJjOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLSAgICAgZHJtX21vZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5 KGNvbm5lY3RvciwgTlVMTCk7Cj4+ID4+PiA+IC0gICAgIERQVV9FRElEX0RFQlVHKCIlcyBudWxs IGVkaWQgLSIsIF9fZnVuY19fKTsKPj4gPj4+ID4gLSAgICAgcmV0dXJuIHJjOwo+PiA+Pj4gPiAt fQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC11MzIgZHB1X2dldF9zaW5rX2JwYyh2b2lkICppbnB1dCkK Pj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgc3RydWN0IGRwdV9lZGlkX2N0cmwgKmVkaWRfY3Ry bCA9IChzdHJ1Y3QgZHB1X2VkaWRfY3RybAo+PiA+Pj4gPiAqKShpbnB1dCk7Cj4+ID4+PiA+IC0g ICAgIHN0cnVjdCBlZGlkICplZGlkID0gZWRpZF9jdHJsLT5lZGlkOwo+PiA+Pj4gPiAtCj4+ID4+ PiA+IC0gICAgIGlmICghZWRpZCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigi aW52YWxpZCBlZGlkIGlucHV0XG4iKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gMDsK Pj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGlmICgoZWRpZC0+cmV2 aXNpb24gPCAzKSB8fCAhKGVkaWQtPmlucHV0ICYKPj4gPj4+ID4gRFJNX0VESURfSU5QVVRfRElH SVRBTCkpCj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ID4+PiA+IC0KPj4gPj4+ ID4gLSAgICAgaWYgKGVkaWQtPnJldmlzaW9uIDwgNCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAg IGlmIChlZGlkLT5pbnB1dCAmIERSTV9FRElEX0RJR0lUQUxfVFlQRV9EVkkpCj4+ID4+PiA+IC0g ICAgICAgICAgICAgICAgICAgICByZXR1cm4gODsKPj4gPj4+ID4gLSAgICAgICAgICAgICBlbHNl Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4gPj4+ID4gLSAgICAg fQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIHN3aXRjaCAoZWRpZC0+aW5wdXQgJiBEUk1fRURJ RF9ESUdJVEFMX0RFUFRIX01BU0spIHsKPj4gPj4+ID4gLSAgICAgY2FzZSBEUk1fRURJRF9ESUdJ VEFMX0RFUFRIXzY6Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDY7Cj4+ID4+PiA+IC0g ICAgIGNhc2UgRFJNX0VESURfRElHSVRBTF9ERVBUSF84Ogo+PiA+Pj4gPiAtICAgICAgICAgICAg IHJldHVybiA4Owo+PiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJR0lUQUxfREVQVEhfMTA6 Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDEwOwo+PiA+Pj4gPiAtICAgICBjYXNlIERS TV9FRElEX0RJR0lUQUxfREVQVEhfMTI6Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDEy Owo+PiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJR0lUQUxfREVQVEhfMTQ6Cj4+ID4+PiA+ IC0gICAgICAgICAgICAgcmV0dXJuIDE0Owo+PiA+Pj4gPiAtICAgICBjYXNlIERSTV9FRElEX0RJ R0lUQUxfREVQVEhfMTY6Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDE2Owo+PiA+Pj4g PiAtICAgICBjYXNlIERSTV9FRElEX0RJR0lUQUxfREVQVEhfVU5ERUY6Cj4+ID4+PiA+IC0gICAg IGRlZmF1bHQ6Cj4+ID4+PiA+IC0gICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ID4+PiA+IC0gICAg IH0KPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+PiA+Pj4gPiAtdTggZHB1X2dldF9lZGlkX2NoZWNr c3VtKHZvaWQgKmlucHV0KQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2Vk aWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4+ID4+PiA+ICopKGlu cHV0KTsKPj4gPj4+ID4gLSAgICAgc3RydWN0IGVkaWQgKmVkaWQgPSBOVUxMLCAqbGFzdF9ibG9j ayA9IE5VTEw7Cj4+ID4+PiA+IC0gICAgIHU4ICpyYXdfZWRpZCA9IE5VTEw7Cj4+ID4+PiA+IC0K Pj4gPj4+ID4gLSAgICAgaWYgKCFlZGlkX2N0cmwgfHwgIWVkaWRfY3RybC0+ZWRpZCkgewo+PiA+ Pj4gPiAtICAgICAgICAgICAgIERQVV9FUlJPUigiaW52YWxpZCBlZGlkIGlucHV0XG4iKTsKPj4g Pj4+ID4gLSAgICAgICAgICAgICByZXR1cm4gMDsKPj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAt Cj4+ID4+PiA+IC0gICAgIGVkaWQgPSBlZGlkX2N0cmwtPmVkaWQ7Cj4+ID4+PiA+IC0KPj4gPj4+ ID4gLSAgICAgcmF3X2VkaWQgPSAodTggKillZGlkOwo+PiA+Pj4gPiAtICAgICByYXdfZWRpZCAr PSAoZWRpZC0+ZXh0ZW5zaW9ucyAqIEVESURfTEVOR1RIKTsKPj4gPj4+ID4gLSAgICAgbGFzdF9i bG9jayA9IChzdHJ1Y3QgZWRpZCAqKXJhd19lZGlkOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAg IGlmIChsYXN0X2Jsb2NrKQo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBsYXN0X2Jsb2Nr LT5jaGVja3N1bTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBEUFVfRVJST1IoIkludmFsaWQg YmxvY2ssIG5vIGNoZWNrc3VtXG4iKTsKPj4gPj4+ID4gLSAgICAgcmV0dXJuIDA7Cj4+ID4+PiA+ IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLWJvb2wgZHB1X2RldGVjdF9oZG1pX21vbml0b3Iodm9p ZCAqaW5wdXQpCj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIHN0cnVjdCBkcHVfZWRpZF9jdHJs ICplZGlkX2N0cmwgPSAoc3RydWN0IGRwdV9lZGlkX2N0cmwKPj4gPj4+ID4gKikoaW5wdXQpOwo+ PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIHJldHVybiBkcm1fZGV0ZWN0X2hkbWlfbW9uaXRvcihl ZGlkX2N0cmwtPmVkaWQpOwo+PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC12b2lkIGRw dV9nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiA+Pj4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwg dm9pZAo+PiA+Pj4gPiAqKmlucHV0KQo+PiA+Pj4gPiAtewo+PiA+Pj4gPiAtICAgICBzdHJ1Y3Qg ZHB1X2VkaWRfY3RybCAqZWRpZF9jdHJsID0gKHN0cnVjdCBkcHVfZWRpZF9jdHJsCj4+ID4+PiA+ ICopKCppbnB1dCk7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgZWRpZF9jdHJsLT5lZGlkID0g ZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgYWRhcHRlcik7Cj4+ID4+PiA+IC0gICAgIERQVV9FRElE X0RFQlVHKCIlcyArXG4iLCBfX2Z1bmNfXyk7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYg KCFlZGlkX2N0cmwtPmVkaWQpCj4+ID4+PiA+IC0gICAgICAgICAgICAgRFBVX0VSUk9SKCJFRElE IHJlYWQgZmFpbGVkXG4iKTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICBpZiAoZWRpZF9jdHJs LT5lZGlkKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgZHB1X2VkaWRfZXh0cmFjdF92ZW5kb3Jf aWQoZWRpZF9jdHJsKTsKPj4gPj4+ID4gLSAgICAgICAgICAgICBfZHB1X2VkaWRfZXh0cmFjdF9h dWRpb19kYXRhX2Jsb2NrcyhlZGlkX2N0cmwpOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIF9kcHVf ZWRpZF9leHRyYWN0X3NwZWFrZXJfYWxsb2NhdGlvbl9kYXRhKGVkaWRfY3RybCk7Cj4+ID4+PiA+ IC0gICAgIH0KPj4gPj4+ID4gLSAgICAgRFBVX0VESURfREVCVUcoIiVzIC1cbiIsIF9fZnVuY19f KTsKPj4gPj4+ID4gLX07Cj4+ID4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9lZGlkX3BhcnNlci5oCj4+ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfZWRp ZF9wYXJzZXIuaAo+PiA+Pj4gPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPj4gPj4+ID4gaW5k ZXggYzA1MWIxOGJiODEyLi4wMDAwMDAwMDAwMDAKPj4gPj4+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kcHVfZWRpZF9wYXJzZXIuaAo+PiA+Pj4gPiArKysgL2Rldi9udWxsCj4+ID4+PiA+ IEBAIC0xLDE2NiArMCwwIEBACj4+ID4+PiA+IC0vKgo+PiA+Pj4gPiAtICogQ29weXJpZ2h0IChj KSAyMDE3LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ PiA+Pj4gPiAtICoKPj4gPj4+ID4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4gPj4+ID4gbW9kaWZ5Cj4+ID4+PiA+IC0g KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMiBhbmQKPj4gPj4+ID4gLSAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+PiA+Pj4gPiAtICoKPj4gPj4+ID4gLSAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+PiA+Pj4gPiAtICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4gPj4+ID4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4gPj4+ID4gLSAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+ID4+PiA+IC0gKgo+ PiA+Pj4gPiAtICovCj4+ID4+PiA+IC0KPj4gPj4+ID4gLSNpZm5kZWYgX0RQVV9FRElEX1BBUlNF Ul9IXwo+PiA+Pj4gPiAtI2RlZmluZSBfRFBVX0VESURfUEFSU0VSX0hfCj4+ID4+PiA+IC0KPj4g Pj4+ID4gLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+PiA+Pj4gPiAtI2luY2x1ZGUgPGxpbnV4 L2JpdG9wcy5oPgo+PiA+Pj4gPiAtI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KPj4gPj4+ID4g LSNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPj4gPj4+ID4gLSNpbmNsdWRlIDxsaW51eC9p MmMuaD4KPj4gPj4+ID4gLSNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiA+Pj4gPiAtI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPgo+PiA+Pj4gPiAtI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPgo+PiA+ Pj4gPiAtCj4+ID4+PiA+IC0KPj4gPj4+ID4gLSNkZWZpbmUgTUFYX05VTUJFUl9BREIgNQo+PiA+ Pj4gPiAtI2RlZmluZSBNQVhfQVVESU9fREFUQV9CTE9DS19TSVpFIDMwCj4+ID4+PiA+IC0jZGVm aW5lIE1BWF9TUEtSX0FMTE9DX0RBVEFfQkxPQ0tfU0laRSAzCj4+ID4+PiA+IC0jZGVmaW5lIEVE SURfVkVORE9SX0lEX1NJWkUgICAgIDQKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtI2RlZmluZSBEUFVf Q0VBX0VYVCAgICAweDAyCj4+ID4+PiA+IC0jZGVmaW5lIERQVV9FWFRFTkRFRF9UQUcgMHgwNwo+ PiA+Pj4gPiAtCj4+ID4+PiA+IC0jZGVmaW5lIERQVV9EUk1fTU9ERV9GTEFHX0ZNVF9NQVNLICgw eDMgPDwgMjApCj4+ID4+PiA+IC0KPj4gPj4+ID4gLWVudW0gZXh0ZW5kZWRfZGF0YV9ibG9ja190 eXBlcyB7Cj4+ID4+PiA+IC0gICAgIFZJREVPX0NBUEFCSUxJVFlfREFUQV9CTE9DSyA9IDB4MCwK Pj4gPj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklDX1ZJREVPX0RBVEFfQkxPQ0sgPSAweDAxLAo+ PiA+Pj4gPiAtICAgICBIRE1JX1ZJREVPX0RBVEFfQkxPQ0sgPSAweDA0LAo+PiA+Pj4gPiAtICAg ICBIRFJfU1RBVElDX01FVEFEQVRBX0RBVEFfQkxPQ0sgPSAweDA2LAo+PiA+Pj4gPiAtICAgICBZ NDIwX1ZJREVPX0RBVEFfQkxPQ0sgPSAweDBFLAo+PiA+Pj4gPiAtICAgICBWSURFT19GT1JNQVRf UFJFRkVSRU5DRV9EQVRBX0JMT0NLID0gMHgwRCwKPj4gPj4+ID4gLSAgICAgWTQyMF9DQVBBQklM SVRZX01BUF9EQVRBX0JMT0NLID0gMHgwRiwKPj4gPj4+ID4gLSAgICAgVkVORE9SX1NQRUNJRklD X0FVRElPX0RBVEFfQkxPQ0sgPSAweDExLAo+PiA+Pj4gPiAtICAgICBJTkZPRlJBTUVfREFUQV9C TE9DSyA9IDB4MjAsCj4+ID4+PiA+IC19Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0jaWZkZWYgRFBV X0VESURfREVCVUdfRU5BQkxFCj4+ID4+PiA+IC0jZGVmaW5lIERQVV9FRElEX0RFQlVHKGZtdCwg YXJncy4uLikgICBEUFVfRVJST1IoZm10LCAjI2FyZ3MpCj4+ID4+PiA+IC0jZWxzZQo+PiA+Pj4g PiAtI2RlZmluZSBEUFVfRURJRF9ERUJVRyhmbXQsIGFyZ3MuLi4pICAgRFBVX0RFQlVHKGZtdCwg IyNhcmdzKQo+PiA+Pj4gPiAtI2VuZGlmCj4+ID4+PiA+IC0KPj4gPj4+ID4gLS8qCj4+ID4+PiA+ IC0gKiBzdHJ1Y3QgaGRtaV9lZGlkX2hkcl9kYXRhIC0gSERSIFN0YXRpYyBNZXRhZGF0YQo+PiA+ Pj4gPiAtICogQGVvdGY6IEVsZWN0cm8tT3B0aWNhbCBUcmFuc2ZlciBGdW5jdGlvbgo+PiA+Pj4g PiAtICogQG1ldGFkYXRhX3R5cGVfb25lOiBTdGF0aWMgTWV0YWRhdGEgVHlwZSAxIHN1cHBvcnQK Pj4gPj4+ID4gLSAqIEBtYXhfbHVtaW5hbmNlOiBEZXNpcmVkIENvbnRlbnQgTWF4aW11bSBMdW1p bmFuY2UKPj4gPj4+ID4gLSAqIEBhdmdfbHVtaW5hbmNlOiBEZXNpcmVkIENvbnRlbnQgRnJhbWUt YXZlcmFnZSBMdW1pbmFuY2UKPj4gPj4+ID4gLSAqIEBtaW5fbHVtaW5hbmNlOiBEZXNpcmVkIENv bnRlbnQgTWluaW11bSBMdW1pbmFuY2UKPj4gPj4+ID4gLSAqLwo+PiA+Pj4gPiAtc3RydWN0IGRw dV9lZGlkX2hkcl9kYXRhIHsKPj4gPj4+ID4gLSAgICAgdTMyIGVvdGY7Cj4+ID4+PiA+IC0gICAg IGJvb2wgbWV0YWRhdGFfdHlwZV9vbmU7Cj4+ID4+PiA+IC0gICAgIHUzMiBtYXhfbHVtaW5hbmNl Owo+PiA+Pj4gPiAtICAgICB1MzIgYXZnX2x1bWluYW5jZTsKPj4gPj4+ID4gLSAgICAgdTMyIG1p bl9sdW1pbmFuY2U7Cj4+ID4+PiA+IC19Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1zdHJ1Y3QgZHB1 X2VkaWRfc2lua19jYXBzIHsKPj4gPj4+ID4gLSAgICAgdTMyIG1heF9wY2xrX2luX2h6Owo+PiA+ Pj4gPiAtICAgICBib29sIHNjZGNfcHJlc2VudDsKPj4gPj4+ID4gLSAgICAgYm9vbCBzY3JhbWJs ZV9zdXBwb3J0OyAvKiBzY3JhbWJsZSBzdXBwb3J0IGZvciBsZXNzIHRoYW4gMzQwTWNzYwo+PiA+ Pj4gPiAqLwo+PiA+Pj4gPiAtICAgICBib29sIHJlYWRfcmVxX3N1cHBvcnQ7Cj4+ID4+PiA+IC0g ICAgIGJvb2wgb3NkX2Rpc3Bhcml0eTsKPj4gPj4+ID4gLSAgICAgYm9vbCBkdWFsX3ZpZXdfc3Vw cG9ydDsKPj4gPj4+ID4gLSAgICAgYm9vbCBpbmRfdmlld19zdXBwb3J0Owo+PiA+Pj4gPiAtfTsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtc3RydWN0IGRwdV9lZGlkX2N0cmwgewo+PiA+Pj4gPiAtICAg ICBzdHJ1Y3QgZWRpZCAqZWRpZDsKPj4gPj4+ID4gLSAgICAgdTggcHRfc2Nhbl9pbmZvOwo+PiA+ Pj4gPiAtICAgICB1OCBpdF9zY2FuX2luZm87Cj4+ID4+PiA+IC0gICAgIHU4IGNlX3NjYW5faW5m bzsKPj4gPj4+ID4gLSAgICAgdTggYXVkaW9fZGF0YV9ibG9ja1tNQVhfTlVNQkVSX0FEQiAqIE1B WF9BVURJT19EQVRBX0JMT0NLX1NJWkVdOwo+PiA+Pj4gPiAtICAgICBpbnQgYWRiX3NpemU7Cj4+ ID4+PiA+IC0gICAgIHU4IHNwa3JfYWxsb2NfZGF0YV9ibG9ja1tNQVhfU1BLUl9BTExPQ19EQVRB X0JMT0NLX1NJWkVdOwo+PiA+Pj4gPiAtICAgICBpbnQgc2FkYl9zaXplOwo+PiA+Pj4gPiAtICAg ICBib29sIGhkcl9zdXBwb3J0ZWQ7Cj4+ID4+PiA+IC0gICAgIGNoYXIgdmVuZG9yX2lkW0VESURf VkVORE9SX0lEX1NJWkVdOwo+PiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHB1X2VkaWRfc2lua19jYXBz IHNpbmtfY2FwczsKPj4gPj4+ID4gLSAgICAgc3RydWN0IGRwdV9lZGlkX2hkcl9kYXRhIGhkcl9k YXRhOwo+PiA+Pj4gPiAtfTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtLyoqCj4+ID4+PiA+IC0gKiBk cHVfZWRpZF9pbml0KCkgLSBpbml0IGVkaWQgc3RydWN0dXJlLgo+PiA+Pj4gPiAtICogQGVkaWRf Y3RybDogICAgIEhhbmRsZSB0byB0aGUgZWRpZF9jdHJsIHN0cnVjdHVyZS4KPj4gPj4+ID4gLSAq IFJldHVybjogaGFuZGxlIHRvIGRwdV9lZGlkX2N0cmwgZm9yIHRoZSBjbGllbnQuCj4+ID4+PiA+ IC0gKi8KPj4gPj4+ID4gLXN0cnVjdCBkcHVfZWRpZF9jdHJsICpkcHVfZWRpZF9pbml0KHZvaWQp Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0vKioKPj4gPj4+ID4gLSAqIGRwdV9lZGlkX2RlaW5pdCgp IC0gZGVpbml0IGVkaWQgc3RydWN0dXJlLgo+PiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhh bmRsZSB0byB0aGUgZWRpZF9jdHJsIHN0cnVjdHVyZS4KPj4gPj4+ID4gLSAqCj4+ID4+PiA+IC0g KiBSZXR1cm46IHZvaWQuCj4+ID4+PiA+IC0gKi8KPj4gPj4+ID4gLXZvaWQgZHB1X2VkaWRfZGVp bml0KHZvaWQgKiplZGlkX2N0cmwpOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0vKioKPj4gPj4+ID4g LSAqIGRwdV9nZXRfZWRpZCgpIC0gZ2V0IGVkaWQgaW5mby4KPj4gPj4+ID4gLSAqIEBjb25uZWN0 b3I6ICAgSGFuZGxlIHRvIHRoZSBkcm1fY29ubmVjdG9yLgo+PiA+Pj4gPiAtICogQGFkYXB0ZXI6 ICAgICBoYW5kbGUgdG8gaTJjIGFkYXB0ZXIgZm9yIEREQyByZWFkCj4+ID4+PiA+IC0gKiBAZWRp ZF9jdHJsOiAgIEhhbmRsZSB0byB0aGUgZWRpZF9jdHJsIHN0cnVjdHVyZS4KPj4gPj4+ID4gLSAq Cj4+ID4+PiA+IC0gKiBSZXR1cm46IHZvaWQuCj4+ID4+PiA+IC0gKi8KPj4gPj4+ID4gLXZvaWQg ZHB1X2dldF9lZGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4+PiA+IC1z dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIsCj4+ID4+PiA+IC12b2lkICoqZWRpZF9jdHJsKTsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtLyoqCj4+ID4+PiA+IC0gKiBkcHVfZnJlZV9lZGlkKCkgLSBm cmVlIGVkaWQgc3RydWN0dXJlLgo+PiA+Pj4gPiAtICogQGVkaWRfY3RybDogICAgIEhhbmRsZSB0 byB0aGUgZWRpZF9jdHJsIHN0cnVjdHVyZS4KPj4gPj4+ID4gLSAqCj4+ID4+PiA+IC0gKiBSZXR1 cm46IHZvaWQuCj4+ID4+PiA+IC0gKi8KPj4gPj4+ID4gLXZvaWQgZHB1X2ZyZWVfZWRpZCh2b2lk ICoqZWRpZF9jdHJsKTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtLyoqCj4+ID4+PiA+IC0gKiBkcHVf ZGV0ZWN0X2hkbWlfbW9uaXRvcigpIC0gZGV0ZWN0IEhETUkgbW9kZS4KPj4gPj4+ID4gLSAqIEBl ZGlkX2N0cmw6ICAgICBIYW5kbGUgdG8gdGhlIGVkaWRfY3RybCBzdHJ1Y3R1cmUuCj4+ID4+PiA+ IC0gKgo+PiA+Pj4gPiAtICogUmV0dXJuOiBlcnJvciBjb2RlLgo+PiA+Pj4gPiAtICovCj4+ID4+ PiA+IC1ib29sIGRwdV9kZXRlY3RfaGRtaV9tb25pdG9yKHZvaWQgKmVkaWRfY3RybCk7Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLS8qKgo+PiA+Pj4gPiAtICogZHB1X2dldF9zaW5rX2JwYygpIC0gcmV0 dXJuIHRoZSBicGMgb2Ygc2luayBkZXZpY2UuCj4+ID4+PiA+IC0gKiBAZWRpZF9jdHJsOiAgICAg SGFuZGxlIHRvIHRoZSBlZGlkX2N0cmwgc3RydWN0dXJlLgo+PiA+Pj4gPiAtICoKPj4gPj4+ID4g LSAqIFJldHVybjogYnBjIHN1cHBvcnRlZCBieSB0aGUgc2luay4KPj4gPj4+ID4gLSAqLwo+PiA+ Pj4gPiAtdTMyIGRwdV9nZXRfc2lua19icGModm9pZCAqZWRpZF9jdHJsKTsKPj4gPj4+ID4gLQo+ PiA+Pj4gPiAtLyoqCj4+ID4+PiA+IC0gKiBkcHVfZ2V0X2VkaWRfY2hlY2tzdW0oKSAtIHJldHVy biB0aGUgY2hlY2tzdW0gb2YgbGFzdCBibG9jayBvZgo+PiA+Pj4gPiBFRElELgo+PiA+Pj4gPiAt ICogQGlucHV0OiAgICAgSGFuZGxlIHRvIHRoZSBlZGlkX2N0cmwgc3RydWN0dXJlLgo+PiA+Pj4g PiAtICoKPj4gPj4+ID4gLSAqIFJldHVybjogY2hlY2tzdW0gb2YgdGhlIGxhc3QgRURJRCBibG9j ay4KPj4gPj4+ID4gLSAqLwo+PiA+Pj4gPiAtdTggZHB1X2dldF9lZGlkX2NoZWNrc3VtKHZvaWQg KmlucHV0KTsKPj4gPj4+ID4gLQo+PiA+Pj4gPiAtLyoqCj4+ID4+PiA+IC0gKiBfZHB1X2VkaWRf dXBkYXRlX21vZGVzKCkgLSBwb3B1bGF0ZSBFRElEIG1vZGVzLgo+PiA+Pj4gPiAtICogQGVkaWRf Y3RybDogICAgIEhhbmRsZSB0byB0aGUgZWRpZF9jdHJsIHN0cnVjdHVyZS4KPj4gPj4+ID4gLSAq Cj4+ID4+PiA+IC0gKiBSZXR1cm46IGVycm9yIGNvZGUuCj4+ID4+PiA+IC0gKi8KPj4gPj4+ID4g LWludCBfZHB1X2VkaWRfdXBkYXRlX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKmVkaWRfY3RybCk7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSNlbmRpZiAv KiBfRFBVX0VESURfUEFSU0VSX0hfICovCj4+ID4+PiA+IC0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJl bm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==