From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id C7FF31B1B2 for ; Mon, 9 Oct 2017 15:42:15 +0200 (CEST) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Oct 2017 06:42:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,500,1500966000"; d="scan'208";a="161023858" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by fmsmga006.fm.intel.com with ESMTP; 09 Oct 2017 06:42:12 -0700 Received: from irsmsx103.ger.corp.intel.com ([169.254.3.49]) by IRSMSX104.ger.corp.intel.com ([163.33.3.159]) with mapi id 14.03.0319.002; Mon, 9 Oct 2017 14:42:11 +0100 From: "Ananyev, Konstantin" To: Akhil Goyal , "dev@dpdk.org" CC: "Doherty, Declan" , "De Lara Guarch, Pablo" , "hemant.agrawal@nxp.com" , "Nicolau, Radu" , "borisp@mellanox.com" , "aviadye@mellanox.com" , "thomas@monjalon.net" , "sandeep.malik@nxp.com" , "jerin.jacob@caviumnetworks.com" , "Mcnamara, John" , "olivier.matz@6wind.com" Thread-Topic: [PATCH v2 01/12] lib/rte_security: add security library Thread-Index: AQHTPs6D9BCMaNuCEk+S+R5XqMEq8qLbgOsA Date: Mon, 9 Oct 2017 13:42:10 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772585FAA651D@IRSMSX103.ger.corp.intel.com> References: <20170914082651.26232-1-akhil.goyal@nxp.com> <20171003131413.23846-1-akhil.goyal@nxp.com> <20171003131413.23846-2-akhil.goyal@nxp.com> <2601191342CEEE43887BDE71AB9772585FAA4E58@IRSMSX103.ger.corp.intel.com> <15007bf0-d263-05a0-2009-31210f686085@nxp.com> In-Reply-To: <15007bf0-d263-05a0-2009-31210f686085@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZDc5ZmZjMTMtMGVjMi00MTJkLWI5YjMtZjkyODI3MWJjZTFkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6ImdEODRsdnZ2VWhoc1p6Ym9hdjNLSWlZOTM1TVNSOU1JOFVaandncjFsQjQ9In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 01/12] lib/rte_security: add security library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Oct 2017 13:42:16 -0000 SGkgQWtoaWwsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWtoaWwg R295YWwgW21haWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiBTZW50OiBGcmlkYXksIE9jdG9i ZXIgNiwgMjAxNyA3OjExIFBNDQo+IFRvOiBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGlu LmFuYW55ZXZAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBEb2hlcnR5LCBEZWNsYW4g PGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFibG8u ZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgaGVtYW50LmFncmF3YWxAbnhwLmNvbTsNCj4gTmlj b2xhdSwgUmFkdSA8cmFkdS5uaWNvbGF1QGludGVsLmNvbT47IGJvcmlzcEBtZWxsYW5veC5jb207 IGF2aWFkeWVAbWVsbGFub3guY29tOyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiBzYW5kZWVwLm1h bGlrQG54cC5jb207IGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbTsgTWNuYW1hcmEsIEpv aG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBT dWJqZWN0OiBSZTogW1BBVENIIHYyIDAxLzEyXSBsaWIvcnRlX3NlY3VyaXR5OiBhZGQgc2VjdXJp dHkgbGlicmFyeQ0KPiANCj4gSGkgS29uc3RhbnRpbiwNCj4gDQo+IFRoYW5rcyBmb3IgeW91ciBj b21tZW50cy4NCj4gT24gMTAvNS8yMDE3IDEwOjAwIFBNLCBBbmFueWV2LCBLb25zdGFudGluIHdy b3RlOg0KPiA+IEhpIGxhZHMsDQo+ID4NCj4gPj4NCj4gPj4gcnRlX3NlY3VyaXR5IGxpYnJhcnkg cHJvdmlkZXMgQVBJcyBmb3Igc2VjdXJpdHkgc2Vzc2lvbg0KPiA+PiBjcmVhdGUvZnJlZSBmb3Ig cHJvdG9jb2wgb2ZmbG9hZCBvciBvZmZsb2FkZWQgY3J5cHRvDQo+ID4+IG9wZXJhdGlvbiB0byBl dGhlcm5ldCBkZXZpY2UuDQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEFraGlsIEdveWFsIDxh a2hpbC5nb3lhbEBueHAuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBCb3JpcyBQaXNtZW5ueSA8 Ym9yaXNwQG1lbGxhbm94LmNvbT4NCj4gPj4gU2lnbmVkLW9mZi1ieTogUmFkdSBOaWNvbGF1IDxy YWR1Lm5pY29sYXVAaW50ZWwuY29tPg0KPiA+PiBTaWduZWQtb2ZmLWJ5OiBEZWNsYW4gRG9oZXJ0 eSA8ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tPg0KPiA+PiAtLS0NCj4gPj4gICBsaWIvbGlicnRl X3NlY3VyaXR5L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICA1MyArKysNCj4gPj4gICBsaWIv bGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eS5jICAgICAgICAgICB8IDI3NSArKysrKysrKysr KysrKysNCj4gPj4gICBsaWIvbGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eS5oICAgICAgICAg ICB8IDQ5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4gICBsaWIvbGlicnRlX3Nl Y3VyaXR5L3J0ZV9zZWN1cml0eV9kcml2ZXIuaCAgICB8IDE4MiArKysrKysrKysrDQo+ID4+ICAg bGliL2xpYnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHlfdmVyc2lvbi5tYXAgfCAgMTMgKw0KPiA+ PiAgIDUgZmlsZXMgY2hhbmdlZCwgMTAxOCBpbnNlcnRpb25zKCspDQo+ID4+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYi9saWJydGVfc2VjdXJpdHkvTWFrZWZpbGUNCj4gPj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL2xpYnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHkuYw0KPiA+PiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eS5oDQo+ID4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfc2VjdXJpdHkvcnRlX3NlY3VyaXR5X2RyaXZl ci5oDQo+ID4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfc2VjdXJpdHkvcnRlX3Nl Y3VyaXR5X3ZlcnNpb24ubWFwDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3Nl Y3VyaXR5L01ha2VmaWxlIGIvbGliL2xpYnJ0ZV9zZWN1cml0eS9NYWtlZmlsZQ0KPiA+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwLi5hZjg3YmIyDQo+ID4+IC0tLSAv ZGV2L251bGwNCj4gPj4gKysrIGIvbGliL2xpYnJ0ZV9zZWN1cml0eS9NYWtlZmlsZQ0KPiA+PiBA QCAtMCwwICsxLDUzIEBADQo+ID4+ICsjICAgQlNEIExJQ0VOU0UNCj4gPj4gKyMNCj4gPj4gKyMg ICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gPj4gKyMNCj4gPj4gKyMgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gPj4gKyMgICBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4g Pj4gKyMgICBhcmUgbWV0Og0KPiA+PiArIw0KPiA+PiArIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiA+PiArIyAg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuDQo+ID4+ICsjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ID4+ICsjICAgICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0K PiA+PiArIyAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlDQo+ID4+ICsjICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gPj4gKyMgICAg ICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9m IGl0cw0KPiA+PiArIyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gPj4gKyMgICAgICAgZnJvbSB0aGlzIHNvZnR3 YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiA+PiArIw0K PiA+PiArIyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE RVJTIEFORCBDT05UUklCVVRPUlMNCj4gPj4gKyMgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVA0KPiA+PiArIyAgIExJTUlU RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUg0KPiA+PiArIyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQo+ID4+ICsjICAgT1dORVIgT1IgQ09OVFJJ QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsDQo+ ID4+ICsjICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUIE5PVA0KPiA+PiArIyAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KPiA+PiArIyAgIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWQ0KPiA+PiArIyAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCj4gPj4gKyMgICAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCj4g Pj4gKyMgICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM SVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+PiArDQo+ID4+ICtpbmNsdWRlICQoUlRFX1NESykvbWsv cnRlLnZhcnMubWsNCj4gPj4gKw0KPiA+PiArIyBsaWJyYXJ5IG5hbWUNCj4gPj4gK0xJQiA9IGxp YnJ0ZV9zZWN1cml0eS5hDQo+ID4+ICsNCj4gPj4gKyMgbGlicmFyeSB2ZXJzaW9uDQo+ID4+ICtM SUJBQklWRVIgOj0gMQ0KPiA+PiArDQo+ID4+ICsjIGJ1aWxkIGZsYWdzDQo+ID4+ICtDRkxBR1Mg Kz0gLU8zDQo+ID4+ICtDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpDQo+ID4+ICsNCj4gPj4gKyMg bGlicmFyeSBzb3VyY2UgZmlsZXMNCj4gPj4gK1NSQ1MteSArPSBydGVfc2VjdXJpdHkuYw0KPiA+ PiArDQo+ID4+ICsjIGV4cG9ydCBpbmNsdWRlIGZpbGVzDQo+ID4+ICtTWU1MSU5LLXktaW5jbHVk ZSArPSBydGVfc2VjdXJpdHkuaA0KPiA+PiArU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX3NlY3Vy aXR5X2RyaXZlci5oDQo+ID4+ICsNCj4gPj4gKyMgdmVyc2lvbmluZyBleHBvcnQgbWFwDQo+ID4+ ICtFWFBPUlRfTUFQIDo9IHJ0ZV9zZWN1cml0eV92ZXJzaW9uLm1hcA0KPiA+PiArDQo+ID4+ICtp bmNsdWRlICQoUlRFX1NESykvbWsvcnRlLmxpYi5taw0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHkuYyBiL2xpYi9saWJydGVfc2VjdXJpdHkvcnRlX3Nl Y3VyaXR5LmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMC4u OTdkMzg1Nw0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL2xpYi9saWJydGVfc2VjdXJp dHkvcnRlX3NlY3VyaXR5LmMNCj4gPj4gQEAgLTAsMCArMSwyNzUgQEANCj4gPj4gKy8qLQ0KPiA+ PiArICogICBCU0QgTElDRU5TRQ0KPiA+PiArICoNCj4gPj4gKyAqICAgQ29weXJpZ2h0IDIwMTcg TlhQLg0KPiA+PiArICogICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4gKyAqDQo+ID4+ICsgKiAgIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiA+PiAr ICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMNCj4gPj4gKyAqICAgYXJlIG1ldDoNCj4gPj4gKyAqDQo+ID4+ICsgKiAg ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodA0KPiA+PiArICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiA+PiArICogICAgICogUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQN Cj4gPj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiA+PiArICogICAgICAgdGhlIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiA+PiArICogICAgICAg ZGlzdHJpYnV0aW9uLg0KPiA+PiArICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBOWFAgbm9y IHRoZSBuYW1lcyBvZiBpdHMNCj4gPj4gKyAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiA+PiArICogICAgICAg ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz aW9uLg0KPiA+PiArICoNCj4gPj4gKyAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUw0KPiA+PiArICogICAiQVMgSVMi IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P VA0KPiA+PiArICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1INCj4gPj4gKyAqICAgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQNCj4gPj4g KyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsDQo+ID4+ICsgKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QNCj4gPj4gKyAqICAgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP RiBVU0UsDQo+ID4+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0KPiA+PiArICogICBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUDQo+ ID4+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KPiA+PiArICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiA+PiArICov DQo+ID4+ICsNCj4gPj4gKyNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQo+ID4+ICsjaW5jbHVkZSA8 cnRlX2Rldi5oPg0KPiA+PiArDQo+ID4+ICsjaW5jbHVkZSAicnRlX3NlY3VyaXR5LmgiDQo+ID4+ ICsjaW5jbHVkZSAicnRlX3NlY3VyaXR5X2RyaXZlci5oIg0KPiA+PiArDQo+ID4+ICsjZGVmaW5l IFJURV9TRUNVUklUWV9JTlNUQU5DRVNfQkxPQ0tfQUxMT0NfU1oJKDgpDQo+ID4+ICsNCj4gPj4g K3N0cnVjdCBydGVfc2VjdXJpdHlfY3R4IHsNCj4gPj4gKwl1aW50MTZfdCBpZDsNCj4gPj4gKwll bnVtIHsNCj4gPj4gKwkJUlRFX1NFQ1VSSVRZX0lOU1RBTkNFX0lOVkFMSUQsDQo+ID4+ICsJCVJU RV9TRUNVUklUWV9JTlNUQU5DRV9WQUxJRA0KPiA+PiArCX0gc3RhdGU7DQo+ID4+ICsJdm9pZCAq ZGV2aWNlOw0KPiA+PiArCXN0cnVjdCBydGVfc2VjdXJpdHlfb3BzICpvcHM7DQo+ID4+ICsJdWlu dDE2X3Qgc2Vzc19jbnQ7DQo+ID4+ICt9Ow0KPiA+PiArDQo+ID4+ICtzdGF0aWMgc3RydWN0IHJ0 ZV9zZWN1cml0eV9jdHggKnNlY3VyaXR5X2luc3RhbmNlczsNCj4gPj4gK3N0YXRpYyB1aW50MTZf dCBtYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzOw0KPiA+PiArc3RhdGljIHVpbnQxNl90IG5iX3Nl Y3VyaXR5X2luc3RhbmNlczsNCj4gPg0KPiA+IFByb2JhYmx5IGEgZHVtYiBxdWVzdGlvbiAtIGJ1 dCB3aHkgZG8geW91IG5lZWQgYSBnbG9iYWwgc2VjdXJpdHlfaW5zdGFuY2VzIFtdDQo+ID4gYW5k IHdoeSBzZWN1cml0eV9pbnN0YW5jZSBoYXMgdG8gYmUgcmVmcmVuY2VkIGJ5IGluZGV4Pw0KPiA+ IEFzIEkgdW5kZXJzdGFuZCwgd2l0aCBwcm9wb3NlZCBtb2RlbCBhbGwgZHJpdmVycyBoYXZlIHRv IGRvIHNvbWV0aGluZyBsaWtlOg0KPiA+IHJ0ZV9zZWN1cml0eV9yZWdpc3RlcigmZXRoX2Rldi0+ ZGF0YS0+c2VjX2lkLCAgKHZvaWQgKilldGhfZGV2LCAmaXhnYmVfc2VjdXJpdHlfb3BzKTsNCj4g PiBhbmQgdGhlbiBhbGwgYXBwcyB3b3VsZCBoYXZlIHRvOg0KPiA+IHJ0ZV9ldGhfZGV2X2dldF9z ZWNfaWQocG9ydGlkKQ0KPiA+IHRvIHJldHJpZXZlIHRoYXQgc2VjdXJpdHlfaW5zdGFuY2UgaW5k ZXguDQo+ID4gV2h5IG5vdCBqdXN0IHRyZWF0IHN0cnVjdCBydGVfc2VjdXJpdHlfY3R4KiBhcyBv cGFxdWUgcG9pbnRlciBhbmQgbWFrZQ0KPiA+IGFsbCByZWxhdGVkIEFQSSBnZXQvYWNjZXB0IGl0 IGFzIGEgcGFyYXRlbWVyLg0KPiA+IFRvIHJldHJpZXZlIHNlY19jdHggZnJvbSBkZXZpY2UganVz dDoNCj4gPiBzdHJ1Y3QgcnRlX3NlY3VyaXR5X2N0eCogcnRlX2V0aGRldl9nZXRfc2VjX2N0eChw b3J0aWQpOw0KPiA+IHN0cnVjdCBydGVfc2VjdXJpdHlfY3R4KiBydGVfY3J5cHRvZGV2X2dldF9z ZWNfY3R4KHBvcnRpZCk7DQo+ID4gPw0KPiBXZSB3b3VsZCBsb29rIGludG8gdGhpcyBzZXBhcmF0 ZWx5Lg0KDQpDb3VsZCB5b3UgY2xhcmlmeSB3aGF0IGRvZXMgaXQgbWVhbj8NCkl0IHdpbGwgYmUg YWRkcmVzc2VkIGluIHY0IG9yIGRvbid0IHBsYW4gdG8gYWRkcmVzcyBpdCBhdCBhbGwgb3Igc29t ZXRoaW5nIGVsc2U/DQogIA0KDQo+ID4NCj4gPiBBbm90aGVyIHF1ZXN0aW9uIGhvdyBjdXJyZW50 bHkgcHJvcG9zZWQgbW9kZWwgd2l0aCBnbG9iYWwgc3RhdGljIGFycmF5IGFuZCBmcmllbmRzLA0K PiA+IHN1cHBvc2VkIHRvIHdvcmsgZm9yIERQREsgTVAgbW9kZWw/DQo+ID4gT3IgTVAgc3VwcG9y dCBpcyBub3QgcGxhbm5lZD8NCj4gbXVsdGkgcHJvY2VzcyBjYXNlIGlzIHBsYW5uZWQgZm9yIGZ1 dHVyZSBlbmhhbmNlbWVudC4gVGhpcyBpcyBtZW50aW9uZWQNCj4gaW4gdGhlIGNvdmVyIG5vdGUu DQoNCkdyZWF0LCB0aGVuIEkgc3VwcG9zZSB5b3Ugc2hvdWxkIGhhdmUgYSBnZW5lcmljIGlkZWEg aG93IHRoYXQgbW9kZWwgd2lsbCB3b3JrDQpmb3IgRFBESyBtdWx0aS1wcm9jZXNzIG1vZGVsPw0K SWYgc28sIGNhbiB5b3UgcHJvYmFibHkgc2hhcmUgeW91ciB0aG91Z2h0cywgYmVjYXVzZSBpdCBp cyBub3QgY2xlYXIgdG8gbWUuDQpMZXQgc2F5IHVzZXIgaGFzIGFuIGV0aGRldiBkZXZpY2Ugd2l0 aCBpcHNlYyBjYXBhYmlsaXR5IGFuZCAgd2FudHMgdG8gdXNlIGl0DQpmcm9tIGJvdGggcHJpbWFy eSBhbmQgc2Vjb25kYXJ5IHByb2Nlc3MuDQpXaGF0IHdvdWxkIGJlIGEgcHJvY2VkdXJlPw0KQ2Fu IHVzZXIgdXNlIHRoZSBzYW1lIHNlY3VyaXR5IGluc3RhbmNlIGZyb20gYm90aCBwcm9jZXNzZXM/ DQpJZiB5ZXMsIHRoZW4gIA0KLSBob3cgc2Vjb25kYXJ5IHByb2Nlc3Mgd2lsbCBnZXQgc2VjdXJp dHlfaW5zdGFuY2VfaWQgZm9yIHRoYXQgZGV2aWNlDQpmcm9tIHByaW1hcnkgcHJvY2Vzcz8NCiBC eSBjYWxsaW5nIHJ0ZV9ldGhfZGV2X2dldF9zZWNfaWQoKSwgb3Igc29tZXRoaW5nIGVsc2U/IA0K LSBob3cgZ3VhcmFudGVlIHRoYXQgYWxsIHRoZXNlIGZ1bmMgcG9pbnRlcnMgaW5zaWRlIG9wcyB3 aWxsIGJlIG1hcHBlZCB0byB0aGUNCnNhbWUgYWRkcmVzcyBpbnNpZGUgIHByb2Nlc3Nlcz8gIA0K SWYgbm90LCB0aGVuIGRvZXMgaXQgbWVhbiBlYWNoIHByb2Nlc3MgaGFzIHRvIGNhbGwgcnRlX3Nl Y3VyaXR5X3JlZ2lzdGVyKCkNCmZvciBlYWNoIGRldmljZT8NCkJ1dCByaWdodCBub3cgeW91IGhh dmUgb25seSBvbmUgc2VjX2lkICBpbnNpZGUgcnRlX2V0aF9kZXZfZGF0YS4NCg0KV291bGQgc2Vj b25kYXJ5IHByb2Nlc3MgYmUgYWxsb3dlZCB0byByZWdpc3Rlci91bnJlZ2lzdGVyL3VwZGF0ZSBz ZWN1cml0eSBpbnN0YW5jZXM/DQogaWYgeWVzLCBob3cgdGhlIHdpbGwgc3luY2hyb25pemU/DQpT YW1lIHF1ZXN0aW9uIGZvciBzZXNzaW9uIG9wcy4NCg0KPiA+DQo+ID4+ICsNCj4gPj4gK3N0YXRp YyBpbnQNCj4gPj4gK3J0ZV9zZWN1cml0eV9pc192YWxpZF9pZCh1aW50MTZfdCBpZCkNCj4gPj4g K3sNCj4gPj4gKwlpZiAoaWQgPj0gbmJfc2VjdXJpdHlfaW5zdGFuY2VzIHx8DQo+ID4+ICsJICAg IChzZWN1cml0eV9pbnN0YW5jZXNbaWRdLnN0YXRlICE9IFJURV9TRUNVUklUWV9JTlNUQU5DRV9W QUxJRCkpDQo+ID4+ICsJCXJldHVybiAwOw0KPiA+PiArCWVsc2UNCj4gPj4gKwkJcmV0dXJuIDE7 DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gKy8qIE1hY3JvcyB0byBjaGVjayBmb3IgdmFsaWQgaWQg Ki8NCj4gPj4gKyNkZWZpbmUgUlRFX1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCByZXR2YWwp IGRvIHsgXA0KPiA+PiArCWlmICghcnRlX3NlY3VyaXR5X2lzX3ZhbGlkX2lkKGlkKSkgeyBcDQo+ ID4+ICsJCVJURV9QTURfREVCVUdfVFJBQ0UoIkludmFsaWQgc2VjX2lkPSVkXG4iLCBpZCk7IFwN Cj4gPj4gKwkJcmV0dXJuIHJldHZhbDsgXA0KPiA+PiArCX0gXA0KPiA+PiArfSB3aGlsZSAoMCkN Cj4gPj4gKw0KPiA+PiArI2RlZmluZSBSVEVfU0VDX1ZBTElEX0lEX09SX1JFVChpZCkgZG8geyBc DQo+ID4+ICsJaWYgKCFydGVfc2VjdXJpdHlfaXNfdmFsaWRfaWQoaWQpKSB7IFwNCj4gPj4gKwkJ UlRFX1BNRF9ERUJVR19UUkFDRSgiSW52YWxpZCBzZWNfaWQ9JWRcbiIsIGlkKTsgXA0KPiA+PiAr CQlyZXR1cm47IFwNCj4gPj4gKwl9IFwNCj4gPj4gK30gd2hpbGUgKDApDQo+ID4+ICsNCj4gPj4g K2ludA0KPiA+PiArcnRlX3NlY3VyaXR5X3JlZ2lzdGVyKHVpbnQxNl90ICppZCwgdm9pZCAqZGV2 aWNlLA0KPiA+PiArCQkgICAgICBzdHJ1Y3QgcnRlX3NlY3VyaXR5X29wcyAqb3BzKQ0KPiA+PiAr ew0KDQpQcm9iYWJseSBjb25zdCAgc3RydWN0IHJ0ZV9zZWN1cml0eV9vcHMgKm9wcw0KDQo+ID4+ ICsJaWYgKG1heF9uYl9zZWN1cml0eV9pbnN0YW5jZXMgPT0gMCkgew0KPiA+PiArCQlzZWN1cml0 eV9pbnN0YW5jZXMgPSBydGVfbWFsbG9jKA0KPiA+PiArCQkJCSJydGVfc2VjdXJpdHlfaW5zdGFu Y2VzX29wcyIsDQo+ID4+ICsJCQkJc2l6ZW9mKCpzZWN1cml0eV9pbnN0YW5jZXMpICoNCj4gPj4g KwkJCQlSVEVfU0VDVVJJVFlfSU5TVEFOQ0VTX0JMT0NLX0FMTE9DX1NaLCAwKTsNCj4gPj4gKw0K PiA+PiArCQlpZiAoc2VjdXJpdHlfaW5zdGFuY2VzID09IE5VTEwpDQo+ID4+ICsJCQlyZXR1cm4g LUVOT01FTTsNCj4gPj4gKwkJbWF4X25iX3NlY3VyaXR5X2luc3RhbmNlcyA9DQo+ID4+ICsJCQkJ UlRFX1NFQ1VSSVRZX0lOU1RBTkNFU19CTE9DS19BTExPQ19TWjsNCj4gPj4gKwl9IGVsc2UgaWYg KG5iX3NlY3VyaXR5X2luc3RhbmNlcyA+PSBtYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzKSB7DQo+ ID4NCj4gPiBZb3UgcHJvYmFibHkgbmVlZCB0cnkgdG8gcmV1c2UgdW5yZWdpc3RlcmVkIGVudHJp ZXMgZmlyc3Q/DQo+ID4gS29uc3RhbnRpbg0KPiA+DQo+IFRoZXNlIEFQSXMgYXJlIGV4cGVyaW1l bnRhbCBhdCB0aGlzIG1vbWVudCBhcyBtZW50aW9uZWQgaW4gdGhlIHBhdGNoc2V0Lg0KPiBXZSB3 aWxsIHRyeSBhY2NvbW1vZGF0ZSB5b3VyIGNvbW1lbnRzIGluIGZ1dHVyZS4NCg0KQWdhaW4gY291 bGQgeW91IGNsYXJpZnkgd2hhdCBkbyB5b3UgbWVhbiBieSAnZnV0dXJlJyBoZXJlPw0KDQo+ID4N Cj4gPj4gKwkJdWludDE2X3QgKmluc3RhbmNlcyA9IHJ0ZV9yZWFsbG9jKHNlY3VyaXR5X2luc3Rh bmNlcywNCj4gPj4gKwkJCQlzaXplb2Yoc3RydWN0IHJ0ZV9zZWN1cml0eV9vcHMgKikgKg0KPiA+ PiArCQkJCShtYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzICsNCj4gPj4gKwkJCQlSVEVfU0VDVVJJ VFlfSU5TVEFOQ0VTX0JMT0NLX0FMTE9DX1NaKSwgMCk7DQo+ID4+ICsNCj4gPj4gKwkJaWYgKGlu c3RhbmNlcyA9PSBOVUxMKQ0KPiA+PiArCQkJcmV0dXJuIC1FTk9NRU07DQo+ID4+ICsNCj4gPj4g KwkJbWF4X25iX3NlY3VyaXR5X2luc3RhbmNlcyArPQ0KPiA+PiArCQkJCVJURV9TRUNVUklUWV9J TlNUQU5DRVNfQkxPQ0tfQUxMT0NfU1o7DQo+ID4+ICsJfQ0KPiA+PiArDQo+ID4+ICsJKmlkID0g bmJfc2VjdXJpdHlfaW5zdGFuY2VzKys7DQo+ID4+ICsNCj4gPj4gKwlzZWN1cml0eV9pbnN0YW5j ZXNbKmlkXS5pZCA9ICppZDsNCj4gPj4gKwlzZWN1cml0eV9pbnN0YW5jZXNbKmlkXS5zdGF0ZSA9 IFJURV9TRUNVUklUWV9JTlNUQU5DRV9WQUxJRDsNCj4gPj4gKwlzZWN1cml0eV9pbnN0YW5jZXNb KmlkXS5kZXZpY2UgPSBkZXZpY2U7DQo+ID4+ICsJc2VjdXJpdHlfaW5zdGFuY2VzWyppZF0ub3Bz ID0gb3BzOw0KDQpCVFcsIEkgdGhpbmsgeW91IG5lZWQgdG8gY29weSBhY3R1YWwgY29udGVudHMg b2Ygb3BzLg0KT3RoZXJ3aXNlIHlvdSBhc3N1bWluZyB0aGF0IG9wcyBhcmUgc3RhdGljDQood291 bGQgYmUgdmFsaWQgdGhvdWdoIGFsbCBwcm9jZXNzZXMgbGlmZXRpbWVzKS4gDQoNCktvbnN0YW50 aW4NCg0KPiA+PiArCXNlY3VyaXR5X2luc3RhbmNlc1sqaWRdLnNlc3NfY250ID0gMDsNCj4gPj4g Kw0KPiA+PiArCXJldHVybiAwOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQNCj4gPj4gK3J0 ZV9zZWN1cml0eV91bnJlZ2lzdGVyKHVpbnQxNl90IGlkKQ0KPiA+PiArew0KPiA+PiArCXN0cnVj dCBydGVfc2VjdXJpdHlfY3R4ICppbnN0YW5jZTsNCj4gPj4gKw0KPiA+PiArCVJURV9TRUNfVkFM SURfSURfT1JfRVJSX1JFVChpZCwgLUVOT0RFVik7DQo+ID4+ICsJaW5zdGFuY2UgPSAmc2VjdXJp dHlfaW5zdGFuY2VzW2lkXTsNCj4gPj4gKw0KPiA+PiArCWlmIChpbnN0YW5jZS0+c2Vzc19jbnQp DQo+ID4+ICsJCXJldHVybiAtRUJVU1k7DQo+ID4+ICsNCj4gPj4gKwltZW1zZXQoaW5zdGFuY2Us IDAsIHNpemVvZigqaW5zdGFuY2UpKTsNCj4gPj4gKwlyZXR1cm4gMDsNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiArc3RydWN0IHJ0ZV9zZWN1cml0eV9zZXNzaW9uICoNCj4gPj4gK3J0ZV9zZWN1cml0 eV9zZXNzaW9uX2NyZWF0ZSh1aW50MTZfdCBpZCwNCj4gPj4gKwkJCSAgICBzdHJ1Y3QgcnRlX3Nl Y3VyaXR5X3Nlc3Npb25fY29uZiAqY29uZiwNCj4gPj4gKwkJCSAgICBzdHJ1Y3QgcnRlX21lbXBv b2wgKm1wKQ0KPiA+PiArew0KPiA+PiArCXN0cnVjdCBydGVfc2VjdXJpdHlfY3R4ICppbnN0YW5j ZTsNCj4gPj4gKwlzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MgPSBOVUxMOw0KPiA+ PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCBOVUxMKTsNCj4gPj4g KwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0YW5jZXNbaWRdOw0KPiA+PiArDQo+ID4+ICsJaWYg KGNvbmYgPT0gTlVMTCkNCj4gPj4gKwkJcmV0dXJuIE5VTEw7DQo+ID4+ICsNCj4gPj4gKwlSVEVf RlVOQ19QVFJfT1JfRVJSX1JFVCgqaW5zdGFuY2UtPm9wcy0+c2Vzc2lvbl9jcmVhdGUsIE5VTEwp Ow0KPiA+PiArDQo+ID4+ICsJaWYgKHJ0ZV9tZW1wb29sX2dldChtcCwgKHZvaWQgKikmc2Vzcykp DQo+ID4+ICsJCXJldHVybiBOVUxMOw0KPiA+PiArDQo+ID4+ICsJaWYgKGluc3RhbmNlLT5vcHMt PnNlc3Npb25fY3JlYXRlKGluc3RhbmNlLT5kZXZpY2UsIGNvbmYsIHNlc3MsIG1wKSkgew0KPiA+ PiArCQlydGVfbWVtcG9vbF9wdXQobXAsICh2b2lkICopc2Vzcyk7DQo+ID4+ICsJCXJldHVybiBO VUxMOw0KPiA+PiArCX0NCj4gPj4gKwlpbnN0YW5jZS0+c2Vzc19jbnQrKzsNCj4gPj4gKw0KPiA+ PiArCXJldHVybiBzZXNzOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQNCj4gPj4gK3J0ZV9z ZWN1cml0eV9zZXNzaW9uX3VwZGF0ZSh1aW50MTZfdCBpZCwNCj4gPj4gKwkJCSAgICBzdHJ1Y3Qg cnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MsDQo+ID4+ICsJCQkgICAgc3RydWN0IHJ0ZV9zZWN1 cml0eV9zZXNzaW9uX2NvbmYgKmNvbmYpDQo+ID4+ICt7DQo+ID4+ICsJc3RydWN0IHJ0ZV9zZWN1 cml0eV9jdHggKmluc3RhbmNlOw0KPiA+PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9JRF9PUl9F UlJfUkVUKGlkLCAtRU5PREVWKTsNCj4gPj4gKwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0YW5j ZXNbaWRdOw0KPiA+PiArDQo+ID4+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNl LT5vcHMtPnNlc3Npb25fdXBkYXRlLCAtRU5PVFNVUCk7DQo+ID4+ICsJcmV0dXJuIGluc3RhbmNl LT5vcHMtPnNlc3Npb25fdXBkYXRlKGluc3RhbmNlLT5kZXZpY2UsIHNlc3MsIGNvbmYpOw0KPiA+ PiArfQ0KPiA+PiArDQo+ID4+ICtpbnQNCj4gPj4gK3J0ZV9zZWN1cml0eV9zZXNzaW9uX3N0YXRz X2dldCh1aW50MTZfdCBpZCwNCj4gPj4gKwkJCSAgICAgICBzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nl c3Npb24gKnNlc3MsDQo+ID4+ICsJCQkgICAgICAgc3RydWN0IHJ0ZV9zZWN1cml0eV9zdGF0cyAq c3RhdHMpDQo+ID4+ICt7DQo+ID4+ICsJc3RydWN0IHJ0ZV9zZWN1cml0eV9jdHggKmluc3RhbmNl Ow0KPiA+PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCAtRU5PREVW KTsNCj4gPj4gKwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0YW5jZXNbaWRdOw0KPiA+PiArDQo+ ID4+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMtPnNlc3Npb25fc3Rh dHNfZ2V0LCAtRU5PVFNVUCk7DQo+ID4+ICsJcmV0dXJuIGluc3RhbmNlLT5vcHMtPnNlc3Npb25f c3RhdHNfZ2V0KGluc3RhbmNlLT5kZXZpY2UsIHNlc3MsIHN0YXRzKTsNCj4gPj4gK30NCj4gPj4g Kw0KPiA+PiAraW50DQo+ID4+ICtydGVfc2VjdXJpdHlfc2Vzc2lvbl9kZXN0cm95KHVpbnQxNl90 IGlkLCBzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MpDQo+ID4+ICt7DQo+ID4+ICsJ aW50IHJldDsNCj4gPj4gKwlzdHJ1Y3QgcnRlX3NlY3VyaXR5X2N0eCAqaW5zdGFuY2U7DQo+ID4+ ICsJc3RydWN0IHJ0ZV9tZW1wb29sICptcCA9IHJ0ZV9tZW1wb29sX2Zyb21fb2JqKHNlc3MpOw0K PiA+PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCAtRU5PREVWKTsN Cj4gPj4gKwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0YW5jZXNbaWRdOw0KPiA+PiArDQo+ID4+ ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMtPnNlc3Npb25fZGVzdHJv eSwgLUVOT1RTVVApOw0KPiA+PiArDQo+ID4+ICsJaWYgKGluc3RhbmNlLT5zZXNzX2NudCkNCj4g Pj4gKwkJaW5zdGFuY2UtPnNlc3NfY250LS07DQo+ID4+ICsNCj4gPj4gKwlyZXQgPSBpbnN0YW5j ZS0+b3BzLT5zZXNzaW9uX2Rlc3Ryb3koaW5zdGFuY2UtPmRldmljZSwgc2Vzcyk7DQo+ID4+ICsJ aWYgKCFyZXQpDQo+ID4+ICsJCXJ0ZV9tZW1wb29sX3B1dChtcCwgKHZvaWQgKilzZXNzKTsNCj4g Pj4gKw0KPiA+PiArCXJldHVybiByZXQ7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK2ludA0KPiA+ PiArcnRlX3NlY3VyaXR5X3NldF9wa3RfbWV0YWRhdGEodWludDE2X3QgaWQsDQo+ID4+ICsJCQkg ICAgICBzdHJ1Y3QgcnRlX3NlY3VyaXR5X3Nlc3Npb24gKnNlc3MsDQo+ID4+ICsJCQkgICAgICBz dHJ1Y3QgcnRlX21idWYgKm0sIHZvaWQgKnBhcmFtcykNCj4gPj4gK3sNCj4gPj4gKwlzdHJ1Y3Qg cnRlX3NlY3VyaXR5X2N0eCAqaW5zdGFuY2U7DQo+ID4+ICsNCj4gPj4gKwlSVEVfU0VDX1ZBTElE X0lEX09SX0VSUl9SRVQoaWQsIC1FTk9ERVYpOw0KPiA+PiArCWluc3RhbmNlID0gJnNlY3VyaXR5 X2luc3RhbmNlc1tpZF07DQo+ID4+ICsNCj4gPj4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgq aW5zdGFuY2UtPm9wcy0+c2V0X3BrdF9tZXRhZGF0YSwgLUVOT1RTVVApOw0KPiA+PiArCXJldHVy biBpbnN0YW5jZS0+b3BzLT5zZXRfcGt0X21ldGFkYXRhKGluc3RhbmNlLT5kZXZpY2UsDQo+ID4+ ICsJCQkJCSAgICAgICBzZXNzLCBtLCBwYXJhbXMpOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICtj b25zdCBzdHJ1Y3QgcnRlX3NlY3VyaXR5X2NhcGFiaWxpdHkgKg0KPiA+PiArcnRlX3NlY3VyaXR5 X2NhcGFiaWxpdGllc19nZXQodWludDE2X3QgaWQpDQo+ID4+ICt7DQo+ID4+ICsJc3RydWN0IHJ0 ZV9zZWN1cml0eV9jdHggKmluc3RhbmNlOw0KPiA+PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9J RF9PUl9FUlJfUkVUKGlkLCBOVUxMKTsNCj4gPj4gKwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0 YW5jZXNbaWRdOw0KPiA+PiArDQo+ID4+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3Rh bmNlLT5vcHMtPmNhcGFiaWxpdGllc19nZXQsIE5VTEwpOw0KPiA+PiArCXJldHVybiBpbnN0YW5j ZS0+b3BzLT5jYXBhYmlsaXRpZXNfZ2V0KGluc3RhbmNlLT5kZXZpY2UpOw0KPiA+PiArfQ0KPiA+ PiArDQo+ID4+ICtjb25zdCBzdHJ1Y3QgcnRlX3NlY3VyaXR5X2NhcGFiaWxpdHkgKg0KPiA+PiAr cnRlX3NlY3VyaXR5X2NhcGFiaWxpdHlfZ2V0KHVpbnQxNl90IGlkLA0KPiA+PiArCQkJICAgIHN0 cnVjdCBydGVfc2VjdXJpdHlfY2FwYWJpbGl0eV9pZHggKmlkeCkNCj4gPj4gK3sNCj4gPj4gKwlz dHJ1Y3QgcnRlX3NlY3VyaXR5X2N0eCAqaW5zdGFuY2U7DQo+ID4+ICsJY29uc3Qgc3RydWN0IHJ0 ZV9zZWN1cml0eV9jYXBhYmlsaXR5ICpjYXBhYmlsaXRpZXM7DQo+ID4+ICsJY29uc3Qgc3RydWN0 IHJ0ZV9zZWN1cml0eV9jYXBhYmlsaXR5ICpjYXBhYmlsaXR5Ow0KPiA+PiArCXVpbnQxNl90IGkg PSAwOw0KPiA+PiArDQo+ID4+ICsJUlRFX1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCBOVUxM KTsNCj4gPj4gKwlpbnN0YW5jZSA9ICZzZWN1cml0eV9pbnN0YW5jZXNbaWRdOw0KPiA+PiArDQo+ ID4+ICsJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmluc3RhbmNlLT5vcHMtPmNhcGFiaWxpdGll c19nZXQsIE5VTEwpOw0KPiA+PiArCWNhcGFiaWxpdGllcyA9IGluc3RhbmNlLT5vcHMtPmNhcGFi aWxpdGllc19nZXQoaW5zdGFuY2UtPmRldmljZSk7DQo+ID4+ICsNCj4gPj4gKwlpZiAoY2FwYWJp bGl0aWVzID09IE5VTEwpDQo+ID4+ICsJCXJldHVybiBOVUxMOw0KPiA+PiArDQo+ID4+ICsJd2hp bGUgKChjYXBhYmlsaXR5ID0gJmNhcGFiaWxpdGllc1tpKytdKS0+YWN0aW9uDQo+ID4+ICsJCQkh PSBSVEVfU0VDVVJJVFlfQUNUSU9OX1RZUEVfTk9ORSkgew0KPiA+PiArCQlpZiAoY2FwYWJpbGl0 eS0+YWN0aW9uICA9PSBpZHgtPmFjdGlvbiAmJg0KPiA+PiArCQkJCWNhcGFiaWxpdHktPnByb3Rv Y29sID09IGlkeC0+cHJvdG9jb2wpIHsNCj4gPj4gKwkJCWlmIChpZHgtPnByb3RvY29sID09IFJU RV9TRUNVUklUWV9QUk9UT0NPTF9JUFNFQykgew0KPiA+PiArCQkJCWlmIChjYXBhYmlsaXR5LT5p cHNlYy5wcm90byA9PQ0KPiA+PiArCQkJCQkJaWR4LT5pcHNlYy5wcm90byAmJg0KPiA+PiArCQkJ CQljYXBhYmlsaXR5LT5pcHNlYy5tb2RlID09DQo+ID4+ICsJCQkJCQkJaWR4LT5pcHNlYy5tb2Rl ICYmDQo+ID4+ICsJCQkJCWNhcGFiaWxpdHktPmlwc2VjLmRpcmVjdGlvbiA9PQ0KPiA+PiArCQkJ CQkJCWlkeC0+aXBzZWMuZGlyZWN0aW9uKQ0KPiA+PiArCQkJCQlyZXR1cm4gY2FwYWJpbGl0eTsN Cj4gPj4gKwkJCX0NCj4gPj4gKwkJfQ0KPiA+PiArCX0NCj4gPj4gKw0KPiA+PiArCXJldHVybiBO VUxMOw0KPiA+PiArfQ0KPiA+DQo+IA0KPiBSZWdhcmRzLA0KPiBBa2hpbA0K