From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 49AAB1B6DB for ; Tue, 17 Oct 2017 16:41:01 +0200 (CEST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP; 17 Oct 2017 07:40:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,391,1503385200"; d="scan'208";a="1231757696" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by fmsmga002.fm.intel.com with ESMTP; 17 Oct 2017 07:40:57 -0700 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.22]) by IRSMSX152.ger.corp.intel.com ([169.254.6.87]) with mapi id 14.03.0319.002; Tue, 17 Oct 2017 15:40:55 +0100 From: "Trahe, Fiona" To: shally verma , "dev@dpdk.org" , "pathreya@cavium.com" , Mahipal Challa , Shally Verma CC: "Trahe, Fiona" Thread-Topic: [dpdk-dev] [RFC] Compression API in DPDK Thread-Index: AdNDe5cVAzjxCOtoRH2TNNZhDVbPqQDkPzKAAAia4eA= Date: Tue, 17 Oct 2017 14:40:54 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435892ABFB2@IRSMSX101.ger.corp.intel.com> References: <348A99DA5F5B7549AA880327E580B435892A8BEC@IRSMSX101.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiM2FlZTVjNTctYzM2NS00NTFhLWIyZTktMTU3NTA3MjU5MmFmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IjJYZ2ZBSzEydVhJd21rRjJmOE9lKzc3R2UreFpjZ3BFWXhVZWN6bGlxUGs9In0= 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] [RFC] Compression API in DPDK 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: Tue, 17 Oct 2017 14:41:02 -0000 SGkgU2hhbGx5LA0KDQpUaGFua3MgZm9yIHlvdXIgZmVlZGJhY2suIENvbW1lbnRzIGJlbG93Lg0K DQpSZWdhcmRzLA0KRmlvbmENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBzaGFsbHkgdmVybWEgW21haWx0bzpzaGFsbHl2ZXJtYWNhdml1bUBnbWFpbC5jb21dDQo+IFNl bnQ6IFR1ZXNkYXksIE9jdG9iZXIgMTcsIDIwMTcgNzo1NiBBTQ0KPiBUbzogVHJhaGUsIEZpb25h IDxmaW9uYS50cmFoZUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmc7IHBhdGhyZXlhQGNhdml1bS5j b207IE1haGlwYWwgQ2hhbGxhDQo+IDxtY2hhbGxhQGNhdml1bS5jb20+OyBTaGFsbHkgVmVybWEg PHN2ZXJtYUBjYXZpdW0uY29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUkZDXSBDb21w cmVzc2lvbiBBUEkgaW4gRFBESw0KPiANCj4gV2hpbGUgSSBhbSBzdGlsbCBnb2luZyB0aHJvdWdo IFJGQyBpbiBkZXRhaWxzLCBpbmxpbmUgYXJlIG15IGlucHV0cyB0bw0KPiBzb21lIG9mIHRoZSBw b2ludHMuDQo+IA0KPiBPbiBUaHUsIE9jdCAxMiwgMjAxNyBhdCAxMDozNCBQTSwgVHJhaGUsIEZp b25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gV2l0aCB0aGUgdmFz dCBhbW91bnRzIG9mIGRhdGEgYmVpbmcgdHJhbnNwb3J0ZWQgYXJvdW5kIG5ldHdvcmtzIGFuZCBz dG9yZWQgaW4gc3RvcmFnZSBzeXN0ZW1zLA0KPiByZWR1Y2luZyBkYXRhIHNpemUgaXMgYmVjb21p bmcgZXZlciBtb3JlIGltcG9ydGFudC4gVGhlcmUgYXJlIGJvdGggc29mdHdhcmUgbGlicmFyaWVz IGFuZCBoYXJkd2FyZQ0KPiBkZXZpY2VzIGF2YWlsYWJsZSB0aGF0IHByb3ZpZGUgY29tcHJlc3Np b24sIGJ1dCBubyBjb21tb24gQVBJLiBUaGlzIFJGQyBwcm9wb3NlcyBhIGNvbXByZXNzaW9uIEFQ SQ0KPiBmb3IgRFBESyB0byBhZGRyZXNzIHRoaXMgbmVlZC4NCj4gPg0KPiA+IEZlYXR1cmVzOg0K PiA+IC4gRGVmbGF0ZSBBbGdvcml0aG0gKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMx OTUxKSwgb3RoZXIgYWxnb3JpdGhtcyBjYW4gYmUgYWRkZWQgbGF0ZXIuDQo+ID4gLiBTdGF0aWMg YW5kIER5bmFtaWMgSHVmZm1hbiBlbmNvZGluZy4NCj4gPiAuIENvbXByZXNzaW9uIGxldmVscw0K PiA+IC4gQ2hlY2tzdW0gZ2VuZXJhdGlvbg0KPiA+IC4gQXN5bmNocm9ub3VzIGJ1cnN0IEFQSQ0K PiA+IC4gU2Vzc2lvbi1iYXNlZC4gKGZvciBzdGF0ZWxlc3MgYSBzZXNzaW9uIG1heSBiZSB1c2Vh YmxlIGFjcm9zcyBkZXZpY2VzLCBmb3Igc3RhdGVmdWwgaXQgd291bGRuJ3QgYmUuKQ0KPiA+DQo+ ID4NCj4gPiBOb3RlIDE6IFNwbGl0IG9mIGZ1bmN0aW9uYWxpdHkgYWJvdmUvYmVsb3cgQVBJDQo+ ID4gV2hlbiBjb25zaWRlcmluZyB3aGV0aGVyIGZlYXR1cmVzIHNob3VsZCBiZSBzdXBwb3J0ZWQg b24gdGhlIEFQSSBvciBub3QsIHRoZSBkZWNpc2lvbiB3YXMgYmFzZWQgb24NCj4gdGhlIGZvbGxv d2luZzoNCj4gPiBUaGUgcHVycG9zZSBvZiB0aGUgQVBJIGlzIHRvIGRlY291cGxlIHRoZSBhcHBs aWNhdGlvbiBmcm9tIHRoZSBjb21wdXRlLWludGVuc2l2ZSBmdW5jdGlvbnMgbmVlZGVkDQo+IGZv ciBjb21wcmVzc2lvbiBieSBhYnN0cmFjdGluZyB0aGVtIHVuZGVyIGEgY29tbW9uIEFQSS4gVGhl c2UgY2FuIHRoZW4gYmUgaW1wbGVtZW50ZWQgYnkgZWl0aGVyDQo+IGhhcmR3YXJlIGFjY2VsZXJh dG9ycyBvciBvcHRpbWlzZWQgc29mdHdhcmUgbGlicmFyaWVzLiBXaGVyZSBmZWF0dXJlcyBhcmUg bm90IGNvbXB1dGUtaW50ZW5zaXZlIGFuZA0KPiB1bmxpa2VseSB0byBiZSBvZmZsb2FkZWQgb3Ig b3B0aW1pc2VkLCB0aGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGVhY2ggUE1EIGhhdmlu ZyB0byBzZXBhcmF0ZWx5DQo+IGltcGxlbWVudCB0aGVtLCBhbmQgaXQgbWFrZXMgbW9yZSBzZW5z ZSBmb3IgdGhlbSB0byBiZSBkb25lIGFib3ZlIHRoZSBBUEkuIFNvIHRoZSBmb2xsb3dpbmcgYXJl IG5vdA0KPiBoYW5kbGVkIG9uIHRoZSBBUEkgYW5kIGNhbiBiZSBkb25lIGFib3ZlLg0KPiA+IC4g UHJlcGVuZGluZy9hcHBlbmRpbmcgcHJvdG9jb2wgaGVhZGVycyAoZ3ppcCwgemxpYikNCj4gPiAu IEZpbGUtaGFuZGxpbmcsIGJyZWFraW5nIGZpbGVzIHVwIGludG8gcGFja2V0cywgcmVhc3NlbWJs aW5nLg0KPiA+IC4gU3luY2hyb25vdXMgQVBJDQo+ID4NCj4gPg0KPiA+IE5vdGUgMjogU3RhdGVm dWwgY29tcHJlc3Npb24uDQo+ID4gQSBiZXR0ZXIgY29tcHJlc3Npb24gcmF0aW8gY2FuIGJlIGFj aGlldmVkIGJ5IHVzaW5nIHN0YXRlZnVsIGNvbXByZXNzaW9uLCBhbGxvd2luZyBwYXR0ZXJuIG1h dGNoaW5nDQo+IGFjcm9zcyBtdWx0aXBsZSBzZXF1ZW50aWFsIHBhY2tldHMuIFRoaXMgd2lsbCBi ZSBzdXBwb3J0ZWQgb24gdGhlIEFQSSwgYnV0IGluIHRoZSBpbnRlcmVzdHMgb2YgZ2V0dGluZyBh bg0KPiBpbml0aWFsIFJGQyBvdXQgZm9yIGZlZWRiYWNrLCB0aGVyZSBhcmUgcGxhY2Vob2xkZXIg cGFyYW1ldGVycyBvbiB0aGUgQVBJLiBGZWVkYmFjayB3ZWxjb21lIG9uIHdoYXQNCj4gcGFyYW1l dGVycyBhcmUgbmVlZGVkIGZvciB0aGlzIGZlYXR1cmUuDQo+ID4NCj4gDQo+IFdlIHdvdWxkIGxp a2UgdG8gc2VlIHRoaXMgYXMgcGFydCBvZiBTcGVjaWZpY2F0aW9uLiBXZSB3aWxsIHByb3ZpZGUN Cj4gbW9yZSBkZXRhaWxzIG9uIHdoYXQgd2UoY2F2aXVtKSByZXF1aXJlLg0KDQpbRmlvbmFdIEkg bG9vayBmb3J3YXJkIHRvIGl0Lg0KDQo+IA0KPiA+DQo+ID4NCj4gPiBOb3RlIDM6IFRoZSB0cmlj a3kgcXVlc3Rpb24gb2Ygd2hlcmUgdGhlIEFQSSBiZWxvbmdzDQo+ID4gV2UgY29uc2lkZXJlZA0K PiA+IDEuIEV4dGVuZGluZyBjcnlwdG9kZXYNCj4gPiAyLiBOZXcgYWNjZWxkZXYgQVBJcyBmb3Ig ZGV2aWNlIGhhbmRsaW5nICsgY29tcHJlc3NkZXYgQVBJcyBmb3IgZGF0YSBwYXRoDQo+ID4gMy4g TmV3IGFjY2VsZGV2IGZvciBhbGwgQVBJcw0KPiA+IDQuIE5ldyBjb21wcmVzc2RldiBBUEkNCj4g Pg0KPiA+IFdlJ3JlIHByb3Bvc2luZyBvcHRpb24gNCwgaGVyZSdzIHdoeToNCj4gPiAxLiBFeHRl bmRpbmcgY3J5cHRvZGV2Og0KPiA+ICAgICAuICArIE5pY2UgY29kZSByZS11c2UuDQo+ID4gICAg IC4gICsgQ29uc2lzdGVudCB3aXRoIExpbnV4IGtlcm5lbCBhbmQgQlNEIGFwcHJvYWNoZXMuDQo+ ID4gICAgIC4gIC0gQnV0IG5vdCBhIGdvb2QgbmFtZS4NCj4gPiAgICAgLiAgLSBXb3VsZCBpbmV2 aXRhYmx5IGxlYWQgdG8gc29tZSBjcnlwdG9kZXYgQVBJIGJyZWFrYWdlIC0gY2FuIGJlIG1pbmlt aXNlZCwgYnV0IHRoZW4gbG9va3MgaGFja3kuDQo+IEUuZy4NCj4gPiAgICAgICAgICAgICBydGVf Y3J5cHRvZGV2X2luZm8ubWF4X25iX3F1ZXVlX3BhaXJzIGN1cnJlbnRseS4gV291bGQgbmVlZCB0 byBleHRlbmQgdG8NCj4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2X2luZm8ubWF4X25iX3F1 ZXVlX3BhaXJzIChJZGVhbGx5IHJlbmFtZSB0aGlzIHRvIG1heF9uYl9zeW1fLi4uLiBidXQgdGhh dCdzIGFuDQo+IEFQSSBicmVha2FnZSkNCj4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2X2lu Zm8ubWF4X25iX2NvbXBfcXVldWVfcGFpcnMNCj4gPiAgICAgICAgICAgICBydGVfY3J5cHRvZGV2 X2luZm8ubWF4X25iX2FzeW1fcXVldWVfcGFpcnMNCj4gPiAgICAgICAgICAgU2ltaWxhcmx5IGZu IG5hbWVzLCBlLmcuIHJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9zZXR1cC4NCj4gPiAgICAgICAg ICAgIFJlbmFtZSB0byBydGVfY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX3NldHVwLCBhZGQgX2Nv bXAgYW5kIF9hc3ltIGZucz8gT3IgYWRkDQo+IHBhcmFtZXRlcj8NCj4gPiAyLiBOZXcgYWNjZWxk ZXYgQVBJcyBmb3IgZGV2aWNlIGhhbmRsaW5nICsgY29tcHJlc3NkZXYgQVBJcyBmb3IgZGF0YSBw YXRoOg0KPiA+ICAgICB+NzAlIG9mIGNyeXB0b2RldiBjb2RlIGlzIGRldmljZS1oYW5kbGluZyB3 aGljaCBpcyBjb21tb24gdG8gYWxsIGFjY2VsZXJhdG9ycy4NCj4gPiAgICAgUmF0aGVyIHRoYW4g cHJvdmlkaW5nIG5ldyBjb21wcmVzc2RldiBBUElzLCBwcm92aWRlIEFQSXMgd2hpY2ggY2FuIGJl IHVzZWQgZm9yIGNvbXByZXNzaW9uDQo+ID4gICAgIGFuZCBhbHNvIG90aGVyIGFjY2VsZXJhdG9y cywgZS5nLiBiYmRldiwgRlBHQXMuIFdvdWxkIGxvb2sgbGlrZSBydGVfYWNjZWxkZXZfaW5mb19n ZXQoKSwNCj4gPiAgICAgcnRlX2FjY2VsZGV2X2NvbmZpZ3VyZSgpLCBydGVfY29tcHJlc3NfZW5x dWV1ZV9idXJzdCgpLCBldGMNCj4gPiAgICAgLiArIE5pY2UgZnV0dXJlIGNvZGUgcmUtdXNlLg0K PiA+ICAgICAuICsgTm8gY3J5cHRvZGV2IEFQSSBicmVha2FnZSwgdGhvdWdoIHdvdWxkIGJlIG5p Y2Ugb3ZlciB0aW1lIHRvIG1vdmUgdG8gYWNjZWxkZXYgQVBJcyBmb3INCj4gPiAgICAgICAgICAg Y3J5cHRvZGV2IGFuZCBkZXByZWNhdGUgY3J5cHRvZGV2IEFQSXMuDQo+ID4gICAgIC4gLSBhY2Nl bGRldiBlaXRoZXIgaGFzIHRvIHVuZGVyc3RhbmQgc3RydWN0cyBmb3IgYWxsIHNlcnZpY2VzIHdp dGggcmVzdWx0aW5nIGRlcGVuZGVuY2llcyBPUg0KPiA+ICAgICAgICAgICAgIGl0J3MgaW5kZXBl bmRlbnQgd2l0aCBtaW5pbWFsIHR5cGUtY2hlY2tpbmcsIGxvdHMgb2Ygdm9pZCogYW5kIGNhc3Rp bmcuDQo+ID4gICAgIC4gLSBwb3RlbnRpYWwgQVBJIGNodXJuIGlmIHNlcnZpY2VzIGhhdmUgZGlm ZmVyZW50IG5lZWRzDQo+ID4gICAgIC4gLSB1c2FiaWxpdHkgLSBhcHBsaWNhdGlvbiBoYXMgdG8g c29tZXRpbWVzIHVzZSBhY2NlbGRldiwgc29tZXRpbWVzIGNvbXByZXNzZGV2DQo+ID4gMy4gTmV3 IGFjY2VsZGV2IGZvciBhbGwgQVBJczoNCj4gPiAgICAgLiBBcyAyIGJ1dCB3aXRoIG9ubHkgdGhl IHhmb3JtcyBhbmQgb3BzIGRpZmZlcmVudCBmb3IgZWFjaCBzZXJ2aWNlLiBBbGwgQVBJcyBhcmUg cnRlX2FjY2VsZGV2Xy4uLi4NCj4gPiAgICAgLiBTaW1pbGFyIHByb3MvY29ucy4NCj4gPiAgICAg LiAtIE5vIGZsZXhpYmlsaXR5IGZvciBhY2NlbGVyYXRvcnMgc2VydmljZXMgdG8gaGF2ZSBzZXJ2 aWNlLXNwZWNpZmljIEFQSXMuIFNlcnZpY2VzIGFyZSBtb3JlIHRpZ2h0bHkNCj4gY291cGxlZC4N Cj4gPiA0LiBOZXcgY29tcHJlc3NkZXYgQVBJOiAocG9zc2libHkgd2l0aCBhbiBhY2NlbGRldiB1 bmRlciB0aGUgaG9vZCkNCj4gPiAgICAgLiArIEJldHRlciBuYW1lDQo+ID4gICAgIC4gKyBVc2Fi aWxpdHkgLSBydGVfY29tcGRldl8uLi4gZm9yIGV2ZXJ5dGhpbmcNCj4gPiAgICAgLiArIE5vIGNy eXB0b2RldiBBUEkgYnJlYWthZ2UNCj4gPiAgICAgLiArIEZsZXhpYmlsaXR5IHRvIGFkZCBhbnkg Y29tcHJlc3Npb24tc3BlY2lmaWMgQVBJcyBpZiBuZWVkZWQuDQo+ID4gICAgIC4gKyBTaW1wbGVy LCBtb3JlIGRlY291cGxlZCBjb2RlDQo+ID4gICAgIC4gLSBNb3JlIGNvZGUgZHVwbGljYXRpb24u DQo+ID4gICAgICAgICAgIE1heSBpbiBhIGxhdGVyIGl0ZXJhdGlvbiBpbXBsZW1lbnQgYW4gYWNj ZWxkZXYgdW5kZXIgdGhlIGhvb2QsIGZvciBjb2RlIHJlLXVzZSwgYnV0DQo+ID4gICAgICAgICAg IHRoaXMgaXMgaGlkZGVuIGZyb20gYXBwbGljYXRpb25zLiBTZXJ2aWNlIEFQSXMgY291bGQgcGlj ayBhbmQgY2hvb3NlIHdoYXRldmVyIG1ha2VzIHNlbnNlDQo+ID4gICAgICAgICAgIGZyb20gYWNj ZWxkZXYuIFBPQyBvbiB0aGlzIGluLXByb2dyZXNzLCBhbHNvIGF3YWl0aW5nIEhlbWFudCBBZ3Jh d2FsJ3MgcHJvcG9zZWQNCj4gPiAgICAgICAgICAgcnRlX3Jhd19kZXZpY2UgUkZDLCB3aGljaCBt YXkgZml0IHRoZSBhY2NlbGRldiByb2xlLg0KPiA+DQo+ID4gTm90ZSA0OiBDaGFpbmluZyBvZiBj b21wcmVzc2lvbiB3aXRoIG90aGVyIHNlcnZpY2VzLg0KPiA+ICAgICBPcHRpb24gMSB3b3VsZCBt YWtlIGl0IGVhc3kgdG8gY2hhaW4gY29tcHJlc3Npb24gd2l0aCBzeW0gY3J5cHRvLiBUaG91Z2gg bm90IHdpdGggb3RoZXIgbm9uLQ0KPiBjcnlwdG8NCj4gPiAgICAgb3BlcmF0aW9ucyBpZiB0aGlz IGlzIGEgZnV0dXJlIHVzZS1jYXNlLiBIb3dldmVyIGl0IGNhbiBiZSBhY2hpZXZlZCB3aXRoIGFu eSBvcHRpb24sIGZvbGxvd2luZyB0aGUNCj4gcGF0dGVybg0KPiA+ICAgICBvZiBydGVfc2VjdXJp dHkgQVBJLCBzbyBpcyBub3QgYSBmYWN0b3IgaW4gYWJvdmUgZGVjaXNpb24uDQo+ID4NCj4gDQo+ IFdlIGFyZSBpbiBmYXZvciBvZiBzb2x1dGlvbiAjNC4gQXBhcnQgZnJvbSByZWFzb25zIGFzIHlv dSBzdGF0ZWQsDQo+IG5hdHVyZSBvZiBib3RoIG9wZXJhdGlvbnMgYXJlIHZlcnkgZGlmZmVyZW50 IGFuZCBpdCBhZGQgbG90cyBvZg0KPiBjb21wbGV4aXR5IHRvIGJvdGggZW5kcyAoY3J5cHRvICsg Y29tcHJlc3Npb24pIHRvIGNvLWV4aXN0IHdpdGgNCj4gZGlmZmVyZW50IGJlaGF2aW9yLg0KPiBI b3dldmVyIEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQgYWNjZWxkZXYgcHJv cG9zYWw/IElzDQo+IHRoZXJlIGFueSBkb2N1bWVudCB0aGF0IEkgY2FuIHNlZSB0byB1bmRlcnN0 YW5kcyBpdHMgcHVycG9zZT8NCg0KW0Zpb25hXSBOb3QgYXQgdGhlIG1vbWVudC4NCldlJ2QgbGlr ZSB0byB3YWl0IGZvciBIZW1hbnQncyBydGVfcmF3X2RldmljZXMgUkZDIGJlZm9yZSBtYWtpbmcg YSBwcm9wb3NhbCBvbiB0aGlzLg0KDQo+IA0KPiA+DQo+ID4NCj4gPiBDb2RlIGV4dHJhY3RzIGJl bG93Og0KPiA+DQo+ID4NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NvbXByZXNz ZGV2L3J0ZV9jb21wLmggYi9saWIvbGlicnRlX2NvbXByZXNzZGV2L3J0ZV9jb21wLmgNCj4gPiAr LyoqDQo+ID4gKyAqIEBmaWxlIHJ0ZV9jb21wLmgNCj4gPiArICoNCj4gPiArICogUlRFIGRlZmlu aXRpb25zIGZvciBEYXRhIENvbXByZXNzaW9uIFNlcnZpY2UNCj4gPiArICoNCj4gPiArICovDQo+ ID4gKw0KPiA+ICsvKiogQ29tcHJlc3Npb24gQWxnb3JpdGhtcyAqLw0KPiA+ICtlbnVtIHJ0ZV9j b21wX2FsZ29yaXRobSB7DQo+ID4gKyAgICAgIFJURV9DT01QX05VTEwgPSAxLA0KPiA+ICsgICAg ICAvKio8IE5VTEwgY29tcHJlc3Npb24gYWxnb3JpdGhtLiAqLw0KPiA+ICsgICAgICBSVEVfQ09N UF9ERUZMQVRFLA0KPiA+ICsgICAgICAvKio8IERFRkxBVEUgY29tcHJlc3Npb24gYWxnb3JpdGht DQo+ID4gKyAgICAgICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzE5NTEgKi8NCj4g PiArICAgICAgUlRFX0NPTVBfTElTVF9FTkQNCj4gPiArfTsNCj4gPiArDQo+IA0KPiBXZSBzdXBw b3J0IExaUyBvZmZsb2FkIGFzIHdlbGwsIG5lZWQgdG8gZXh0ZW5kIHdpdGggUlRFX0NPTVBfTFpT Lg0KDQpbRmlvbmFdIEFncmVlZC4gRG8geW91IHNlZSBhbnkgbmVlZCBmb3IgbHpzLXNwZWNpZmlj IHBhcmFtZXRlcnM/IGkuZS4gaXMgdGhlcmUgYQ0KIG5lZWQgZm9yIGEgc3RydWN0IHJ0ZV9jb21w X2x6c19wYXJhbXMgYW5kLCBpZiBzbywgd2hhdCBzaG91bGQgaXQgY29udGFpbj8NCg0KPiANCj4g PiArDQo+ID4gKy8qKiBDb21wcmVzc2lvbiBjaGVja3N1bSB0eXBlcyAqLw0KPiA+ICtlbnVtIHJ0 ZV9jb21wX2NoZWNrc3VtX3R5cGUgew0KPiA+ICsgICAgICBSVEVfQ09NUF9OT05FLA0KPiA+ICsg ICAgICAvKio8IE5vIGNoZWNrc3VtIGdlbmVyYXRlZCAqLw0KPiA+ICsgICAgICBSVEVfQ09NUF9D UkMzMiwNCj4gPiArICAgICAgLyoqPCBHZW5lcmF0ZXMgYSBDUkMzMiBjaGVja3N1bSwgYXMgdXNl ZCBieSBnemlwICovDQo+ID4gKyAgICAgIFJURV9DT01QX0FETEVSMzIsDQo+ID4gKyAgICAgIC8q KjwgR2VuZXJhdGVzIGFuIEFkbGVyLTMyIGNoZWNrc3VtLCBhcyB1c2VkIGJ5IHpsaWIgKi8NCj4g PiArICAgICAgUlRFX0NPTVBfQ1JDMzJfQURMRVIzMiwNCj4gPiArICAgICAgLyoqPCBHZW5lcmF0 ZXMgYm90aCBBZGxlci0zMiBhbmQgQ1JDMzIgY2hlY2tzdW1zLCBjb25jYXRlbmF0ZWQuDQo+ID4g KyAgICAgICogQ1JDMzIgaXMgaW4gdGhlIGxvd2VyIDMyYml0cywgQWRsZXItMzIgaW4gdGhlIHVw cGVyIDMyIGJpdHMuDQo+ID4gKyAgICAgICovDQo+ID4gK307DQo+ID4gKw0KPiANCj4gSW4gYWRk aXRpb24gdG8gdGhlc2Ugd2Ugc3VwcG9ydCBTSEExIGFuZCBTSEEyNTYuDQo+IFRvIGluY29ycG9y YXRlIHRoZXNlLCB3ZSBzdWdnZXN0IHRoZSBmb2xsb3dpbmc6DQo+IA0KPiBlbnVtIHJ0ZV9jb21w X2ludGVncml0eV9hbGdvIHsNCj4gICAgUlRFX0NPTVBfTk9ORSwNCj4gICAgUlRFX0NPTVBfQ1JD MzIsDQo+ICAgIFJURV9DT01QX0FETEVSMzIsDQo+ICAgIFJURV9DT01QX0NSQzMyX0FETEVSMzIs DQo+ICAgIFJURV9DT01QX1NIQTEsDQo+ICAgIFJURV9DT01QX1NIQTI1NiwNCj4gfTsNCg0KW0Zp b25hXSBDYW4geW91IGVsYWJvcmF0ZSBvbiB3aHkgdGhlc2UgYXJlIG5lZWRlZCBpbiB0aGUgY29t cHJlc3Npb24gY29udGV4dD8NCldpdGggbGVuZ3RocyBvZiAyMCBhbmQgMzIgYnl0ZXMgdGhleSBh ZGQgY29uc2lkZXJhYmxlIG92ZXJoZWFkIHRvIHNtYWxsZXIgcGFja2V0cy4NCkhvdyBkbyB5b3Ug cHJvcG9zZSB0byByZXR1cm4gdGhlIGNoZWNrc3VtPyBUaGUgb3RoZXJzIHByb3Bvc2VkIGFsbCBm aXQgaW50byBhbiA4LWJ5dGUNCmZpZWxkIGluIHRoZSBvcC4gDQoNCj4gDQo+ID4gKw0KPiA+ICsv KiogQ29tcHJlc3Npb24gRGVmbGF0ZSBIdWZmbWFuIFR5cGUgKi8NCj4gPiArZW51bSBydGVfY29t cF9odWZmbWFuIHsNCj4gPiArICAgICAgUlRFX0NPTVBfU1RBVElDLA0KPiA+ICsgICAgICAvKio8 IFN0YXRpYyBlbmNvZGluZyAqLw0KPiA+ICsgICAgICBSVEVfQ09NUF9EWU5BTUlDLA0KPiA+ICsg ICAgICAvKio8IER5bmFtaWMgZW5jb2RpbmcgKi8NCj4gPiArfTsNCj4gPiArDQo+IA0KPiBXZSB3 b3VsZCBsaWtlIHRvIHNlZSBhIFJURV9DT01QX0RFRkFVTFQgZm9yIHNpdHVhdGlvbnMgd2hlcmUN Cj4gYXBwbGljYXRpb24gY2Fubm90IG1ha2UgYSBjaG9pY2UuIEFsc28sIFRvIGJlIG1vcmUgY29u c2lzdGVudCB0bw0KPiBuYW1pbmcgYW5kIGRlZmxhdGUgUkZDMTk1MSwgc2hvdWxkIGJlIHJlbmFt ZWQgYXMgUlRFX0NPTVBfRklYRUQgYW5kDQo+IFJURV9DT01QX0RZTkFNSUMuDQoNCltGaW9uYV0g QWdyZWVkDQo+IA0KPiA+ICsvKiogQ29tcHJlc3Npb24gaW50ZWdyaXR5IGNoZWNrICovDQo+ID4g K2VudW0gcnRlX2NvbXBfaW50ZWdyaXR5X2NoZWNrIHsNCj4gPiArICAgICAgUlRFX0NPTVBfTk9f VkVSSUZZLA0KPiA+ICsgICAgICAvKio8IE5vIGludGVncml0eSBjaGVjayBvbiBvdXRwdXQgZGF0 YSAqLw0KPiA+ICsgICAgICBSVEVfQ09NUF9WRVJJRlksDQo+ID4gKyAgICAgIC8qKjwgSW50ZWdy aXR5IGNoZWNrIG9uIG91dHB1dCBkYXRhLiBPbmx5IGFwcGxpZXMgdG8gY29tcHJlc3Mgb3BlcmF0 aW9uLg0KPiA+ICsgICAgICAqIEFmdGVyIGNvbXByZXNzIG9wZXJhdGlvbiBkb25lLCBkZWNvbXBy ZXNzIGFuZCB2ZXJpZnkgaXQgbWF0Y2hlcyBvcmlnaW5hbCBkYXRhLg0KPiA+ICsgICAgICAqLw0K PiANCj4gVGhpcyBsb29rcyBtb3JlIHRvIG1lIGFzIGRpYWdub3N0aWMgdG9vbCAvIHRlc3QgYXBw Li4gSXQgc2hvdWxkIGJlDQo+IHBhcnQgb2YgYW4gQXBwbGljYXRpb24gdGhhbiBhIGxpYnJhcnkN CltGaW9uYV0NCklmIG9ubHkgYSBkaWFnbm9zdGljIHRvb2wgdGhlbiB5ZXMsIGl0IG5lZWRuJ3Qg YmUgb24gdGhlIEFQSS4NCkhvd2V2ZXIsIGRhdGEgaW50ZWdyaXR5IGlzIGEgY3JpdGljYWwgcmVx dWlyZW1lbnQgZm9yIGxvc3NsZXNzIGNvbXByZXNzaW9uLiBJdCBpcyBleHRyZW1lbHkgZGlmZmlj dWx0IHRvDQpmdWxseSB2YWxpZGF0ZSBhbnkgY29tcHJlc3Npb24gaW1wbGVtZW50YXRpb24gZHVl IHRvIHRoZSBpbmZpbml0ZSB2YXJpZXR5IG9mIGlucHV0IGRhdGEgcGF0dGVybnMgYW5kDQp0aGUg ZmFjdCB0aGF0IHRoZXJlIGFyZSBtYW55IHBvc3NpYmxlIG91dHB1dHMgZm9yIGFueSBnaXZlbiBp bnB1dC4NClNvIGFwcGxpY2F0aW9ucyBzb21ldGltZXMgYnVpbGQgdmVyaWZpY2F0aW9uIGludG8g dGhlIHN5c3RlbS4NClRoaXMgY291bGQgYmUgZG9uZSBieSB0aGUgYXBwbGljYXRpb24sIGFib3Zl IHRoZSBBUEksIGJ1dCBhcyBpcyBjb21wdXRlIGludGVuc2l2ZSBpdCBjYW4gYWxzbw0KYmVuZWZp dCBmcm9tIG9mZmxvYWRpbmcgdG8gaGFyZHdhcmUuIEFuZCBzYXZlcyBQQ0kgYmFuZHdpZHRoIGlm IGRvbmUgaW4gc2FtZSBvcGVyYXRpb24gYXMNCmNvbXByZXNzaW9uLiAgU28gd2Ugd291bGQgbGlr ZSB0byBoYXZlIHRoaXMgb3B0aW9uIG9uIHRoZSBBUEkuIA0KQXMgd2l0aCBhbnkgb3B0aW9uIHdl IHNob3VsZCBhbHNvIGV4cG9zZSBpdCBvbiB0aGUgY2FwYWJpbGl0aWVzIEFQSSBhbmQgUE1EcyBj YW4gc2lnbmFsIHRvIHRoZQ0KYXBwbGljYXRpb24gd2hldGhlciBvciBub3QgdGhleSBzdXBwb3J0 IGl0Lg0KIA0KDQo+IA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSBydGVfY29tcF9mbHVzaF9m bGFnIHsNCj4gPiArICAgICAgUlRFX0NPTVBfRkxVU0hfTk9ORSwNCj4gPiArICAgICAgLyoqPCBU T0RPICovDQo+ID4gKyAgICAgIFJURV9DT01QX0ZMVVNIX0ZVTEwsDQo+ID4gKyAgICAgIC8qKjwg VE9ETyAqLw0KPiA+ICsgICAgICBSVEVfQ09NUF9GTFVTSF9GSU5BTA0KPiA+ICsgICAgICAvKio8 IFRPRE8gKi8NCj4gPiArfTsNCj4gPiArDQo+IA0KPiBXZSBuZWVkIHRvIGFkZCBSVEVfQ09NUF9G TFVTSF9TWU5DLg0KPiAgQWxzbywgdGhlcmUgY291bGQgYmUgc29tZSBhbGdvcml0aG1zIHdoZXJl IHRoZXNlIEZMVVNIIHR5cGUgbWF5IG5vdA0KPiBiZSAgIHJlbGV2YW50IG9yIG5vdCBhbGwgbWF5 IGJlIHN1cHBvcnRlZCAsIHNvIHdoYXQgYXJlIFBNRA0KPiBleHBlY3RhdGlvbnMgZm9yIHN1Y2gg ICBjYXNlPw0KW0Zpb25hXSBMZXQncyBob2xkIHRoZSBkaXNjdXNzaW9uIG9mIGZsdXNoIGZsYWcg dmFsdWVzIHVudGlsIHdlIHRhbGsgYWJvdXQgc3RhdGVmdWwgY29tcHJlc3Npb24uDQpJZiBhIFBN RCBkb2Vzbid0IHN1cHBvcnQgYSBmbHVzaCBmbGFnIHZhbHVlIHdlIHNob3VsZCBwcm92aWRlIGZv ciB0aGlzIHRvIGJlIHNpZ25hbGxlZA0Kb24gdGhlIGNhcGFiaWxpdGllcyBBUEkuDQoNCj4gDQo+ ID4gKw0KPiA+ICsvKiogU3RhdHVzIG9mIGNvbXByZXNzaW9uIG9wZXJhdGlvbiAqLw0KPiA+ICtl bnVtIHJ0ZV9jb21wX29wX3N0YXR1cyB7DQo+ID4gKyAgICAgIFJURV9DT01QX09QX1NUQVRVU19T VUNDRVNTLA0KPiA+ICsgICAgICAvKio8IE9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 ICovDQo+ID4gKyAgICAgIFJURV9DT01QX09QX1NUQVRVU19OT1RfUFJPQ0VTU0VELA0KPiA+ICsg ICAgICAvKio8IE9wZXJhdGlvbiBoYXMgbm90IHlldCBiZWVuIHByb2Nlc3NlZCBieSB0aGUgZGV2 aWNlICovDQo+ID4gKyAgICAgIFJURV9DT01QX09QX1NUQVRVU19JTlZBTElEX1NFU1NJT04sDQo+ ID4gKyAgICAgIC8qKjwgb3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gaW52YWxpZCBzZXNzaW9uIGFy Z3VtZW50cyAqLw0KPiA+ICsgICAgICBSVEVfQ09NUF9PUF9TVEFUVVNfSU5WQUxJRF9BUkdTLA0K PiA+ICsgICAgICAvKio8IE9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIGludmFsaWQgYXJndW1lbnRz IGluIHJlcXVlc3QgKi8NCj4gPiArICAgICAgUlRFX0NPTVBfT1BfU1RBVFVTX0VSUk9SLA0KPiA+ ICsgICAgICAvKio8IEVycm9yIGhhbmRsaW5nIG9wZXJhdGlvbiAqLw0KPiA+ICsgICAgICBSVEVf Q09NUF9PUF9TVEFUVVNfT1ZFUkZMT1csDQo+IA0KPiBJZiBJIHVuZGVyc3RhbmQgdGhlIHB1cnBv c2UgY29ycmVjdGx5IHRoZW4gdGhpcyBpbmRpY2F0ZXMgYQ0KPiBzaXR1YXRpb24gd2hlcmUgb3V0 cHV0IGJ1ZmZlciBleGhhdXN0ZWQgZHVyaW5nDQo+IGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24u DQo+IFNvIGl0IHNob3VsZCBiZSByZW5hbWVkIGFzIFJURV9DT01QX09QX1NUQVRVU19PVVRfT0Zf U1BBQ0UNCltGaW9uYV0gQWdyZWVkLg0KDQo+IA0KPiA+ICsgICAgICAvKio8IE91dHB1dCBidWZm ZXIgZmlsbGVkIHVwIGJlZm9yZSBhbGwgZGF0YSBpbiBpbnB1dCBidWZmZXIgd2FzIGNvbnN1bWVk ICovDQo+IA0KPiBUaGlzIGNvdWxkIGFsc28gYXJpc2Ugd2hlcmUgaW5wdXQgYnVmZmVyIGlzIGZ1 bGx5IGNvbnN1bWVkIGR1cmluZw0KPiBkZWNvbXByZXNzaW9uLiBTbyBjb21tZW50IGNhbiBiZSBt b3JlIGdlbmVyaWMgc3VjaCBhcw0KPiDigJxPdXRwdXQgYnVmZmVyIGV4aGF1c3RlZCBkdXJpbmcg b3BlcmF0aW9uLuKAnQ0KW0Zpb25hXSBJbiB0aGlzIGNhc2UgSSB3b3VsZCBleHBlY3QgdGhlIHN0 YXR1cyB0byBiZSBSVEVfQ09NUF9PUF9TVEFUVVNfU1VDQ0VTUy4NClRoZSBjb25zdW1lZCBwYXJh bWV0ZXIgY2FuIGJlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRvIGRldGVjdCB0aGF0IGl0IGhh cw0KY29tZSB0byB0aGUgZW5kIG9mIHRoZSBvdXRwdXQgYnVmZmVyLg0KDQogDQo+ID4gKyAgICAg IFJURV9DT01QX09QX1NUQVRVU19WRVJJRllfRkFJTEVEDQo+ID4gKyAgICAgIC8qKjwgRGVjb21w cmVzc2lvbiBhZnRlciBjb21wcmVzc2lvbiBmYWlsZWQgdG8gcmVnZW5lcmF0ZSBvcmlnaW5hbCBk YXRhICovDQo+IA0KPiBCZWxpZXZlIGl0IGlzbid0IG5lZWRlZCB0byBiZSBwYXJ0IG9mIFNwZWMu DQo+IA0KPiA+ICsNCj4gPiArICAgICAgLy9Ob3RlOg0KPiA+ICsgICAgICAvL1FBVCBBUEkgaGFz IDE5IGVycm9yIHR5cGVzLg0KPiA+ICsgICAgICAvL0lTQS1sIGhhcyA1IGluZmxhdGUgYW5kIDYg ZGVmbGF0ZSBlcnJvcnMuDQo+ID4gKyAgICAgIC8vemxpYiBoYXMgNiBlcnJvcnMNCj4gPiArICAg ICAgLy9Qcm9wb3NlIG9ubHkgaW5jbHVkZSBjb21tb24gc3Vic2V0IGluIHN0YXR1cyAtIG9ubHkg dmFsdWVzIHdoZXJlIGFwcGwgc2hvdWxkIGhhdmUgZGlmZmVyZW50DQo+IGJlaGF2aW91ci4NCj4g PiArICAgICAgLy9BZGQgc2VwYXJhdGUgZXJyb3IgZmllbGQgb24gb3AgcmV0dXJuIHdoaWNoIGEg UE1EIGNvdWxkIHBvcHVsYXRlIHdpdGggUE1ELXNwZWNpZmljIGRlYnVnDQo+IGluZm8uDQo+IA0K PiBQcm9iYWJseSBzaG91bGQgYWRkIFJURV9DT01QX09QX1NUQVRVU19JTlZBTElEX1NUQVRFIGlu IGNhc2UgYW4NCj4gQVBJIGlzIGludm9rZWQgaW4gaW52YWxpZCBzdGF0ZS4NCltGaW9uYV0gQWdy ZWVkDQoNCj4gUmVzdCBTdWJzZXQgbG9va3Mgc2VsZi1jb250YWluZWQuDQo+IA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArDQo+ID4gKy8qKiBDb21wcmVzc2lvbiB0cmFuc2Zvcm0gdHlwZXMgKi8NCj4g PiArZW51bSBydGVfY29tcF94Zm9ybV90eXBlIHsNCj4gPiArICAgICAgUlRFX0NPTVBfQ09NUFJF U1MsDQo+ID4gKyAgICAgIC8qKjwgQ29tcHJlc3Npb24gc2VydmljZSAtIGNvbXByZXNzICovDQo+ ID4gKyAgICAgIFJURV9DT01QX0RFQ09NUFJFU1MsDQo+ID4gKyAgICAgIC8qKjwgQ29tcHJlc3Np b24gc2VydmljZSAtIGRlY29tcHJlc3MgKi8NCj4gPiArICAgICAgUlRFX0NPTVBfQ0hFQ0tTVU0N Cj4gPiArICAgICAgLyoqIENvbXByZXNzaW9uIHNlcnZpY2UgLSBnZW5lcmF0ZSBjaGVja3N1bSAq Lw0KPiA+ICt9Ow0KPiA+ICsNCj4gDQo+IEVudW1lcmF0aW9uIG1heSBiZSByZW5hbWVkIGFzIHJ0 ZV9jb21wX29wX3R5cGUNCltGaW9uYV0gU2VlIGFuc3dlciByZSB4Zm9ybXMgYmVsb3cuDQoNCj4g DQo+ID4gKy8qKiBQYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBkZWZsYXRlIGFsZ29yaXRobSAq Lw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfZGVmbGF0ZV9wYXJhbXMgew0KPiA+ICsgICAgICBlbnVt IHJ0ZV9jb21wX2h1ZmZtYW4gaHVmZm1hbjsNCj4gPiArICAgICAgLyoqPCBDb21wcmVzc2lvbiBo dWZmbWFuIGVuY29kaW5nIHR5cGUgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiBTZXNzaW9uIFNldHVwIERhdGEgY29tbW9uIHRvIGFsbCBjb21wcmVzcyB0cmFuc2Zvcm1zLg0K PiA+ICsgKiBJbmNsdWRlcyBwYXJhbWV0ZXJzIGNvbW1vbiB0byBzdGF0ZWxlc3MgYW5kIHN0YXRl ZnVsDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY29tcHJlc3NfY29tbW9uX3BhcmFt cyB7DQo+ID4gKyAgICAgIGVudW0gcnRlX2NvbXBfYWxnb3JpdGhtIGFsZ287DQo+ID4gKyAgICAg IC8qKjwgQWxnb3JpdGhtIHRvIHVzZSBmb3IgY29tcHJlc3Mgb3BlcmF0aW9uICovDQo+ID4gKyAg ICAgIHVuaW9uIHsNCj4gPiArICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2RlZmxhdGVfcGFy YW1zIGRlZmxhdGU7DQo+ID4gKyAgICAgICAgICAgIC8qKjwgUGFyYW1ldGVycyBzcGVjaWZpYyB0 byB0aGUgZGVmbGF0ZSBhbGdvcml0aG0gKi8NCj4gPiArICAgICAgfTsgLyoqPCBBbGdvcml0aG0g c3BlY2lmaWMgcGFyYW1ldGVycyAqLw0KPiA+ICsgICAgICB1aW50OF90IGxldmVsOw0KPiA+ICsg ICAgICAvKio8IENvbXByZXNzaW9uIGxldmVsDQo+ID4gKyAgICAgICogUmFuZ2UgaXMgMS05LCB3 aGVyZSAxIGlzIGZhc3Rlc3QgY29tcHJlc3Npb24NCj4gPiArICAgICAgKiBidXQgd29yc3QsIGku ZS4gaGlnaGVzdCwgY29tcHJlc3Npb24gcmF0aW8uDQo+ID4gKyAgICAgICogSGlnaGVyIG51bWJl cnMgbWF5IGdpdmUgYmV0dGVyIGNvbXByZXNzaW9uIHJhdGlvcyBhbmQgYXJlIGxpa2VseSBzbG93 ZXIuDQo+ID4gKyAgICAgICogVGhlIG51bWJlciBpcyBpbnRlcnByZXRlZCBieSBlYWNoIFBNRCBk aWZmZXJlbnRseS4NCj4gPiArICAgICAgICovDQo+IA0KPiBEaWZmZXJlbnQgaW1wbGVtZW50YXRp b25zIG9mIHNhbWUgYWxnbyBtYXkgaGF2ZSBkaWZmZXJlbnQgbGV2ZWxzDQo+IHN1cHBvcnRlZC4g U28sIHdlIGNhbiBhZGQgZW51bSBhbG9uZ3NpZGUgdGhpcyBwYXJhbWV0ZXIgc3VjaCBhczoNCj4g DQo+IGVudW0gcnRlX2NvbXBfY29tcHJlc3Npb25fbGV2ZWwgew0KPiBSVEVfQ09NUF9DT01QUkVT U0lPTl9MRVZFTF9ERUZBVUxUPTAsDQo+IC8qKiBVc2UgUE1EIERlZmF1bHQgKi8NCj4gUlRFX0NP TVBfQ09NUFJFU1NJT05fTEVWRUxfTUlOPTEsDQo+IC8qKiBGYXN0ZXN0IENvbXByZXNzaW9uICov DQo+IFJURV9DT01QX0NPTVBSRVNTSU9OX0xFVkVMX01BWD05DQo+IC8qKiBNYXhpbXVtIGxldmVs IHN1cHBvcnRlZCBieSBjb21wcmVzc2lvbiBQTUQgKi8NCj4gfQ0KW0Zpb25hXSBBZ3JlZWQuDQoN Cj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogU2Vzc2lvbiBTZXR1cCBEYXRh IGZvciBzdGF0ZWZ1bCBjb21wcmVzcyB0cmFuc2Zvcm0uDQo+ID4gKyAqIEV4dHJhIHBhcmFtcyBm b3Igc3RhdGVmdWwgdHJhbnNmb3JtDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfY29t cHJlc3Nfc3RhdGVmdWxfcGFyYW1zIHsNCj4gPiArICAgICAgLy9UT0RPIDogYWRkIGV4dHJhIHBh cmFtcyBqdXN0IG5lZWRlZCBmb3Igc3RhdGVmdWwsIGUuZy4NCj4gPiArICAgICAgLy8gaGlzdG9y eSBidWZmZXIgc2l6ZSwgd2luZG93IHNpemUsIHN0YXRlLCBzdGF0ZSBidWZmZXJzLCBldGMuLi4/ DQo+IA0KPiBJIHdpbGwgcHJvdmlkZSBteSBjb21tZW50cyBvbiBpdCBpbiBhbm90aGVyIGVtYWls Lg0KPiANCj4gPiArfTsNCj4gPiArLyogU2Vzc2lvbiBTZXR1cCBEYXRhIGZvciBjb21wcmVzcyB0 cmFuc2Zvcm0uICovDQo+ID4gK3N0cnVjdCBydGVfY29tcF9jb21wcmVzc194Zm9ybSB7DQo+ID4g KyAgICAgIHN0cnVjdCBydGVfY29tcF9jb21wcmVzc19jb21tb25fcGFyYW1zIGNtbjsNCj4gPiAr ICAgICAgc3RydWN0IHJ0ZV9jb21wX2NvbXByZXNzX3N0YXRlZnVsX3BhcmFtcyBzdGF0ZWZ1bDsN Cj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBTZXNzaW9uIFNldHVwIERhdGEgY29t bW9uIHRvIGFsbCBkZWNvbXByZXNzIHRyYW5zZm9ybXMuDQo+ID4gKyAqIEluY2x1ZGVzIHBhcmFt ZXRlcnMgY29tbW9uIHRvIHN0YXRlbGVzcyBhbmQgc3RhdGVmdWwNCj4gPiArICovDQo+ID4gK3N0 cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX2NvbW1vbl9wYXJhbXMgew0KPiA+ICsgICAgICBlbnVt IHJ0ZV9jb21wX2FsZ29yaXRobSBhbGdvOw0KPiA+ICsgICAgICAvKio8IEFsZ29yaXRobSB0byB1 c2UgZm9yIGRlY29tcHJlc3Npb24gKi8NCj4gPiArfTsNCj4gPiArLyoqDQo+ID4gKyAqICBTZXNz aW9uIFNldHVwIERhdGEgZm9yIGRlY29tcHJlc3MgdHJhbnNmb3JtLg0KPiA+ICsgKiBFeHRyYSBw YXJhbXMgZm9yIHN0YXRlZnVsIHRyYW5zZm9ybQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHJ0ZV9j b21wX2RlY29tcHJlc3Nfc3RhdGVmdWxfcGFyYW1zIHsNCj4gPiArICAgICAgLy9UT0RPIDogYWRk IGV4dHJhIHBhcmFtcyBqdXN0IG5lZWRlZCBmb3Igc3RhdGVmdWwsIGUuZy4NCj4gPiArICAgICAg Ly8gaGlzdG9yeSBidWZmZXIgc2l6ZSwgd2luZG93IHNpemUsIHN0YXRlLCBzdGF0ZSBidWZmZXJz LCBldGMuLi4/DQo+ID4gK307DQo+ID4gKy8qIFNlc3Npb24gU2V0dXAgRGF0YSBmb3IgZGVjb21w cmVzcyB0cmFuc2Zvcm0uICovDQo+ID4gK3N0cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX3hmb3Jt IHsNCj4gPiArICAgICAgc3RydWN0IHJ0ZV9jb21wX2RlY29tcHJlc3NfY29tbW9uX3BhcmFtcyBj bW47DQo+ID4gKyAgICAgIHN0cnVjdCBydGVfY29tcF9kZWNvbXByZXNzX3N0YXRlZnVsX3BhcmFt cyBzdGF0ZWZ1bDsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiAgR2VuZXJhdGUg Y2hlY2tzdW0gb24gdW5jb21wcmVzc2VkIGRhdGEuDQo+ID4gKyAqIEFwcGxpZXMgdG8gYm90aCBj b21wcmVzcyBhbmQgZGVjb21wcmVzcyBvcGVyYXRpb25zLiAqLw0KPiA+ICsvKiBTZXNzaW9uIFNl dHVwIERhdGEgZm9yIGNoZWNrc3VtIHRyYW5zZm9ybS4gKi8NCj4gPiArc3RydWN0IHJ0ZV9jb21w X2NoZWNrc3VtX3hmb3JtIHsNCj4gPiArICAgICAgZW51bSBydGVfY29tcF9jaGVja3N1bV90eXBl IGNoa3N1bV90eXBlOw0KPiA+ICsgICAgICAvKio8IFRoaXMgcGFyYW1ldGVyIGRldGVybWluZXMg dGhlIGNoZWNrc3VtIHR5cGUgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogQ29tcHJlc3Npb24gdHJhbnNmb3JtIHN0cnVjdHVyZS4NCj4gPiArICoNCj4gPiArICog VGhpcyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uIHRyYW5zZm9ybXMgcmVxdWly ZWQsIG11bHRpcGxlIHRyYW5zZm9ybXMNCj4gPiArICogY2FuIGJlIGNoYWluZWQgdG9nZXRoZXIg dG8gc3BlY2lmeSBhIGNoYWluIG9mIHRyYW5zZm9ybXMgc3VjaCBhcw0KPiA+ICsgKiBnZW5lcmF0 ZSBjaGVja3N1bSwgdGhlbiBjb21wcmVzcy4gRWFjaCB0cmFuc2Zvcm0gc3RydWN0dXJlIGNhbg0K PiA+ICsgKiBob2xkIGEgc2luZ2xlIHRyYW5zZm9ybSwgdGhlIHR5cGUgZmllbGQgaXMgdXNlZCB0 byBzcGVjaWZ5IHdoaWNoIHRyYW5zZm9ybQ0KPiA+ICsgKiBpcyBjb250YWluZWQgd2l0aGluIHRo ZSB1bmlvbi4NCj4gPiArICogVGhlIHN1cHBvcnRlZCBjb21iaW5hdGlvbnMgYXJlOg0KPiA+ICsg KiAgLSBjb21wcmVzcy1vbmx5DQo+ID4gKyAqICAtIGRlY29tcHJlc3Mtb25seQ0KPiA+ICsgKiAg LSBnZW5lcmF0ZSBjaGVja3N1bSBhbmQgY29tcHJlc3MgaW5wdXQgZGF0YQ0KPiA+ICsgKiAgLSBk ZWNvbXByZXNzIGlucHV0IGRhdGEsIGdlbmVyYXRlIGNoZWNrc3VtIG9uIG91dHB1dCBkYXRhDQo+ ID4gKyAqDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBfeGZvcm0gew0KPiA+ICsgICAg ICBzdHJ1Y3QgcnRlX2NvbXBfeGZvcm0gKm5leHQ7DQo+ID4gKyAgICAgIC8qKjwgbmV4dCB4Zm9y bSBpbiBjaGFpbiAqLw0KPiA+ICsgICAgICBlbnVtIHJ0ZV9jb21wX3hmb3JtX3R5cGUgdHlwZTsN Cj4gPiArICAgICAgLyoqPCB4Zm9ybSB0eXBlICovDQo+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiAr ICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2NvbXByZXNzX3hmb3JtIGNvbXByZXNzOw0KPiA+ ICsgICAgICAgICAgICAvKio8IHhmb3JtIGZvciBjb21wcmVzcyBvcGVyYXRpb24gKi8NCj4gPiAr ICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2RlY29tcHJlc3NfeGZvcm0gZGVjb21wcmVzczsN Cj4gPiArICAgICAgICAgICAgLyoqPCB4Zm9ybSBmb3IgZGVjb21wcmVzcyBvcGVyYXRpb24gKi8N Cj4gPiArICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX2NoZWNrc3VtX3hmb3JtIGNoa3N1bTsN Cj4gPiArICAgICAgICAgICAgLyoqPCB4Zm9ybSB0byBnZW5lcmF0ZSBjaGVja3N1bXMgKi8NCj4g DQo+IFdlIG5lZWQgY29tcHJlc3MrY2hlY2tzdW0oYW5kIGRlY29tcHJlc3MrY2hlY2tzdW0pIGFz IGEgc2luZ2xlIHhmb3JtDQo+IGluc3RlYWQgb2YgcmVxdWlyaW5nIDIgeGZvcm1zLiBUaGUgdXNl IG9mIHhmb3JtIGNoYWluIHdpbGwgaW50cm9kdWNlDQo+IG5lZWRsZXNzIG92ZXJoZWFkIGZvciB0 aGUgbW9zdCB0eXBpY2FsIHVzZS1jYXNlcyBvZiBjb21wK2NoZWNrc3VtKGFuZA0KPiBkZWNvbXAr Y2hlY2tzdW0pLg0KPiANCltGaW9uYV0gb2suIA0KSSBjYW4gbWVyZ2Ugc28gd2UganVzdCBoYXZl IGNvbXByZXNzICYgZGVjb21wcmVzcyB4Zm9ybXMgd2l0aCBhbiBpbnRlZ3JpdHkgKGNoZWNrc3Vt KSBwYXJhbS4NClNvIG5vdyBJIHNlZSB3aHkgeW91IHdhbnQgdG8gcmVuYW1lIHJ0ZV9jb21wX3hm b3JtX3R5cGUgYXMgcnRlX2NvbXBfb3BfdHlwZS4NCkNhbGxpbmcgaXQgLi5vcF90eXBlIHRob3Vn aCBpbXBsaWVzIGEgMToxIG1hcHBpbmcgYmV0d2VlbiB4Zm9ybSBhbmQgb3BlcmF0aW9uLA0Kc28g YXNzdW1lcyB0aGVyZSB3aWxsIG5ldmVyIGJlIGFueSBjaGFpbmVkIHhmb3Jtcy4gDQpJZiB0aGlz IGlzIHRoZSBjYXNlIHdlIHNob3VsZCBhbHNvIHJlbW92ZSB0aGUgKm5leHQgcGFyYW1ldGVyLg0K SSdkIGZvbGxvd2VkIHRoZSBjcnlwdG8geGZvcm0gY2hhaW4gcGF0dGVybiBpbiBjYXNlIGl0IHBy b3ZlcyBtb3JlIGV4dGVuZGFibGUgaW4gZnV0dXJlLA0KYnV0IGlmIHdlIGNhbid0IGZvcmVzZWUg YW55IGNhc2UgZm9yIGl0LCB0aGVuIHdlIHNob3VsZCBzaW1wbGlmeS4NCklmIHdlIGNob29zZSB0 byBrZWVwIHRoZSAqbmV4dCB0aGVuIHdlIHNob3VsZCBrZWVwIHRoZSBuYW1lIGFzIHJ0ZV9jb21w X3hmb3JtX3R5cGUuIA0KDQoNCj4gPiArICAgICAgfTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKw0K PiA+ICtzdHJ1Y3QgcnRlX2NvbXBfc2Vzc2lvbjsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBD b21wcmVzc2lvbiBPcGVyYXRpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgc3RydWN0dXJlIGNv bnRhaW5zIGRhdGEgcmVsYXRpbmcgdG8gcGVyZm9ybWluZyBhIGNvbXByZXNzaW9uDQo+ID4gKyAq IG9wZXJhdGlvbiBvbiB0aGUgcmVmZXJlbmNlZCBtYnVmIGRhdGEgYnVmZmVycy4NCj4gPiArICoN Cj4gPiArICogQWxsIGNvbXByZXNzaW9uIG9wZXJhdGlvbnMgYXJlIE91dC1vZi1wbGFjZSAoT09Q KSBvcGVyYXRpb25zLA0KPiA+ICsgKiBhcyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGRhdGEgaXMg ZGlmZmVyZW50IHRvIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBkYXRhLg0KPiA+ICsgKg0KPiA+ICsg KiBDb21wIG9wZXJhdGlvbnMgYXJlIGVucXVldWVkIGFuZCBkZXF1ZXVlZCBpbiBjb21wIFBNRHMg dXNpbmcgdGhlDQo+ID4gKyAqIHJ0ZV9jb21wZGV2X2VucXVldWVfYnVyc3QoKSAvIHJ0ZV9jb21w ZGV2X2RlcXVldWVfYnVyc3QoKSBBUElzDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBf b3Agew0KPiA+ICsgICAgICB1aW50OF90IHN0YXR1czsNCj4gPiArICAgICAgLyoqPA0KPiA+ICsg ICAgICAqIG9wZXJhdGlvbiBzdGF0dXMgLSB1c2UgdmFsdWVzIGZyb20gZW51bSBydGVfY29tcF9z dGF0dXMuDQo+ID4gKyAgICAgICogVGhpcyBpcyByZXNldCB0bw0KPiA+ICsgICAgICAqIFJURV9D T01QX09QX1NUQVRVU19OT1RfUFJPQ0VTU0VEIG9uIGFsbG9jYXRpb24gZnJvbSBtZW1wb29sIGFu ZA0KPiA+ICsgICAgICAqIHdpbGwgYmUgc2V0IHRvIFJURV9DT01QX09QX1NUQVRVU19TVUNDRVNT IGFmdGVyIG9wZXJhdGlvbg0KPiA+ICsgICAgICAqIGlzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQg YnkgYSBQTUQNCj4gPiArICAgICAgKi8NCj4gPiArICAgICAgdWludDE2X3QgZGVidWdfc3RhdHVz Ow0KPiA+ICsgICAgICAvKio8DQo+ID4gKyAgICAgICogU3RhdHVzIG9mIHRoZSBvcGVyYXRpb24g aXMgcmV0dXJuZWQgaW4gdGhlIHJ0ZV9jcnlwdG9fb3AuDQo+ID4gKyAgICAgICogVGhpcyBmaWVs ZCBhbGxvd3MgdGhlIFBNRCB0byBwYXNzIGJhY2sgZXh0cmENCj4gPiArICAgICAgKiBwbWQtc3Bl Y2lmaWMgZGVidWcgaW5mb3JtYXRpb24uIFZhbHVlIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBBUEku DQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgIHN0cnVjdCBydGVfY29tcF9zZXNzaW9uICpzZXNz aW9uOw0KPiA+ICsgICAgICAvKio8IEhhbmRsZSBmb3IgdGhlIGluaXRpYWxpc2VkIHNlc3Npb24g Y29udGV4dCAqLw0KPiA+ICsgICAgICBzdHJ1Y3QgcnRlX21lbXBvb2wgKm1lbXBvb2w7DQo+ID4g KyAgICAgIC8qKjwgbWVtcG9vbCBmcm9tIHdoaWNoIG9wZXJhdGlvbiBpcyBhbGxvY2F0ZWQgKi8N Cj4gPiArICAgICAgcGh5c19hZGRyX3QgcGh5c19hZGRyOw0KPiA+ICsgICAgICAvKio8IHBoeXNp Y2FsIGFkZHJlc3Mgb2YgdGhpcyBvcGVyYXRpb24gKi8NCj4gPiArDQo+ID4gKyAgICAgIHN0cnVj dCBydGVfbWJ1ZiAqbV9zcmM7ICAgLyoqPCBzb3VyY2UgbWJ1ZiAqLw0KPiA+ICsgICAgICBzdHJ1 Y3QgcnRlX21idWYgKm1fZHN0OyAgIC8qKjwgZGVzdGluYXRpb24gbWJ1ZiAqLw0KPiA+ICsNCj4g PiArICAgICAgc3RydWN0IHsNCj4gPiArICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0Ow0KPiA+ ICsgICAgICAgICAgICAvKio8IFN0YXJ0aW5nIHBvaW50IGZvciBjb21wcmVzc2lvbiBvciBkZWNv bXByZXNzaW9uLA0KPiA+ICsgICAgICAgICAgICAqIHNwZWNpZmllZCBhcyBudW1iZXIgb2YgYnl0 ZXMgZnJvbSBzdGFydCBvZiBwYWNrZXQgaW4NCj4gPiArICAgICAgICAgICAgKiBzb3VyY2UgYnVm ZmVyLg0KPiA+ICsgICAgICAgICAgICAqIFN0YXJ0aW5nIHBvaW50IGZvciBjaGVja3N1bSBnZW5l cmF0aW9uIGluIGNvbXByZXNzIGRpcmVjdGlvbi4NCj4gPiArICAgICAgICAgICAgKi8NCj4gPiAr ICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoOw0KPiA+ICsgICAgICAgICAgICAvKio8IFRoZSBs ZW5ndGgsIGluIGJ5dGVzLCBvZiB0aGUgZGF0YSBpbiBzb3VyY2UgYnVmZmVyDQo+ID4gKyAgICAg ICAgICAgICogdG8gYmUgY29tcHJlc3NlZCBvciBkZWNvbXByZXNzZWQuDQo+ID4gKyAgICAgICAg ICAgICogQWxzbyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIG92ZXIgd2hpY2ggdGhlIGNoZWNrc3Vt DQo+ID4gKyAgICAgICAgICAgICogc2hvdWxkIGJlIGdlbmVyYXRlZCBpbiBjb21wcmVzcyBkaXJl Y3Rpb24NCj4gPiArICAgICAgICAgICAgKi8NCj4gPiArICAgICAgfSBzcmM7DQo+ID4gKyAgICAg IHN0cnVjdCB7DQo+ID4gKyAgICAgICAgICAgIHVpbnQzMl90IG9mZnNldDsNCj4gPiArICAgICAg ICAgICAgLyoqPCBTdGFydGluZyBwb2ludCBmb3Igd3JpdGluZyBvdXRwdXQgZGF0YSwgc3BlY2lm aWVkIGFzDQo+ID4gKyAgICAgICAgICAgICogbnVtYmVyIG9mIGJ5dGVzIGZyb20gc3RhcnQgb2Yg cGFja2V0IGluIG1fZHN0DQo+ID4gKyAgICAgICAgICAgICogYnVmZmVyLiBTdGFydGluZyBwb2lu dCBmb3IgY2hlY2tzdW0gZ2VuZXJhdGlvbiBpbg0KPiA+ICsgICAgICAgICAgICAqIGRlY29tcHJl c3MgZGlyZWN0aW9uLg0KPiA+ICsgICAgICAgICAgICAqLw0KPiA+ICsgICAgICB9IGRzdDsNCj4g PiArICAgICAgZW51bSBydGVfY29tcF9mbHVzaF9mbGFnIGZsdXNoX2ZsYWc7DQo+ID4gKyAgICAg IC8qKjwgZGVmaW5lcyBmbHVzaCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHRoZSBvdXRwdXQgZGF0YS4N Cj4gPiArICAgICAgKiBPbmx5IGFwcGxpY2FibGUgaW4gY29tcHJlc3MgZGlyZWN0aW9uLg0KPiA+ ICsgICAgICAqLw0KPiA+ICsgICAgICBlbnVtIHJ0ZV9jb21wX2ludGVncml0eV9jaGVjayB2ZXJp Znk7DQo+ID4gKyAgICAgIC8qKjwgU3BlY2lmaWVzIGlmIHRoZSBvdXRwdXQgZGF0YSBzaG91bGQg YmUgdmVyaWZpZWQuDQo+ID4gKyAgICAgICAgT25seSBhcHBsaWNhYmxlIGluIGNvbXByZXNzIGRp cmVjdGlvbi4NCj4gPiArICAgICAgKi8NCj4gDQo+IEFnYWluLCBiZWxpZXZlIHdlIGNhbiBnZXQg YXdheSB3aXRoIHRoaXMgYnkgbW92aW5nIHRvIGFwcGxpY2F0aW9uLg0KPiANCj4gVGhhbmtzDQo+ IFNoYWxseQ0KPiANCj4gPiArICAgICAgdWludDY0X3QgaW5wdXRfY2hrc3VtOw0KPiA+ICsgICAg ICAvKio8IEFuIGlucHV0IGNoZWNrc3VtIGNhbiBiZSBwcm92aWRlZCB0byBnZW5lcmF0ZSBhDQo+ ID4gKyAgICAgICogY3VtdWxhdGl2ZSBjaGVja3N1bSBhY3Jvc3Mgc2VxdWVudGlhbCBibG9ja3Mu DQo+ID4gKyAgICAgICogQ2hlY2tzdW0gdHlwZSBpcyBhcyBzcGVjaWZpZWQgaW4gY2hrc3VtX3R5 cGUgaW4geGZvcm0uDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgIHVpbnQ2NF90IG91dHB1dF9j aGtzdW07DQo+ID4gKyAgICAgIC8qKjwgSWYgYSBjaGVja3N1bSBpcyBnZW5lcmF0ZWQgaXQgd2ls bCBiZSB3cml0dGVuIGluIGhlcmUuDQo+ID4gKyAgICAgICogQ2hlY2tzdW0gdHlwZSBpcyBhcyBz cGVjaWZpZWQgaW4gY2hrc3VtX3R5cGUgaW4geGZvcm0uDQo+ID4gKyAgICAgICovDQo+ID4gKyAg ICAgIHVpbnQzMl90IGNvbnN1bWVkOw0KPiA+ICsgICAgICAvKio8IFRoZSBudW1iZXIgb2YgYnl0 ZXMgZnJvbSB0aGUgc291cmNlIGJ1ZmZlcg0KPiA+ICsgICAgICAqIHdoaWNoIHdlcmUgY29tcHJl c3NlZC9kZWNvbXByZXNzZWQuDQo+ID4gKyAgICAgICovDQo+ID4gKyAgICAgIHVpbnQzMl90IHBy b2R1Y2VkOw0KPiA+ICsgICAgICAvKio8IFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0 aGUgZGVzdGluYXRpb24gYnVmZmVyDQo+ID4gKyAgICAgICogd2hpY2ggd2VyZSBjb21wcmVzc2Vk L2RlY29tcHJlc3NlZC4NCj4gPiArICAgICAgKi8NCj4gPiArICAgICAgLyoNCj4gPiArICAgICAg VE9ETyAtIEFyZSBhbnkgZXh0cmEgcGFyYW1zIG5lZWRlZCBvbiBzdGF0ZWZ1bCBvcCBvciBhcmUg YWxsIGluIHhmb3JtPw0KPiA+ICsgICAgICBydGVfY29tcF9vcF9jb21tb25fcGFyYW1zL19zdGF0 ZWZ1bF9wYXJhbXM/DQo+ID4gKyAgICAgIGV4dHJhIHZhbHVlcyBhcHBseSB0byBmbHVzaCBmbGFn DQo+ID4gKyAgICAgICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsNCj4gPiArIGludA0KPiA+ICsg cnRlX2NvbXBkZXZfY29uZmlndXJlKHVpbnQ4X3QgZGV2X2lkLCBzdHJ1Y3QgcnRlX2NvbXBkZXZf Y29uZmlnICpjb25maWcpOw0KPiA+ICsgaW50DQo+ID4gKyBydGVfY29tcGRldl9zdGFydCh1aW50 OF90IGRldl9pZCk7DQo+ID4gKyB2b2lkDQo+ID4gKyBydGVfY29tcGRldl9zdG9wKHVpbnQ4X3Qg ZGV2X2lkKTsNCj4gPiAvKiBldGMuLi5SZXN0IG9mIEFQSXMgZm9sbG93IHNhbWUgcGF0dGVybiwg c2ltaWxhciB0byBjcnlwdG9kZXYsIHN0cmlwcGVkIGZyb20gUkZDIGZvciBzaW1wbGljaXR5LiAq Lw0KPiA+DQo+ID4gKy8qKg0KPiA+ICsgKiBDb21wcmVzc2lvbiBzdXBwb3J0ZWQgZmVhdHVyZSBm bGFncw0KPiA+ICsgKg0KPiA+ICsgKiBOb3RlOg0KPiA+ICsgKiBOZXcgZmVhdHVyZXMgZmxhZ3Mg c2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QNCj4gPiArICoNCj4gPiArICog S2VlcCB0aGVzZSBmbGFncyBzeW5jaHJvbmlzZWQgd2l0aCBydGVfY29tcGRldl9nZXRfY29tcF9m ZWF0dXJlX25hbWUoKQ0KPiA+ICsgKiBOb3RlOiBiaXQgbnVtYmVycyBoZXJlIGFyZSBzYW1lIGFz IG9uIGNyeXB0b2RldiwgaGVuY2UgdGhlIGdhcHMuDQo+ID4gKyAqIFRoaXMgaXMgYW4gaW1wbGVt ZW50YXRpb24gZGV0YWlsIHdoaWNoIG1heSBjaGFuZ2UuDQo+ID4gKyAqLw0KPiA+ICsgI2RlZmlu ZSAgICAgICBSVEVfQ09NUERFVl9GRl9DUFVfU1NFICAgICAgICAgICgxVUxMIDw8IDMpDQo+ID4g KyAvKio8IFV0aWxpc2VzIENQVSBTSU1EIFNTRSBpbnN0cnVjdGlvbnMgKi8NCj4gPiArICNkZWZp bmUgICAgICAgUlRFX0NPTVBERVZfRkZfQ1BVX0FWWCAgICAgICAgICAoMVVMTCA8PCA0KQ0KPiA+ ICsgLyoqPCBVdGlsaXNlcyBDUFUgU0lNRCBBVlggaW5zdHJ1Y3Rpb25zICovDQo+ID4gKyAjZGVm aW5lICAgICAgIFJURV9DT01QREVWX0ZGX0NQVV9BVlgyICAgICAgICAgKDFVTEwgPDwgNSkNCj4g PiArIC8qKjwgVXRpbGlzZXMgQ1BVIFNJTUQgQVZYMiBpbnN0cnVjdGlvbnMgKi8NCj4gPiArICNk ZWZpbmUgICAgICAgUlRFX0NPTVBERVZfRkZfSFdfQUNDRUxFUkFURUQgICAgICAgICAgICgxVUxM IDw8IDcpDQo+ID4gKyAvKio8IE9wZXJhdGlvbnMgYXJlIG9mZi1sb2FkZWQgdG8gYW4gZXh0ZXJu YWwgaGFyZHdhcmUgYWNjZWxlcmF0b3IgKi8NCj4gPiArICNkZWZpbmUgICAgICAgUlRFX0NPTVBE RVZfRkZfQ1BVX0FWWDUxMiAgICAgICAgICAgICAgICgxVUxMIDw8IDgpDQo+ID4gKyAvKio8IFV0 aWxpc2VzIENQVSBTSU1EIEFWWDUxMiBpbnN0cnVjdGlvbnMgKi8NCj4gPiArICNkZWZpbmUgICAg ICAgUlRFX0NPTVBERVZfRkZfQ1BVX05FT04gICAgICAgICAgICAgICAgICAgICAgICAoMVVMTCA8 PCAxMCkNCj4gPiArIC8qKjwgVXRpbGlzZXMgQ1BVIE5FT04gaW5zdHJ1Y3Rpb25zICovDQo+ID4g KyAjZGVmaW5lICAgICAgIFJURV9DT01QREVWX0ZGX0NQVV9BUk1fQ0UgICAgICAgICAgICAgICAo MVVMTCA8PCAxMSkNCj4gPiArIC8qKjwgVXRpbGlzZXMgQVJNIENQVSBDcnlwdG9ncmFwaGljIEV4 dGVuc2lvbnMgKi8NCj4gPiArDQo+ID4gKyAjZGVmaW5lICAgICBSVEVfQ09NUF9GRl9NQlVGX1ND QVRURVJfR0FUSEVSICAgICAgICAgICAgICAgICAgICAoMVVMTCA8PCAxMikNCj4gPiArIC8qKjwg U2NhdHRlci1nYXRoZXIgbWJ1ZnMgYXJlIHN1cHBvcnRlZCAqLw0KPiA+ICsgI2RlZmluZSAgICAg UlRFX0NPTVBfRkZfU1RBVEVGVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDFVTEwgPDwgMTMpDQo+ID4gKyAvKio8IFN0YXRlZnVsIGNvbXByZXNzaW9u IGlzIHN1cHBvcnRlZCAqLw0KPiA+ICsgI2RlZmluZSAgICAgUlRFX0NPTVBERVZfRkZfTVVMVElf UEtUX0NIRUNLU1VNICAgICAgICAgICAgICAgKDFVTEwgPDwgMTQpDQo+ID4gKyAvKio8IEdlbmVy YXRpb24gb2YgY2hlY2tzdW0gYWNyb3NzIG11bHRpcGxlIHBhY2tldHMgaXMgc3VwcG9ydGVkICov DQo+ID4gKw0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKiAgQ29tcHJlc3Npb24gZGV2aWNlIGluZm9y bWF0aW9uICovDQo+ID4gK3N0cnVjdCBydGVfY29tcGRldl9pbmZvIHsNCj4gPiArICAgICAgY29u c3QgY2hhciAqZHJpdmVyX25hbWU7ICAvKio8IERyaXZlciBuYW1lLiAqLw0KPiA+ICsgICAgICB1 aW50OF90IGRyaXZlcl9pZDsgICAgICAgICAgICAgICAvKio8IERyaXZlciBpZGVudGlmaWVyICov DQo+ID4gKyAgICAgIHN0cnVjdCBydGVfZGV2aWNlICpkZXY7ICAgICAgICAgIC8qKjwgRGV2aWNl IGluZm9ybWF0aW9uLiAqLw0KPiA+ICsNCj4gPiArICAgICAgdWludDY0X3QgZmVhdHVyZV9mbGFn czsNCj4gPiArICAgICAgLyoqPCBkZXZpY2UgZmVhdHVyZSBmbGFncyAqLw0KPiA+ICsgICAgIGNv bnN0IHN0cnVjdCBydGVfY29tcF9jYXBhYmlsaXRpZXMgKmNhcGFiaWxpdGllczsNCj4gPiArICAg ICAgLyoqPCBBcnJheSBvZiBkZXZpY2VzIGNhcGFiaWxpdGllcyAqLw0KPiA+DQo+ID4gKyAgICAg IHVuc2lnbmVkIG1heF9uYl9xdWV1ZV9wYWlyczsNCj4gPiArICAgICAgLyoqPCBNYXhpbXVtIG51 bWJlciBvZiBxdWV1ZXMgcGFpcnMgc3VwcG9ydGVkIGJ5IGRldmljZS4gKi8NCj4gPiArICAgICAg dW5zaWduZWQgbWF4X25iX3Nlc3Npb25zOw0KPiA+ICsgICAgICAvKio8IE1heGltdW0gbnVtYmVy IG9mIHNlc3Npb25zIHN1cHBvcnRlZCBieSBkZXZpY2UuICovDQo+ID4gKyAgICAgIHVuc2lnbmVk IGludCBtYXhfbmJfc2Vzc2lvbnNfcGVyX3FwOw0KPiA+ICsgICAgICAvKio8IE1heGltdW0gbnVt YmVyIG9mIHNlc3Npb25zIHBlciBxdWV1ZSBwYWlyLg0KPiA+ICsgICAgICAqIERlZmF1bHQgMCBm b3IgaW5maW5pdGUgc2Vzc2lvbnMNCj4gPiArICAgICAgKi8NCj4gPiArICAgICAgLyogVE9ETyB1 aW50OF90IG5lZWRzX2ludGVybWVkaWF0ZV9idWZmZXIgT1Igc2hvdWxkIHRoaXMgYmUgYSBmZWF0 dXJlIGZsYWc/IE9yIG5vdCBuZWNlc3Nhcnk/DQo+ICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsN Cj4gPiArLyoqIENvbXByZXNzaW9uIGRldmljZSBzdGF0aXN0aWNzICovDQo+ID4gK3N0cnVjdCBy dGVfY29tcGRldl9zdGF0cyB7DQo+ID4gKyAgICAgIHVpbnQ2NF90IGVucXVldWVkX2NvdW50Ow0K PiA+ICsgICAgICAvKio8IENvdW50IG9mIGFsbCBvcGVyYXRpb25zIGVucXVldWVkICovDQo+ID4g KyAgICAgIHVpbnQ2NF90IGRlcXVldWVkX2NvdW50Ow0KPiA+ICsgICAgICAvKio8IENvdW50IG9m IGFsbCBvcGVyYXRpb25zIGRlcXVldWVkICovDQo+ID4gKw0KPiA+ICsgICAgICB1aW50NjRfdCBl bnF1ZXVlX2Vycl9jb3VudDsNCj4gPiArICAgICAgLyoqPCBUb3RhbCBlcnJvciBjb3VudCBvbiBv cGVyYXRpb25zIGVucXVldWVkICovDQo+ID4gKyAgICAgIHVpbnQ2NF90IGRlcXVldWVfZXJyX2Nv dW50Ow0KPiA+ICsgICAgICAvKio8IFRvdGFsIGVycm9yIGNvdW50IG9uIG9wZXJhdGlvbnMgZGVx dWV1ZWQgKi8NCj4gPiArfTsNCj4gPiArDQo+ID4gKw0KPiA+ICsvKiogQ29tcHJlc3Npb24gZGV2 aWNlIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlICovDQo+ID4gK3N0cnVjdCBydGVfY29tcGRldl9j b25maWcgew0KPiA+ICsgICAgICBpbnQgc29ja2V0X2lkOw0KPiA+ICsgICAgICAvKio8IFNvY2tl dCB0byBhbGxvY2F0ZSByZXNvdXJjZXMgb24gKi8NCj4gPiArICAgICAgdWludDE2X3QgbmJfcXVl dWVfcGFpcnM7DQo+ID4gKyAgICAgIC8qKjwgVG90YWwgbnVtYmVyIG9mIHF1ZXVlIHBhaXJzIHRv IGNvbmZpZ3VyZSBvbiBhIGRldmljZS4gKi8NCj4gPiArICAgICAgdWludDMyX3QgY29tcF9pbnRl cm1lZGlhdGVfYnVmX3NpemU7DQo+ID4gKyAgICAgLyoqPCBGb3IgZGVmbGF0ZSBhbGdvcml0aG0g SFcgYWNjZWxlcmF0b3JzIHVzdWFsbHkgbmVlZCB0byBhbGxvY2F0ZQ0KPiA+ICsgICAgICAqIGEg cG9vbCBvZiBpbnRlcm1lZGlhdGUgYnVmZmVycyBmb3IgZHluYW1pYyBjb21wcmVzc2lvbi4NCj4g PiArICAgICAgKiBUaGlzIGluZGljYXRlcyB0aGUgYnVmZmVyIHNpemUgYW5kIHNob3VsZCBiZQ0K PiA+ICsgICAgICAqIHNldCBhIGxpdHRsZSBsYXJnZXIgdGhhbiB0aGUgZXhwZWN0ZWQgbWF4IHNv dXJjZSBidWZmZXIgc2l6ZS4NCj4gPiArICAgICAgKiBpZiB0aGUgb3V0cHV0IG9mIHN0YXRpYyBj b21wcmVzc2lvbiBkb2Vzbid0IGZpdCBpbiB0aGUNCj4gPiArICAgICAgKiBpbnRlcm1lZGlhdGUg YnVmZmVyIGR5bmFtaWMgY29tcHJlc3Npb24gbWF5IG5vdCBiZSBwb3NzaWJsZSwNCj4gPiArICAg ICAgKiBpbiB0aGlzIGNhc2UgdGhlIGFjY2VsZXJhdG9yIG1heSByZXZlcnQgYmFjayB0byBzdGF0 aWMgY29tcHJlc3Npb24uDQo+ID4gKyAgICAgICovDQo+ID4gK307DQo+ID4gKw0KPiA+ICsNCj4g PiArLyoqIENvbXByZXNzaW9uIGRldmljZSBxdWV1ZSBwYWlyIGNvbmZpZ3VyYXRpb24gc3RydWN0 dXJlLiAqLw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXZfcXBfY29uZiB7DQo+ID4gKyAgICAgIHVp bnQzMl90IG5iX2Rlc2NyaXB0b3JzOyAvKio8IE51bWJlciBvZiBkZXNjcmlwdG9ycyBwZXIgcXVl dWUgcGFpciAqLw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArDQo+ID4gK3R5cGVkZWYgdWludDE2X3Qg KCpkZXF1ZXVlX3BrdF9idXJzdF90KSh2b2lkICpxcCwNCj4gPiArICAgICAgICAgICAgc3RydWN0 IHJ0ZV9jb21wX29wICoqb3BzLCB1aW50MTZfdCBuYl9vcHMpOw0KPiA+ICsvKio8IERlcXVldWUg cHJvY2Vzc2VkIHBhY2tldHMgZnJvbSBxdWV1ZSBwYWlyIG9mIGEgZGV2aWNlLiAqLw0KPiA+ICsN Cj4gPiArdHlwZWRlZiB1aW50MTZfdCAoKmVucXVldWVfcGt0X2J1cnN0X3QpKHZvaWQgKnFwLA0K PiA+ICsgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90IG5iX29w cyk7DQo+ID4gKy8qKjwgRW5xdWV1ZSBwYWNrZXRzIGZvciBwcm9jZXNzaW5nIG9uIHF1ZXVlIHBh aXIgb2YgYSBkZXZpY2UuICovDQo+ID4gKw0KPiA+ICsNCj4gPiArDQo+ID4gKy8qKiBUaGUgZGF0 YSBzdHJ1Y3R1cmUgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29tcHJlc3Npb24gZGV2aWNlLiAqLw0K PiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXYgew0KPiA+ICsNCj4gPiArICAgICAgZGVxdWV1ZV9wa3Rf YnVyc3RfdCBkZXF1ZXVlX2J1cnN0Ow0KPiA+ICsgICAgICAvKio8IFBvaW50ZXIgdG8gUE1EIHJl Y2VpdmUgZnVuY3Rpb24uICovDQo+ID4gKyAgICAgIGVucXVldWVfcGt0X2J1cnN0X3QgZW5xdWV1 ZV9idXJzdDsNCj4gPiArICAgICAgLyoqPCBQb2ludGVyIHRvIFBNRCB0cmFuc21pdCBmdW5jdGlv bi4gKi8NCj4gPiArDQo+ID4gKyAgICAgIHN0cnVjdCBydGVfY29tcGRldl9kYXRhICpkYXRhOw0K PiA+ICsgICAgICAvKio8IFBvaW50ZXIgdG8gZGV2aWNlIGRhdGEgKi8NCj4gPiArICAgICAgc3Ry dWN0IHJ0ZV9jb21wZGV2X29wcyAqZGV2X29wczsNCj4gPiArICAgICAgLyoqPCBGdW5jdGlvbnMg ZXhwb3J0ZWQgYnkgUE1EICovDQo+ID4gKyAgICAgIHVpbnQ2NF90IGZlYXR1cmVfZmxhZ3M7DQo+ ID4gKyAgICAgIC8qKjwgU3VwcG9ydGVkIGZlYXR1cmVzICovDQo+ID4gKw0KPiA+ICsgICAgIHN0 cnVjdCBydGVfZGV2aWNlICpkZXZpY2U7DQo+ID4gKyAgICAgIC8qKjwgQmFja2luZyBkZXZpY2Ug Ki8NCj4gPiArDQo+ID4gKyAgICAgIHVpbnQ4X3QgZHJpdmVyX2lkOw0KPiA+ICsgICAgICAvKio8 IGRyaXZlciBpZGVudGlmaWVyKi8NCj4gPiArDQo+ID4gKyAgICAgIHVpbnQ4X3QgYXR0YWNoZWQg OiAxOw0KPiA+ICsgICAgICAvKio8IEZsYWcgaW5kaWNhdGluZyB0aGUgZGV2aWNlIGlzIGF0dGFj aGVkICovDQo+ID4gKw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICoNCj4gPiArICog VGhlIGRhdGEgcGFydCwgd2l0aCBubyBmdW5jdGlvbiBwb2ludGVycywgYXNzb2NpYXRlZCB3aXRo IGVhY2ggZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHN0cnVjdHVyZSBpcyBzYWZlIHRv IHBsYWNlIGluIHNoYXJlZCBtZW1vcnkgdG8gYmUgY29tbW9uIGFtb25nDQo+ID4gKyAqIGRpZmZl cmVudCBwcm9jZXNzZXMgaW4gYSBtdWx0aS1wcm9jZXNzIGNvbmZpZ3VyYXRpb24uDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgcnRlX2NvbXBkZXZfZGF0YSB7DQo+ID4gKyAgICAgIHVpbnQ4X3QgZGV2 X2lkOw0KPiA+ICsgICAgICAvKio8IERldmljZSBJRCBmb3IgdGhpcyBpbnN0YW5jZSAqLw0KPiA+ ICsgICAgICB1aW50OF90IHNvY2tldF9pZDsNCj4gPiArICAgICAgLyoqPCBTb2NrZXQgSUQgd2hl cmUgbWVtb3J5IGlzIGFsbG9jYXRlZCAqLw0KPiA+ICsgICAgICBjaGFyIG5hbWVbUlRFX0NPTVBE RVZfTkFNRV9NQVhfTEVOXTsNCj4gPiArICAgICAgLyoqPCBVbmlxdWUgaWRlbnRpZmllciBuYW1l ICovDQo+ID4gKw0KPiA+ICsgICAgICB1aW50OF90IGRldl9zdGFydGVkIDogMTsNCj4gPiArICAg ICAgLyoqPCBEZXZpY2Ugc3RhdGU6IFNUQVJURUQoMSkvU1RPUFBFRCgwKSAqLw0KPiA+ICsNCj4g PiArICAgICAgdm9pZCAqKnF1ZXVlX3BhaXJzOw0KPiA+ICsgICAgICAvKio8IEFycmF5IG9mIHBv aW50ZXJzIHRvIHF1ZXVlIHBhaXJzLiAqLw0KPiA+ICsgICAgICB1aW50MTZfdCBuYl9xdWV1ZV9w YWlyczsNCj4gPiArICAgICAgLyoqPCBOdW1iZXIgb2YgZGV2aWNlIHF1ZXVlIHBhaXJzLiAqLw0K PiA+ICsNCj4gPiArICAgICAgdm9pZCAqZGV2X3ByaXZhdGU7DQo+ID4gKyAgICAgIC8qKjwgUE1E LXNwZWNpZmljIHByaXZhdGUgZGF0YSAqLw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAqDQo+ID4gKyAqIERlcXVldWUgYSBidXJzdCBvZiBwcm9jZXNzZWQgY29tcHJlc3Np b24gb3BlcmF0aW9ucyBmcm9tIGEgcXVldWUgb24gdGhlDQo+ID4gKyAqIGRldmljZS4gVGhlIGRl cXVldWVkIG9wZXJhdGlvbiBhcmUgc3RvcmVkIGluICpydGVfY29tcF9vcCogc3RydWN0dXJlcw0K PiA+ICsgKiB3aG9zZSBwb2ludGVycyBhcmUgc3VwcGxpZWQgaW4gdGhlICpvcHMqIGFycmF5Lg0K PiA+ICsgKg0KPiA+ICsgKiBUaGUgcnRlX2NvbXBkZXZfZGVxdWV1ZV9idXJzdCgpIGZ1bmN0aW9u IHJldHVybnMgdGhlIG51bWJlciBvZiBvcHMNCj4gPiArICogYWN0dWFsbHkgZGVxdWV1ZWQsIHdo aWNoIGlzIHRoZSBudW1iZXIgb2YgKnJ0ZV9jb21wX29wKiBkYXRhIHN0cnVjdHVyZXMNCj4gPiAr ICogZWZmZWN0aXZlbHkgc3VwcGxpZWQgaW50byB0aGUgKm9wcyogYXJyYXkuDQo+ID4gKyAqDQo+ ID4gKyAqIEEgcmV0dXJuIHZhbHVlIGVxdWFsIHRvICpuYl9vcHMqIGluZGljYXRlcyB0aGF0IHRo ZSBxdWV1ZSBjb250YWluZWQNCj4gPiArICogYXQgbGVhc3QgKm5iX29wcyogb3BlcmF0aW9ucywg YW5kIHRoaXMgaXMgbGlrZWx5IHRvIHNpZ25pZnkgdGhhdCBvdGhlcg0KPiA+ICsgKiBwcm9jZXNz ZWQgb3BlcmF0aW9ucyByZW1haW4gaW4gdGhlIGRldmljZXMgb3V0cHV0IHF1ZXVlLiBBcHBsaWNh dGlvbnMNCj4gPiArICogaW1wbGVtZW50aW5nIGEgInJldHJpZXZlIGFzIG1hbnkgcHJvY2Vzc2Vk IG9wZXJhdGlvbnMgYXMgcG9zc2libGUiIHBvbGljeQ0KPiA+ICsgKiBjYW4gY2hlY2sgdGhpcyBz cGVjaWZpYyBjYXNlIGFuZCBrZWVwIGludm9raW5nIHRoZQ0KPiA+ICsgKiBydGVfY29tcGRldl9k ZXF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gdW50aWwgYSB2YWx1ZSBsZXNzIHRoYW4NCj4gPiArICog Km5iX29wcyogaXMgcmV0dXJuZWQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBydGVfY29tcGRldl9k ZXF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gZG9lcyBub3QgcHJvdmlkZSBhbnkgZXJyb3INCj4gPiAr ICogbm90aWZpY2F0aW9uIHRvIGF2b2lkIHRoZSBjb3JyZXNwb25kaW5nIG92ZXJoZWFkLg0KPiA+ ICsgKg0KPiA+ICsgKiBAcGFyYW0gICBkZXZfaWQgICAgICAgVGhlIGNvbXByZXNzaW9uIGRldmlj ZSBpZGVudGlmaWVyDQo+ID4gKyAqIEBwYXJhbSAgIHFwX2lkICAgICAgICBUaGUgaW5kZXggb2Yg dGhlIHF1ZXVlIHBhaXIgZnJvbSB3aGljaCB0bw0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgcmV0cmlldmUgcHJvY2Vzc2VkIHBhY2tldHMuIFRoZSB2YWx1ZSBtdXN0IGJlDQo+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmFuZ2UgWzAsIG5iX3F1ZXVlX3BhaXIgLSAx XSBwcmV2aW91c2x5DQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICBzdXBwbGllZCB0byBy dGVfY29tcGRldl9jb25maWd1cmUoKS4NCj4gPiArICogQHBhcmFtICAgb3BzICAgICAgICAgIFRo ZSBhZGRyZXNzIG9mIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvDQo+ID4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAqcnRlX2NvbXBfb3AqIHN0cnVjdHVyZXMgdGhhdCBtdXN0IGJlDQo+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgKm5iX29wcyogcG9p bnRlcnMgaW4gaXQuDQo+ID4gKyAqIEBwYXJhbSAgIG5iX29wcyAgICAgICBUaGUgbWF4aW11bSBu dW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBkZXF1ZXVlLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJu DQo+ID4gKyAqICAgLSBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgYWN0dWFsbHkgZGVxdWV1ZWQs IHdoaWNoIGlzIHRoZSBudW1iZXINCj4gPiArICogICBvZiBwb2ludGVycyB0byAqcnRlX2NvbXBf b3AqIHN0cnVjdHVyZXMgZWZmZWN0aXZlbHkgc3VwcGxpZWQgdG8gdGhlDQo+ID4gKyAqICAgKm9w cyogYXJyYXkuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ID4gK3J0 ZV9jb21wZGV2X2RlcXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0K PiA+ICsgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90IG5iX29w cykNCj4gPiArew0KPiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBkZXYgKmRldiA9ICZydGVfY29t cGRldnNbZGV2X2lkXTsNCj4gPiArDQo+ID4gKyAgICAgIG5iX29wcyA9ICgqZGV2LT5kZXF1ZXVl X2J1cnN0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgKGRldi0+ZGF0YS0+cXVldWVfcGFpcnNb cXBfaWRdLCBvcHMsIG5iX29wcyk7DQo+ID4gKw0KPiA+ICsgICAgICByZXR1cm4gbmJfb3BzOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRW5xdWV1ZSBhIGJ1cnN0IG9mIG9wZXJh dGlvbnMgZm9yIHByb2Nlc3Npbmcgb24gYSBjb21wcmVzc2lvbiBkZXZpY2UuDQo+ID4gKyAqDQo+ ID4gKyAqIFRoZSBydGVfY29tcGRldl9lbnF1ZXVlX2J1cnN0KCkgZnVuY3Rpb24gaXMgaW52b2tl ZCB0byBwbGFjZQ0KPiA+ICsgKiBjb21wIG9wZXJhdGlvbnMgb24gdGhlIHF1ZXVlICpxcF9pZCog b2YgdGhlIGRldmljZSBkZXNpZ25hdGVkIGJ5DQo+ID4gKyAqIGl0cyAqZGV2X2lkKi4NCj4gPiAr ICoNCj4gPiArICogVGhlICpuYl9vcHMqIHBhcmFtZXRlciBpcyB0aGUgbnVtYmVyIG9mIG9wZXJh dGlvbnMgdG8gcHJvY2VzcyB3aGljaCBhcmUNCj4gPiArICogc3VwcGxpZWQgaW4gdGhlICpvcHMq IGFycmF5IG9mICpydGVfY29tcF9vcCogc3RydWN0dXJlcy4NCj4gPiArICoNCj4gPiArICogVGhl IHJ0ZV9jb21wZGV2X2VucXVldWVfYnVyc3QoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIg b2YNCj4gPiArICogb3BlcmF0aW9ucyBpdCBhY3R1YWxseSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2lu Zy4gQSByZXR1cm4gdmFsdWUgZXF1YWwgdG8NCj4gPiArICogKm5iX29wcyogbWVhbnMgdGhhdCBh bGwgcGFja2V0cyBoYXZlIGJlZW4gZW5xdWV1ZWQuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSAg IGRldl9pZCAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgZGV2aWNlLg0KPiA+ICsgKiBAcGFy YW0gICBxcF9pZCAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBxdWV1ZSBwYWlyIHdoaWNoIHBhY2tl dHMgYXJlDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBlbnF1ZXVlZCBmb3Ig cHJvY2Vzc2luZy4gVGhlIHZhbHVlDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICBtdXN0 IGJlIGluIHRoZSByYW5nZSBbMCwgbmJfcXVldWVfcGFpcnMgLSAxXQ0KPiA+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgcHJldmlvdXNseSBzdXBwbGllZCB0bw0KPiA+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgKnJ0ZV9jb21wZGV2X2NvbmZpZ3VyZSouDQo+ID4gKyAqIEBwYXJhbSAgIG9w cyAgICAgICAgICBUaGUgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiAqbmJfb3BzKiBwb2ludGVycw0K PiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgdG8gKnJ0ZV9jb21wX29wKiBzdHJ1Y3R1cmVz IHdoaWNoIGNvbnRhaW4NCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRp b25zIHRvIGJlIHByb2Nlc3NlZC4NCj4gPiArICogQHBhcmFtICAgbmJfb3BzICAgICAgIFRoZSBu dW1iZXIgb2Ygb3BlcmF0aW9ucyB0byBwcm9jZXNzLg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJu DQo+ID4gKyAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBhY3R1YWxseSBlbnF1ZXVlZCBvbiB0 aGUgZGV2aWNlLiBUaGUgcmV0dXJuDQo+ID4gKyAqIHZhbHVlIGNhbiBiZSBsZXNzIHRoYW4gdGhl IHZhbHVlIG9mIHRoZSAqbmJfb3BzKiBwYXJhbWV0ZXIgd2hlbiB0aGUNCj4gPiArICogZGV2aWNl J3MgcXVldWUgaXMgZnVsbCBvciBpZiBpbnZhbGlkIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBp bg0KPiA+ICsgKiBhICpydGVfY29tcF9vcCouDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5l IHVpbnQxNl90DQo+ID4gK3J0ZV9jb21wZGV2X2VucXVldWVfYnVyc3QodWludDhfdCBkZXZfaWQs IHVpbnQxNl90IHFwX2lkLA0KPiA+ICsgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipv cHMsIHVpbnQxNl90IG5iX29wcykNCj4gPiArew0KPiA+ICsgICAgICBzdHJ1Y3QgcnRlX2NvbXBk ZXYgKmRldiA9ICZydGVfY3J5cHRvZGV2c1tkZXZfaWRdOw0KPiA+ICsNCj4gPiArICAgICAgcmV0 dXJuICgqZGV2LT5lbnF1ZXVlX2J1cnN0KSgNCj4gPiArICAgICAgICAgICAgICAgICAgIGRldi0+ ZGF0YS0+cXVldWVfcGFpcnNbcXBfaWRdLCBvcHMsIG5iX29wcyk7DQo+ID4gK30NCj4gPiArDQo+ ID4NCj4gPiAvKiBBbGwgc2Vzc2lvbiBBUElzIHN0cmlwcGVkIGZyb20gUkZDIGZvciBzaW1wbGlj aXR5LiAqLw0KPiA+DQo+ID4gKy8qKiBjb21wcmVzc2lvbiBkZXZpY2Ugb3BlcmF0aW9ucyBmdW5j dGlvbiBwb2ludGVyIHRhYmxlICovDQo+ID4gK3N0cnVjdCBydGVfY29tcGRldl9vcHMgew0KPiA+ ICsgICAgICBjb21wZGV2X2NvbmZpZ3VyZV90IGRldl9jb25maWd1cmU7ICAgIC8qKjwgQ29uZmln dXJlIGRldmljZS4gKi8NCj4gPiArICAgICAgY29tcGRldl9zdGFydF90IGRldl9zdGFydDsgICAg ICAgICAgICAvKio8IFN0YXJ0IGRldmljZS4gKi8NCj4gPiArICAgICAgY29tcGRldl9zdG9wX3Qg ZGV2X3N0b3A7ICAgICAgICAvKio8IFN0b3AgZGV2aWNlLiAqLw0KPiA+ICsgICAgICBjb21wZGV2 X2Nsb3NlX3QgZGV2X2Nsb3NlOyAgICAgICAgICAgIC8qKjwgQ2xvc2UgZGV2aWNlLiAqLw0KPiA+ ICsNCj4gPiArICAgICAgY29tcGRldl9pbmZvX2dldF90IGRldl9pbmZvc19nZXQ7ICAgICAvKio8 IEdldCBkZXZpY2UgaW5mby4gKi8NCj4gPiArDQo+ID4gKyAgICAgIGNvbXBkZXZfc3RhdHNfZ2V0 X3Qgc3RhdHNfZ2V0Ow0KPiA+ICsgICAgICAvKio8IEdldCBkZXZpY2Ugc3RhdGlzdGljcy4gKi8N Cj4gPiArICAgICAgY29tcGRldl9zdGF0c19yZXNldF90IHN0YXRzX3Jlc2V0Ow0KPiA+ICsgICAg ICAvKio8IFJlc2V0IGRldmljZSBzdGF0aXN0aWNzLiAqLw0KPiA+ICsNCj4gPiArICAgICAgY29t cGRldl9xdWV1ZV9wYWlyX3NldHVwX3QgcXVldWVfcGFpcl9zZXR1cDsNCj4gPiArICAgICAgLyoq PCBTZXQgdXAgYSBkZXZpY2UgcXVldWUgcGFpci4gKi8NCj4gPiArICAgICAgY29tcGRldl9xdWV1 ZV9wYWlyX3JlbGVhc2VfdCBxdWV1ZV9wYWlyX3JlbGVhc2U7DQo+ID4gKyAgICAgIC8qKjwgUmVs ZWFzZSBhIHF1ZXVlIHBhaXIuICovDQo+ID4gKyAgICAgIGNvbXBkZXZfcXVldWVfcGFpcl9zdGFy dF90IHF1ZXVlX3BhaXJfc3RhcnQ7DQo+ID4gKyAgICAgIC8qKjwgU3RhcnQgYSBxdWV1ZSBwYWly LiAqLw0KPiA+ICsgICAgICBjb21wZGV2X3F1ZXVlX3BhaXJfc3RvcF90IHF1ZXVlX3BhaXJfc3Rv cDsNCj4gPiArICAgICAgLyoqPCBTdG9wIGEgcXVldWUgcGFpci4gKi8NCj4gPiArICAgICAgY29t cGRldl9xdWV1ZV9wYWlyX2NvdW50X3QgcXVldWVfcGFpcl9jb3VudDsNCj4gPiArICAgICAgLyoq PCBHZXQgY291bnQgb2YgdGhlIHF1ZXVlIHBhaXJzLiAqLw0KPiA+ICsNCj4gPiArICAgICAgY29t cF9nZXRfc2Vzc2lvbl9wcml2YXRlX3NpemVfdCBzZXNzaW9uX2dldF9zaXplOw0KPiA+ICsgICAg ICAvKio8IFJldHVybiBwcml2YXRlIHNlc3Npb24uICovDQo+ID4gKyAgICAgIGNvbXBfY29uZmln dXJlX3Nlc3Npb25fdCBzZXNzaW9uX2NvbmZpZ3VyZTsNCj4gPiArICAgICAgLyoqPCBDb25maWd1 cmUgYSBjb21wIHNlc3Npb24uICovDQo+ID4gKyAgICAgIGNvbXBfZnJlZV9zZXNzaW9uX3Qgc2Vz c2lvbl9jbGVhcjsNCj4gPiArICAgICAgLyoqPCBDbGVhciBhIGNvbXAgc2Vzc2lvbnMgcHJpdmF0 ZSBkYXRhLiAqLw0KPiA+ICsgICAgICBjb21wX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBx cF9hdHRhY2hfc2Vzc2lvbjsNCj4gPiArICAgICAgLyoqPCBBdHRhY2ggc2Vzc2lvbiB0byBxdWV1 ZSBwYWlyLiAqLw0KPiA+ICsgICAgICBjb21wX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdCBx cF9kZXRhY2hfc2Vzc2lvbjsNCj4gPiArICAgICAgLyoqPCBEZXRhY2ggc2Vzc2lvbiBmcm9tIHF1 ZXVlIHBhaXIuICovDQo+ID4gK307DQo+ID4NCj4gPg0KPiA+DQo+ID4NCg==