From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 95CA1A84C for ; Fri, 2 Feb 2018 16:12:48 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Feb 2018 07:12:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,448,1511856000"; d="scan'208";a="26808342" Received: from irsmsx108.ger.corp.intel.com ([163.33.3.3]) by fmsmga004.fm.intel.com with ESMTP; 02 Feb 2018 07:12:42 -0800 Received: from irsmsx107.ger.corp.intel.com ([169.254.10.46]) by IRSMSX108.ger.corp.intel.com ([169.254.11.9]) with mapi id 14.03.0319.002; Fri, 2 Feb 2018 15:12:41 +0000 From: "Jain, Deepak K" To: "Verma, Shally" , "De Lara Guarch, Pablo" , "Trahe, Fiona" , "Doherty, Declan" CC: "Athreya, Narayana Prasad" , "dev@dpdk.org" , "Gupta, Ashish" , "Sahu, Sunila" , "Murthy, Nidadavolu" Thread-Topic: [dpdk-dev] FW: [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTm1EHvhopAnpfGEG3QCZiTnGwTqOROSQA Date: Fri, 2 Feb 2018 15:12:40 +0000 Deferred-Delivery: Fri, 2 Feb 2018 15:11:48 +0000 Message-ID: References: <1516701263-13154-1-git-send-email-shally.verma@caviumnetworks.com> <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNmI2Y2U5NjQtNTU4ZC00ODgyLWIyNjktMDFlOTE4MDRkZDQzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IlBWSXExZkRYK3ZLbHlZaVpRNDdhMUk5eVFEUUJKcFlMSDA4cHVcL2xDQVg0PSJ9 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] FW: [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto 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: Fri, 02 Feb 2018 15:12:49 -0000 SEkgU2hhbGx5LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldiBb bWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgVmVybWEsIFNoYWxseQ0K PiBTdWJqZWN0OiBbZHBkay1kZXZdIEZXOiBbUkZDIHYxIDEvMV0gbGliL2NyeXB0b2RldjogYWRk IHN1cHBvcnQgb2YNCj4gYXN5bW1ldHJpYyBjcnlwdG8NCj4gDQo+IEhpIFBhYmxvL0Zpb25hDQo+ IA0KPiBDb3VsZCB5b3UgcGxlYXNlIHByb3ZpZGUgeW91ciBpbnB1dCBvbiB0aGlzIFJGQy4gWW91 ciBmZWVkYmFjayBpcyBhd2FpdGVkLg0KDQoNCk1hbnkgdGhhbmtzIGZvciAgc2VuZGluZyB0aGUg UkZDLiBXZSBhcmUgbG9va2luZyBpbnRvIHRoaXMgYW5kIHdpbGwgcHJvdmlkZSBmZWVkYmFjayBi eSBlbmQgb2YgYnVzaW5lc3MgbmV4dCB3ZWVrLg0KDQo+IA0KPiBUaGFua3MNCj4gU2hhbGx5DQo+ IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWZXJtYSwgU2hhbGx5DQo+ IFNlbnQ6IDIzIEphbnVhcnkgMjAxOCAxNToyNA0KPiBUbzogZGVjbGFuLmRvaGVydHlAaW50ZWwu Y29tDQo+IENjOiBkZXZAZHBkay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZA0KPiA8TmFy YXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsgTXVydGh5LCBOaWRhZGF2b2x1DQo+IDxO aWRhZGF2b2x1Lk11cnRoeUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhDQo+IDxTdW5pbGEuU2Fo dUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlzaCA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+Ow0K PiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT4NCj4gU3ViamVjdDogW1JG QyB2MSAxLzFdIGxpYi9jcnlwdG9kZXY6IGFkZCBzdXBwb3J0IG9mIGFzeW1tZXRyaWMgY3J5cHRv DQo+IA0KPiBGcm9tOiBTaGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+ IA0KPiBBZGQgc3VwcG9ydCBmb3IgYXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9ucyBpbiBEUERL IGxpYiBjcnlwdG9kZXYNCj4gDQo+IEtleSBmZWF0dXJlIGluY2x1ZGU6DQo+IC0gT25seSBzZXNz aW9uIGJhc2VkIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMNCj4gLSBuZXcgZ2V0IGFuZCBz ZXQgQVBJcyBmb3Igc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHNlc3Npb24gcHJpdmF0ZQ0KPiAg IGRhdGEgYW5kIG90aGVyIGluZm9ybWF0aW9ucw0KPiAtIEFQSXMgdG8gY3JlYXRlLCBjb25maWd1 cmUgYW5kIGF0dGNoIHF1ZXVlIHBhaXIgdG8gYXN5bW1ldHJpYyBzZXNzaW9ucw0KPiAtIG5ldyBj YXBhYmlsaXRpZXMgaW4gc3RydWN0IGRldmljZV9pbmZvIHRvIGluZGljYXRlDQo+ICAgLS0gbnVt YmVyIG9mIGRlZGljYXRlZCBxdWV1ZSBwYWlycyBhdmFpbGFibGUgZm9yIHN5bW1ldHJpYyBhbmQN Cj4gICAgICBhc3ltbWV0cmljIG9wZXJhdGlvbnMsIGlmIGFueQ0KPiAgIC0tIG51bWJlciBvZiBh c3ltbWV0cmljIHNlc3Npb25zIHBvc3NpYmxlIHBlciBxcA0KPiANCj4gUHJvcG9zZWQgYXN5bW1l dHJpYyBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgYXJlOg0KPiAtIHJzYQ0KPiAtIGRzYQ0KPiAt IGRlZmZpZS1oZWxsbWFuIGtleSBwYWlyIGdlbmVyYXRpb24gYW5kIHNoYXJlZCBrZXkgY29tcHV0 YXRpb24NCj4gLSBlY2RlZmZpZS1oZWxsbWFuDQo+IC0gZnVuZGFtZW50YWwgZWxsaXB0aWMgY3Vy dmUgb3BlcmF0aW9ucw0KPiAtIGVsbGlwdGljIGN1cnZlIERTQQ0KPiAtIG1vZHVsYXIgZXhwb25l bnRpYXRpb24gYW5kIGludmVyc2lvbg0KPiANCj4gVGhpcyBwYXRjaCBwcmltYXJpbHkgZGVmaW5l cyBQTUQgb3BlcmF0aW9ucyBhbmQgZGV2aWNlIGNhcGFiaWxpdGllcw0KPiB0byBwZXJmb3JtIGFz eW1tZXRyaWMgY3J5cHRvIG9wcyBvbiBxdWV1ZSBwYWlycyBhbmQgaW50ZW5kIHRvDQo+IGludml0 ZSBmZWVkYmFja3Mgb24gY3VycmVudCBwcm9wb3NhbCBzbyBhcyB0byBlbnN1cmUgaXQgZW5jb21w YXNzDQo+IGFsbCBraW5kIG9mIGNyeXB0byBkZXZpY2VzIHdpdGggZGlmZmVyZW50IGNhcGFiaWxp dGllcyBhbmQgcXVldWUNCj4gcGFpciBtYW5hZ2VtZW50Lg0KPiANCj4gTGlzdCBvZiBUQkRzOg0K PiAtIEN1cnJlbnRseSwgcGF0Y2ggb25seSB1cGRhdGVkIGZvciBSU0EgeGZvcm0gYW5kIGFzc29j aWF0ZWQgcGFyYW1zLg0KPiAgIE90aGVyIGFsZ29yaXRtcyB0byBiZSBhZGRlZCBpbiBzdWJzZXF1 ZW50IHZlcnNpb25zLg0KPiAtIHBlci1zZXJ2aWNlIHN0YXRzIHVwZGF0ZQ0KPiANCj4gU2lnbmVk LW9mZi1ieTogU2hhbGx5IFZlcm1hIDxzdmVybWFAY2F2aXVtbmV0d29ya3MuY29tPg0KPiAtLS0N Cj4gDQo+IEl0IGlzIGRlcml2YXRpdmUgb2YgUkZDIHYyIGFzeW1tZXRyaWMgY3J5cHRvIHBhdGNo IHNlcmllcyBpbml0aWF0ZWQgYnkNCj4gVW1lc2ggS2FydGhhKG1haWx0bzp1bWVzaC5rYXJ0aGFA Y2F2aXVtbmV0d29ya3MuY29tKToNCj4gDQo+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29y ay9wYXRjaC8yNDI0NS8NCj4gIGh0dHA6Ly9kcGRrLm9yZy9kZXYvcGF0Y2h3b3JrL3BhdGNoLzI0 MjQ2Lw0KPiAgaHR0cDovL2RwZGsub3JnL2Rldi9wYXRjaHdvcmsvcGF0Y2gvMjQyNDcvDQo+IA0K PiBBbmQgaW5jbHVzaXZlIG9mIGFsbCByZXZpZXcgY29tbWVudHMgZ2l2ZW4gb24gUkZDIHYyLg0K PiAgKCBTZWUgY29tcGxldGUgZGlzY3Vzc2lvbiB0aHJlYWQgaGVyZToNCj4gaHR0cDovL2Rldi5k cGRrLm5hcmtpdmUuY29tL3lxVEZGTEh3L2RwZGstZGV2LXJmYy1zcGVjaWZpY2F0aW9ucy1mb3It DQo+IGFzeW1tZXRyaWMtY3J5cHRvLWFsZ29yaXRobXMjcG9zdDEyKQ0KPiANCj4gU29tZSBvZiB0 aGUgUkZDdjIgUmV2aWV3IGNvbW1lbnRzIHBlbmRpbmcgZm9yIGNsb3N1cmU6DQo+ID4gIiBbRmlv bmFdIFRoZSBjb3VudCBmbiBpc24ndCB1c2VkIGF0IGFsbCBmb3Igc3ltIC0gcHJvYmFibHkgbm8g bmVlZCB0byBhZGQgZm9yDQo+IGFzeW0NCj4gICAgICBiZXR0ZXIgaW5zdGVhZCB0byByZW1vdmUg dGhlIHN5bSBmbi4iDQo+IA0KPiAgICAgIEl0IGlzIHN0aWxsIHByZXNlbnQgaW4gZHBkay1uZXh0 LWNyeXB0byBmb3Igc3ltLCBzbyB3aGF0IGhhcyBiZWVuIGRlY2lzaW9uDQo+ICAgICAgb24gaXQ/ DQo+IA0KPiA+IltGaW9uYV0gaWYgZWFjaCBxcCBjYW4gaGFuZGxlIG9ubHkgYSBzcGVjaWZpYyBz ZXJ2aWNlLCBpLmUuIGEgc3Vic2V0IG9mZiB0aGUNCj4gY2FwYWJpbGl0aWVzDQo+ICAgICBJbmRp Y2F0ZWQgYnkgdGhlIGRldmljZSBjYXBhYmlsaXR5IGxpc3QsIHRoZXJlJ3MgYSBuZWVkIGZvciBh IG5ldyBBUEkgdG8gcXVlcnkNCj4gICAgIHRoZSBjYXBhYmlsaXR5IG9mIGEgcXAuIg0KPiANCj4g ICAgIEN1cnJlbnQgcHJvcG9zYWwgZG9lc27igJl0IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGV2aWNl IGNhcGFiaWxpdHkgYW5kIHFwDQo+IGNhcGFiaWxpdHkuDQo+ICAgICBJdCByYXRoZXIgbGVhdmUg c3VjaCBkaWZmZXJlbmNlcyBoYW5kbGluZyBpbnRlcm5hbCB0byBQTURzLiBUaHVzIG5vDQo+IGNh cGFiaWxpdHkNCj4gICAgIG9yIEFQSSBhZGRlZCBmb3IgcXAgaW4gY3VycmVudCB2ZXJzaW9uLiBJ dCBpcyBzdWJqZWN0IHRvIHJldmlzaXQgYmFzZWQgb24NCj4gcmV2aWV3DQo+ICAgICBmZWVkYmFj ayBvbiBjdXJyZW50IHByb3Bvc2FsLg0KPiANCj4gLSBTZXNzaW9ubGVzcyBTdXBwb3J0Lg0KPiAg ICAgQ3VycmVudCBwcm9wb3NhbCBvbmx5IHN1cHBvcnQgU2Vzc2lvbi1iYXNlZCBiZWNhdXNlOg0K PiAgICAgIDEuIEFsbCBvbmUtdGltZSBzZXR1cCBpLmUuICBhbGdvcyBhbmQgYXNzb2NpYXRlZCBw YXJhbXMsIHN1Y2ggYXMsIHB1YmxpYy0NCj4gcHJpdmF0ZSBrZXlzDQo+ICAgICAgICAgb3IgbW9k dWx1cyBsZW5ndGggY2FuIGJlIGRvbmUgaW4gY29udHJvbCBwYXRoIHVzaW5nIHNlc3Npb24taW5p dCBBUEkNCj4gICAgICAyLiBpdOKAmXMgYW4gZWFzaWVyIHdheSB0byBkZWRpY2F0ZSBxcCB0byBk byBzcGVjaWZpYyBzZXJ2aWNlICh1c2luZw0KPiBxdWV1ZV9wYWlyX2F0dGFjaCgpKQ0KPiAgICAg ICAgIHdoaWNoIGNhbm5vdCBiZSBjYXNlIGluIHNlc3Npb25sZXNzDQo+ICAgICAgMy4gQ291bGRu 4oCZdCBmaW5kIGFueSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgZ29pbmcgc2Vzc2lvbmxlc3Mgd2F5 LiBBbHNvDQo+IGV4aXN0aW5nIG1vc3Qgb2YgUE1EcyBhcmUgc2Vzc2lvbi1iYXNlZC4NCj4gDQo+ ICAgICBJdCBjb3VsZCBiZSBhZGRlZCBpbiBzdWJzZXF1ZW50IHZlcnNpb25zLCBpZiByZXF1aXJl bWVudCBpcyBpZGVudGlmaWVkLA0KPiBiYXNlZCBvbiByZXZpZXcgY29tbWVudA0KPiAgICAgb24g dGhpcyBSRkMuDQo+IA0KPiBTdW1tYXJ5DQo+IC0tLS0tLS0NCj4gDQo+IFRoaXMgc2VjdGlvbiBw cm92aWRlcyBhbiBvdmVydmlldyBvZiBrZXkgZmVhdHVyZSBlbmFibGVkIGluIGN1cnJlbnQNCj4g c3BlY2lmaWNhdGlvbi4NCj4gSXQgY29tcHJpc2Ugb2Yga2V5IGRlc2lnbiBjaGFsbGVuZ2VzIGFz IGhhdmUgYmVlbiBpZGVudGlmaWVkIG9uIFJGQ3YyIGFuZA0KPiBzdW1tYXJ5IGRlc2NyaXB0aW9u IG9mIG5ldyBpbnRlcmZhY2VzIGFuZCBkZWZpbml0aW9ucyBhZGRlZCB0byBoYW5kbGUNCj4gc2Ft ZS4NCj4gDQo+IERlc2NyaXB0aW9uDQo+IC0tLS0tLS0tLS0tDQo+IA0KPiBUaGlzIEFQSSBzZXQg YXNzdW1lcyB0aGF0IHRoZSBtYXhfbmJfcXVldWVfcGFpcnMgb24gYQ0KPiBkZXZpY2UgY2FuIGJl IGFsbG9jYXRlZCB0byBhbnkgbWl4IG9mIHN5bSBvciBhc3ltLiBTb21lIGRldmljZXMNCj4gbWF5 IGhhdmUgYSBmaXhlZCBtYXggcGVyIHNlcnZpY2UuIFRodXMsIHJ0ZV9jcnlwdG9kZXZfaW5mbw0K PiBpcyB1cGRhdGVkIHdpdGggbWF4X3N5bV9uYl9xdWV1ZXMgYW5kIG1heF9hc3ltX25iX3F1ZXVl cyB3aXRoIHJ1bGU6DQo+IA0KPiBtYXhfbmJfcXVldWVfcGFpciA9IG1heF9uYl9zeW1fcXAgKyBt YXhfbmJfYXN5bV9xcC4NCj4gDQo+IElmIGRldmljZSBoYXMgbm8gcmVzdHJpY3Rpb25zIG9uIHFw IHRvIGJlIHVzZWQgcGVyIHNlcnZpY2UsIHN1Y2ggUE1EcyBjYW4NCj4gbGVhdmUNCj4gbWF4X25i X3N5bV9xcCA9IG1heF9uYl9hc3ltX3FwID0gMC4gSW4gc3VjaCBjYXNlLCBhcHBsaWNhdGlvbiBj YW4NCj4gc2V0dXAgYW55IG9mDQo+IHRoZSBzZXJ2aWNlIHVwdG8gbGltaXQgZGVmaW5lZCBieSBt YXhfbmJfcXVldWVfcGFpci4NCj4gDQo+IEhlcmUsIG1heF9uYl9zeW1fcXAgYW5kIG1heF9uYl9h c3ltX3FwLCBpZiBub24temVybywganVzdCBkZWZpbmUgbGltaXQNCj4gb24gcXAgd2hpY2ggYXJl DQo+IGF2YWlsYWJsZSBmb3IgZWFjaCBzZXJ2aWNlIGFuZCAqYXJlIG5vdCogaWRzIHRvIGJlIHVz ZWQgZHVyaW5nIHFwIHNldHVwIGFuZA0KPiBlbnF1ZXVlIGkuZS4NCj4gaWYgZGV2aWNlIHN1cHBv cnRzIGJvdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIHdpdGggbiBxcCwgdGhlbiBhbnkgb2YN Cj4gdGhlbQ0KPiBjYW4gYmUgY29uZmlndXJlZCBmb3Igc3ltbWV0cmljIG9yIGFzeW1tZXRyaWMg c3ViamVjdCB0byBsaW1pdCBkZWZpbmVkIGJ5DQo+IG1heF9uYl9zeW1fcXAgYW5kIG1heF9uYl9h c3ltX3FwLiBGb3IgZXhhbXBsZSwNCj4gaWYgZGV2aWNlIGhhcyA2IHF1ZXVlcyBhbmQgNSBmb3Ig c3ltbWV0cmljIGFuZCAxIGZvciBhc3ltbWV0cmljIHRoYXQgaW1wbHkNCj4gYXBwbGljYXRpb24g Y2FuIHNldHVwIG9ubHkgMSBvdXQgb2YgYW55IDYgcXAgZm9yIGFzeW1tZXRyaWMgYW5kIHJlc3Qg Zm9yDQo+IHN5bW1ldHJpYy4NCj4gDQo+IEFkZGl0aW9uYWxseSwgYXBwbGljYXRpb24gY2FuIGRl ZGljYXRlIHFwIHRvIHBlcmZvcm0gc3BlY2lmaWMgc2VydmljZSB2aWENCj4gb3B0aW9uYWwNCj4g cXVldWVfcGFpcl9hdHRhY2hfc3ltL2FzeW1fc2Vzc2lvbigpIEFQSS4NCj4gDQo+IEV4Y2VwdCB0 aGUgb25lcyBtZW50aW9uZWQgYWJvdmUsIHNwZWNpZmljYXRpb24gZG9lc24ndCBkZWZpbmUgYW55 DQo+IHJlc3RyaWN0aW9ucyBvbg0KPiBlbnF1ZXVlL2RlcXVldWUgQVBJIGZvciBkaWZmZXJlbnQg Y3J5cHRvIHNlcnZpY2VzLiBBcHBsaWNhdGlvbiBjYW4NCj4gZW5xdWV1ZSBib3RoIHN5bW1ldHJp Yw0KPiBhbmQgYXN5bW1ldHJpYyBvcGVyYXRpb25zIHRvIHNhbWUgZGV2aWNlIGFuZCBxcCBpZiBk ZXZpY2UgaW5mbyBpbmRpY2F0ZQ0KPiBzdXBwb3J0IG9mIGJvdGgNCj4gc3ltbWV0cmljIGFuZCBh c3ltbWV0cmljIGFuZCBxcCBpcyBub3QgZGVkaWNhdGVkIHRvIGFueS4gSG93ZXZlciBpbg0KPiBw cmFjdGljZSwgaXQgY291bGQNCj4gcmVzdWx0IGluIGhlYWQtb2YtbGluZSBibG9ja2luZyBkdWUg dG8gdGhlIGFzeW0gb3BzIHRha2luZyBsb25nZXIgdGhhbiB0aGUNCj4gc3ltbWV0cmljIG9wcy4N Cj4gDQo+IFNvbWUgSFcgYWNjZWxlcmF0b3JzIGF2b2lkIHRoaXMgaXNzdWUgYnkgc3VwcG9ydGlu ZyBzeW0gYW5kIGFzeW0gb3BzDQo+IG9uIGRpZmZlcmVudCBxcHMgb24gdGhlIHNhbWUgZGV2aWNl LiAgU3VjaCBkZXZpY2VzIGNhbiBzZXQgbWF4X25iX3N5bV9xcA0KPiBhbmQNCj4gbWF4X25iX2Fz eW1fcXAgdG8gbnVtYmVyIG9mIHF1ZXVlcyBhdmFpbGFibGUgZm9yIGVhY2ggcmVzcGVjdGl2ZQ0K PiBzZXJ2aWNlLg0KPiANCj4gVGhpcyBtYXkgZ2l2ZSBwcm9ibGVtIGluIGluZGV4aW5nIG9uIGVu cXVldWUvZGVxdWV1ZSBpLmUuDQo+IGlmIDIgYXN5bSBxcHMgYW5kIDIgc3ltIHFwcyBhcmUgY3Jl YXRlZCBvbiB0aGUgc2FtZSBkZXZpY2UsDQo+IHRoZSBxdWV1ZV9wYWlyX2lkcyBhcmUgZHVwbGlj YXRlZC4gVG8gaGFuZGxlIHN1Y2ggc2NlbmFyaW8sDQo+IDIgYWx0ZXJuYXRpdmVzIGFyZSBwcm9w b3NlZCBmb3IgUE1EIGRlc2lnbjoNCj4gDQo+IDEuIEFsbG93IGFsbCBxcCB0byBpbnB1dCBhbnkg b3BlcmF0aW9uIHR5cGUgdmlydHVhbGx5LiBTYXksDQo+IA0KPiAgICAgQ29uc2lkZXIgZGV2aWNl IHdpdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIGNhcGFiaWxpdHkgaGF2aW5nDQo+ICAgICBt YXhfbmJfcXVldWVfcGFpciBhcyA2LCB0aGVuIGJ5IGRlc2lnbiwgYWxsIDYgYXJlIGNhcGFibGUg dG8gaW5wdXQNCj4gICAgIGJvdGggb3AgdHlwZXMuDQo+IA0KPiAgICAgSWYgUE1EIHVzZXMgZml4 ZWQgc2V0IG9mIHFwLCB0aGVuIGludGVybmFsbHksIGNhbiBtYXAgcXAgaWQgdG8NCj4gICAgIGFj dHVhbCBwaHlzaWNhbCBxcCBpZCB0byBiZSB1c2VkIGFjY29yZGluZyB0byBzZXNzaW9uL29wIHR5 cGUuDQo+ICAgICBJZiBzdWNoIG1hcHBpbmcgaXMgZG9uZSBvbiBkYXRhIHBhdGgsIG1heSBpbXBh Y3QgcGVyZm9ybWFuY2Ugb2YgUE1Ecy4NCj4gICAgIFRodXMsIHRvIGhhbmRsZSBzdWNoIG1hcHBp bmcgb3V0IG9mIGRhdGEgcGF0aCwgbGlicmFyeSBwcm92aWRlcyBhbiBBUEkNCj4gICAgIHF1ZXVl X3BhaXJfYXR0YWNoX3N5bS9hc3ltX3Nlc3Npb24oKSB3aGljaCBmYWNpbGl0YXRlIGFwcGxpY2F0 aW9uIHRvDQo+ICAgICBkZWRpY2F0ZSBxcCBpZCB0byBwZXJmb3JtIHNwZWNpZmljIChzeW0vYXN5 bSkgc2VydmljZSBpbiBjb250cm9sIHBhdGgNCj4gICAgIGFuZCBzaG91bGQgYmUgY2FsbGVkIGJl Zm9yZSAxc3QgY2FsbCB0byBlbnF1ZXVlX2J1cnN0KCkuDQo+ICAgICBIZXJlIFBNRCBjYW4gYmlu ZCBhcHAgcHJvdmlkZWQgbG9naWNhbCBxcCBpZCB0byBhY3R1YWwgcGh5c2ljYWwgcXAgaWQgdG8g dXNlDQo+ICAgICBkZXBlbmRpbmcgb24gc2Vzc2lvbiB0eXBlICwgT1IgYWx0ZXJuYXRpdmVseQ0K PiANCj4gMi4gUE1EcyBjYW4gc3BsaXQgaXQgaW50byB0d28gUE1Ecywgb25lIHdpdGggc3ltbWV0 cmljIE9OTFkgY2FwYWJpbGl0eSBhbmQNCj4gb3RoZXINCj4gICAgIHdpdGggYXN5bW1ldHJpYyBP TkxZIGNhcGFiaWxpdHkgKGFsc28gcHJvcG9zZWQgYnkgRmlvbmEgaW4gUkZDdjIpLg0KPiAgICAg VGhpcyBtYXkgcmVxdWlyZSBzb21lICBjaGFuZ2VzIHRvIEVBTCB0byBmYWNpbGl0YXRlIHBjaSBk ZXZpY2Ugc2hhcmluZw0KPiBiZXR3ZWVuDQo+ICAgICBQTURzLCBlbmFibGluZyBzZXBhcmF0aW9u IG9mIHN5bSBhbmQgIGFzeW0gc2VydmljZXMgb250byBkaWZmZXJlbnQgUE1Ecy4NCj4gICAgIEFz IHBlciBSRkN2MiBmZWVkYmFjaywgSW50ZWwgIHByb3Bvc2VkIHRvIHN1Ym1pdCBhIHBhdGNoIHRv ICBlbmFibGUgdGhpcy4NCj4gDQo+IDMuIFNvbWUgb2YgdGhlIG90aGVyIGFsdGVybmF0aXZlcyB3 ZXJlIGFsc28gc3VnZ2VzdGVkIG9uIFJGQ3YyIGFzDQo+IHN1bW1hcmlzZWQgaGVyZToNCj4gICAg ICJbRmlvbmFdIE9uZSBhbHRlcm5hdGl2ZSBpcyB0byB1c2UgZGlmZmVyZW50IHFwX2lkcyBmb3Ig c3ltIGFuZCBhc3ltLg0KPiAgICAgICBSZW1vdmUgdGhlIHF1ZXVlX3BhaXJfaWQgZnJvbSB0aGUg eHh4X3F1ZXVlX3BhaXJfc2V0dXAgZm5zDQo+ICAgICAgIGFuZCBpbnN0ZWFkIHJldHVybiB0aGUg aWQuIFNvIGUuZy4gaWYgc3ltX3F1ZXVlX3BhaXJfc2V0dXAoKSBpcyBjYWxsZWQsDQo+IHRoZW4N Cj4gICAgICAgYXN5bV9xdWV1ZV9wYWlyX3NldHVwKCksIHRoZW4gc3ltX3F1ZXVlX3BhaXJfc2V0 dXAoKSBxcF9pZCAwIGFuZCAyDQo+IHdvdWxkIGJlDQo+ICAgICAgIHN5bSBxcHMgYW5kIHFwX2lk IDEgd291bGQgYmUgYW4gYXN5bSBxcC4gSW5zdGVhZCBvZiBzZXBhcmF0ZQ0KPiAgICAgICBkZXYt PmRhdGEtPmFzeW1fcXVldWVfcGFpcnMgYW5kIGRldi0+ZGF0YS0+c3ltX3F1ZXVlX3BhaXJzIGFy cmF5cw0KPiB0aGVyZQ0KPiAgICAgICB3b3VsZCBiZSBvbmUgY29tbW9uIGFycmF5LiBBbm90aGVy IGFsdGVybmF0aXZlIGlzIHRvIHVzZSBzZXBhcmF0ZSBBUElzDQo+IGkuZS4NCj4gICAgICAgcnRl X2NyeXB0b2Rldl9zeW1fZW5xdWV1ZV9idXJzdA0KPiBydGVfY3J5cHRvZGV2X2FzeW1fZW5xdWV1 ZV9idXJzdC4iDQo+IA0KPiAgICAgIFdlIGJlbGlldmUgZWl0aHIgb2YgYWJvdmUgcHJvcG9zZWQg MXN0IHR3byBzb2x1dGlvbnMoYWdhaW5zdCBwb2ludCAxIGFuZA0KPiAyKSBzdWZmaWNlIHRvIGFj aGlldmUgcHVycG9zZS4NCj4gICAgICBUaHVzLCB3ZSBkb27igJl0IHJlYWxpemUgbmVlZCB0byBj aGFuZ2Ugbm90aW9uIG9mIHFwX3NldHVwKCkgb3IgYWRkIG5ldw0KPiBlbnF1ZXVlX2J1cnN0KCkg dmFyaWFudA0KPiAgICAgIGZvciBhc3ltIGF0IGN1cnJlbnQgc3RhZ2UuIEhvd2V2ZXIgaXQgaXMg c3ViamVjdCB0byByZXZpc2l0LCBpZiBhbnkNCj4gcmVxdWlyZW1lbnQgaXMgaWRlbnRpZmllZC4N Cj4gDQo+IC0tLQ0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICB8ICAgMSArDQo+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvLmggICAgICAg ICAgICAgIHwgIDM5ICstDQo+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0u aCAgICAgICAgIHwgOTQ5DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIGxpYi9saWJy dGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYyAgICAgICAgICAgfCAyODcgKysrKysrKysNCj4g IGxpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuaCAgICAgICAgICAgfCAzNTggKysr KysrKysrLQ0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuYyAgICAg ICB8ICAxOSArLQ0KPiAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuaCAg ICAgICB8IDE1NCArKystDQo+ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3Zl cnNpb24ubWFwIHwgIDIxICsNCj4gIDggZmlsZXMgY2hhbmdlZCwgMTgxMSBpbnNlcnRpb25zKCsp LCAxNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rl di9NYWtlZmlsZSBiL2xpYi9saWJydGVfY3J5cHRvZGV2L01ha2VmaWxlDQo+IGluZGV4IGJiYThk ZWUuLmRlYzMyNWIgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L01ha2VmaWxl DQo+ICsrKyBiL2xpYi9saWJydGVfY3J5cHRvZGV2L01ha2VmaWxlDQo+IEBAIC0yMSw2ICsyMSw3 IEBAIFNSQ1MteSArPSBydGVfY3J5cHRvZGV2LmMgcnRlX2NyeXB0b2Rldl9wbWQuYw0KPiAgIyBl eHBvcnQgaW5jbHVkZSBmaWxlcw0KPiAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRlX2NyeXB0by5o DQo+ICBTWU1MSU5LLXktaW5jbHVkZSArPSBydGVfY3J5cHRvX3N5bS5oDQo+ICtTWU1MSU5LLXkt aW5jbHVkZSArPSBydGVfY3J5cHRvX2FzeW0uaA0KPiAgU1lNTElOSy15LWluY2x1ZGUgKz0gcnRl X2NyeXB0b2Rldi5oDQo+ICBTWU1MSU5LLXktaW5jbHVkZSArPSBydGVfY3J5cHRvZGV2X3BtZC5o DQo+IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0by5oDQo+ IGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0by5oDQo+IGluZGV4IDk1Y2Y4NjEuLmU4 YzBiYWMgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG8uaA0K PiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvLmgNCj4gQEAgLTIzLDYgKzIz LDcgQEANCj4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+IA0KPiAgI2luY2x1ZGUgInJ0ZV9j cnlwdG9fc3ltLmgiDQo+ICsjaW5jbHVkZSAicnRlX2NyeXB0b19hc3ltLmgiDQo+IA0KPiAgLyoq IENyeXB0byBvcGVyYXRpb24gdHlwZXMgKi8NCj4gIGVudW0gcnRlX2NyeXB0b19vcF90eXBlIHsN Cj4gQEAgLTMwLDYgKzMxLDggQEAgZW51bSBydGVfY3J5cHRvX29wX3R5cGUgew0KPiAgCS8qKjwg VW5kZWZpbmVkIG9wZXJhdGlvbiB0eXBlICovDQo+ICAJUlRFX0NSWVBUT19PUF9UWVBFX1NZTU1F VFJJQywNCj4gIAkvKio8IFN5bW1ldHJpYyBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX09Q X1RZUEVfQVNZTU1FVFJJQw0KPiArCS8qKjwgQXN5bW1ldHJpYyBvcGVyYXRpb24gKi8NCj4gIH07 DQo+IA0KPiAgLyoqIFN0YXR1cyBvZiBjcnlwdG8gb3BlcmF0aW9uICovDQo+IEBAIC05Nyw2ICsx MDAsMTAgQEAgc3RydWN0IHJ0ZV9jcnlwdG9fb3Agew0KPiAgCXVuaW9uIHsNCj4gIAkJc3RydWN0 IHJ0ZV9jcnlwdG9fc3ltX29wIHN5bVswXTsNCj4gIAkJLyoqPCBTeW1tZXRyaWMgb3BlcmF0aW9u IHBhcmFtZXRlcnMgKi8NCj4gKw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wIGFzeW1b MF07DQo+ICsJCS8qKjwgQXN5bW1ldHJpYyBvcGVyYXRpb24gcGFyYW1ldGVycyAqLw0KPiArDQo+ ICAJfTsgLyoqPCBvcGVyYXRpb24gc3BlY2lmaWMgcGFyYW1ldGVycyAqLw0KPiAgfTsNCj4gDQo+ IEBAIC0xMTcsNiArMTI0LDkgQEAgc3RydWN0IHJ0ZV9jcnlwdG9fb3Agew0KPiAgCWNhc2UgUlRF X0NSWVBUT19PUF9UWVBFX1NZTU1FVFJJQzoNCj4gIAkJX19ydGVfY3J5cHRvX3N5bV9vcF9yZXNl dChvcC0+c3ltKTsNCj4gIAkJYnJlYWs7DQo+ICsJY2FzZSBSVEVfQ1JZUFRPX09QX1RZUEVfQVNZ TU1FVFJJQzoNCj4gKwkJX19ydGVfY3J5cHRvX2FzeW1fb3BfcmVzZXQob3AtPmFzeW0pOw0KPiAr CQlicmVhazsNCj4gIAljYXNlIFJURV9DUllQVE9fT1BfVFlQRV9VTkRFRklORUQ6DQo+ICAJZGVm YXVsdDoNCj4gIAkJYnJlYWs7DQo+IEBAIC0xMjQsNyArMTM0LDcgQEAgc3RydWN0IHJ0ZV9jcnlw dG9fb3Agew0KPiAgfQ0KPiANCj4gIC8qKg0KPiAtICogUHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSBi ZWxvbmdpbmcgdG8gYSBjcnlwdG8gc3ltbWV0cmljIG9wZXJhdGlvbiBwb29sLg0KPiArICogUHJp dmF0ZSBkYXRhIHN0cnVjdHVyZSBiZWxvbmdpbmcgdG8gYSBjcnlwdG8gb3BlcmF0aW9uIHBvb2wu DQo+ICAgKi8NCj4gIHN0cnVjdCBydGVfY3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+ICAJZW51 bSBydGVfY3J5cHRvX29wX3R5cGUgdHlwZTsNCj4gQEAgLTI4Myw5ICsyOTMsMTQgQEAgc3RydWN0 IHJ0ZV9jcnlwdG9fb3BfcG9vbF9wcml2YXRlIHsNCj4gIAlpZiAobGlrZWx5KG9wLT5tZW1wb29s ICE9IE5VTEwpKSB7DQo+ICAJCXByaXZfc2l6ZSA9IF9fcnRlX2NyeXB0b19vcF9nZXRfcHJpdl9k YXRhX3NpemUob3AtDQo+ID5tZW1wb29sKTsNCj4gDQo+IC0JCWlmIChsaWtlbHkocHJpdl9zaXpl ID49IHNpemUpKQ0KPiAtCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90ICopKG9wICsgMSkgKw0K PiArCQlpZiAobGlrZWx5KHByaXZfc2l6ZSA+PSBzaXplKSkgew0KPiArCQkJaWYgKG9wLT50eXBl ID09IFJURV9DUllQVE9fT1BfVFlQRV9TWU1NRVRSSUMpDQo+ICsJCQkJcmV0dXJuICh2b2lkICop KCh1aW50OF90ICopKG9wICsgMSkgKw0KPiAgCQkJCQlzaXplb2Yoc3RydWN0IHJ0ZV9jcnlwdG9f c3ltX29wKSk7DQo+ICsJCQlpZiAob3AtPnR5cGUgPT0NCj4gUlRFX0NSWVBUT19PUF9UWVBFX0FT WU1NRVRSSUMpDQo+ICsJCQkJcmV0dXJuICh2b2lkICopKCh1aW50OF90ICopKG9wKzEpICsNCj4g KwkJCQkJc2l6ZW9mKHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3ApKTsNCj4gKwkJfQ0KPiAgCX0N Cj4gDQo+ICAJcmV0dXJuIE5VTEw7DQo+IEBAIC0zODgsNiArNDAzLDI0IEBAIHN0cnVjdCBydGVf Y3J5cHRvX29wX3Bvb2xfcHJpdmF0ZSB7DQo+ICAJcmV0dXJuIF9fcnRlX2NyeXB0b19zeW1fb3Bf YXR0YWNoX3N5bV9zZXNzaW9uKG9wLT5zeW0sIHNlc3MpOw0KPiAgfQ0KPiANCj4gKy8qKg0KPiAr ICogQXR0YWNoIGEgYXN5bW1ldHJpYyBzZXNzaW9uIHRvIGEgY3J5cHRvIG9wZXJhdGlvbg0KPiAr ICoNCj4gKyAqIEBwYXJhbQlvcAljcnlwdG8gb3BlcmF0aW9uLCBtdXN0IGJlIG9mIHR5cGUgYXN5 bW1ldHJpYw0KPiArICogQHBhcmFtCXNlc3MJY3J5cHRvZGV2IHNlc3Npb24NCj4gKyAqLw0KPiAr c3RhdGljIGlubGluZSBpbnQNCj4gK3J0ZV9jcnlwdG9fb3BfYXR0YWNoX2FzeW1fc2Vzc2lvbihz dHJ1Y3QgcnRlX2NyeXB0b19vcCAqb3AsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1f c2Vzc2lvbiAqc2VzcykNCj4gK3sNCj4gKwlpZiAodW5saWtlbHkob3AtPnR5cGUgIT0gUlRFX0NS WVBUT19PUF9UWVBFX0FTWU1NRVRSSUMpKQ0KPiArCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwlvcC0+ c2Vzc190eXBlID0gUlRFX0NSWVBUT19PUF9XSVRIX1NFU1NJT047DQo+ICsNCj4gKwlyZXR1cm4g X19ydGVfY3J5cHRvX29wX2F0dGFjaF9hc3ltX3Nlc3Npb24ob3AtPmFzeW0sIHNlc3MpOw0KPiAr fQ0KPiArDQo+ICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gIH0NCj4gICNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b19hc3ltLmgNCj4gYi9saWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0uaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwLi4yN2NhZjU1DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b19hc3ltLmgNCj4gQEAgLTAsMCArMSw5NDkgQEANCj4g Ky8qDQo+ICsgKiAgIEJTRCBMSUNFTlNFDQo+ICsgKg0KPiArICogICBDb3B5cmlnaHQgKEMpIENh dml1bSBuZXR3b3JrcyBMdGQuIDIwMTcuDQo+ICsgKg0KPiArICogICBSZWRpc3RyaWJ1dGlvbiBh bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAq ICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zDQo+ICsgKiAgIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogICAgICogUmVkaXN0 cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQN Cj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4NCj4gKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUNCj4gKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyAqICAgICAq IE5laXRoZXIgdGhlIG5hbWUgb2YgQ2F2aXVtIE5ldHdvcmtzIG5vciB0aGUgbmFtZXMgb2YgaXRz DQo+ICsgKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gKyAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKyAqDQo+ICsgKiAgIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBD T05UUklCVVRPUlMNCj4gKyAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKyAqICAgTElNSVRFRCBUTywgVEhF IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9S DQo+ICsgKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO VCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+ICsgKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiArICog ICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H LCBCVVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiArICogICBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFORCBP TiBBTlkNCj4gKyAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg U1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiArICogICAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4g KyAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9SVEVfQ1JZUFRP X0FTWU1fSF8NCj4gKyNkZWZpbmUgX1JURV9DUllQVE9fQVNZTV9IXw0KPiArDQo+ICsvKioNCj4g KyAqIEBmaWxlIHJ0ZV9jcnlwdG9fYXN5bS5oDQo+ICsgKg0KPiArICogUlRFIERlZmluaXRpb25z IGZvciBBc3ltbWV0cmljIENyeXB0b2dyYXBoeQ0KPiArICoNCj4gKyAqIERlZmluZXMgYXN5bW1l dHJpYyBhbGdvcml0aG1zIGFuZCBtb2RlcywgYXMgd2VsbCBhcyBzdXBwb3J0ZWQNCj4gKyAqIGFz eW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbnMuDQo+ICsgKi8NCj4gKw0KPiArI2lmZGVmIF9fY3Bs dXNwbHVzDQo+ICtleHRlcm4gIkMiIHsNCj4gKyNlbmRpZg0KPiArDQo+ICsjaW5jbHVkZSA8c3Ry aW5nLmg+DQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX21idWYuaD4N Cj4gKyNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX21lbXBvb2wuaD4N Cj4gKyNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHJ0ZV9j cnlwdG9feGZvcm1fcGFyYW1fdCB7DQo+ICsJdWludDhfdCAqZGF0YTsNCj4gKwlwaHlzX2FkZHJf dCBwaHlzX2FkZHI7DQo+ICsJc2l6ZV90IGxlbmd0aDsNCj4gK30gcnRlX2NyeXB0b194Zm9ybV9w YXJhbTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgcnRlX2NyeXB0b19vcF9wYXJhbV90IHsNCj4g Kwl1aW50OF90ICpkYXRhOw0KPiArCXBoeXNfYWRkcl90IHBoeXNfYWRkcjsNCj4gKwlzaXplX3Qg bGVuZ3RoOw0KPiArfSBydGVfY3J5cHRvX29wX3BhcmFtOw0KPiArDQo+ICsvKioNCj4gKyAqIEFz eW1tZXRyaWMgY3J5cHRvIHRyYW5zZm9ybWF0aW9uIHR5cGVzLg0KPiArICogRWFjaCB4Zm9ybSB0 eXBlIG1hcHMgdG8gb25lIGFzeW1tZXRyaWMgYWxnb3JpdGhtDQo+ICsgKiBwZXJmb3JtaW5nIHNw ZWNpZmljIG9wZXJhdGlvbg0KPiArICoNCj4gKyAqLw0KPiArZW51bSBydGVfY3J5cHRvX2FzeW1f eGZvcm1fdHlwZSB7DQo+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX05PTkUgPSAwLA0KPiArCS8q KjwgWGZvcm0gdHlwZSBOb25lLiBNYXkgYmUgc3VwcG9ydGVkIGJ5DQo+ICsJICogUE1EIHRvIHN1 cHBvcnQgcGFzc3Rocm91Z2ggb3AgZm9yIGRlYnVnZ2luZw0KPiArCSAqIHB1cnBvc2UuDQo+ICsJ ICogaWYgeGZvcm1fdHlwZSBub25lICwgb3BfdHlwZSBpcyBkaXNyZWdhcmRlZC4NCj4gKwkgKi8N Cj4gKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBLA0KPiArCS8qKjwgUlNBLiBQZXJmb3JtcyBF bmNyeXB0LCBEZWNyeXB0LCBTaWduIGFuZCBWZXJpZnkNCj4gKwkgKiBSZWZlciB0byBydGVfY3J5 cHRvX2FzeW1fb3BfdHlwZQ0KPiArCSAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RF WCwNCj4gKwkvKio8IE1vZHVsYXIgRXhwb25lbnRpYXRpb24NCj4gKwkgKiBSZWZlciB0byBydGVf Y3J5cHRvX2FzeW1fb3BfdHlwZQ0KPiArCSAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9E SCwNCj4gKwkvKio8IERlZmZpZS1IZWxsbWFuLiBQZXJmb3JtIEtleSBHZW5lcmF0ZSwgS2V5IENv bXB1dGUNCj4gKwkgKiBSZWZlciB0byBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZQ0KPiArCSAqLw0K PiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9FQ0RILA0KPiArCS8qKjwgRWxsaXB0aWMgQ3VydmUg RGVmZmllLUhlbGxtYW4uDQo+ICsJICogUGVyZm9ybSBLZXkgR2VuZWFyYXRlLCBLZXkgQ2hlY2sg YW5kIEtleSBDb21wdXRlDQo+ICsJICogUmVmZXIgdG8gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUN Cj4gKwkgKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRFNBLA0KPiArCS8qKjwgRGlnaXRh bCBTaWduYXR1cmUgQWxnb3JpdGhtDQo+ICsJICogUGVyZm9ybXMgU2lnbmF0dXJlIHZlcmlmaWNh dGlvbiBhbmQgR2VuZXJhdGlvbg0KPiArCSAqIFJlZmVyIHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90 eXBlDQo+ICsJICovDQo+ICsJUlRFX0NSWVBUT19BU1lNX1hGT1JNX0VDRFNBLA0KPiArCS8qKjwg RWxsaXB0aWMgQ3VydmUgRGlnaXRhbCBTaWduYXR1cmUgQWxnb3JpdGhtLg0KPiArCSAqIFBlcmZv cm1zIFNpZ25hdHVyZSBHZW5lcmF0aW9uLCBhbmQgVmVyaWZpY2F0aW9uLg0KPiArCSAqIFJlZmVy IHRvIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlDQo+ICsJICovDQo+ICsJUlRFX0NSWVBUT19BU1lN X1hGT1JNX0ZFQ0MsDQo+ICsJLyoqPCBGdW5kYW1lbnRhbCBFbGxpcHRpYyBjdXJ2ZSBvcGVyYXRp b25zLg0KPiArCSAqIFBlcmZvcm0gZWxsaXB0aWMgY3VydmUgb3BlcmF0aW9uOg0KPiArCSAqIGFk ZCwgZG91YmxlIHBvaW50LCBtdWx0aXBsaWNhdGlvbg0KPiArCSAqIFJlZmVyIHRvIGVudW0gcnRl X2NyeXB0b19mZWNjX29wdHlwZQ0KPiArCSAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9YRk9STV9N T0RJTlYsDQo+ICsJLyoqPCBNb2R1bGFyIEludmVyc2UgKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fVFlQRV9MSVNUX0VORA0KPiArCS8qKjwgRW5kIG9mIGxpc3QgKi8NCj4gK307DQo+ICsN Cj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBjcnlwdG9nciBvcGVyYXRpb24gdHlwZSB2YXJpYW50 cw0KPiArICovDQo+ICtlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHsNCj4gKwlSVEVfQ1JZ UFRPX0FTWU1fT1BfTk9UX1NQRUNJRklFRCA9IDEsDQo+ICsJLyoqPCBPcGVyYXRpb24gdW5zcGVj aWZpZWQgKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfRU5DUllQVCwNCj4gKwkvKio8IEFzeW1t ZXRyaWMgZW5jcnlwdCBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfREVDUllQ VCwNCj4gKwkvKio8IEFzeW1tZXRyaWMgRGVjcnlwdCBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZ UFRPX0FTWU1fT1BfU0lHTiwNCj4gKwkvKio8IFNpZ25hdHVyZSBnZW5lcmF0aW9uIG9wZXJhdGlv biAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9PUF9WRVJJRlksDQo+ICsJLyoqPCBTaWduYXR1cmUg dmVyaWZpY2F0aW9uIG9wZXJhdGlvbiAqLw0KPiArCVJURV9DUllQVE9fQVNZTV9PUF9LRVlfUEFJ Ul9HRU5FUkFUSU9OLA0KPiArCS8qKjwgUHVibGljL1ByaXZhdGUga2V5IHBhaXIgZ2VuZXJhdGlv biBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FTWU1fT1BfU0hBUkVEX0tFWV9DT01QVVRB VElPTiwNCj4gKwkvKio8IERIIHByaXZhdGUga2V5IGNvbXB1dGF0aW9uIG9wZXJhdGlvbiAqLw0K PiArCVJURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tFWV9DSEVDSywNCj4gKwkvKio8IEVDREgg cHVibGljIGtleSB2YWxpZGl0eSBjaGVjayBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0FT WU1fT1BfTElTVF9FTkQNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogUGFkZGluZyB0eXBlcyBm b3IgUlNBIHNpZ25hdHVyZS4NCj4gKyAqLw0KPiArZW51bSBydGVfY3J5cHRvX3JzYV9wYWRkaW5n X3R5cGUgew0KPiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfTk9UX1NQRUNJRklFRCA9IDEsDQo+ ICsJLyoqPCBSU0Egbm8gcGFkZGluZyBzY2hlbWUgKi8NCj4gKwlSVEVfQ1JZUFRPX1JTQV9QQURE SU5HX0JUMSwNCj4gKwkvKio8IFJTQSBQS0NTIzEgcGFkZGluZyBCVDEgc2NoZW1lICovDQo+ICsJ UlRFX0NSWVBUT19SU0FfUEFERElOR19CVDIsDQo+ICsJLyoqPCBSU0EgUEtDUyMxIHBhZGRpbmcg QlQyIHNjaGVtZSAqLw0KPiArCVJURV9DUllQVE9fUlNBX1BBRERJTkdfT0FFUCwNCj4gKwkvKio8 IFJTQSBQS0NTIzEgT0FFUCBwYWRkaW5nIHNjaGVtZSAqLw0KPiArCVJURV9DUllQVE9fUlNBX1BB RERJTkdfUFNTLA0KPiArCS8qKjwgUlNBIFBLQ1MjMSBQU1MgcGFkZGluZyBzY2hlbWUgKi8NCj4g KwlSVEVfQ1JZUFRPX1JTQV9QQURESU5HX1RZUEVfTElTVF9FTkQNCj4gK307DQo+ICsNCj4gKw0K PiArLyoqDQo+ICsgKiBGdW5kYW1lbnRhbCBFQ0Mgb3BlcmF0aW9uIHR5cGUgdmFyaWFudHMuDQo+ ICsgKi8NCj4gK2VudW0gcnRlX2NyeXB0b19mZWNjX29wdHlwZSB7DQo+ICsJUlRFX0NSWVBUT19G RUNDX09QX05PVF9TUEVDSUZJRUQgPSAxLA0KPiArCS8qKjwgRkVDQyBvcGVyYXRpb24gdHlwZSB1 bnNwZWNpZmllZCAqLw0KPiArCVJURV9DUllQVE9fRkVDQ19PUF9QT0lOVF9BREQsDQo+ICsJLyoq PCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQgYWRkaXRpb24gb3BlcmF0aW9uICovDQo+ICsJUlRFX0NS WVBUT19GRUNDX09QX1BPSU5UX0RCTCwNCj4gKwkvKio8IEZ1bmRhbWVudGFsIEVDQyBwb2ludCBk b3VibGluZyBvcGVyYXRpb24gKi8NCj4gKwlSVEVfQ1JZUFRPX0ZFQ0NfT1BfUE9JTlRfTVVMVElQ TFksDQo+ICsJLyoqPCBGdW5kYW1lbnRhbCBFQ0MgcG9pbnQgbXVsdGlwbGljYXRpb24gb3BlcmF0 aW9uICovDQo+ICsJUlRFX0NSWVBUT19GRUNDX09QX0xJU1RfRU5EDQo+ICt9Ow0KPiArDQo+ICsj ZGVmaW5lIFJURV9DUllQVE9fRUNfQ1VSVkVfTk9UX1NQRUNJRklFRCAgLTENCj4gKy8qKg0KPiAr ICogRUNDIGxpc3Qgb2YgY3VydmVzLg0KPiArICovDQo+ICtlbnVtIHJ0ZV9jcnlwdG9fZWNfcHJp bWVfY3VydmUgew0KPiArCS8qKjwgVW5zcGVjaWZpZWQgb3IgZW1wdHkgY3VydmUgaWQgKi8NCj4g KwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AxMTJyMSwNCj4gKwkvKio8IFNFQ0cvV1RMUyBjdXJ2 ZSBvdmVyIGEgMTEyIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf c2VjcDExMnIyLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTEyIGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDEyOHIxLA0KPiArCS8qKjwgU0VDRyBj dXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VS VkVfc2VjcDEyOHIyLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTI4IGJpdCBwcmltZSBm aWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDE2MGsxLA0KPiArCS8qKjwgU0VD RyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNf Q1VSVkVfc2VjcDE2MHIxLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmlt ZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjcDE2MHIyLA0KPiArCS8qKjwg U0VDRy9XVExTIGN1cnZlIG92ZXIgYSAxNjAgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9zZWNwMTkyazEsDQo+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxOTIg Yml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWNwMjI0azEsDQo+ ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAyMjQgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9zZWNwMjI0cjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3Zl ciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3Ay NTZrMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3AzODRyMSwNCj4gKwkvKio8IE5JU1QvU0VDRyBj dXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VS VkVfc2VjcDUyMXIxLA0KPiArCS8qKjwgTklTVC9TRUNHIGN1cnZlIG92ZXIgYSA1MjEgYml0IHBy aW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTE5MnYxLA0KPiArCS8q KjwgTklTVC9YOS42Mi9TRUNHIGN1cnZlIG92ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9wcmltZTE5MnYyLA0KPiArCS8qKjwgWDkuNjIgY3VydmUg b3ZlciBhIDE5MiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3By aW1lMTkydjMsDQo+ICsJLyoqPCBYOS42MiBjdXJ2ZSBvdmVyIGEgMTkyIGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfcHJpbWUyMzl2MSwNCj4gKwkvKio8IFg5LjYy IGN1cnZlIG92ZXIgYSAyMzkgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19D VVJWRV9wcmltZTIzOXYyLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgcHJp bWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3ByaW1lMjM5djMsDQo+ICsJLyoq PCBYOS42MiBjdXJ2ZSBvdmVyIGEgMjM5IGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQ VE9fRUNfQ1VSVkVfcHJpbWUyNTZ2MSwNCj4gKwkvKio8IFg5LjYyL1NFQ0cgY3VydmUgb3ZlciBh IDI1NiBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2df aWRtX2VjaWRfd3RsczYsDQo+ICsJLyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDExMiBiaXQg cHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRf d3RsczcsDQo+ICsJLyoqPCBTRUNHL1dUTFMgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmll bGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczgsDQo+ ICsJLyoqPCBXVExTIGN1cnZlIG92ZXIgYSAxMTIgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHM5LA0KPiArCS8qKjwgV1RMUyBj dXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VS VkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzMTIsDQo+ICsJLyoqPCBXVExTIGN1cnZlIG92ZXIgYSAy MjQgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFpbnBvb2xQ MTYwcjEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEgMTYwIGJpdCBwcmltZSBmaWVs ZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29sUDE2MHQxLA0KPiArCS8qKjwg UkZDIDU2MzkgY3VydmUgb3ZlciBhIDE2MCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZ UFRPX0VDX0NVUlZFX2JyYWlucG9vbFAxOTJyMSwNCj4gKwkvKio8IFJGQyA1NjM5IGN1cnZlIG92 ZXIgYSAxOTIgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9icmFp bnBvb2xQMTkydDEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEgMTkyIGJpdCBwcmlt ZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29sUDIyNHIxLA0KPiAr CS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQgKi8NCj4gKwlS VEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlucG9vbFAyMjR0MSwNCj4gKwkvKio8IFJGQyA1NjM5IGN1 cnZlIG92ZXIgYSAyMjQgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9icmFpbnBvb2xQMjU2cjEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEgMjU2IGJp dCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29sUDI1NnQx LA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlucG9vbFAzMjByMSwNCj4gKwkvKio8IFJGQyA1 NjM5IGN1cnZlIG92ZXIgYSAzMjAgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9icmFpbnBvb2xQMzIwdDEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBvdmVyIGEg MzIwIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJhaW5wb29s UDM4NHIxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDM4NCBiaXQgcHJpbWUgZmll bGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX2JyYWlucG9vbFAzODR0MSwNCj4gKwkvKio8 IFJGQyA1NjM5IGN1cnZlIG92ZXIgYSAzODQgYml0IHByaW1lIGZpZWxkICovDQo+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9icmFpbnBvb2xQNTEycjEsDQo+ICsJLyoqPCBSRkMgNTYzOSBjdXJ2ZSBv dmVyIGEgNTEyIGJpdCBwcmltZSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfYnJh aW5wb29sUDUxMnQxLA0KPiArCS8qKjwgUkZDIDU2MzkgY3VydmUgb3ZlciBhIDUxMiBiaXQgcHJp bWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3gyNTUxOSwNCj4gKwkvKio8IEN1 cnZlIDI1NTE5ICovDQo+ICsJUlRFX0NSWVBUT19FQ19QQ1VSVkVfTElTVF9FTkQNCj4gK307DQo+ ICsNCj4gK2VudW0gcnRlX2NyeXB0b19lY19iaW5hcnlfY3VydmUgew0KPiArCS8qKjwgVW5zcGVj aWZpZWQgb3IgZW1wdHkgY3VydmUgaWQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3Qx MTNyMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDExMyBiaXQgYmluYXJ5IGZpZWxkICov DQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTEzcjIsDQo+ICsJLyoqPCBTRUNHIGN1cnZl IG92ZXIgYSAxMTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVf c2VjdDEzMXIxLA0KPiArCS8qKjwgU0VDRy9XVExTIGN1cnZlIG92ZXIgYSAxMzEgYml0IGJpbmFy eSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDEzMXIyLA0KPiArCS8qKjwg U0VDRyBjdXJ2ZSBvdmVyIGEgMTMxIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRP X0VDX0NVUlZFX3NlY3QxNjNrMSwNCj4gKwkvKio8IE5JU1QvU0VDRy9XVExTIGN1cnZlIG92ZXIg YSAxNjMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfc2VjdDE2 M3IxLA0KPiArCS8qKjwgU0VDRyBjdXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QxNjNyMiwNCj4gKwkvKio8IE5JU1QvU0VDRyBj dXJ2ZSBvdmVyIGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NV UlZFX3NlY3QxOTNyMSwNCj4gKwkvKio8IFNFQ0cgY3VydmUgb3ZlciBhIDE5MyBiaXQgYmluYXJ5 IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MTkzcjIsDQo+ICsJLyoqPCBT RUNHIGN1cnZlIG92ZXIgYSAxOTMgYml0IGJpbmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9f RUNfQ1VSVkVfc2VjdDIzM2sxLA0KPiArCS8qKjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBh IDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjMz cjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMjMzIGJpdCBiaW5hcnkg ZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3NlY3QyMzlrMSwNCj4gKwkvKio8IFNF Q0cgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9zZWN0MjgzazEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDI4MyBi aXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0MjgzcjEsDQo+ ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDI4MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NDA5azEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3Vy dmUgb3ZlciBhIDQwOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9zZWN0NDA5cjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDQwOSBiaXQgYmlu YXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9zZWN0NTcxazEsDQo+ICsJLyoq PCBOSVNUL1NFQ0cgY3VydmUgb3ZlciBhIDU3MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9zZWN0NTcxcjEsDQo+ICsJLyoqPCBOSVNUL1NFQ0cgY3VydmUgb3Zl ciBhIDU3MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBu YjE2M3YxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxk ICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE2M3YyLA0KPiArCS8qKjwgWDkuNjIg Y3VydmUgb3ZlciBhIDE2MyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19D VVJWRV9jMnBuYjE2M3YzLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE2MyBiaXQgYmlu YXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjE3NnYxLA0KPiArCS8q KjwgWDkuNjIgY3VydmUgb3ZlciBhIDE3NiBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NS WVBUT19FQ19DVVJWRV9jMnRuYjE5MXYxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5 MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjE5MXYy LA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjE5MXYzLA0KPiArCS8qKjwgWDkuNjIgY3VydmUg b3ZlciBhIDE5MSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9j MnBuYjIwOHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIwOCBiaXQgYmluYXJ5IGZp ZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjIzOXYxLA0KPiArCS8qKjwgWDku NjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19F Q19DVVJWRV9jMnRuYjIzOXYyLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQg YmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjIzOXYzLA0KPiAr CS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDIzOSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9jMnBuYjI3MncxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBh IDI3MiBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnBuYjMw NHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDMwNCBiaXQgYmluYXJ5IGZpZWxkICov DQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjM1OXYxLA0KPiArCS8qKjwgWDkuNjIgY3Vy dmUgb3ZlciBhIDM1OSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJW RV9jMnBuYjM2OHcxLA0KPiArCS8qKjwgWDkuNjIgY3VydmUgb3ZlciBhIDM2OCBiaXQgYmluYXJ5 IGZpZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9jMnRuYjQzMXIxLA0KPiArCS8qKjwg WDkuNjIgY3VydmUgb3ZlciBhIDQzMSBiaXQgYmluYXJ5IGZpZWxkICovDQo+ICsJUlRFX0NSWVBU T19FQ19DVVJWRV93YXBfd3NnX2lkbV9lY2lkX3d0bHMxLA0KPiArCS8qKjwgV1RMUyBjdXJ2ZSBv dmVyIGEgMTEzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dh cF93c2dfaWRtX2VjaWRfd3RsczMsDQo+ICsJLyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVy IGEgMTYzIGJpdCBiaW5hcnkgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93 c2dfaWRtX2VjaWRfd3RsczQsDQo+ICsJLyoqPCBTRUNHIGN1cnZlIG92ZXIgYSAxMTMgYml0IGJp bmFyeSBmaWVsZCAqLw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93 dGxzNSwNCj4gKwkvKio8IFg5LjYyIGN1cnZlIG92ZXIgYSAxNjMgYml0IGJpbmFyeSBmaWVsZCAq Lw0KPiArCVJURV9DUllQVE9fRUNfQ1VSVkVfd2FwX3dzZ19pZG1fZWNpZF93dGxzMTAsDQo+ICsJ LyoqPCBOSVNUL1NFQ0cvV1RMUyBjdXJ2ZSBvdmVyIGEgMjMzIGJpdCBiaW5hcnkgZmllbGQgKi8N Cj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX3dhcF93c2dfaWRtX2VjaWRfd3RsczExLA0KPiArCS8q KjwgTklTVC9TRUNHL1dUTFMgY3VydmUgb3ZlciBhIDIzMyBiaXQgYmluYXJ5IGZpZWxkICovDQo+ ICsJUlRFX0NSWVBUT19FQ19CQ1VSVkVfTElTVF9FTkQNCj4gK307DQo+ICsNCj4gKy8qKg0KPiAr ICogRWxsaXB0aWMgY3VydmUgcG9pbnQgZm9ybWF0DQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5 cHRvX2VjX3BvaW50IHsNCj4gKwlzdHJ1Y3Qgew0KPiArCQlpbnQgbGVuZ3RoOw0KPiArCQl1aW50 OF90ICpkYXRhOw0KPiArCQlwaHlzX2FkZHJfdCBwaHlzX2FkZHI7DQo+ICsJCS8qKjwgcGh5c19h ZGRyIGlzIHVzZWQgb25seSBmb3IgcG9pbnRzIHBhc3NlZCBpbiB0aGUNCj4gKwkJICogYXN5bV9v cCBzdHJ1Y3R1cmUuDQo+ICsJCSAqLw0KPiArCX0geDsNCj4gKwkvKio8IFggY28tb3JkaW5hdGUg Ki8NCj4gKw0KPiArCXN0cnVjdCB7DQo+ICsJCWludCBsZW5ndGg7DQo+ICsJCXVpbnQ4X3QgKmRh dGE7DQo+ICsJCXBoeXNfYWRkcl90IHBoeXNfYWRkcjsNCj4gKwkJLyoqPCBwaHlzX2FkZHIgaXMg dXNlZCBvbmx5IGZvciBwb2ludHMgcGFzc2VkIGluIHRoZQ0KPiArCQkgKiBvcGVyYXRpb24gc3Ry dWN0dXJlDQo+ICsJCSAqLw0KPiArCX0geTsNCj4gKwkvKio8IFkgY28tb3JkaW5hdGUgKi8NCj4g K307DQo+ICsNCj4gKy8qKg0KPiArICogRWxsaXB0aWMgY3VydmUgdHlwZQ0KPiArICovDQo+ICtl bnVtIHJ0ZV9jcnlwdG9fZWNfY3VydmVfdHlwZSB7DQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9U WVBFX1VOREVGSU5FRCwNCj4gKwkvKio8IEN1cnZlIHR5cGUgdW5kZWZpbmVkICovDQo+ICsJUlRF X0NSWVBUT19FQ19DVVJWRV9UWVBFX1BSSU1FX0ZJRUxELA0KPiArCS8qKjwgRUMgY3VydmUgZGVm aW5lZCBvdmVyIGEgcHJpbWUgZmllbGQgKi8NCj4gKwlSVEVfQ1JZUFRPX0VDX0NVUlZFX1RZUEVf QklOQVJZX0ZJRUxELA0KPiArCS8qKjwgRUMgY3VydmUgZGVmaW5lZCBvdmVyIGEgYmluYXJ5IGZp ZWxkICovDQo+ICsJUlRFX0NSWVBUT19FQ19DVVJWRV9MSVNUX0VORA0KPiArfTsNCj4gKw0KPiAr LyoqIGFzeW0geGZvcm0gdHlwZSBuYW1lIHN0cmluZ3MgKi8NCj4gK2V4dGVybiBjb25zdCBjaGFy ICoNCj4gK3J0ZV9jcnlwdG9fYXN5bV94Zm9ybV9zdHJpbmdzW107DQo+ICsNCj4gKy8qKiBhc3lt IG9wZXJhdGlvbnMgdHlwZSBuYW1lIHN0cmluZ3MgKi8NCj4gK2V4dGVybiBjb25zdCBjaGFyICoN Cj4gK3J0ZV9jcnlwdG9fYXN5bV9vcF9zdHJpbmdzW107DQo+ICsNCj4gKy8qKg0KPiArICogRWxs aXB0aWMgY3VydmUgaWQNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNfY3VydmVfaWQg ew0KPiArCVJURV9TVERfQzExDQo+ICsJdW5pb24gew0KPiArCQllbnVtIHJ0ZV9jcnlwdG9fZWNf cHJpbWVfY3VydmUgcGN1cnZlOw0KPiArCQllbnVtIHJ0ZV9jcnlwdG9fZWNfYmluYXJ5X2N1cnZl IGJjdXJ2ZTsNCj4gKwl9Ow0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBBc3ltbWV0cmljIFJT QSB0cmFuc2Zvcm0gZGF0YQ0KPiArICoNCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRh dGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBSU0EgY3J5cHRvDQo+ICsgKiB0cmFuc2Zvcm0uDQo+ICsg Kg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b19yc2FfeGZvcm0gew0KPiArDQo+ICsJcnRl X2NyeXB0b194Zm9ybV9wYXJhbSBuOw0KPiArCS8qKjwgbiAtIFByaW1lIG1vZHVsdXMNCj4gKwkg KiBQcmltZSBtb2R1bHVzIGRhdGEgb2YgUlNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0 d29yaw0KPiArCSAqIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJcnRlX2Ny eXB0b194Zm9ybV9wYXJhbSBlOw0KPiArCS8qKjwgZSAtIFB1YmxpYyBrZXkgZXhwb25lbnQNCj4g KwkgKiBQdWJsaWMga2V5IGV4cG9uZW50IHVzZWQgZm9yIFJTQSBwdWJsaWMga2V5IG9wZXJhdGlv bnMgaW4gT2N0ZXQtDQo+ICsJICogc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+ ICsJICovDQo+ICsNCj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIGQ7DQo+ICsJLyoqPCBkIC0g UHJpdmF0ZSBrZXkgZXhwb25lbnQNCj4gKwkgKiBQcml2YXRlIGtleSBleHBvbmVudCB1c2VkIGZv ciBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBpbg0KPiArCSAqIE9jdGV0LXN0cmluZyAgbmV0 d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZv cm1fcGFyYW0gcDsNCj4gKwkvKio8IHAgLSBQcml2YXRlIGtleSBjb21wb25lbnQgUA0KPiArCSAq IFByaXZhdGUga2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JU DQo+IG1ldGhvZA0KPiArCSAqIG9mIHByaXZhdGUga2V5IG9wZXJhdGlvbnMgaW4gT2N0ZXQtc3Ry aW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiAr CXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcTsNCj4gKwkvKio8IHEgLSBQcml2YXRlIGtleSBjb21w b25lbnQgUQ0KPiArCSAqIFByaXZhdGUga2V5IGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVyICBy ZXF1aXJlZCBmb3IgQ1JUDQo+IG1ldGhvZA0KPiArCSAqIG9mIHByaXZhdGUga2V5IG9wZXJhdGlv bnMgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4NCj4g KwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFA7DQo+ICsJLyoqPCBkUCAt IFByaXZhdGUgQ1JUIGNvbXBvbmVudA0KPiArCSAqIFByaXZhdGUgQ1JUIGNvbXBvbmVudCBvZiBS U0EgcGFyYW1ldGVyICByZXF1aXJlZCBmb3IgQ1JUDQo+IG1ldGhvZA0KPiArCSAqIFJTQSBwcml2 YXRlIGtleSBvcGVyYXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4g KwkgKiBmb3JtYXQuDQo+ICsJICogZFAgPSBkIG1vZCAoIHAgLSAxICkNCj4gKwkgKi8NCj4gKw0K PiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gZFE7DQo+ICsJLyoqPCBkUSAtIFByaXZhdGUgQ1JU IGNvbXBvbmVudA0KPiArCSAqIFByaXZhdGUgQ1JUIGNvbXBvbmVudCBvZiBSU0EgcGFyYW1ldGVy ICByZXF1aXJlZCBmb3IgQ1JUDQo+IG1ldGhvZA0KPiArCSAqIFJTQSBwcml2YXRlIGtleSBvcGVy YXRpb25zIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gKwkgKiBmb3JtYXQu DQo+ICsJICogZFEgPSBkIG1vZCAoIHEgLSAxICkNCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlw dG9feGZvcm1fcGFyYW0gcUludjsNCj4gKwkvKio8IHFJbnYgLSBQcml2YXRlIENSVCBjb21wb25l bnQNCj4gKwkgKiBQcml2YXRlIENSVCBjb21wb25lbnQgb2YgUlNBIHBhcmFtZXRlciAgcmVxdWly ZWQgZm9yIENSVA0KPiBtZXRob2QNCj4gKwkgKiBSU0EgcHJpdmF0ZSBrZXkgb3BlcmF0aW9ucyBp biBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ICsJICogZm9ybWF0Lg0KPiArCSAq IHFJbnYgPSBpbnYgcSBtb2QgcA0KPiArCSAqLw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBB c3ltbWV0cmljIE1vZHVsYXIgZXhwb25lbnRpYXRpb24gdHJhbnNmb3JtIGRhdGENCj4gKyAqDQo+ ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkYXRhIHJlcXVpcmVkIHRvIHBlcmZvcm0gbW9k dWxhciBleHBvbmVudGF0aW9uDQo+ICsgKiBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICoNCj4gKyAq Lw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fbW9kZXhfeGZvcm0gew0KPiArDQo+ICsJcnRlX2NyeXB0 b194Zm9ybV9wYXJhbSBtb2R1bHVzOw0KPiArCS8qKjwgbW9kdWx1cw0KPiArCSAqIFByaW1lIG1v ZHVsdXMgb2YgdGhlIG1vZGV4cCB0cmFuc2Zvcm0gb3BlcmF0aW9uIGluIE9jdGV0LXN0cmluZw0K PiArCSAqIG5ldHdvcmsgYnl0ZSBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4gKwlydGVf Y3J5cHRvX3hmb3JtX3BhcmFtIGV4cG9uZW50Ow0KPiArCS8qKjwgZXhwb25lbnQNCj4gKwkgKiBQ cml2YXRlIGV4cG9uZW50IG9mIHRoZSBtb2RleHAgdHJhbnNmb3JtIG9wZXJhdGlvbiBpbg0KPiAr CSAqIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiAr fTsNCj4gKw0KPiArLyoqDQo+ICsgKiBBc3ltbWV0cmljIERIIHRyYW5zZm9ybSBkYXRhDQo+ICsg Kg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0YSB1c2VkIHRvIHBlcmZvcm0gREgg a2V5DQo+ICsgKiBvcGVyYXRpb25zLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlw dG9fZGhfeGZvcm0gew0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFyYW0gcDsNCj4gKwkvKio8IHAg OiBQcmltZSBtb2R1bHVzIGRhdGENCj4gKwkgKiBESCBwcmltZSBtb2R1bG91cyBkYXRhIGluIE9j dGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gZm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBnOw0KPiArCS8qKjwgZyA6IEdlbmVyYXRvcg0KPiAr CSAqIERIIGdyb3VwIGdlbmVyYXRvciBkYXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUg b3JkZXINCj4gKwkgKiBmb3JtYXQuDQo+ICsJICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAq IEFzeW1tZXRyaWMgRUNESCB0cmFuc2Zvcm0gZGF0YQ0KPiArICoNCj4gKyAqIFRoaXMgc3RydWN0 dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBFQ0RIIGNyeXB0bw0KPiArICog dHJhbnNmb3JtLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNkaF94Zm9y bSB7DQo+ICsNCj4gKwllbnVtIHJ0ZV9jcnlwdG9fZWNfY3VydmVfdHlwZSBjdXJ2ZV90eXBlOw0K PiArCS8qKjwgRUNESCBjdXJ2ZSB0eXBlOiBQcmltZSB2cyBCaW5hcnkgKi8NCj4gKw0KPiArCXN0 cnVjdCBydGVfY3J5cHRvX2VjX2N1cnZlX2lkIGN1cnZlX2lkOw0KPiArDQo+ICsJcnRlX2NyeXB0 b194Zm9ybV9wYXJhbSBwOw0KPiArCS8qKjwgcDoNCj4gKwkgKiBJZiB0aGUgY3VydmVfdHlwZSBp cyBAcmVmDQo+IFJURV9DUllQVE9fRUNfQ1VSVkVfVFlQRV9QUklNRV9GSUVMRDoNCj4gKwkgKiBw IGhvbGRzIHRoZSBwcmltZSBtb2R1bHVzIGRhdGEgaW4gT2N0ZXQgc3RyaW5nIGZvcm1hdC4NCj4g KwkgKg0KPiArCSAqIElmIHRoZSBjdXJ2ZV90eXBlIGlzIEByZWYNCj4gUlRFX0NSWVBUT19FQ19D VVJWRV9UWVBFX0JJTkFSWV9GSUVMRDoNCj4gKwkgKiBwIGhvbGRzIHJlZHVjdGlvbiBwb2x5bm9t aWFsIGNvLWVmZmljaWVudHMgYW5kIGRlZ3JlZS4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlw dG9feGZvcm1fcGFyYW0gYTsNCj4gKwkvKio8IEN1cnZlIFBhcmFtZXRlciBDby1lZmZpY2llbnQg J2EnIG9mIGN1cnZlIGVxdWF0aW9uIGRhdGEgaW4NCj4gKwkgKiBPY3RldC1zdHJpbmcgbmV0d29y ayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1f cGFyYW0gYjsNCj4gKwkvKio8IEN1cnZlIFBhcmFtZXRlciBDby1lZmZpY2llbnQgJ2InIG9mIGN1 cnZlIGVxdWF0aW9uIGRhdGEgaW4NCj4gKwkgKiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9y ZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXN0cnVjdCAgcnRlX2NyeXB0b19lY19wb2lu dCBHOw0KPiArCS8qKjwgRzogRUMgY3VydmUgZ2VuZXJhdG9yIHBvaW50DQo+ICsJICogRUMgY3Vy dmUgZ2VuZXJhdG9yIHBvaW50IGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0ZSBvcmRl cg0KPiArCSAqIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFy YW0gbjsNCj4gKwkvKio8IG4gOiBvcmRlciBvZiBHDQo+ICsJICogRUNESCBjdXJ2ZSBvcmRlciBk YXRhIGluIE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0K PiArDQo+ICsJaW50IGg7DQo+ICsJLyoqPCBDby1mYWN0b3Igb2YgdGhlIGN1cnZlICovDQo+ICsN Cj4gKwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIHBrZXk7DQo+ICsJLyoqPCBwa2V5OiBQcml2YXRl IGtleQ0KPiArCSAqIFByaXZhdGUga2V5IGRhdGEgZm9yIEVDREggb3BlcmF0aW9uIGluIE9jdGV0 LXN0cmluZyBuZXR3b3JrIGJ5dGUNCj4gKwkgKiBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsN Cj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19wb2ludCBROw0KPiArCS8qKjwgUTogUHVibGljIGtl eSBwb2ludA0KPiArCSAqIFB1YmxpYyBrZXkgcG9pbnQgZGF0YSBvZiBFQ0RIIG9wZXJhdGlvbiBp biBPY3RldC1zdHJpbmcgbmV0d29yaw0KPiArCSAqIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAq Lw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBBc3ltbWV0cmljIERpZ2l0YWwgU2lnbmF0dXJl IHRyYW5zZm9ybSBvcGVyYXRpb24NCj4gKyAqDQo+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlu IHNpZ25lciBrZXkgaW5mb3JtYXRpb24gZm9yIERTQSBzaWduYXR1cmUNCj4gKyAqIGdlbmVyYXRp b24gYW5kIHZlcmlmaWNhdGlvbi4NCj4gKyAqIEFwcCB3aGljaCBkb2VzIGJvdGggU2lnbmF0dXJl IEdlbmVyYXRpb24gYW5kIFZlcmlmaWNhdGlvbiBzaG91bGQNCj4gKyAqIGNyZWF0ZSB0d28gc2Vw YXJhdGUgc2Vzc2lvbiBjYXJyeWluZyBpdHMgb3duIGFuZCBwZWVyIGtleSBpbmZvcm1hdGlvbg0K PiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZHNhX3hmb3JtIHsNCj4gKwlydGVf Y3J5cHRvX3hmb3JtX3BhcmFtIHA7DQo+ICsJLyoqPCBwIC0gUHJpbWUgbW9kdWx1cw0KPiArCSAq IFByaW1lIG1vZHVsdXMgZGF0YSBmb3IgRFNBIG9wZXJhdGlvbiBpbiBPY3RldC1zdHJpbmcgbmV0 d29yaw0KPiBieXRlDQo+ICsJICogb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiArCXJ0ZV9jcnlw dG9feGZvcm1fcGFyYW0gcTsNCj4gKwkvKio8IHEgOiBPcmRlciBvZiB0aGUgc3ViZ3JvdXAuDQo+ ICsJICogT3JkZXIgb2YgdGhlIHN1Ymdyb3VwIGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsg Ynl0ZSBvcmRlcg0KPiArCSAqIGZvcm1hdC4NCj4gKwkgKiAocC0xKSAlIHEgPSAwDQo+ICsJICov DQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBnOw0KPiArCS8qKjwgZzogR2VuZXJhdG9yIG9m IHRoZSBzdWJncm91cA0KPiArCSAqIEdlbmVyYXRvciAgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0 d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKwlydGVfY3J5cHRvX3hmb3JtX3Bh cmFtIHg7DQo+ICsJLyoqPCB4OiBQcml2YXRlIGtleSBvZiB0aGUgc2lnbmVyDQo+ICsJICogUHJp dmF0ZSBrZXkgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4N Cj4gKwkgKiBQcml2YXRlIGtleSBpcyB2YWxpZCBvbmx5IGZvciBzaWduYXR1cmUgZ2VuZXJhdGlv biBvcGVyYXRpb24uDQo+ICsJICovDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSB5Ow0KPiAr CS8qKjwgeSA6IFB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lci4NCj4gKwkgKiBQdWJsaWMga2V5IGRh dGEgb2YgdGhlIHNpZ25lciBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ICsJ ICogZm9ybWF0Lg0KPiArCSAqIHkgPSBnXnggbW9kIHANCj4gKwkgKi8NCj4gK307DQo+ICsNCj4g Ky8qKg0KPiArICogQXN5bW1ldHJpYyBFQ0RTQSB0cmFuc2Zvcm0gZGF0YQ0KPiArICoNCj4gKyAq IFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybSBFQ0RTQSBj cnlwdG8NCj4gKyAqIHRyYW5zZm9ybS4NCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZWNk c2FfeGZvcm0gew0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQXN5 bW1ldHJpYyBtb2R1bGFyIGludmVyc2UgdHJhbnNmb3JtIG9wZXJhdGlvbg0KPiArICoNCj4gKyAq IFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybQ0KPiArICog YXN5bW1ldHJpYyBtb2R1bGFyIGludmVyc2UgY3J5cHRvIHRyYW5zZm9ybQ0KPiArICovDQo+ICtz dHJ1Y3QgcnRlX2NyeXB0b19tb2RpbnZfeGZvcm0gew0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ ICsNCj4gKy8qKiBBc3ltbWV0cmljIEZ1bmRhbWVudGFsIEVDQyB0cmFuc2Zvcm0gb3BlcmF0aW9u DQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0YSByZXF1aXJlZCB0byBw ZXJmb3JtIGFzeW1tZXRyaWMNCj4gKyAqIGZ1bmRhbWVudGFsIEVDQyBjcnlwdG8gdHJhbnNmb3Jt Lg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b19mZWNjX3hmb3JtIHsNCj4gKw0KPiArCWVu dW0gcnRlX2NyeXB0b19lY19jdXJ2ZV90eXBlIGN1cnZlX3R5cGU7DQo+ICsJLyoqPCBGRUNDIGN1 cnZlIHR5cGU6IFByaW1lIHZzIEJpbmFyeSAqLw0KPiArDQo+ICsJc3RydWN0IHJ0ZV9jcnlwdG9f ZWNfY3VydmVfaWQgY3VydmVfaWQ7DQo+ICsJLyoqPCBFQyBjdXJ2ZSBJRCAqLw0KPiArDQo+ICsJ cnRlX2NyeXB0b194Zm9ybV9wYXJhbSBvcmRlcjsNCj4gKwkvKio8IG9yZGVyIDogRUNDIGN1cnZl IG9yZGVyDQo+ICsJICogQ3VydmUgb3JkZXIgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBi eXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9feGZvcm1fcGFy YW0gcHJpbWU7DQo+ICsJLyoqPCBwcmltZSA6IEN1cnZlIHByaW1lIG1vZHVsdXMgZGF0YQ0KPiAr CSAqIFByaW1lIG1vZHVsdXMgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVy IGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXN0cnVjdCBydGVfY3J5cHRvX2VjX3BvaW50IEc7 DQo+ICsJLyoqPCBHOiBjdXJ2ZSBnZW5lcmF0b3IgcG9pbnQNCj4gKwkgKiBDdXJ2ZSBnZW5lcmF0 b3IgcG9pbnQgZGF0YSBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyDQo+ICsJICog Zm9ybWF0Lg0KPiArCSAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b194Zm9ybV9wYXJhbSBhOw0KPiAr CS8qKjwgQ28tZWZmaWNpZW50ICdhJyBvZiBjdXJ2ZSBlcXVhdGlvbiBkYXRhIGluIE9jdGV0LXN0 cmluZyBuZXR3b3JrDQo+ICsJICogYnl0ZSBvcmRlciBmb3JtYXQuDQo+ICsJICovDQo+ICsNCj4g KwlydGVfY3J5cHRvX3hmb3JtX3BhcmFtIGI7DQo+ICsJLyoqPCBDby1lZmZpY2llbnQgJ2EnIG9m IGN1cnZlIGVxdWF0aW9uIGRhdGEgaW4gT2N0ZXQtc3RyaW5nIG5ldHdvcmsNCj4gKwkgKiBieXRl IG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCWludCBoOw0KPiArCS8qKjwgQ28tZmFj dG9yIG9mIHRoZSBjdXJ2ZSAqLw0KPiArDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFzeW1t ZXRyaWMgY3J5cHRvIHRyYW5zZm9ybSBkYXRhDQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1cmUg Y29udGFpbnMgdGhlIGRhdGEgcmVxdWlyZWQgdG8gcGVyZm9ybSB0aGUNCj4gKyAqIGFzeW1tZXRy aWMgY3J5cHRvIHRyYW5zZm9ybWF0aW9uIG9wZXJhdGlvbi4gVGhlIGZpZWxkIG9wDQo+ICsgKiBk ZXRlcm1pbmVzIHRoZSBhc3ltbWV0cmljIGFsZ29yaXRobSBmb3IgdHJhbnNmb3JtYXRpb24uDQo+ ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gew0KPiArCXN0cnVjdCBydGVf Y3J5cHRvX2FzeW1feGZvcm0gKm5leHQ7DQo+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1f dHlwZSB4Zm9ybV90eXBlOw0KPiArCS8qKjwgQXN5bW1ldHJpYyBhbGdvcml0aG0gZm9yIGNyeXB0 byB0cmFuc2Zvcm0gKi8NCj4gKw0KPiArCVJURV9TVERfQzExDQo+ICsJdW5pb24gew0KPiArCQlz dHJ1Y3QgcnRlX2NyeXB0b19yc2FfeGZvcm0gcnNhOw0KPiArCQkvKio8IFJTQSB4Zm9ybSBwYXJh bWV0ZXJzICovDQo+ICsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9fZmVjY194Zm9ybSBmZWNjOw0K PiArCQkvKio8IEZ1bmRhbWVudGFsIEVsbGlwdGljIEN1cnZlIHhmb3JtIHBhcmFtZXRlcnMgKi8N Cj4gKw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19tb2RleF94Zm9ybSBtb2RleDsNCj4gKwkJLyoq PCBNb2R1bGFyIEV4cG9uZW50aWF0aW9uIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4gKw0KPiArCQlz dHJ1Y3QgcnRlX2NyeXB0b19tb2RpbnZfeGZvcm0gbW9kaW52Ow0KPiArCQkvKio8IE1vZHVsdXMg SW52ZXJzZSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ICsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9f ZWNkc2FfeGZvcm0gZWNkc2E7DQo+ICsJCS8qKjwgRUNEU0EgeGZvcm0gcGFyYW1ldGVycyAqLw0K PiArDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvX2VjZGhfeGZvcm0gZWNkaDsNCj4gKwkJLyoqPCBF Q0RIIHhmb3JtIHBhcmFtZXRlcnMgKi8NCj4gKw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19kc2Ff eGZvcm0gZHNhOw0KPiArCQkvKio8IERTQSB4Zm9ybSBwYXJhbWV0ZXJzICovDQo+ICsJfTsNCj4g K307DQo+ICsNCj4gK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbjsNCj4gKw0KPiAr LyoqDQo+ICsgKiBSU0Egb3BlcmF0aW9uIHBhcmFtcw0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0 IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHsNCj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90 eXBlIG9wX3R5cGU7DQo+ICsJLyoqPCBUeXBlIG9mIFJTQSBvcGVyYXRpb24gZm9yIHRyYW5zZm9y bSAqLzsNCj4gKw0KPiArCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gbWVzc2FnZTsNCj4gKwkvKio8DQo+ ICsJICogUG9pbnRlciB0byBkYXRhDQo+ICsJICogLSB0byBiZSBlbmNyeXB0ZWQgZm9yIFJTQSBw dWJsaWMgZW5jcnlwdC4NCj4gKwkgKiAtIHRvIGJlIGRlY3J5cHRlZCBmb3IgUlNBIHByaXZhdGUg ZGVjcnlwdC4NCj4gKwkgKiAtIHRvIGJlIHNpZ25lZCBmb3IgUlNBIHNpZ24gZ2VuZXJhdGlvbi4N Cj4gKwkgKiAtIHRvIGJlIGF1dGhlbnRpY2F0ZWQgZm9yIFJTQSBzaWduIHZlcmlmaWNhdGlvbi4N Cj4gKwkgKi8NCj4gKw0KPiArCXJ0ZV9jcnlwdG9fb3BfcGFyYW0gc2lnbjsNCj4gKwkvKio8DQo+ ICsJICogUG9pbnRlciB0byBSU0Egc2lnbmF0dXJlIGRhdGEuIElmIG9wZXJhdGlvbiBpcyBSU0EN Cj4gKwkgKiBzaWduIEByZWYgUlRFX0NSWVBUT19SU0FfT1BfU0lHTiwgYnVmZmVyIHdpbGwgYmUN Cj4gKwkgKiBvdmVyLXdyaXR0ZW4gd2l0aCBnZW5lcmF0ZWQgc2lnbmF0dXJlLg0KPiArCSAqDQo+ ICsJICogTGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgZGF0YSB3aWxsIGJlIGVxdWFsIHRvIHRoZQ0K PiArCSAqIFJTQSBwcmltZSBtb2R1bHVzIGxlbmd0aC4NCj4gKwkgKi8NCj4gKw0KPiArCWVudW0g cnRlX2NyeXB0b19yc2FfcGFkZGluZ190eXBlIHBhZDsNCj4gKwkvKio8IFJTQSBwYWRkaW5nIHNj aGVtZSB0byBiZSB1c2VkIGZvciB0cmFuc2Zvcm0gKi8NCj4gKw0KPiArCWVudW0gcnRlX2NyeXB0 b19hdXRoX2FsZ29yaXRobSBtZDsNCj4gKwkvKio8IEhhc2ggYWxnb3JpdGhtIHRvIGJlIHVzZWQg Zm9yIGRhdGEgaGFzaCBpZiBwYWRkaW5nDQo+ICsJICogc2NoZW1lIGlzIGVpdGhlciBPQUVQIG9y IFBTUy4gVmFsaWQgaGFzaCBhbGdvcml0aG1zDQo+ICsJICogYXJlOg0KPiArCSAqIE1ENSwgU0hB MSwgU0hBMjI0LCBTSEEyNTYsIFNIQTM4NCwgU0hBNTEyDQo+ICsJICovDQo+ICsNCj4gKwllbnVt IHJ0ZV9jcnlwdG9fYXV0aF9hbGdvcml0aG0gbWdmMW1kOw0KPiArCS8qKjwNCj4gKwkgKiBIYXNo IGFsZ29yaXRobSB0byBiZSB1c2VkIGZvciBtYXNrIGdlbmVyYXRpb24gaWYNCj4gKwkgKiBwYWRk aW5nIHNjaGVtZSBpcyBlaXRoZXIgT0FFUCBvciBQU1MuIElmIHBhZGRpbmcNCj4gKwkgKiBzY2hl bWUgaXMgdW5zcGVjaWZpZWQgZGF0YSBoYXNoIGFsZ29yaXRobSBpcyB1c2VkDQo+ICsJICogZm9y IG1hc2sgZ2VuZXJhdGlvbi4gVmFsaWQgaGFzaCBhbGdvcml0aG1zIGFyZToNCj4gKwkgKiBNRDUs IFNIQTEsIFNIQTIyNCwgU0hBMjU2LCBTSEEzODQsIFNIQTUxMg0KPiArCSAqLw0KPiArfTsNCj4g Kw0KPiArLyoqDQo+ICsgKiBEZWZmaWUtSGVsbG1hbiBPcGVyYXRpb25zIHBhcmFtcw0KPiArICoN Cj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZGhfb3BfcGFyYW0gew0KPiArCWVudW0gcnRl X2NyeXB0b19hc3ltX29wX3R5cGUgb3BfdHlwZTsNCj4gKwkvKio8IEFzeW1tZXRyaWMgb3AgdHlw ZTogS2V5IEdlbmVyYXRpb24gLyBDb21wdXRhdGlvbiAqLw0KPiArDQo+ICsJcnRlX2NyeXB0b19v cF9wYXJhbSBwdWJfa2V5Ow0KPiArCS8qKjwNCj4gKwkgKiBPdXRwdXQgbmF0aXZlIGFwcCBwdWJs aWMga2V5IHdoZW4gREggb3BlcmF0aW9uIHR5cGUgaXMNCj4gKwkgKiBLRVlfR0VORVJBVElPTi4N Cj4gKwkgKiBJbnB1dCBwZWVyIHB1YmxpYyBrZXkgd2hlbiBESCBvcGVyYXRpb24gaXMgc2hhcmVk IGtleQ0KPiArCSAqIEtFWV9DT01QVVRBVElPTg0KPiArCSAqIEFuIE9jdGV0LXN0cmluZyBuZXR3 b3JrIGJ5dGUgb3JkZXIgZm9ybWF0Lg0KPiArCSAqDQo+ICsJICovDQo+ICsNCj4gKwlydGVfY3J5 cHRvX29wX3BhcmFtIHByaXZfa2V5Ow0KPiArCS8qKjwNCj4gKwkgKiBPdXRwdXQgbmF0aXZlIGFw cCBwcml2YXRlIGtleSBpZiBvcGVyYXRpb24gdHlwZQ0KPiArCSAqIEtFWV9HRU5FUkFUSU9OLg0K PiArCSAqIElucHV0IG5hdGl2ZSBhcHAgcHJpdmF0ZSBrZXkgd2hlbiBvcGVyYXRpb24gdHlwZQ0K PiArCSAqIGlzIEtFWV9DT01QVVRBVElPTi4gcHJpdl9rZXkgaXMgaW4NCj4gKwkgKiBpbiBPY3Rl dC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gKw0KPiArCXJ0 ZV9jcnlwdG9fb3BfcGFyYW0gc2hhcmVkX2tleTsNCj4gKwkvKg0KPiArCSAqIE91dHB1dCB3aGVu IERIIG9wZXJhdGlvbiB0eXBlIGlzIEtFWV9DT01QVVRBVElPTjoNCj4gKwkgKiBjb21wdXRlZC4g c2hhcmVkX2tleSBpcyB3cml0dGVuIGFzDQo+ICsJICogT2N0ZXQtc3RyaW5nIG5ldHdvcmsgYnl0 ZSBvcmRlciBmb3JtYXQuDQo+ICsJICogSWdub3JlZCBmb3IgS0VZX0dFTkVSQVRJT04uDQo+ICsJ ICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIERTQSBPcGVyYXRpb25zIHBhcmFtcw0KPiAr ICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fZHNhX29wX3BhcmFtIHsNCj4gKwkvKiog VEJEICovDQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIE1vZCBFeHAgT3BlcmF0aW9ucyBwYXJh bXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX21vZGV4X29wX3BhcmFtIHsN Cj4gKwlydGVfY3J5cHRvX29wX3BhcmFtIGJhc2U7DQo+ICsJLyoqPA0KPiArCSAqIFBvaW50ZXIg dG8gYmFzZSBvZiBtb2R1bGFyIGV4cG9uZW50aWF0aW9uIGRhdGEgaW4NCj4gKwkgKiBPY3RldC1z dHJpbmcgbmV0d29yayBieXRlIG9yZGVyIGZvcm1hdC4NCj4gKwkgKi8NCj4gK307DQo+ICsNCj4g Ky8qKg0KPiArICogRWxsaXB0aWMgY3VydmUgRGVmZmllLUhlbGxtYW4gT3BlcmF0aW9ucyBwYXJh bXMNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX2VjZGhfb3BfcGFyYW0gew0K PiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgb3BfdHlwZTsNCj4gKwkvKio8IEFzeW1t ZXRyaWMgb3BlcmF0aW9uOiBrZXkgZ2VuZXJhdGlvbiwgY29tcHV0YXRpb24gKi8NCj4gKw0KPiAr CXJ0ZV9jcnlwdG9fb3BfcGFyYW0gcHJpdl9rZXk7DQo+ICsJLyoqPA0KPiArCSAqIE91dHB1dCBp ZiBvcGVyYXRpb24gdHlwZSBpcyBLRVlfUEFJUl9HRU5FUkFUSU9OLA0KPiArCSAqIG91dHB1dCBu YXRpdmUgYXBwIHByaXZhdGUga2V5Lg0KPiArCSAqIElucHV0IGFuZCBvdXRwdXQsIElmIEVDREgg b3BlcmF0aW9uIHR5cGUgaXMNCj4gU0hBUkVEX0tFWV9DT01QVVRBVElPTiwNCj4gKwkgKiBwcml2 X2tleSB3aWxsIGhvbGQgdGhlICdYJyBjby1vcmRpbmF0ZSBvZiB0aGUgc2hhcmVkDQo+ICsJICog c2VjcmV0IEVDIHBvaW50LiBwcml2X2tleSBpcyBpbiBPY3RldC1zdHJpbmcgbmV0d29yaw0KPiAr CSAqIGJ5dGUgb3JkZXIuDQo+ICsJICovDQo+ICsNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b19lY19w b2ludCBwdWJfa2V5Ow0KPiArCS8qKjwNCj4gKwkgKiBPdXRwdXQgaWYgb3BlcmF0aW9uIHR5cGUg aXMgS0VZX1BBSVJfR0VORVJBVElPTiwNCj4gKwkgKiBzdG9yZSBuYXRpdmUgYXBwIHB1YmxpYyBr ZXkuDQo+ICsJICogSW5wdXQgaWYgb3BlcmF0aW9uIHR5cGUgaXMgU0hBUkVEX0tFWV9DT01QVVRB VElPTiwNCj4gKwkgKg0KPiArCSAqIEtFWV9DT01QVVRBVElPTjoNCj4gKwkgKiAgcHViX2tleSBp cyBpbiBPY3RldC1zdHJpbmcgbmV0d29yayBieXRlIG9yZGVyLg0KPiArCSAqLw0KPiArfTsNCj4g Kw0KPiArLyoqDQo+ICsgKiBFbGxpcHRpYyBDdXJ2ZSBEU0EgT3BlcmF0aW9ucyBwYXJhbXMNCj4g KyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX2VjZHNhX29wX3BhcmFtIHsNCj4gKw0K PiArCWVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgZWNkc2Ffb3A7DQo+ICsJLyoqPCBFQ0RT QSBjcnlwdG8geGZvcm0gb3BlcmF0aW9uIHR5cGU6IFNpZ25hdHVyZQ0KPiArCSAqICBnZW5lcmF0 aW9uL1ZlcmlmaWNhdGlvbg0KPiArCSAqLw0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ICsNCj4g Ky8qKg0KPiArICogRnVuZGFtZW50YWwgRWxsaXB0aWMgQ3VydmUgT3BlcmF0aW9ucyBwYXJhbXMN Cj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvX2ZlY2Nfb3BfcGFyYW0gew0KPiAr CWVudW0gcnRlX2NyeXB0b19mZWNjX29wdHlwZSBmZWNjX29wOw0KPiArCS8qKjwgRkVDQyBjcnlw dG8geGZvcm0gb3BlcmF0aW9uIHR5cGUgKi8NCj4gKw0KPiArCS8qKiBUQkQgKi8NCj4gK307DQo+ ICsNCj4gKy8qKg0KPiArICogTW9kIEludiBPcGVyYXRpb25zIHBhcmFtcw0KPiArICoNCj4gKyAq Lw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fbW9kaW52X29wX3BhcmFtIHsNCj4gKwlydGVfY3J5cHRv X29wX3BhcmFtIHByaW1lOw0KPiArCS8qKjwNCj4gKwkgKiBQb2ludGVyIHRvIHRoZSBwcmltZSBt b2R1bHVzIGRhdGEgZm9yIG1vZHVsYXINCj4gKwkgKiBpbnZlcnNlIG9wZXJhdGlvbiBpbiBPY3Rl dC1zdHJpbmcgbmV0d29yayBieXRlDQo+ICsJICogb3JkZXIgZm9ybWF0Lg0KPiArCSAqLw0KPiAr DQo+ICsJcnRlX2NyeXB0b19vcF9wYXJhbSBiYXNlOw0KPiArCS8qKjwNCj4gKwkgKiBQb2ludGVy IHRvIHRoZSBiYXNlIGZvciB0aGUgbW9kdWxhciBpbnZlcnNlDQo+ICsJICogb3BlcmF0aW9uIGlu IE9jdGV0LXN0cmluZyBuZXR3b3JrIGJ5dGUgb3JkZXINCj4gKwkgKiBmb3JtYXQuDQo+ICsJICov DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIEFzeW1tZXRyaWMgQ3J5cHRvZ3JhcGhpYyBPcGVy YXRpb24uDQo+ICsgKg0KPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgZGF0YSByZWxhdGlu ZyB0byBwZXJmb3JtaW5nIGFzeW1tZXRyaWMNCj4gY3J5cHRvZ3JhcGhpYw0KPiArICogb3BlcmF0 aW9uLg0KPiArICoNCj4gKyAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCB7DQo+ICsJ ZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB0eXBlOw0KPiArCS8qKjwgUlNBLCBESCwg RUNESCwgRFNBIGV0YyAqLw0KPiArDQo+ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uICpzZXNzaW9uOw0KPiArCS8qKjwgSGFuZGxlIGZvciB0aGUgaW5pdGlhbGlzZWQgc2Vzc2lv biBjb250ZXh0ICovDQo+ICsNCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9uIHsNCj4gKwkJc3Ry dWN0IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHJzYTsNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9f ZGhfb3BfcGFyYW0gZGg7DQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvX21vZGV4X29wX3BhcmFtIG1v ZGV4Ow0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19lY2RoX29wX3BhcmFtIGVjZGg7DQo+ICsJCXN0 cnVjdCBydGVfY3J5cHRvX2VjZHNhX29wX3BhcmFtIGVjZHNhOw0KPiArCQlzdHJ1Y3QgcnRlX2Ny eXB0b19kc2Ffb3BfcGFyYW0gZHNhOw0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19mZWNjX29wX3Bh cmFtIGZlY2M7DQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvX21vZGludl9vcF9wYXJhbSBtb2RpbnY7 DQo+ICsJfTsNCj4gK30gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gKw0KPiArLyoqDQo+ICsgKiBS ZXNldCB0aGUgZmllbGRzIG9mIGFuIGFzeW1tZXRyaWMgb3BlcmF0aW9uIHRvIHRoZWlyIGRlZmF1 bHQgdmFsdWVzLg0KPiArICoNCj4gKyAqIEBwYXJhbQlvcAlUaGUgY3J5cHRvIG9wZXJhdGlvbiB0 byBiZSByZXNldC4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkDQo+ICtfX3J0ZV9jcnlw dG9fYXN5bV9vcF9yZXNldChzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wICpvcCkNCj4gK3sNCj4g KwltZW1zZXQob3AsIDAsIHNpemVvZigqb3ApKTsNCj4gK30NCj4gKw0KPiArDQo+ICsvKioNCj4g KyAqIEF0dGFjaCBhIHNlc3Npb24gdG8gYW4gYXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9uDQo+ ICsgKg0KPiArICogQHBhcmFtCWFzeW1fb3AJY3J5cHRvIG9wZXJhdGlvbg0KPiArICogQHBhcmFt CXNlc3MJY3J5cHRvZGV2IHNlc3Npb24NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSBpbnQNCj4g K19fcnRlX2NyeXB0b19vcF9hdHRhY2hfYXN5bV9zZXNzaW9uKHN0cnVjdCBydGVfY3J5cHRvX2Fz eW1fb3ANCj4gKmFzeW1fb3AsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lv biAqc2VzcykNCj4gK3sNCj4gKwlhc3ltX29wLT5zZXNzaW9uID0gc2VzczsNCj4gKwlyZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ICsjZW5kaWYNCj4g Kw0KPiArI2VuZGlmIC8qIF9SVEVfQ1JZUFRPX0FTWU1fSF8gKi8NCj4gZGlmZiAtLWdpdCBhL2xp Yi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYuYw0KPiBiL2xpYi9saWJydGVfY3J5cHRv ZGV2L3J0ZV9jcnlwdG9kZXYuYw0KPiBpbmRleCA3NzI2ZDE1Li5iYWQxOGMzIDEwMDY0NA0KPiAt LS0gYS9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmMNCj4gKysrIGIvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5jDQo+IEBAIC0xNjYsNiArMTY2LDMzIEBAIHN0 cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4gIAlbUlRFX0NSWVBUT19BRUFEX09QX0RF Q1JZUFRdCT0gImRlY3J5cHQiDQo+ICB9Ow0KPiANCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBj cnlwdG8gdHJhbnNmb3JtIG9wZXJhdGlvbiBzdHJpbmdzIGlkZW50aWZpZXJzLg0KPiArICovDQo+ ICtjb25zdCBjaGFyICpydGVfY3J5cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tdID0gew0KPiArCVtS VEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBXQk9ICJyc2EiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fTU9ERVhdCT0gIm1vZGV4cCIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9YRk9STV9ESF0J PSAiZGgiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRUNESF0JPSAiZWNkaCIsDQo+ICsJ W1JURV9DUllQVE9fQVNZTV9YRk9STV9EU0FdCT0gImRzYSIsDQo+ICsJW1JURV9DUllQVE9fQVNZ TV9YRk9STV9FQ0RTQV0JPSAiZWNkc2EiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9E SU5WXQk9ICJtb2RpbnYiLA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRkVDQ10JPSAiZmVj YyINCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogQXN5bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9u IHN0cmluZ3MgaWRlbnRpZmllcnMuDQo+ICsgKi8NCj4gK2NvbnN0IGNoYXIgKnJ0ZV9jcnlwdG9f YXN5bV9vcF9zdHJpbmdzW10gPSB7DQo+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9FTkNSWVBUXQk9 ICJlbmNyeXB0IiwNCj4gKwlbUlRFX0NSWVBUT19BU1lNX09QX0RFQ1JZUFRdCT0gImRlY3J5cHQi LA0KPiArCVtSVEVfQ1JZUFRPX0FTWU1fT1BfU0lHTl0JPSAic2lnbiIsDQo+ICsJW1JURV9DUllQ VE9fQVNZTV9PUF9WRVJJRlldCT0gInZlcmlmeSIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9L RVlfUEFJUl9HRU5FUkFUSU9OXQk9DQo+ICJrZXlwYWlyX2dlbmVyYXRlIiwNCj4gKwlbUlRFX0NS WVBUT19BU1lNX09QX1NIQVJFRF9LRVlfQ09NUFVUQVRJT05dID0NCj4gInNoYXJlZGtleV9jb21w dXRhdGlvbiIsDQo+ICsJW1JURV9DUllQVE9fQVNZTV9PUF9FQ0RIX09QX0tFWV9DSEVDS10JPQ0K PiAiZWNkaF9rZXljaGVjayIsDQo+ICt9Ow0KPiArDQo+ICBpbnQNCj4gIHJ0ZV9jcnlwdG9kZXZf Z2V0X2NpcGhlcl9hbGdvX2VudW0oZW51bSBydGVfY3J5cHRvX2NpcGhlcl9hbGdvcml0aG0NCj4g KmFsZ29fZW51bSwNCj4gIAkJY29uc3QgY2hhciAqYWxnb19zdHJpbmcpDQo+IEBAIC0yMTcsNiAr MjQ0LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X2NhbGxiYWNrIHsNCj4gIAlyZXR1cm4gLTE7 DQo+ICB9DQo+IA0KPiAraW50DQo+ICtydGVfY3J5cHRvZGV2X2dldF9hc3ltX3hmb3JtX2VudW0o ZW51bQ0KPiBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSAqeGZvcm1fZW51bSwNCj4gKwkJY29u c3QgY2hhciAqeGZvcm1fc3RyaW5nKQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBpOw0KPiArDQo+ ICsJZm9yIChpID0gMTsgaSA8IFJURV9ESU0ocnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmluZ3Mp OyBpKyspIHsNCj4gKwkJaWYgKHN0cmNtcCh4Zm9ybV9zdHJpbmcsDQo+ICsJCQkgICBydGVfY3J5 cHRvX2FzeW1feGZvcm1fc3RyaW5nc1tpXSkgPT0gMCkgew0KPiArCQkJKnhmb3JtX2VudW0gPSAo ZW51bQ0KPiBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSkgaTsNCj4gKwkJCXJldHVybiAwOw0K PiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJLyogSW52YWxpZCBzdHJpbmcgKi8NCj4gKwlyZXR1cm4g LTE7DQo+ICt9DQo+ICsNCj4gIC8qKg0KPiAgICogVGhlIGNyeXB0byBhdXRoIG9wZXJhdGlvbiBz dHJpbmdzIGlkZW50aWZpZXJzLg0KPiAgICogSXQgY291bGQgYmUgdXNlZCBpbiBhcHBsaWNhdGlv biBjb21tYW5kIGxpbmUuDQo+IEBAIC0yNjIsNiArMzA3LDI4IEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X2NhbGxiYWNrIHsNCj4gDQo+ICB9DQo+IA0KPiArY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bW1ldHJpY19jYXBhYmlsaXR5ICoNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9jYXBhYmls aXR5X2dldCh1aW50OF90IGRldl9pZCwNCj4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf YXN5bV9jYXBhYmlsaXR5X2lkeCAqaWR4KQ0KPiArew0KPiArCWNvbnN0IHN0cnVjdCBydGVfY3J5 cHRvZGV2X2NhcGFiaWxpdGllcyAqY2FwYWJpbGl0eTsNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9pbmZvIGRldl9pbmZvOw0KPiArCXVuc2lnbmVkIGludCBpID0gMDsNCj4gKw0KPiArCW1lbXNl dCgmZGV2X2luZm8sIDAsIHNpemVvZihydGVfY3J5cHRvZGV2X2luZm8pKTsNCj4gKwlydGVfY3J5 cHRvZGV2X2luZm9fZ2V0KGRldl9pZCwgJmRldl9pbmZvKTsNCj4gKw0KPiArCXdoaWxlICgoY2Fw YWJpbGl0eSA9ICZkZXZfaW5mby5jYXBhYmlsaXRpZXNbaSsrXSktPm9wICE9DQo+ICsJCQlSVEVf Q1JZUFRPX09QX1RZUEVfVU5ERUZJTkVEKSB7DQo+ICsJCWlmIChjYXBhYmlsaXR5LT5vcCAhPSBS VEVfQ1JZUFRPX09QX1RZUEVfQVNZTU1FVFJJQykNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJ CWlmIChjYXBhYmlsaXR5LT5hc3ltLnhmb3JtX3R5cGUgPT0gaWR4LT50eXBlKQ0KPiArCQkJcmV0 dXJuICZjYXBhYmlsaXR5LT5hc3ltOw0KPiArCX0NCj4gKwlyZXR1cm4gTlVMTDsNCj4gK307DQo+ ICsNCj4gICNkZWZpbmUgcGFyYW1fcmFuZ2VfY2hlY2soeCwgeSkgXA0KPiAgCSgoKHggPCB5Lm1p bikgfHwgKHggPiB5Lm1heCkpIHx8IFwNCj4gIAkoeS5pbmNyZW1lbnQgIT0gMCAmJiAoeCAlIHku aW5jcmVtZW50KSAhPSAwKSkNCj4gQEAgLTYwMSw2ICs2NjgsMjQgQEAgc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKg0KPiAgCXJldHVybiBkZXYtPmRhdGEtPm5iX3F1ZXVlX3BhaXJzOw0KPiAgfQ0KPiAN Cj4gK3VpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2X2FzeW1fcXVldWVfcGFpcl9jb3VudCh1aW50 OF90IGRldl9pZCkNCj4gK3sNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPiArDQo+ ICsJZGV2ID0gJnJ0ZV9jcnlwdG9fZGV2aWNlc1tkZXZfaWRdOw0KPiArCXJldHVybiBkZXYtPmRh dGEtPm5iX2FzeW1fcXA7DQo+ICt9DQo+ICsNCj4gK3VpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2 X3N5bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lkKQ0KPiArew0KPiArCXN0cnVjdCBy dGVfY3J5cHRvZGV2ICpkZXY7DQo+ICsNCj4gKwlkZXYgPSAmcnRlX2NyeXB0b19kZXZpY2VzW2Rl dl9pZF07DQo+ICsJcmV0dXJuIGRldi0+ZGF0YS0+bmJfc3ltX3FwOw0KPiArfQ0KPiArDQo+ICBz dGF0aWMgaW50DQo+ICBydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJzX2NvbmZpZyhzdHJ1Y3QgcnRl X2NyeXB0b2RldiAqZGV2LCB1aW50MTZfdA0KPiBuYl9xcGFpcnMsDQo+ICAJCWludCBzb2NrZXRf aWQpDQo+IEBAIC0xMDg4LDYgKzExNzMsMzggQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKg0KPiAg CXJldHVybiAwOw0KPiAgfQ0KPiANCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Np b25faW5pdCh1aW50OF90IGRldl9pZCwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9z ZXNzaW9uICpzZXNzLA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICp4Zm9ybXMs DQo+ICsJCXN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKmRldjsNCj4gKwl1aW50OF90IGluZGV4Ow0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlk ZXYgPSBydGVfY3J5cHRvZGV2X3BtZF9nZXRfZGV2KGRldl9pZCk7DQo+ICsNCj4gKwlpZiAoc2Vz cyA9PSBOVUxMIHx8IHhmb3JtcyA9PSBOVUxMIHx8IGRldiA9PSBOVUxMKQ0KPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gKw0KPiArCWluZGV4ID0gZGV2LT5kcml2ZXJfaWQ7DQo+ICsNCj4gKwlpZiAo c2Vzcy0+c2Vzc19wcml2YXRlX2RhdGFbaW5kZXhdID09IE5VTEwpIHsNCj4gKwkJcmV0ID0gZGV2 LT5kZXZfb3BzLT5hc3ltX3Nlc3Npb25fY29uZmlndXJlKGRldiwNCj4gKwkJCQkJCQkgICB4Zm9y bXMsDQo+ICsJCQkJCQkJICAgc2VzcywgbXApOw0KPiArCQlpZiAocmV0IDwgMCkgew0KPiArCQkJ Q0RFVl9MT0dfRVJSKA0KPiArCQkJCSJkZXZfaWQgJWQgZmFpbGVkIHRvIGNvbmZpZ3VyZSBzZXNz aW9uDQo+IGRldGFpbHMiLA0KPiArCQkJCWRldl9pZCk7DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiAr CQl9DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gIHN0cnVjdCBydGVf Y3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fY3Jl YXRlKHN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ICB7DQo+IEBAIC0xMTA1LDYgKzEyMjIsMjMg QEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCXJldHVybiBzZXNzOw0K PiAgfQ0KPiANCj4gK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqDQo+ICtydGVf Y3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jcmVhdGUoc3RydWN0IHJ0ZV9tZW1wb29sICptcCkNCj4g K3sNCj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3M7DQo+ICsNCj4g KwkvKiBBbGxvY2F0ZSBhIHNlc3Npb24gc3RydWN0dXJlIGZyb20gdGhlIHNlc3Npb24gcG9vbCAq Lw0KPiArCWlmIChydGVfbWVtcG9vbF9nZXQobXAsICh2b2lkICopJnNlc3MpKSB7DQo+ICsJCUNE RVZfTE9HX0VSUigiY291bGRuJ3QgZ2V0IG9iamVjdCBmcm9tIHNlc3Npb24NCj4gbWVtcG9vbCIp Ow0KPiArCQlyZXR1cm4gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwkvKiBDbGVhciBkZXZpY2Ugc2Vz c2lvbiBwb2ludGVyICovDQo+ICsJbWVtc2V0KHNlc3MsIDAsIChzaXplb2Yodm9pZCAqKSAqIG5i X2RyaXZlcnMpKTsNCj4gKw0KPiArCXJldHVybiBzZXNzOw0KPiArfQ0KPiArDQo+ICBpbnQNCj4g IHJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9hdHRhY2hfc3ltX3Nlc3Npb24odWludDhfdCBkZXZf aWQsIHVpbnQxNl90DQo+IHFwX2lkLA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vz c2lvbiAqc2VzcykNCj4gQEAgLTExNjAsNiArMTI5NCw2MCBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2Rl dl9zeW1fc2Vzc2lvbiAqDQo+ICB9DQo+IA0KPiAgaW50DQo+ICtydGVfY3J5cHRvZGV2X3F1ZXVl X3BhaXJfYXR0YWNoX2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QNCj4gcXBf aWQsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcykNCj4gK3sN Cj4gKwlzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2Ow0KPiArDQo+ICsJaWYgKCFydGVfY3J5cHRv ZGV2X3BtZF9pc192YWxpZF9kZXYoZGV2X2lkKSkgew0KPiArCQlDREVWX0xPR19FUlIoIkludmFs aWQgZGV2X2lkPSVkIiwgZGV2X2lkKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiAr DQo+ICsJZGV2ID0gJnJ0ZV9jcnlwdG9fZGV2aWNlc1tkZXZfaWRdOw0KPiArDQo+ICsJLyogVGhl IEFQSSBpcyBvcHRpb25hbCwgbm90IHJldHVybmluZyBlcnJvciBpZiBkcml2ZXIgZG8gbm90IHN1 dXBvcnQgKi8NCj4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLQ0KPiA+ YXN5bV9xcF9hdHRhY2hfc2Vzc2lvbiwgMCk7DQo+ICsNCj4gKwl2b2lkICpzZXNzX3ByaXYgPSBn ZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfZGF0YShzZXNzLCBkZXYtDQo+ID5kcml2ZXJfaWQpOw0K PiArDQo+ICsJaWYgKGRldi0+ZGV2X29wcy0+YXN5bV9xcF9hdHRhY2hfc2Vzc2lvbihkZXYsIHFw X2lkLCBzZXNzX3ByaXYpKQ0KPiB7DQo+ICsJCUNERVZfTE9HX0VSUigiZGV2X2lkICVkIGZhaWxl ZCB0byBhdHRhY2ggcXA6ICVkIHdpdGgNCj4gc2Vzc2lvbiIsDQo+ICsJCQkJZGV2X2lkLCBxcF9p ZCk7DQo+ICsJCXJldHVybiAtRVBFUk07DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2RldGFjaF9hc3ltX3Nl c3Npb24odWludDhfdCBkZXZfaWQsIHVpbnQxNl90DQo+IHFwX2lkLA0KPiArCQlzdHJ1Y3QgcnRl X2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MpDQo+ICt7DQo+ICsJc3RydWN0IHJ0ZV9jcnlw dG9kZXYgKmRldjsNCj4gKw0KPiArCWlmICghcnRlX2NyeXB0b2Rldl9wbWRfaXNfdmFsaWRfZGV2 KGRldl9pZCkpIHsNCj4gKwkJQ0RFVl9MT0dfRVJSKCJJbnZhbGlkIGRldl9pZD0lZCIsIGRldl9p ZCk7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWRldiA9ICZydGVfY3J5 cHRvX2RldmljZXNbZGV2X2lkXTsNCj4gKw0KPiArCS8qIFRoZSBBUEkgaXMgb3B0aW9uYWwsIG5v dCByZXR1cm5pbmcgZXJyb3IgaWYgZHJpdmVyIGRvIG5vdCBzdXVwb3J0ICovDQo+ICsJUlRFX0ZV TkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29wcy0NCj4gPmFzeW1fcXBfZGV0YWNoX3Nlc3Np b24sIDApOw0KPiArDQo+ICsJdm9pZCAqc2Vzc19wcml2ID0gZ2V0X2FzeW1fc2Vzc2lvbl9wcml2 YXRlX2RhdGEoc2VzcywgZGV2LQ0KPiA+ZHJpdmVyX2lkKTsNCj4gKw0KPiArCWlmIChkZXYtPmRl dl9vcHMtPmFzeW1fcXBfZGV0YWNoX3Nlc3Npb24oZGV2LCBxcF9pZCwgc2Vzc19wcml2KSkNCj4g ew0KPiArCQlDREVWX0xPR19FUlIoImRldl9pZCAlZCBmYWlsZWQgdG8gZGV0YWNoIHFwOiAlZCBm cm9tDQo+IHNlc3Npb24iLA0KPiArCQkJCWRldl9pZCwgcXBfaWQpOw0KPiArCQlyZXR1cm4gLUVQ RVJNOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtpbnQNCj4gIHJ0 ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fY2xlYXIodWludDhfdCBkZXZfaWQsDQo+ICAJCXN0cnVj dCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICpzZXNzKQ0KPiAgew0KPiBAQCAtMTE3Niw2ICsx MzY0LDIyIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4gIH0NCj4gDQo+ ICBpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NsZWFyKHVpbnQ4X3QgZGV2X2lk LA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3MpDQo+ICt7DQo+ ICsJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCj4gKw0KPiArCWRldiA9IHJ0ZV9jcnlwdG9k ZXZfcG1kX2dldF9kZXYoZGV2X2lkKTsNCj4gKw0KPiArCWlmIChkZXYgPT0gTlVMTCB8fCBzZXNz ID09IE5VTEwpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJZGV2LT5kZXZfb3BzLT5h c3ltX3Nlc3Npb25fY2xlYXIoZGV2LCBzZXNzKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0K PiArDQo+ICtpbnQNCj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fZnJlZShzdHJ1Y3QgcnRl X2NyeXB0b2Rldl9zeW1fc2Vzc2lvbiAqc2VzcykNCj4gIHsNCj4gIAl1aW50OF90IGk7DQo+IEBA IC0xMTk5LDYgKzE0MDMsMzEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0K PiAgCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9hc3ltX3Nl c3Npb25fZnJlZShzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24NCj4gKnNlc3MpDQo+ ICt7DQo+ICsJdWludDhfdCBpOw0KPiArCXZvaWQgKnNlc3NfcHJpdjsNCj4gKwlzdHJ1Y3QgcnRl X21lbXBvb2wgKnNlc3NfbXA7DQo+ICsNCj4gKwlpZiAoc2VzcyA9PSBOVUxMKQ0KPiArCQlyZXR1 cm4gLUVJTlZBTDsNCj4gKw0KPiArCS8qIENoZWNrIHRoYXQgYWxsIGRldmljZSBwcml2YXRlIGRh dGEgaGFzIGJlZW4gZnJlZWQgKi8NCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmJfZHJpdmVyczsgaSsr KSB7DQo+ICsJCXNlc3NfcHJpdiA9IGdldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHNlc3Ms IGkpOw0KPiArCQlpZiAoc2Vzc19wcml2ICE9IE5VTEwpDQo+ICsJCQlyZXR1cm4gLUVCVVNZOw0K PiArCX0NCj4gKw0KPiArCS8qIFJldHVybiBzZXNzaW9uIHRvIG1lbXBvb2wgKi8NCj4gKwlzZXNz X21wID0gcnRlX21lbXBvb2xfZnJvbV9vYmooc2Vzcyk7DQo+ICsJcnRlX21lbXBvb2xfcHV0KHNl c3NfbXAsIHNlc3MpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKw0KPiAgdW5z aWduZWQgaW50DQo+ICBydGVfY3J5cHRvZGV2X2dldF9oZWFkZXJfc2Vzc2lvbl9zaXplKHZvaWQp DQo+ICB7DQo+IEBAIC0xMjM1LDYgKzE0NjQsNTcgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3lt X3Nlc3Npb24gKg0KPiAgCQlyZXR1cm4gaGVhZGVyX3NpemU7DQo+IA0KPiAgCXJldHVybiBwcml2 X3Nlc3Nfc2l6ZTsNCj4gK30NCj4gKw0KPiArdW5zaWduZWQgaW50DQo+ICtydGVfY3J5cHRvZGV2 X2dldF9zeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUodWludDhfdCBkZXZfaWQpDQo+ICt7DQo+ICsJ c3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldjsNCj4gKwl1bnNpZ25lZCBpbnQgaGVhZGVyX3NpemUg PSBzaXplb2Yodm9pZCAqKSAqIG5iX2RyaXZlcnM7DQo+ICsJdW5zaWduZWQgaW50IHByaXZfc2Vz c19zaXplOw0KPiArDQo+ICsJaWYgKCFydGVfY3J5cHRvZGV2X3BtZF9pc192YWxpZF9kZXYoZGV2 X2lkKSkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlkZXYgPSBydGVfY3J5cHRvZGV2X3BtZF9n ZXRfZGV2KGRldl9pZCk7DQo+ICsNCj4gKwlpZiAoKmRldi0+ZGV2X29wcy0+c3ltX3Nlc3Npb25f Z2V0X3NpemUgPT0gTlVMTCkNCj4gKwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlwcml2X3Nlc3Nfc2l6 ZSA9ICgqZGV2LT5kZXZfb3BzLT5zeW1fc2Vzc2lvbl9nZXRfc2l6ZSkoZGV2KTsNCj4gKw0KPiAr CS8qDQo+ICsJICogSWYgc2l6ZSBpcyBsZXNzIHRoYW4gc2Vzc2lvbiBoZWFkZXIgc2l6ZSwNCj4g KwkgKiByZXR1cm4gdGhlIGxhdHRlciwgYXMgdGhpcyBndWFyYW50ZWVzIHRoYXQNCj4gKwkgKiBz ZXNzaW9ubGVzcyBvcGVyYXRpb25zIHdpbGwgd29yaw0KPiArCSAqLw0KPiArCWlmIChwcml2X3Nl c3Nfc2l6ZSA8IGhlYWRlcl9zaXplKQ0KPiArCQlyZXR1cm4gaGVhZGVyX3NpemU7DQo+ICsNCj4g KwlyZXR1cm4gcHJpdl9zZXNzX3NpemU7DQo+ICt9DQo+ICsNCj4gKw0KPiArdW5zaWduZWQgaW50 DQo+ICtydGVfY3J5cHRvZGV2X2dldF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9zaXplKHVpbnQ4X3Qg ZGV2X2lkKQ0KPiArew0KPiArCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXY7DQo+ICsJdW5zaWdu ZWQgaW50IGhlYWRlcl9zaXplID0gc2l6ZW9mKHZvaWQgKikgKiBuYl9kcml2ZXJzOw0KPiArCXVu c2lnbmVkIGludCBwcml2X3Nlc3Nfc2l6ZTsNCj4gKw0KPiArCWlmICghcnRlX2NyeXB0b2Rldl9w bWRfaXNfdmFsaWRfZGV2KGRldl9pZCkpDQo+ICsJCXJldHVybiAwOw0KPiArDQo+ICsJZGV2ID0g cnRlX2NyeXB0b2Rldl9wbWRfZ2V0X2RldihkZXZfaWQpOw0KPiArDQo+ICsJaWYgKCpkZXYtPmRl dl9vcHMtPmFzeW1fc2Vzc2lvbl9nZXRfc2l6ZSA9PSBOVUxMKQ0KPiArCQlyZXR1cm4gMDsNCj4g Kw0KPiArCXByaXZfc2Vzc19zaXplID0gKCpkZXYtPmRldl9vcHMtPmFzeW1fc2Vzc2lvbl9nZXRf c2l6ZSkoZGV2KTsNCj4gKwlpZiAocHJpdl9zZXNzX3NpemUgPCBoZWFkZXJfc2l6ZSkNCj4gKwkJ cmV0dXJuIGhlYWRlcl9zaXplOw0KPiArDQo+ICsJcmV0dXJuIHByaXZfc2Vzc19zaXplOw0KPiAN Cj4gIH0NCj4gDQo+IEBAIC0xMjY4LDYgKzE1NDgsMTMgQEAgc3RydWN0IHJ0ZV9tZW1wb29sICoN Cj4gIAkJCXNpemVvZihzdHJ1Y3QgcnRlX2NyeXB0b19zeW1fb3ApICsNCj4gIAkJCXByaXZfc2l6 ZTsNCj4gDQo+ICsJaWYgKHR5cGUgPT0gUlRFX0NSWVBUT19PUF9UWVBFX0FTWU1NRVRSSUMpIHsN Cj4gKwkJLyogb3ZlcnJpZGUgc2l6ZSBieSBzaXplIG9mIGFzeW0gb3AgKi8NCj4gKwkJZWx0X3Np emUgPSBzaXplb2Yoc3RydWN0IHJ0ZV9jcnlwdG9fb3ApICsNCj4gKwkJCSAgIHNpemVvZihzdHJ1 Y3QgcnRlX2NyeXB0b19hc3ltX29wKSArDQo+ICsJCQkgICBwcml2X3NpemU7DQo+ICsJfQ0KPiAr DQo+ICAJLyogbG9va3VwIG1lbXBvb2wgaW4gY2FzZSBhbHJlYWR5IGFsbG9jYXRlZCAqLw0KPiAg CXN0cnVjdCBydGVfbWVtcG9vbCAqbXAgPSBydGVfbWVtcG9vbF9sb29rdXAobmFtZSk7DQo+IA0K PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5oDQo+IGIv bGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldi5oDQo+IGluZGV4IGM4ZmE2ODkuLjcy ODQ4M2MgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXYu aA0KPiArKysgYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2LmgNCj4gQEAgLTE3 OCwxNSArMTc4LDQxIEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bW1ldHJpY19jYXBhYmlsaXR5 IHsNCj4gIAl9Ow0KPiAgfTsNCj4gDQo+ICsvKioNCj4gKyAqIEFzeW1tZXRyaWMgQ3J5cHRvIENh cGFiaWxpdHkNCj4gKyAqDQo+ICsgKi8NCj4gK3N0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1tZXRy aWNfY2FwYWJpbGl0eSB7DQo+ICsJZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1fdHlwZSB4Zm9y bV90eXBlOw0KPiArCS8qKjwgVHJhbnNmb3JtIHR5cGU6DQo+IFJTQS9NT0RFWFAvREgvRUNESC9E U0EvRUNEU0EvRkVDQy9NT0RJTlYgKi8NCj4gKwlSVEVfU1REX0MxMQ0KPiArCXVuaW9uIHsNCj4g KwkJc3RydWN0IHJ0ZV9jcnlwdG9fcGFyYW1fcmFuZ2UgbW9kbGVuOw0KPiArCQkvKio8IFJhbmdl IG9mIG1vZHVsdXMgbGVuZ3RoIHN1cHBvcnRlZCBmb3IgbW9kdWx1cyBiYXNlZA0KPiArCQkgKiBh bGdvczoNCj4gKwkJICogUlNBDQo+ICsJCSAqIE1PREVYUA0KPiArCQkgKiBNT0RJTlYNCj4gKwkJ ICogREgNCj4gKwkJICoNCj4gKwkJICogVmFsdWUgMCB0byBtaW4gYW5kL29yIG1heCBtZWFucyBu byBzcGVjaWZpYyBsaW1pdCBhbmQgbGltaXQNCj4gKwkJICogaXMgaW1wbGVtZW50YXRpb24gZGVw ZW5kZW50DQo+ICsJCSAqDQo+ICsJCSAqLw0KPiArCX07DQo+ICt9Ow0KPiArDQo+ICAvKiogU3Ry dWN0dXJlIHVzZWQgdG8gY2FwdHVyZSBhIGNhcGFiaWxpdHkgb2YgYSBjcnlwdG8gZGV2aWNlICov DQo+ICBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9jYXBhYmlsaXRpZXMgew0KPiAgCWVudW0gcnRlX2Ny eXB0b19vcF90eXBlIG9wOw0KPiAtCS8qKjwgT3BlcmF0aW9uIHR5cGUgKi8NCj4gKwkvKio8IE9w ZXJhdGlvbiB0eXBlOiBzeW1tZXRyaWMvYXN5bW1ldHJpYyAqLw0KPiANCj4gIAlSVEVfU1REX0Mx MQ0KPiAgCXVuaW9uIHsNCj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltbWV0cmljX2NhcGFi aWxpdHkgc3ltOw0KPiAgCQkvKio8IFN5bW1ldHJpYyBvcGVyYXRpb24gY2FwYWJpbGl0eSBwYXJh bWV0ZXJzICovDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1tZXRyaWNfY2FwYWJpbGl0 eSBhc3ltOw0KPiArCQkvKio8IEFzeW1tZXRyaWMgb3BlcmF0aW9uIGNhcGFiaWxpdHkgcGFyYW1l dGVycyAqLw0KPiAgCX07DQo+ICB9Ow0KPiANCj4gQEAgLTIwMSw3ICsyMjcsMTcgQEAgc3RydWN0 IHJ0ZV9jcnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4IHsNCj4gIH07DQo+IA0KPiAgLyoqDQo+ IC0gKiAgUHJvdmlkZSBjYXBhYmlsaXRpZXMgYXZhaWxhYmxlIGZvciBkZWZpbmVkIGRldmljZSBh bmQgYWxnb3JpdGhtDQo+ICsgKiBTdHJ1Y3R1cmUgdXNlZCB0byBkZXNjcmliZSBhc3ltbWV0cmlj IGNyeXB0byB4Zm9ybXMNCj4gKyAqIEVhY2ggeGZvcm0gbWFwcyB0byBvbmUgYXN5bSBhbGdvcml0 aG0uDQo+ICsgKg0KPiArICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX2NhcGFiaWxp dHlfaWR4IHsNCj4gKwllbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlIHR5cGU7DQo+ICsJ LyoqPCBBc3ltbWV0cmljIHhmb3JtIChhbGdvKSB0eXBlICovDQo+ICt9Ow0KPiArDQo+ICsvKioN Cj4gKyAqIFByb3ZpZGUgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBmb3IgZGVmaW5lZCBkZXZpY2Ug YW5kIGFsZ29yaXRobQ0KPiAgICoNCj4gICAqIEBwYXJhbQlkZXZfaWQJCVRoZSBpZGVudGlmaWVy IG9mIHRoZSBkZXZpY2UuDQo+ICAgKiBAcGFyYW0JaWR4CQlEZXNjcmlwdGlvbiBvZiBjcnlwdG8g YWxnb3JpdGhtcy4NCj4gQEAgLTIxNSw2ICsyNTEsMjAgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZf c3ltX2NhcGFiaWxpdHlfaWR4IHsNCj4gIAkJY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3lt X2NhcGFiaWxpdHlfaWR4ICppZHgpOw0KPiANCj4gIC8qKg0KPiArICogIFByb3ZpZGUgY2FwYWJp bGl0aWVzIGF2YWlsYWJsZSBmb3IgZGVmaW5lZCBkZXZpY2UgYW5kIGFsZ29yaXRobQ0KPiArICoN Cj4gKyAqIEBwYXJhbQlkZXZfaWQJCVRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UuDQo+ICsg KiBAcGFyYW0JYWxnbwkJRGVzY3JpcHRpb24gb2YgY3J5cHRvIGFsZ29yaXRobXMuDQo+ICsgKg0K PiArICogQHJldHVybg0KPiArICogICAtIFJldHVybiBkZXNjcmlwdGlvbiBvZiB0aGUgYXN5bW1l dHJpYyBjcnlwdG8gY2FwYWJpbGl0eSBpZiBleGlzdC4NCj4gKyAqICAgLSBSZXR1cm4gTlVMTCBp ZiB0aGUgY2FwYWJpbGl0eSBub3QgZXhpc3QuDQo+ICsgKi8NCj4gK2NvbnN0IHN0cnVjdCBydGVf Y3J5cHRvZGV2X2FzeW1tZXRyaWNfY2FwYWJpbGl0eSAqDQo+ICtydGVfY3J5cHRvZGV2X2FzeW1f Y2FwYWJpbGl0eV9nZXQodWludDhfdCBkZXZfaWQsDQo+ICsJCWNvbnN0IHN0cnVjdCBydGVfY3J5 cHRvZGV2X2FzeW1fY2FwYWJpbGl0eV9pZHggKmlkeCk7DQo+ICsNCj4gKy8qKg0KPiAgICogQ2hl Y2sgaWYga2V5IHNpemUgYW5kIGluaXRpYWwgdmVjdG9yIGFyZSBzdXBwb3J0ZWQNCj4gICAqIGlu IGNyeXB0byBjaXBoZXIgY2FwYWJpbGl0eQ0KPiAgICoNCj4gQEAgLTI3MCw2ICszMjAsMjEgQEAg c3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4IHsNCj4gIAkJdWludDE2X3Qg aXZfc2l6ZSk7DQo+IA0KPiAgLyoqDQo+ICsgKiBDaGVjayBpZiBtb2R1bHVzIGxlbmd0aCBpcyBp biBzdXBwb3J0ZWQgcmFuZ2UNCj4gKyAqDQo+ICsgKiBAcGFyYW0JY2FwYWJpbGl0eQlEZXNjcmlw dGlvbiBvZiB0aGUgYXN5bW1ldHJpYyBjcnlwdG8NCj4gY2FwYWJpbGl0eS4NCj4gKyAqIEBwYXJh bQltb2RsZW4JCW1vZHVsdXMgbGVuZ3RoLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAg LSBSZXR1cm4gMCBpZiB0aGUgcGFyYW1ldGVycyBhcmUgaW4gcmFuZ2Ugb2YgdGhlIGNhcGFiaWxp dHkuDQo+ICsgKiAgIC0gUmV0dXJuIC0xIGlmIHRoZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFu Z2Ugb2YgdGhlIGNhcGFiaWxpdHkuDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9h c3ltX2NhcGFiaWxpdHlfY2hlY2tfbW9kbGVuKA0KPiArCQljb25zdCBzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9hc3ltbWV0cmljX2NhcGFiaWxpdHkNCj4gKmNhcGFiaWxpdHksDQo+ICsJCXVpbnQxNl90 IG1vZGxlbik7DQo+ICsNCj4gKy8qKg0KPiAgICogUHJvdmlkZSB0aGUgY2lwaGVyIGFsZ29yaXRo bSBlbnVtLCBnaXZlbiBhbiBhbGdvcml0aG0gc3RyaW5nDQo+ICAgKg0KPiAgICogQHBhcmFtCWFs Z29fZW51bQlBIHBvaW50ZXIgdG8gdGhlIGNpcGhlciBhbGdvcml0aG0NCj4gQEAgLTMxNCw2ICsz NzksMjIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX2NhcGFiaWxpdHlfaWR4IHsNCj4gIHJ0 ZV9jcnlwdG9kZXZfZ2V0X2FlYWRfYWxnb19lbnVtKGVudW0gcnRlX2NyeXB0b19hZWFkX2FsZ29y aXRobQ0KPiAqYWxnb19lbnVtLA0KPiAgCQljb25zdCBjaGFyICphbGdvX3N0cmluZyk7DQo+IA0K PiArLyoqDQo+ICsgKiBQcm92aWRlIHRoZSBBc3ltbWV0cmljIHhmb3JtIGVudW0sIGdpdmVuIGFu IHhmb3JtIHN0cmluZw0KPiArICoNCj4gKyAqIEBwYXJhbQl4Zm9ybV9lbnVtCUEgcG9pbnRlciB0 byB0aGUgeGZvcm0gdHlwZQ0KPiArICoJCQkJZW51bSB0byBiZSBmaWxsZWQNCj4gKyAqIEBwYXJh bQl4Zm9ybV9zdHJpbmcJeGZvcm0gc3RyaW5nDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICog LSBSZXR1cm4gLTEgaWYgc3RyaW5nIGlzIG5vdCB2YWxpZA0KPiArICogLSBSZXR1cm4gMCBpcyB0 aGUgc3RyaW5nIGlzIHZhbGlkDQo+ICsgKi8NCj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9nZXRf YXN5bV94Zm9ybV9lbnVtKGVudW0NCj4gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGUgKnhmb3Jt X2VudW0sDQo+ICsJCWNvbnN0IGNoYXIgKnhmb3JtX3N0cmluZyk7DQo+ICsNCj4gKw0KPiAgLyoq IE1hY3JvIHVzZWQgYXQgZW5kIG9mIGNyeXB0byBQTUQgbGlzdCAqLw0KPiAgI2RlZmluZSBSVEVf Q1JZUFRPREVWX0VORF9PRl9DQVBBQklMSVRJRVNfTElTVCgpIFwNCj4gIAl7IFJURV9DUllQVE9f T1BfVFlQRV9VTkRFRklORUQgfQ0KPiBAQCAtMzc5LDE2ICs0NjAsOTkgQEAgc3RydWN0IHJ0ZV9j cnlwdG9kZXZfaW5mbyB7DQo+ICAJLyoqPCBBcnJheSBvZiBkZXZpY2VzIHN1cHBvcnRlZCBjYXBh YmlsaXRpZXMgKi8NCj4gDQo+ICAJdW5zaWduZWQgbWF4X25iX3F1ZXVlX3BhaXJzOw0KPiAtCS8q KjwgTWF4aW11bSBudW1iZXIgb2YgcXVldWVzIHBhaXJzIHN1cHBvcnRlZCBieSBkZXZpY2UuICov DQo+ICsJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBxdWV1ZXMgcGFpcnMgc3VwcG9ydGVkIGJ5IGRl dmljZS4NCj4gKwkgKg0KPiArCSAqIFRoaXMgaXMgdG90YWwgbnVtYmVyIG9mIHF1ZXVlcyBzdXBw b3J0ZWQgYnkgZGV2aWNlIGFuZCBpbmNsdXNpdmUNCj4gKwkgKiBvZiBudW1iZXJzIHVzZWQgZm9y IGJvdGggc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIGZvciBQTUQgdGhhdA0KPiArCSAqIHN1cHBv cnQgc3ltbWV0cmljIGFuZCBhc3ltbWV0cmljIG9wIGkuZS4NCj4gKwkgKg0KPiArCSAqIG1heF9u Yl9xdWV1ZV9wYWlycyA9IG1heF9uYl9zeW1tX3FwICsgbWF4X25iX2FzeW1tX3FwDQo+ICsJICoN Cj4gKwkgKiBGb2xsb3dpbmcgdGFibGUgZGVtb25zdGFydGUgd2hhdCB0aGUgdmFsdWVzIHNob3Vs ZCBiZSBmb3IgZGV2aWNlDQo+ICsJICogd2l0aCBtYXggbnVtIG9mICduJyBxdWV1ZSBwYWlyICh4 ID0gZG9uJ3QgY2FyZSk6DQo+ICsJICoNCj4gKwkgKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArCSAqIHxkZXZf Y2FwYSAgICAgICAgICAgICAgICB8IG1heF9uYl9hc3ltbV9xcHwgbWF4X25iX3N5bW1fcXAgfA0K PiBtYXhfcXB8DQo+ICsJICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKwkgKiB8IFN5bW0gb25seSAgICAgICAg ICAgICAgfCAgICB4ICAgICAgICAgICB8IDAgICAgICAgICAgICAgIHwgbiAgICAgfA0KPiArCSAq IHwgQXN5bW0gb25seSAgICAgICAgICAgICB8ICAgIDAgICAgICAgICAgIHwgeCAgICAgICAgICAg ICAgfCBuICAgICB8DQo+ICsJICogfCBzeW1tK2FzeW1tIHcvIGZpeGVkIHFwIHwgICAgcCAgICAg ICAgICAgfCBuLXAgICAgICAgICAgICB8IG4gICAgIHwNCj4gKwkgKiB8IHN5bW0rYXN5bW0gdy8g YWxsIHFwICAgfCAgICAwICAgICAgICAgICB8IDAgICAgICAgICAgICAgIHwgbiAgICAgfA0KPiAr CSAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ICsJICoNCj4gKwkgKiAtIGlmIGRldmljZSBzdXBwb3J0cyBvbmx5 IGFzeW1tZXRyaWMsIHRoZW4gbWF4X25iX3F1ZXVlX3BhaXINCj4gKwkgKiAgIGluZGljYXRlcyBt YXggcXAgYXZhaWxhYmxlIGZvciBhc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+ICsJICoNCj4gKwkg KiAtIGlmIGRldmljZSBzdXBwb3J0IG9ubHkgc3ltbWV0cmljLCB0aGVuIG1heF9uYl9xdWV1ZV9w YWlyDQo+ICsJICogICBpbmRpY2F0ZXMgbWF4IHFwIGF2YWlsYWJsZSBmb3Igc3ltbWV0cmljIG9w ZXJhdGlvbnMuDQo+ICsJICoNCj4gKwkgKiAtIGlmIGRldmljZSBzdXBwb3J0IGJvdGggc3ltbWV0 cmljIGFuZCBhc3ltbWV0cmljIGNyeXB0byBvcCwNCj4gKwkgKiAgIHRoZW4gbWF4X25iX3F1ZXVl X3BhaXIgaW5kaWNhdGVzIHRvdGFsIG51bWJlciBvZiBhdmFpbGFibGUNCj4gKwkgKiAgIHFwIGZv ciBib3RoIG9wZXJhdGlvbnMuDQo+ICsJICoNCj4gKwkgKiAqKlNwZWNpYWwgbm90ZSBvbiBkZXZp Y2VzIHN1cHBvcnRpbmcgc3ltbSBhbmQgYXN5bW06DQo+ICsJICoNCj4gKwkgKiBTdWNoIGR1YWwg ZnVuY3Rpb24gZGV2aWNlcyBtYXkgbWFuYWdlIHFwIGluIHZhcmlvdXMgcG9zc2libGUNCj4gd2F5 cy4NCj4gKwkgKiBUaGV5IGNhbiBlaXRoZXI6DQo+ICsJICoNCj4gKwkgKiAxLiBVc2UgYWxsIG1h eF9uYl9xdWV1ZV9wYWlyIGZvciBhbnkgb3BlcmF0aW9uIHR5cGUuDQo+ICsJICogICAgSW4gc3Vj aCBjYXNlLCBhcHAgY2FuIGNvbmZpZ3VyZSBhbnkgb2YgdGhlIGF2YWlsYWJsZSBxcA0KPiArCSAq ICAgIGZvciBhbnkgb3BlcmFpdG9uLiBUaHVzLA0KPiArCSAqICAgIGRldl9pbmZvIHNob3VsZCBy ZXR1cm4gbnVtIHF1ZXVlIHBhaXIgZGlzdHJpYnV0aW9uIGFzDQo+IG1lbnRpb25lZA0KPiArCSAq ICAgIGluIHJvdyAnc3ltbSthc3ltbSB3LyBhbGwgcXAnIGluIHRhYmxlIGFib3ZlDQo+ICsJICoN Cj4gKwkgKiAyLiBPciwgdXNlIGRlZGljYXRlZCBzZXQgb2YgcXAgZm9yIGVhY2ggb3ANCj4gKwkg KiAgICBTdWNoIGRldmljZSBQTURzLCBjYW4gdGFrZSAyIGFwcHJvYWNoZXM6DQo+ICsJICogICAg MS4gRWl0aGVyLCBpdCBjYW4gc2hvdyB1cCBhcyAyIHNlcGFyYXRlIFBNRHMgd2hlcmUgb25lIGFz DQo+ICsJICoJIHN5bW1ldHJpYyBvbmx5IGFuZCBvdGhlciBhc3ltbWV0cmljIG9ubHkuIGluIHN1 Y2ggY2FzZSwNCj4gKwkgKgkgZGV2aWNlIGluZm8gd2lsbCByZXR1cm4gbnVtIHF1ZXVlIHBhaXIg ZGlzdHJpYnV0aW9uIGFzDQo+ICsJICoJIG1lbnRpb25lZCBpbiByb3cgJ3N5bW1ldHJpYy9hc3lt bWV0cmljIG9ubHknIGRldmljZQ0KPiArCSAqDQo+ICsJICogICAgMi4gT3IsIGNhbiBhcHBlYXIg YXMgb25lIFBNRCB3aXRoIG51bWJlciBvZiBxdWV1ZSBwYWlyDQo+IGRlZGljYXRlZA0KPiArCSAq CSB0byBlYWNoIG9wZXJhdGlvbiBpbiBtYXhfbmJfc3ltbV9xcCBhbmQNCj4gbWF4X25iX2FzeW1t X3FwDQo+ICsJICoNCj4gKwkgKi8NCj4gDQo+ICAJc3RydWN0IHsNCj4gIAkJdW5zaWduZWQgbWF4 X25iX3Nlc3Npb25zOw0KPiAtCQkvKio8IE1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zIHN1cHBv cnRlZCBieSBkZXZpY2UuICovDQo+ICsJCS8qKjwgTWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMg c3VwcG9ydGVkDQo+ICsJCSAqIGZvciBzeW1tZXRyaWMgb3BlcmF0aW9ucy4NCj4gKwkJICovDQo+ ICAJCXVuc2lnbmVkIGludCBtYXhfbmJfc2Vzc2lvbnNfcGVyX3FwOw0KPiAtCQkvKio8IE1heGlt dW0gbnVtYmVyIG9mIHNlc3Npb25zIHBlciBxdWV1ZSBwYWlyLg0KPiArCQkvKio8IE1heGltdW0g bnVtYmVyIG9mIHN5bW1ldHJpYyBzZXNzaW9ucw0KPiArCQkgKiBwZXIgcXVldWUgcGFpci4NCj4g IAkJICogRGVmYXVsdCAwIGZvciBpbmZpbml0ZSBzZXNzaW9ucw0KPiAgCQkgKi8NCj4gKwkJIHVu c2lnbmVkIGludCBtYXhfbmJfc3ltX3FwOw0KPiArCQkvKio8IE1heGltdW0gbnVtIG9mIHFwIGRl ZGljYXRlZCB0byBzeW1tZXRyaWMgb3AuDQo+ICsJCSAqIE5BIGZvciBkZXZpY2UgdGhhdCBzdXBw b3J0IHN5bW1ldHJpYyBvbmx5Lg0KPiArCQkgKiAwIG1lYW5zIGRldmljZSBjYW4gdXNlIGFsbCBt YXhfbmJfcXVldWVfcGFpcg0KPiArCQkgKiBmb3Igc3ltbSBvcC4NCj4gKwkJICogUGxlYXNlIG5v dGUsIHRoaXMgdmFyaWFibGUgb25seSB0ZWxscyBudW1iZXIgb2YgcXVldWUgcGFpcnMNCj4gKwkJ ICogdGhhdCBjYW4gYmUgZW5xdWV1ZWQgd2l0aCBzeW1tZXRyaWMgb3BzIGFuZCBkb2Vzbid0DQo+ IHJldmVhbA0KPiArCQkgKiBzcGVjaWZpYyBJRHMgdXNlZCBieSBQTURzIGZvciB0aGlzIG9wZXJh dGlvbg0KPiArCQkgKg0KPiArCQkgKi8NCj4gIAl9IHN5bTsNCj4gKw0KPiArCXN0cnVjdCB7DQo+ ICsJCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5bV9zZXNzaW9uczsNCj4gKwkJLyoqPCBNYXhpbXVt IG51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zIHN1cHBvcnRlZA0KPiBieSBkZXZpY2UuDQo+ ICsJCSAqIDAgaW5maW5pdGUgYXMgbG9uZyBhcyByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZQ0KPiAr CQkgKi8NCj4gKwkJdW5zaWduZWQgaW50IG1heF9uYl9hc3ltX3Nlc3Npb25zX3Blcl9xcDsNCj4g KwkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zIHBlciBxdWV1ZQ0K PiBwYWlyLg0KPiArCQkgKiAwIG1lYW5zIGluZmluaXRlIGFzIGxvbmcgYXMgcmVzb3VyY2VzIGFy ZSBhdmFpbGFibGUNCj4gKwkJICovDQo+ICsJCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5bV9xcDsN Cj4gKwkJLyoqPCBNYXhpbXVtIG51bWJlciBvZiBxcCBkZWRpY2F0ZWQgZm9yIGFzeW1tDQo+IG9w ZXJhdGlvbi4NCj4gKwkJICogMCBtZWFucyBkZXZpY2UgY2FuIHVzZSBhbGwgbWF4X25iX3F1ZXVl X3BhaXIgZm9yIGFzeW1tDQo+IG9wLg0KPiArCQkgKiBQbGVhc2Ugbm90ZSwgdGhpcyB2YXJpYWJs ZSBvbmx5IHRlbGxzIG51bWJlciBvZiBxdWV1ZSBwYWlycw0KPiArCQkgKiB0aGF0IGNhbiBiZSBl bnF1ZXVlZCB3aXRoIGFzeW1tZXRyaWMgb3BzIGFuZCBkb2Vzbid0DQo+IHJldmVhbA0KPiArCQkg KiBzcGVjaWZpYyBJRHMgdXNlZCBieSBQTURzIGZvciB0aGlzIG9wZXJhdGlvbg0KPiArCQkgKg0K PiArCQkgKi8NCj4gKwl9IGFzeW07DQo+ICB9Ow0KPiANCj4gICNkZWZpbmUgUlRFX0NSWVBUT0RF Vl9ERVRBQ0hFRCAgKDApDQo+IEBAIC01MTMsNiArNjc3LDI0IEBAIHN0cnVjdCBydGVfY3J5cHRv ZGV2X2NvbmZpZyB7DQo+ICAJaW50IHNvY2tldF9pZDsJCQkvKio8IFNvY2tldCB0byBhbGxvY2F0 ZSByZXNvdXJjZXMgb24NCj4gKi8NCj4gIAl1aW50MTZfdCBuYl9xdWV1ZV9wYWlyczsNCj4gIAkv Kio8IE51bWJlciBvZiBxdWV1ZSBwYWlycyB0byBjb25maWd1cmUgb24gZGV2aWNlICovDQo+ICsN Cj4gKwl1aW50MTZfdCBuYl9zeW1tX3FwOw0KPiArCS8qKjwgTnVtYmVyIG9mIHF1ZXVlIHBhaXIg dG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIG9wZXJhdGlvbnMuDQo+ICsJICogT3B0aW9uYWwgaW5w dXQuDQo+ICsJICogVmFsaWQgZm9yIGRldmljZSBzdXBwb3J0aW5nIGJvdGggc3ltbWV0cmljIGFu ZCBhc3ltbWV0cmljLg0KPiArCSAqIFNob3VsZCBiZSBsZXNzIHRoYW4gZXF1YWwgdG8NCj4gcnRl X2NyeXB0b2Rldl9pbmZvOm1heF9uYl9zeW1tX3FwLg0KPiArCSAqIHBsZWFzZSBub3RlIHRoaXMg bnVtYmVyIG9ubHkgdGVsbHMgaG93IG1hbnkgcXVldWUgcGFpciB0byBiZQ0KPiB1c2VkDQo+ICsJ ICogZm9yIHN5bW1ldHJpYyBvcCBhbmQgZG9lcyAqbm90KiB0ZWxsIHNwZWNpZmljIElEcyB0byBi ZSB1c2VkLg0KPiArCSAqLw0KPiArDQo+ICsJdWludDE2X3QgbmJfYXN5bW1fcXA7DQo+ICsJLyoq PCBOdW1iZXIgb2YgcXVldWUgcGFpciB0byBiZSB1c2VkIGZvciBhc3ltbWV0cmljIG9wZXJhdGlv bnMuDQo+ICsJICogT3B0aW9uYWwgaW5wdXQuDQo+ICsJICogVmFsaWQgZm9yIGRldmljZSBzdXBw b3J0aW5nIGJvdGggYXN5bW1ldHJpYyBhbmQgc3ltbWV0cmljLg0KPiArCSAqIFNob3VsZCBiZSBs ZXNzIHRoYW4gZXF1YWwgdG8NCj4gcnRlX2NyeXB0b2Rldl9pbmZvOm1heF9uYl9hc3ltbV9xcA0K PiArCSAqIFBsZWFzZSBub3RlIHRoaXMgbnVtYmVyIG9ubHkgdGVsbHMgaG93IG1hbnkgcXVldWUg cGFpciB0byBiZQ0KPiArCSAqIHVzZWQgZm9yIGFzeW1tZXRyaWMgYW5kIGRvZXMgKm5vdCogc3Bl Y2lmaWNhbGx5IHRlbGwgcXAgSUQNCj4gKwkgKi8NCj4gIH07DQo+IA0KPiAgLyoqDQo+IEBAIC01 OTUsNiArNzc3LDkgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29uZmlnIHsNCj4gICAqIEByZXR1 cm4NCj4gICAqICAgLSAwOiBTdWNjZXNzLCBxdWV1ZSBwYWlyIGNvcnJlY3RseSBzZXQgdXAuDQo+ ICAgKiAgIC0gPDA6IFF1ZXVlIHBhaXIgY29uZmlndXJhdGlvbiBmYWlsZWQNCj4gKyAqDQo+ICsg KiBAbm90ZTogcXVldWUgcGFpciB0byBiZSBzZXR1cCBpbmRlcGVuZGVudCBvZiBvcGVyYXRpb24g dHlwZS4NCj4gKyAqDQo+ICAgKi8NCj4gIGV4dGVybiBpbnQNCj4gIHJ0ZV9jcnlwdG9kZXZfcXVl dWVfcGFpcl9zZXR1cCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXVldWVfcGFpcl9pZCwNCj4g QEAgLTY0NCw2ICs4MjksMjYgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfY29uZmlnIHsNCj4gIGV4 dGVybiB1aW50MTZfdA0KPiAgcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3Qg ZGV2X2lkKTsNCj4gDQo+ICsvKioNCj4gKyAqIEdldCB0aGUgbnVtYmVyIG9mIHN5bW1ldHJpYyBx dWV1ZSBwYWlycyBvbiB0aGlzIGNyeXB0byBkZXZpY2UNCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2 X2lkCQlDcnlwdG8gZGV2aWNlIGlkZW50aWZpZXIuDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgIC0g VGhlIG51bWJlciBvZiBjb25maWd1cmVkIHN5bW1ldHJpYyBxdWV1ZSBwYWlycy4NCj4gKyAqLw0K PiArZXh0ZXJuIHVpbnQxNl90DQo+ICtydGVfY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2NvdW50 KHVpbnQ4X3QgZGV2X2lkKTsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAqIEdldCB0aGUgbnVtYmVy IG9mIGFzeW1tZXRyaWMgcXVldWUgcGFpcnMgb24gdGhpcyBjcnlwdG8gZGV2aWNlDQo+ICsgKg0K PiArICogQHBhcmFtCWRldl9pZAkJQ3J5cHRvIGRldmljZSBpZGVudGlmaWVyLg0KPiArICogQHJl dHVybg0KPiArICogICAtIFRoZSBudW1iZXIgb2YgY29uZmlndXJlZCBhc3ltbWV0cmljIHF1ZXVl IHBhaXJzLg0KPiArICovDQo+ICtleHRlcm4gdWludDE2X3QNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5 bV9xdWV1ZV9wYWlyX2NvdW50KHVpbnQ4X3QgZGV2X2lkKTsNCj4gDQo+ICAvKioNCj4gICAqIFJl dHJpZXZlIHRoZSBnZW5lcmFsIEkvTyBzdGF0aXN0aWNzIG9mIGEgZGV2aWNlLg0KPiBAQCAtNzk1 LDYgKzEwMDAsMTAgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfZGF0YSB7DQo+ICAJLyoqPCBBcnJh eSBvZiBwb2ludGVycyB0byBxdWV1ZSBwYWlycy4gKi8NCj4gIAl1aW50MTZfdCBuYl9xdWV1ZV9w YWlyczsNCj4gIAkvKio8IE51bWJlciBvZiBkZXZpY2UgcXVldWUgcGFpcnMuICovDQo+ICsJdWlu dDE2X3QgbmJfc3ltX3FwOw0KPiArCS8qKjwgTnVtYmVyIG9mIHN5bW1ldHJpYyBxdWV1ZSBwYWly cy4gKi8NCj4gKwl1aW50MTZfdCBuYl9hc3ltX3FwOw0KPiArCS8qKjwgTnVtYmVyIG9mIGFzeW1t ZXRyaWMgcXVldWUgcGFpcnMuICovDQo+IA0KPiAgCXZvaWQgKmRldl9wcml2YXRlOw0KPiAgCS8q KjwgUE1ELXNwZWNpZmljIHByaXZhdGUgZGF0YSAqLw0KPiBAQCAtOTAwLDYgKzExMDksMTEgQEAg c3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gew0KPiAgCS8qKjwgUHJpdmF0ZSBzZXNz aW9uIG1hdGVyaWFsICovDQo+ICB9Ow0KPiANCj4gKy8qKiBDcnlwdG9kZXYgYXN5bW1ldHJpYyBj cnlwdG8gc2Vzc2lvbiAqLw0KPiArc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uIHsN Cj4gKwlfX2V4dGVuc2lvbl9fIHZvaWQgKnNlc3NfcHJpdmF0ZV9kYXRhWzBdOw0KPiArCS8qKjwg UHJpdmF0ZSBhc3ltbWV0cmljIHNlc3Npb24gbWF0ZXJpYWwgKi8NCj4gK307DQo+IA0KPiAgLyoq DQo+ICAgKiBDcmVhdGUgc3ltbWV0cmljIGNyeXB0byBzZXNzaW9uIGhlYWRlciAoZ2VuZXJpYyB3 aXRoIG5vIHByaXZhdGUgZGF0YSkNCj4gQEAgLTkxNCw2ICsxMTI4LDE4IEBAIHN0cnVjdCBydGVf Y3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4gIHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb25fY3Jl YXRlKHN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+IA0KPiAgLyoqDQo+ICsgKiBDcmVh dGUgYXN5bW1ldHJpYyBjcnlwdG8gc2Vzc2lvbiBoZWFkZXIgKGdlbmVyaWMgd2l0aCBubyBwcml2 YXRlIGRhdGEpDQo+ICsgKg0KPiArICogQHBhcmFtICAgbWVtcG9vbCAgICBtZW1wb29sIHRvIGFs bG9jYXRlIGFzeW1tZXRyaWMgc2Vzc2lvbg0KPiArICogICAgICAgICAgICAgICAgICAgICBvYmpl Y3RzIGZyb20NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAtIE9uIHN1Y2Nlc3MgcmV0dXJuIHBvaW50 ZXIgdG8gYXN5bS1zZXNzaW9uDQo+ICsgKiAgLSBPbiBmYWlsdXJlIHJldHVybnMgTlVMTA0KPiAr ICovDQo+ICtzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKg0KPiArcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlKHN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+ ICsNCj4gKy8qKg0KPiAgICogRnJlZXMgc3ltbWV0cmljIGNyeXB0byBzZXNzaW9uIGhlYWRlciwg YWZ0ZXIgY2hlY2tpbmcgdGhhdCBhbGwNCj4gICAqIHRoZSBkZXZpY2UgcHJpdmF0ZSBkYXRhIGhh cyBiZWVuIGZyZWVkLCByZXR1cm5pbmcgaXQNCj4gICAqIHRvIGl0cyBvcmlnaW5hbCBtZW1wb29s Lg0KPiBAQCAtOTI5LDYgKzExNTUsMjEgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Np b24gKg0KPiAgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lvbl9mcmVlKHN0cnVjdCBydGVfY3J5cHRv ZGV2X3N5bV9zZXNzaW9uDQo+ICpzZXNzKTsNCj4gDQo+ICAvKioNCj4gKyAqIEZyZWVzIGFzeW1t ZXRyaWMgY3J5cHRvIHNlc3Npb24gaGVhZGVyLCBhZnRlciBjaGVja2luZyB0aGF0IGFsbA0KPiAr ICogdGhlIGRldmljZSBwcml2YXRlIGRhdGEgaGFzIGJlZW4gZnJlZWQsIHJldHVybmluZyBpdA0K PiArICogdG8gaXRzIG9yaWdpbmFsIG1lbXBvb2wuDQo+ICsgKg0KPiArICogQHBhcmFtICAgc2Vz cyAgICAgU2Vzc2lvbiBoZWFkZXIgdG8gYmUgZnJlZWQuDQo+ICsgKg0KPiArICogQHJldHVybg0K PiArICogIC0gMCBpZiBzdWNjZXNzZnVsLg0KPiArICogIC0gLUVJTlZBTCBpZiBzZXNzaW9uIGlz IE5VTEwuDQo+ICsgKiAgLSAtRUJVU1kgaWYgbm90IGFsbCBkZXZpY2UgcHJpdmF0ZSBkYXRhIGhh cyBiZWVuIGZyZWVkLg0KPiArICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNz aW9uX2ZyZWUoc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uDQo+ICpzZXNzKTsNCj4g Kw0KPiArLyoqDQo+ICAgKiBGaWxsIG91dCBwcml2YXRlIGRhdGEgZm9yIHRoZSBkZXZpY2UgaWQs IGJhc2VkIG9uIGl0cyBkZXZpY2UgdHlwZS4NCj4gICAqDQo+ICAgKiBAcGFyYW0gICBkZXZfaWQg ICBJRCBvZiBkZXZpY2UgdGhhdCB3ZSB3YW50IHRoZSBzZXNzaW9uIHRvIGJlIHVzZWQgb24NCj4g QEAgLTk1MCw2ICsxMTkxLDI3IEBAIHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoN Cj4gIAkJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9vbCk7DQo+IA0KPiAgLyoqDQo+ICsgKiBJ bml0aWFsaXplIGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRldmljZSB3aXRoIHNwZWNpZmljIGFz eW1tZXRyaWMgeGZvcm0NCj4gKyAqDQo+ICsgKiBAcGFyYW0gICBkZXZfaWQgICBJRCBvZiBkZXZp Y2UgdGhhdCB3ZSB3YW50IHRoZSBzZXNzaW9uIHRvIGJlIHVzZWQgb24NCj4gKyAqIEBwYXJhbSAg IHNlc3MgICAgIFNlc3Npb24gdG8gYmUgc2V0IHVwIG9uIGEgZGV2aWNlDQo+ICsgKiBAcGFyYW0g ICB4Zm9ybXMgICBBc3ltbWV0cmljIGNyeXB0byB0cmFuc2Zvcm0gb3BlcmF0aW9ucyB0byBhcHBs eSBvbg0KPiBmbG93DQo+ICsgKiAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgd2l0aCB0aGlz IHNlc3Npb24NCj4gKyAqIEBwYXJhbSAgIG1lbXBvb2wgIE1lbXBvb2wgdG8gYmUgdXNlZCBmb3Ig aW50ZXJuYWwgYWxsb2NhdGlvbi4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBPbiBz dWNjZXNzLCB6ZXJvLg0KPiArICogIC0gLUVJTlZBTCBpZiBpbnB1dCBwYXJhbWV0ZXJzIGFyZSBp bnZhbGlkLg0KPiArICogIC0gLUVOT1RTVVAgaWYgY3J5cHRvIGRldmljZSBkb2VzIG5vdCBzdXBw b3J0IHRoZSBjcnlwdG8gdHJhbnNmb3JtLg0KPiArICogIC0gLUVOT01FTSBpZiB0aGUgcHJpdmF0 ZSBzZXNzaW9uIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQuDQo+ICsgKi8NCj4gK2ludA0KPiArcnRl X2NyeXB0b2Rldl9hc3ltX3Nlc3Npb25faW5pdCh1aW50OF90IGRldl9pZCwNCj4gKwkJCXN0cnVj dCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2VzcywNCj4gKwkJCXN0cnVjdCBydGVfY3J5 cHRvX2FzeW1feGZvcm0gKnhmb3JtcywNCj4gKwkJCXN0cnVjdCBydGVfbWVtcG9vbCAqbWVtcG9v bCk7DQo+ICsNCj4gKy8qKg0KPiAgICogRnJlZXMgcHJpdmF0ZSBkYXRhIGZvciB0aGUgZGV2aWNl IGlkLCBiYXNlZCBvbiBpdHMgZGV2aWNlIHR5cGUsDQo+ICAgKiByZXR1cm5pbmcgaXQgdG8gaXRz IG1lbXBvb2wuDQo+ICAgKg0KPiBAQCAtOTY1LDcgKzEyMjcsMjMgQEAgc3RydWN0IHJ0ZV9jcnlw dG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Np b24gKnNlc3MpOw0KPiANCj4gIC8qKg0KPiArICogRnJlZXMgcmVzb3VyY2VzIGhlbGQgYnkgYXN5 bW1ldHJpYyBzZXNzaW9uIGR1cmluZw0KPiBydGVfY3J5cHRvZGV2X3Nlc3Npb25faW5pdA0KPiAr ICoNCj4gKyAqIEBwYXJhbSAgIGRldl9pZCAgIElEIG9mIGRldmljZSB0aGF0IHVzZXMgdGhlIGFz eW1tZXRyaWMgc2Vzc2lvbi4NCj4gKyAqIEBwYXJhbSAgIHNlc3MgICAgIEFzeW1tZXRyaWMgc2Vz c2lvbiBzZXR1cCBvbiBkZXZpY2UgdXNpbmcNCj4gKyAqCQkJCQkgcnRlX2NyeXB0b2Rldl9zZXNz aW9uX2luaXQNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAtIDAgaWYgc3VjY2Vzc2Z1bC4NCj4gKyAq ICAtIC1FSU5WQUwgaWYgZGV2aWNlIGlzIGludmFsaWQgb3Igc2Vzc2lvbiBpcyBOVUxMLg0KPiAr ICovDQo+ICtpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NsZWFyKHVpbnQ4X3Qg ZGV2X2lkLA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzKTsN Cj4gKw0KPiArLyoqDQo+ICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBzZXNzaW9uLCBm b3IgYWxsIHJlZ2lzdGVyZWQgZHJpdmVycy4NCj4gKyAqIEZvciBkZXZpY2VzIHN1cHBvcnRpbmcg Ym90aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMsIGl0IHNob3VsZA0KPiArICogcmV0dXJuIGhl YWRlciBzaXplIGluY2x1c2l2ZSBvZiBib3RoDQo+ICAgKg0KPiAgICogQHJldHVybg0KPiAgICog ICBTaXplIG9mIHRoZSBoZWFkZXIgc2Vzc2lvbi4NCj4gQEAgLTk3NSw2ICsxMjUzLDggQEAgc3Ry dWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiANCj4gIC8qKg0KPiAgICogR2V0IHRo ZSBzaXplIG9mIHRoZSBwcml2YXRlIHNlc3Npb24gZGF0YSBmb3IgYSBkZXZpY2UuDQo+ICsgKiBp ZiBkZXZpY2Ugc3VwcG9ydCBib3RoIHN5bW1ldHJpYyBhbmQgYXN5bW1ldHJpYywgaXQNCj4gKyAq IHJldHVybiBzaXplIGluY2x1c2l2ZSBvZiBib3RoDQo+ICAgKg0KPiAgICogQHBhcmFtCWRldl9p ZAkJVGhlIGRldmljZSBpZGVudGlmaWVyLg0KPiAgICoNCj4gQEAgLTk4Niw2ICsxMjY2LDMyIEBA IHN0cnVjdCBydGVfY3J5cHRvZGV2X3N5bV9zZXNzaW9uICoNCj4gIHJ0ZV9jcnlwdG9kZXZfZ2V0 X3ByaXZhdGVfc2Vzc2lvbl9zaXplKHVpbnQ4X3QgZGV2X2lkKTsNCj4gDQo+ICAvKioNCj4gKyAq IEdldCB0aGUgc2l6ZSBvZiB0aGUgcHJpdmF0ZSBkYXRhIGZvciBzeW1tZXRyaWMgc2Vzc2lvbg0K PiArICogb24gZGV2aWNlDQo+ICsgKg0KPiArICogQHBhcmFtCWRldl9pZAkJVGhlIGRldmljZSBp ZGVudGlmaWVyLg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgLSBTaXplIG9mIHRoZSBz eW1tZXRyaWMgc2Vzc2lvbiBwcml2YXRlIGRhdGEsIGlmIHN1Y2Nlc3NmdWwNCj4gKyAqICAgLSAw IGlmIGRldmljZSBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGhhdmUgcHJpdmF0ZSBzZXNzaW9uDQo+ ICsgKi8NCj4gK3Vuc2lnbmVkIGludA0KPiArcnRlX2NyeXB0b2Rldl9nZXRfc3ltX3Nlc3Npb25f cHJpdmF0ZV9zaXplKHVpbnQ4X3QgZGV2X2lkKTsNCj4gKw0KPiArLyoqDQo+ICsgKiBHZXQgdGhl IHNpemUgb2YgdGhlIHByaXZhdGUgZGF0YSBmb3IgYXN5bW1ldHJpYyBzZXNzaW9uDQo+ICsgKiBv biBkZXZpY2UNCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2X2lkCQlUaGUgZGV2aWNlIGlkZW50aWZp ZXIuDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogICAtIFNpemUgb2YgdGhlIGFzeW1tZXRy aWMgcHJpdmF0ZSBkYXRhLCBpZiBzdWNjZXNzZnVsDQo+ICsgKiAgIC0gMCBpZiBkZXZpY2UgaXMg aW52YWxpZCBvciBkb2VzIG5vdCBoYXZlIHByaXZhdGUgc2Vzc2lvbg0KPiArICovDQo+ICt1bnNp Z25lZCBpbnQNCj4gK3J0ZV9jcnlwdG9kZXZfZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRlX3NpemUo dWludDhfdCBkZXZfaWQpOw0KPiArDQo+ICsvKioNCj4gICAqIEF0dGFjaCBxdWV1ZSBwYWlyIHdp dGggc3ltIHNlc3Npb24uDQo+ICAgKg0KPiAgICogQHBhcmFtCWRldl9pZAkJRGV2aWNlIHRvIHdo aWNoIHRoZSBzZXNzaW9uIHdpbGwgYmUgYXR0YWNoZWQuDQo+IEBAIC0xMDAyLDYgKzEzMDgsMzEg QEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCQlzdHJ1Y3QgcnRlX2Ny eXB0b2Rldl9zeW1fc2Vzc2lvbiAqc2Vzc2lvbik7DQo+IA0KPiAgLyoqDQo+ICsgKiBBdHRhY2gg cXVldWUgcGFpciB3aXRoIGFzeW0gc2Vzc2lvbi4NCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2X2lk CQlEZXZpY2UgdG8gd2hpY2ggdGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQo+ICsgKiBAcGFyYW0J cXBfaWQJCVF1ZXVlIHBhaXIgdG8gd2hpY2ggdGhlIHNlc3Npb24gd2lsbCBiZQ0KPiArICoJCQkJ YXR0YWNoZWQuDQo+ICsgKiBAcGFyYW0Jc2Vzc2lvbgkJQXN5bW1ldHJpYyBTZXNzaW9uIHBvaW50 ZXIgcHJldmlvdXNseQ0KPiArICoJCQkJYWxsb2NhdGVkIGJ5DQo+ICsgKgkJCQkqcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb25fY3JlYXRlKi4NCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAg LSBPbiBzdWNjZXNzLCB6ZXJvLg0KPiArICogIC0gT24gZmFpbHVyZSwgYSBuZWdhdGl2ZSB2YWx1 ZS4NCj4gKyAqDQo+ICsgKiBAbm90ZSA6IGFwcCBjYW4gZGVkaWNhdGUgYSBxcF9pZCB0byBzcGVj aWZpYyBvcGVyYXRpb24NCj4gdHlwZTpzeW1tL2FzeW1tDQo+ICsgKiBieSBjYWxsaW5nIHJ0ZV9j cnlwdG9kZXZfcXVldWVfcGFpcl9hdHRhY2hfc3ltL2FzeW1fc2Vzc2lvbigpDQo+IGJlZm9yZQ0K PiArICogZW5xdWV1ZV9idXJzdCgpIGNhbGwuIFBNRCB3aXRoIFNZTU1FVFJJQyAmIEFTWU1NRVRS SUMgZmVhdHVyZSBmbGFnDQo+IHNldCwNCj4gKyAqIGNhbiBpbnRlcm5hbGx5IGJpbmQgdGhlIGxv Z2ljYWwgcXBfaWQgdG8gYWN0dWFsIHBoeXNpY2FsIHFwX2lkIGhlcmUgYW5kDQo+ICsgKiBkZWRp Y2F0ZSBzcGVjaWZpYyBxcF9pZCB0byBwZXJmb3JtIHNwZWNpZmljIG9wX3R5cGUoc3ltbWV0cmlj IG9yDQo+ICsgKiBhc3ltbWV0cmljKS4NCj4gKyAqLw0KPiAraW50DQo+ICtydGVfY3J5cHRvZGV2 X3F1ZXVlX3BhaXJfYXR0YWNoX2FzeW1fc2Vzc2lvbih1aW50OF90IGRldl9pZCwgdWludDE2X3QN Cj4gcXBfaWQsDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vzc2lv bik7DQo+ICsNCj4gKy8qKg0KPiAgICogRGV0YWNoIHF1ZXVlIHBhaXIgd2l0aCBzeW0gc2Vzc2lv bi4NCj4gICAqDQo+ICAgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2UgdG8gd2hpY2ggdGhlIHNlc3Np b24gaXMgYXR0YWNoZWQuDQo+IEBAIC0xMDE4LDYgKzEzNDksMjMgQEAgc3RydWN0IHJ0ZV9jcnlw dG9kZXZfc3ltX3Nlc3Npb24gKg0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lv biAqc2Vzc2lvbik7DQo+IA0KPiAgLyoqDQo+ICsgKiBEZXRhY2ggcXVldWUgcGFpciBmcm9tIGFz eW0gc2Vzc2lvbi4NCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2X2lkCQlEZXZpY2UgdG8gd2hpY2gg dGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQo+ICsgKiBAcGFyYW0JcXBfaWQJCVF1ZXVlIHBhaXIg dG8gd2hpY2ggdGhlIHNlc3Npb24gaXMgYXR0YWNoZWQuDQo+ICsgKiBAcGFyYW0Jc2Vzc2lvbgkJ QXN5bW1ldHJpYyBTZXNzaW9uIHBvaW50ZXIgcHJldmlvdXNseQ0KPiBhdHRhY2hlZA0KPiArICoJ CQkJYnkgY2FsbGluZw0KPiArICoNCj4gCSpydGVfY3J5cHRvZGV2X3F1ZXVlX3BhaXJfYXR0YWNo X2FzeW1fc2Vzc2lvbiouDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICogIC0gT24gc3VjY2Vz cywgemVyby4NCj4gKyAqICAtIE9uIGZhaWx1cmUsIGEgbmVnYXRpdmUgdmFsdWUuDQo+ICsgKi8N Cj4gK2ludA0KPiArcnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2RldGFjaF9hc3ltX3Nlc3Npb24o dWludDhfdCBkZXZfaWQsIHVpbnQxNl90DQo+IHFwX2lkLA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Npb24pOw0KPiArDQo+ICsvKioNCj4gICAqIFByb3ZpZGUg ZHJpdmVyIGlkZW50aWZpZXIuDQo+ICAgKg0KPiAgICogQHBhcmFtIG5hbWUNCj4gZGlmZiAtLWdp dCBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1kLmMNCj4gYi9saWIvbGli cnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5jDQo+IGluZGV4IGYyYWFjMjQuLjQ0Mzlh OGUgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfcG1k LmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl9wbWQuYw0KPiBA QCAtNjYsNiArNjYsMjAgQEANCj4gIAkJCWdvdG8gZnJlZV9rdmxpc3Q7DQo+IA0KPiAgCQlyZXQg PSBydGVfa3ZhcmdzX3Byb2Nlc3Moa3ZsaXN0LA0KPiArDQo+IAlSVEVfQ1JZUFRPREVWX1BNRF9N QVhfTkJfQVNZTV9RUF9BUkcsDQo+ICsJCQkJJnJ0ZV9jcnlwdG9kZXZfcG1kX3BhcnNlX3VpbnRf YXJnLA0KPiArCQkJCSZwYXJhbXMtPm1heF9uYl9hc3ltX3FwKTsNCj4gKwkJaWYgKHJldCA8IDAp DQo+ICsJCQlnb3RvIGZyZWVfa3ZsaXN0Ow0KPiArDQo+ICsJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJv Y2Vzcyhrdmxpc3QsDQo+ICsNCj4gCVJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJH LA0KPiArCQkJCSZydGVfY3J5cHRvZGV2X3BtZF9wYXJzZV91aW50X2FyZywNCj4gKwkJCQkmcGFy YW1zLT5tYXhfbmJfc3ltX3FwKTsNCj4gKwkJaWYgKHJldCA8IDApDQo+ICsJCQlnb3RvIGZyZWVf a3ZsaXN0Ow0KPiArDQo+ICsJCXJldCA9IHJ0ZV9rdmFyZ3NfcHJvY2Vzcyhrdmxpc3QsDQo+IA0K PiAJUlRFX0NSWVBUT0RFVl9QTURfTUFYX05CX1NFU1NfQVJHLA0KPiAgCQkJCSZydGVfY3J5cHRv ZGV2X3BtZF9wYXJzZV91aW50X2FyZywNCj4gIAkJCQkmcGFyYW1zLT5tYXhfbmJfc2Vzc2lvbnMp Ow0KPiBAQCAtMTA5LDkgKzEyMywxMiBAQCBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqDQo+ICAJCQlk ZXZpY2UtPmRyaXZlci0+bmFtZSwgbmFtZSk7DQo+IA0KPiAgCUNERVZfTE9HX0lORk8oIlslc10g LSBJbml0aWFsaXNhdGlvbiBwYXJhbWV0ZXJzIC0gbmFtZTogJXMsIg0KPiAtCQkJInNvY2tldCBp ZDogJWQsIG1heCBxdWV1ZSBwYWlyczogJXUsIG1heCBzZXNzaW9uczoNCj4gJXUiLA0KPiArCQkJ InNvY2tldCBpZDogJWQsIG1heCBxdWV1ZSBwYWlyczogJXUsICINCj4gKwkJCSJtYXggc3ltIHF1 ZXVlIHBhaWQ6ICV1LCBtYXggYXN5bSBxdWV1ZSBwYWlyICV1LA0KPiAiDQo+ICsJCQkibWF4IHNl c3Npb25zOiAldSIsDQo+ICAJCQlkZXZpY2UtPmRyaXZlci0+bmFtZSwgbmFtZSwNCj4gIAkJCXBh cmFtcy0+c29ja2V0X2lkLCBwYXJhbXMtPm1heF9uYl9xdWV1ZV9wYWlycywNCj4gKwkJCXBhcmFt cy0+bWF4X25iX2FzeW1fcXAsIHBhcmFtcy0NCj4gPm1heF9uYl9zeW1fcXAsDQo+ICAJCQlwYXJh bXMtPm1heF9uYl9zZXNzaW9ucyk7DQo+IA0KPiAgCS8qIGFsbG9jYXRlIGRldmljZSBzdHJ1Y3R1 cmUgKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZf cG1kLmgNCj4gYi9saWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvZGV2X3BtZC5oDQo+IGlu ZGV4IDA4OTg0OGUuLjI3MmI0ODkgMTAwNjQ0DQo+IC0tLSBhL2xpYi9saWJydGVfY3J5cHRvZGV2 L3J0ZV9jcnlwdG9kZXZfcG1kLmgNCj4gKysrIGIvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2Ny eXB0b2Rldl9wbWQuaA0KPiBAQCAtNjAsMTggKzYwLDI1IEBADQo+IA0KPiAgI2RlZmluZSBSVEVf Q1JZUFRPREVWX1BNRF9ERUZBVUxUX01BWF9OQl9RVUVVRV9QQUlSUwk4DQo+ICAjZGVmaW5lIFJU RV9DUllQVE9ERVZfUE1EX0RFRkFVTFRfTUFYX05CX1NFU1NJT05TCTIwNDgNCj4gKy8qIEFsbG93 IGFsbCBxcCB0byBiZSB1c2VkIGZvciBzeW0gKi8NCj4gKyNkZWZpbmUgUlRFX0NSWVBUT0RFVl9Q TURfREVGQVVMVF9NQVhfTkJfU1lNX1FQDQo+IAkwDQo+ICsvKiBBbGxvdyBhbGwgcXAgdG8gYmUg dXNlZCBmb3IgYXN5bSAqLw0KPiArI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9ERUZBVUxUX01B WF9OQl9BU1lNX1FQCTANCj4gDQo+ICAjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX05BTUVfQVJH CQkJKCJuYW1lIikNCj4gICNkZWZpbmUgUlRFX0NSWVBUT0RFVl9QTURfTUFYX05CX1FQX0FSRw0K PiAJKCJtYXhfbmJfcXVldWVfcGFpcnMiKQ0KPiAgI2RlZmluZSBSVEVfQ1JZUFRPREVWX1BNRF9N QVhfTkJfU0VTU19BUkcNCj4gCSgibWF4X25iX3Nlc3Npb25zIikNCj4gICNkZWZpbmUgUlRFX0NS WVBUT0RFVl9QTURfU09DS0VUX0lEX0FSRw0KPiAJKCJzb2NrZXRfaWQiKQ0KPiAtDQo+ICsjZGVm aW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9BU1lNX1FQX0FSRw0KPiAJKCJtYXhfbmJfYXN5 bV9xcCIpDQo+ICsjZGVmaW5lIFJURV9DUllQVE9ERVZfUE1EX01BWF9OQl9TWU1fUVBfQVJHDQo+ IAkoIm1heF9uYl9zeW1fcXAiKQ0KPiANCj4gIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY3J5 cHRvZGV2X3BtZF92YWxpZF9wYXJhbXNbXSA9IHsNCj4gIAlSVEVfQ1JZUFRPREVWX1BNRF9OQU1F X0FSRywNCj4gIAlSVEVfQ1JZUFRPREVWX1BNRF9NQVhfTkJfUVBfQVJHLA0KPiAgCVJURV9DUllQ VE9ERVZfUE1EX01BWF9OQl9TRVNTX0FSRywNCj4gLQlSVEVfQ1JZUFRPREVWX1BNRF9TT0NLRVRf SURfQVJHDQo+ICsJUlRFX0NSWVBUT0RFVl9QTURfU09DS0VUX0lEX0FSRywNCj4gKwlSVEVfQ1JZ UFRPREVWX1BNRF9NQVhfTkJfQVNZTV9RUF9BUkcsDQo+ICsJUlRFX0NSWVBUT0RFVl9QTURfTUFY X05CX1NZTV9RUF9BUkcNCj4gIH07DQo+IA0KPiAgLyoqDQo+IEBAIC04NCw2ICs5MSwxMCBAQCBz dHJ1Y3QgcnRlX2NyeXB0b2Rldl9wbWRfaW5pdF9wYXJhbXMgew0KPiAgCWludCBzb2NrZXRfaWQ7 DQo+ICAJdW5zaWduZWQgaW50IG1heF9uYl9xdWV1ZV9wYWlyczsNCj4gIAl1bnNpZ25lZCBpbnQg bWF4X25iX3Nlc3Npb25zOw0KPiArCXVuc2lnbmVkIGludCBtYXhfbmJfYXN5bV9xcDsNCj4gKwkv Kio8IG1heGltdW0gbnVtYmVyIG9mIHFwIHRvIGJlIHVzZWQgZm9yIGFzeW1tZXRyaWMgb3BzICov DQo+ICsJdW5zaWduZWQgaW50IG1heF9uYl9zeW1fcXA7DQo+ICsJLyoqPCBtYXhpbXVtIG51bWJl ciBvZiBxcCB0byBiZSB1c2VkIGZvciBzeW1tZXRyaWMgb3BzICovDQo+ICB9Ow0KPiANCj4gIC8q KiBHbG9iYWwgc3RydWN0dXJlIHVzZWQgZm9yIG1haW50YWluaW5nIHN0YXRlIG9mIGFsbG9jYXRl ZCBjcnlwdG8gZGV2aWNlcyAqLw0KPiBAQCAtMjc1LDcgKzI4NiwyOSBAQCB0eXBlZGVmIGludA0K PiAoKmNyeXB0b2Rldl9xdWV1ZV9wYWlyX3JlbGVhc2VfdCkoc3RydWN0IHJ0ZV9jcnlwdG9kZXYg KmRldiwNCj4gIHR5cGVkZWYgdWludDMyX3QgKCpjcnlwdG9kZXZfcXVldWVfcGFpcl9jb3VudF90 KShzdHJ1Y3QgcnRlX2NyeXB0b2Rldg0KPiAqZGV2KTsNCj4gDQo+ICAvKioNCj4gLSAqIENyZWF0 ZSBhIHNlc3Npb24gbWVtcG9vbCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+ICsgKiBHZXQg bnVtYmVyIG9mIGF2YWlsYWJsZSBzeW1tZXRyaWMgcXVldWUgcGFpcnMgb2YgYSBkZXZpY2UuDQo+ ICsgKg0KPiArICogQHBhcmFtCWRldglDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAqDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAtIFJldHVybnMgbnVtYmVyIG9mIHN5bW1ldHJpYyBxdWV1ZSBwYWly cw0KPiArICovDQo+ICt0eXBlZGVmIHVpbnQzMl90ICgqY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWly X2NvdW50X3QpKA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQo+ICsNCj4gKy8q Kg0KPiArICogR2V0IG51bWJlciBvZiBhdmFpbGFibGUgYXN5bW1ldHJpYyBxdWV1ZSBwYWlycyBv ZiBhIGRldmljZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2CUNyeXB0byBkZXZpY2UgcG9pbnRl cg0KPiArICoNCj4gKyAqIEByZXR1cm4NCj4gKyAqIC0gUmV0dXJucyBudW1iZXIgb2Ygc3ltbWV0 cmljIHF1ZXVlIHBhaXJzDQo+ICsgKi8NCj4gK3R5cGVkZWYgdWludDMyX3QgKCpjcnlwdG9kZXZf YXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QpKA0KPiArCQkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRl dik7DQo+ICsNCj4gKy8qKg0KPiArICogQ3JlYXRlIGEgc3ltbWV0cmljIHNlc3Npb24gbWVtcG9v bCB0byBhbGxvY2F0ZSBzZXNzaW9ucyBmcm9tDQo+ICAgKg0KPiAgICogQHBhcmFtCWRldgkJQ3J5 cHRvIGRldmljZSBwb2ludGVyDQo+ICAgKiBAcGFyYW0JbmJfb2JqcwkJbnVtYmVyIG9mIHNlc3Np b25zIG9iamVjdHMgaW4NCj4gbWVtcG9vbA0KPiBAQCAtMjkwLDYgKzMyMywyMSBAQCB0eXBlZGVm IGludA0KPiAoKmNyeXB0b2Rldl9zeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4gIAkJc3Ry dWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywNCj4gIAkJdW5zaWduZWQg b2JqX2NhY2hlX3NpemUsIGludCBzb2NrZXRfaWQpOw0KPiANCj4gKy8qKg0KPiArICogQ3JlYXRl IGEgYXN5bW1ldHJpYyBzZXNzaW9uIG1lbXBvb2wgdG8gYWxsb2NhdGUgc2Vzc2lvbnMgZnJvbQ0K PiArICoNCj4gKyAqIEBwYXJhbQlkZXYJCUNyeXB0byBkZXZpY2UgcG9pbnRlcg0KPiArICogQHBh cmFtCW5iX29ianMJCU51bWJlciBvZiBhc3ltbWV0cmljIHNlc3Npb25zDQo+IG9iamVjdHMgaW4g bWVtcG9vbA0KPiArICogQHBhcmFtCW9ial9jYWNoZQlsLWNvcmUgb2JqZWN0IGNhY2hlIHNpemUs IHNlZQ0KPiAqcnRlX3JpbmdfY3JlYXRlKg0KPiArICogQHBhcmFtCXNvY2tldF9pZAlTb2NrZXQg SWQgdG8gYWxsb2NhdGUgIG1lbXBvb2wgb24uDQo+ICsgKg0KPiArICogQHJldHVybg0KPiArICog LSBPbiBzdWNjZXNzIHJldHVybnMgYSBwb2ludGVyIHRvIGEgcnRlX21lbXBvb2wNCj4gKyAqIC0g T24gZmFpbHVyZSByZXR1cm5zIGEgTlVMTCBwb2ludGVyDQo+ICsgKi8NCj4gK3R5cGVkZWYgaW50 ICgqY3J5cHRvZGV2X2FzeW1fY3JlYXRlX3Nlc3Npb25fcG9vbF90KSgNCj4gKwkJc3RydWN0IHJ0 ZV9jcnlwdG9kZXYgKmRldiwgdW5zaWduZWQgbmJfb2JqcywNCj4gKwkJdW5zaWduZWQgb2JqX2Nh Y2hlX3NpemUsIGludCBzb2NrZXRfaWQpOw0KPiANCj4gIC8qKg0KPiAgICogR2V0IHRoZSBzaXpl IG9mIGEgY3J5cHRvZGV2IHNlc3Npb24NCj4gQEAgLTMwMiw2ICszNTAsMTcgQEAgdHlwZWRlZiBp bnQNCj4gKCpjcnlwdG9kZXZfc3ltX2NyZWF0ZV9zZXNzaW9uX3Bvb2xfdCkoDQo+ICAgKi8NCj4g IHR5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9kZXZfc3ltX2dldF9zZXNzaW9uX3ByaXZhdGVfc2l6 ZV90KSgNCj4gIAkJc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldik7DQo+ICsvKioNCj4gKyAqIEdl dCB0aGUgc2l6ZSBvZiBhIGFzeW1tZXRyaWMgY3J5cHRvZGV2IHNlc3Npb24NCj4gKyAqDQo+ICsg KiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAqDQo+ICsgKiBAcmV0dXJu DQo+ICsgKiAgLSBPbiBzdWNjZXNzIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHNlc3Npb24gc3Ry dWN0dXJlIGZvciBkZXZpY2UNCj4gKyAqICAtIE9uIGZhaWx1cmUgcmV0dXJucyAwDQo+ICsgKi8N Cj4gK3R5cGVkZWYgdW5zaWduZWQgKCpjcnlwdG9kZXZfYXN5bV9nZXRfc2Vzc2lvbl9wcml2YXRl X3NpemVfdCkoDQo+ICsJCXN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYpOw0KPiANCj4gIC8qKg0K PiAgICogQ29uZmlndXJlIGEgQ3J5cHRvIHNlc3Npb24gb24gYSBkZXZpY2UuDQo+IEBAIC0zMjEs NyArMzgwLDI0IEBAIHR5cGVkZWYgaW50DQo+ICgqY3J5cHRvZGV2X3N5bV9jb25maWd1cmVfc2Vz c2lvbl90KShzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0 b19zeW1feGZvcm0gKnhmb3JtLA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1fc2Vzc2lv biAqc2Vzc2lvbiwNCj4gIAkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCk7DQo+IC0NCj4gKy8qKg0K PiArICogQ29uZmlndXJlIGEgQ3J5cHRvIGFzeW1tZXRyaWMgc2Vzc2lvbiBvbiBhIGRldmljZS4N Cj4gKyAqDQo+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXINCj4gKyAqIEBw YXJhbQl4Zm9ybQkJU2luZ2xlIG9yIGNoYWluIG9mIGNyeXB0byB4Zm9ybXMNCj4gKyAqIEBwYXJh bQlwcml2X3Nlc3MJUG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2YXRlIHNlc3Npb24NCj4gc3Ry dWN0dXJlDQo+ICsgKiBAcGFyYW0JbXAJCU1lbXBvb2wgd2hlcmUgdGhlIHByaXZhdGUgc2Vzc2lv biBpcw0KPiBhbGxvY2F0ZWQNCj4gKyAqDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBSZXR1cm5z IDAgaWYgcHJpdmF0ZSBzZXNzaW9uIHN0cnVjdHVyZSBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNz ZnVsbHkuDQo+ICsgKiAgLSBSZXR1cm5zIC1FSU5WQUwgaWYgaW5wdXQgcGFyYW1ldGVycyBhcmUg aW52YWxpZC4NCj4gKyAqICAtIFJldHVybnMgLUVOT1RTVVAgaWYgY3J5cHRvIGRldmljZSBkb2Vz IG5vdCBzdXBwb3J0IHRoZSBjcnlwdG8NCj4gdHJhbnNmb3JtLg0KPiArICogIC0gUmV0dXJucyAt RU5PTUVNIGlmIHRoZSBwcml2YXRlIHNlc3Npb24gY291bGQgbm90IGJlIGFsbG9jYXRlZC4NCj4g KyAqLw0KPiArdHlwZWRlZiBpbnQgKCpjcnlwdG9kZXZfYXN5bV9jb25maWd1cmVfc2Vzc2lvbl90 KShzdHJ1Y3QgcnRlX2NyeXB0b2Rldg0KPiAqZGV2LA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b19h c3ltX3hmb3JtICp4Zm9ybSwNCj4gKwkJc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9u ICpzZXNzaW9uLA0KPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKTsNCj4gIC8qKg0KPiAgICog RnJlZSBkcml2ZXIgcHJpdmF0ZSBzZXNzaW9uIGRhdGEuDQo+ICAgKg0KPiBAQCAtMzMyLDYgKzQw OCwxNSBAQCB0eXBlZGVmIHZvaWQNCj4gKCpjcnlwdG9kZXZfc3ltX2ZyZWVfc2Vzc2lvbl90KShz dHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2LA0KPiAgCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9zeW1f c2Vzc2lvbiAqc2Vzcyk7DQo+IA0KPiAgLyoqDQo+ICsgKiBGcmVlIGFzeW1tZXRyaWMgc2Vzc2lv biBwcml2YXRlIGRhdGEuDQo+ICsgKg0KPiArICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmljZSBw b2ludGVyDQo+ICsgKiBAcGFyYW0Jc2VzcwkJQ3J5cHRvZGV2IHNlc3Npb24gc3RydWN0dXJlDQo+ ICsgKi8NCj4gK3R5cGVkZWYgdm9pZCAoKmNyeXB0b2Rldl9hc3ltX2ZyZWVfc2Vzc2lvbl90KShz dHJ1Y3QgcnRlX2NyeXB0b2Rldg0KPiAqZGV2LA0KPiArCQlzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9h c3ltX3Nlc3Npb24gKnNlc3MpOw0KPiArDQo+ICsvKioNCj4gICAqIE9wdGlvbmFsIEFQSSBmb3Ig ZHJpdmVycyB0byBhdHRhY2ggc2Vzc2lvbnMgd2l0aCBxdWV1ZSBwYWlyLg0KPiAgICogQHBhcmFt CWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+ICAgKiBAcGFyYW0JcXBfaWQJCXF1ZXVlIHBh aXIgaWQgZm9yIGF0dGFjaGluZyBzZXNzaW9uDQo+IEBAIC0zNDMsNiArNDI4LDE4IEBAIHR5cGVk ZWYgaW50DQo+ICgqY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2F0dGFjaF9zZXNzaW9uX3QpKA0K PiAgCQkgIHN0cnVjdCBydGVfY3J5cHRvZGV2ICpkZXYsDQo+ICAJCSAgdWludDE2X3QgcXBfaWQs DQo+ICAJCSAgdm9pZCAqc2Vzc2lvbl9wcml2YXRlKTsNCj4gKy8qKg0KPiArICogT3B0aW9uYWwg QVBJIGZvciBkcml2ZXJzIHRvIGF0dGFjaCBhc3ltbWV0cmljIHNlc3Npb24gd2l0aCBxdWV1ZSBw YWlyLg0KPiArICogQHBhcmFtCWRldgkJQ3J5cHRvIGRldmljZSBwb2ludGVyDQo+ICsgKiBAcGFy YW0JcXBfaWQJCVF1ZXVlIHBhaXIgaWQgZm9yIGF0dGFjaGluZyBzZXNzaW9uDQo+ICsgKiBAcGFy YW0JcHJpdl9zZXNzICAgICAgIFBvaW50ZXIgdG8gY3J5cHRvZGV2J3MgcHJpdmF0ZSBzZXNzaW9u IHN0cnVjdHVyZQ0KPiArICogQHJldHVybg0KPiArICogIC0gUmV0dXJuIDAgb24gc3VjY2Vzcw0K PiArICovDQo+ICt0eXBlZGVmIGludCAoKmNyeXB0b2Rldl9hc3ltX3F1ZXVlX3BhaXJfYXR0YWNo X3Nlc3Npb25fdCkoDQo+ICsJCSAgc3RydWN0IHJ0ZV9jcnlwdG9kZXYgKmRldiwNCj4gKwkJICB1 aW50MTZfdCBxcF9pZCwNCj4gKwkJICB2b2lkICpzZXNzaW9uX3ByaXZhdGUpOw0KPiANCj4gIC8q Kg0KPiAgICogT3B0aW9uYWwgQVBJIGZvciBkcml2ZXJzIHRvIGRldGFjaCBzZXNzaW9ucyBmcm9t IHF1ZXVlIHBhaXIuDQo+IEBAIC0zNTcsNiArNDU0LDE5IEBAIHR5cGVkZWYgaW50DQo+ICgqY3J5 cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2RldGFjaF9zZXNzaW9uX3QpKA0KPiAgCQkgIHVpbnQxNl90 IHFwX2lkLA0KPiAgCQkgIHZvaWQgKnNlc3Npb25fcHJpdmF0ZSk7DQo+IA0KPiArLyoqDQo+ICsg KiBPcHRpb25hbCBBUEkgZm9yIGRyaXZlcnMgdG8gZGV0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiBm cm9tIHF1ZXVlIHBhaXIuDQo+ICsgKiBAcGFyYW0JZGV2CQlDcnlwdG8gZGV2aWNlIHBvaW50ZXIN Cj4gKyAqIEBwYXJhbQlxcF9pZAkJcXVldWUgcGFpciBpZCBmb3IgZGV0YWNoaW5nIHNlc3Npb24N Cj4gKyAqIEBwYXJhbQlwcml2X3Nlc3MgICAgICAgUG9pbnRlciB0byBjcnlwdG9kZXYncyBwcml2 YXRlIHNlc3Npb24gc3RydWN0dXJlDQo+ICsgKiBAcmV0dXJuDQo+ICsgKiAgLSBSZXR1cm4gMCBv biBzdWNjZXNzDQo+ICsgKi8NCj4gK3R5cGVkZWYgaW50ICgqY3J5cHRvZGV2X2FzeW1fcXVldWVf cGFpcl9kZXRhY2hfc2Vzc2lvbl90KSgNCj4gKwkJICBzdHJ1Y3QgcnRlX2NyeXB0b2RldiAqZGV2 LA0KPiArCQkgIHVpbnQxNl90IHFwX2lkLA0KPiArCQkgIHZvaWQgKnNlc3Npb25fcHJpdmF0ZSk7 DQo+ICsNCj4gIC8qKiBDcnlwdG8gZGV2aWNlIG9wZXJhdGlvbnMgZnVuY3Rpb24gcG9pbnRlciB0 YWJsZSAqLw0KPiAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfb3BzIHsNCj4gIAljcnlwdG9kZXZfY29u ZmlndXJlX3QgZGV2X2NvbmZpZ3VyZTsJLyoqPCBDb25maWd1cmUgZGV2aWNlLiAqLw0KPiBAQCAt MzgwLDE3ICs0OTAsMzIgQEAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfb3BzIHsNCj4gIAljcnlwdG9k ZXZfcXVldWVfcGFpcl9zdG9wX3QgcXVldWVfcGFpcl9zdG9wOw0KPiAgCS8qKjwgU3RvcCBhIHF1 ZXVlIHBhaXIuICovDQo+ICAJY3J5cHRvZGV2X3F1ZXVlX3BhaXJfY291bnRfdCBxdWV1ZV9wYWly X2NvdW50Ow0KPiAtCS8qKjwgR2V0IGNvdW50IG9mIHRoZSBxdWV1ZSBwYWlycy4gKi8NCj4gLQ0K PiArCS8qKjwgR2V0IHRvdGFsIGNvdW50IG9mIHRoZSBxdWV1ZSBwYWlycyhzeW1tZXRyaWMrYXN5 bW1ldHJpYykuICovDQo+ICsJY3J5cHRvZGV2X3N5bV9xdWV1ZV9wYWlyX2NvdW50X3Qgc3ltX3F1 ZXVlX3BhaXJfY291bnQ7DQo+ICsJLyoqPCBHZXQgY291bnQgb2YgdGhlIHN5bW1ldHJpYyBxdWV1 ZSBwYWlycy4gKi8NCj4gKwljcnlwdG9kZXZfYXN5bV9xdWV1ZV9wYWlyX2NvdW50X3QgYXN5bV9x dWV1ZV9wYWlyX2NvdW50Ow0KPiArCS8qKjwgR2V0IGNvdW50IG9mIHRoZSBhc3ltbWV0cmljIHF1 ZXVlIHBhaXJzLiAqLw0KPiAgCWNyeXB0b2Rldl9zeW1fZ2V0X3Nlc3Npb25fcHJpdmF0ZV9zaXpl X3Qgc2Vzc2lvbl9nZXRfc2l6ZTsNCj4gLQkvKio8IFJldHVybiBwcml2YXRlIHNlc3Npb24uICov DQo+ICsJLyoqPCBSZXR1cm4gcHJpdmF0ZSBzaXplIGZvciBhIHNlc3Npb24gKi8NCj4gKwljcnlw dG9kZXZfc3ltX2dldF9zZXNzaW9uX3ByaXZhdGVfc2l6ZV90IHN5bV9zZXNzaW9uX2dldF9zaXpl Ow0KPiArCS8qKjwgUmV0dXJuIHByaXZhdGUgc2l6ZSBmb3Igc3ltbWV0cmljIGNyeXB0by4gKi8N Cj4gKwljcnlwdG9kZXZfc3ltX2dldF9zZXNzaW9uX3ByaXZhdGVfc2l6ZV90IGFzeW1fc2Vzc2lv bl9nZXRfc2l6ZTsNCj4gKwkvKio8IFJldHVybiBwcml2YXRlIHNpemUgZm9yIGFzeW1tZXRyaWMg Y3J5cHRvLiAqLw0KPiAgCWNyeXB0b2Rldl9zeW1fY29uZmlndXJlX3Nlc3Npb25fdCBzZXNzaW9u X2NvbmZpZ3VyZTsNCj4gIAkvKio8IENvbmZpZ3VyZSBhIENyeXB0byBzZXNzaW9uLiAqLw0KPiAr CWNyeXB0b2Rldl9hc3ltX2NvbmZpZ3VyZV9zZXNzaW9uX3QgYXN5bV9zZXNzaW9uX2NvbmZpZ3Vy ZTsNCj4gKwkvKio8IENvbmZpZ3VyZSBhc3ltbWV0cmljIENyeXB0byBzZXNzaW9uLiAqLw0KPiAg CWNyeXB0b2Rldl9zeW1fZnJlZV9zZXNzaW9uX3Qgc2Vzc2lvbl9jbGVhcjsNCj4gIAkvKio8IENs ZWFyIGEgQ3J5cHRvIHNlc3Npb25zIHByaXZhdGUgZGF0YS4gKi8NCj4gKwljcnlwdG9kZXZfYXN5 bV9mcmVlX3Nlc3Npb25fdCBhc3ltX3Nlc3Npb25fY2xlYXI7DQo+ICsJLyoqPCBDbGVhciBhIENy eXB0byBzZXNzaW9ucyBwcml2YXRlIGRhdGEuICovDQo+ICAJY3J5cHRvZGV2X3N5bV9xdWV1ZV9w YWlyX2F0dGFjaF9zZXNzaW9uX3QgcXBfYXR0YWNoX3Nlc3Npb247DQo+ICAJLyoqPCBBdHRhY2gg c2Vzc2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KPiAtCWNyeXB0b2Rldl9zeW1fcXVldWVfcGFpcl9k ZXRhY2hfc2Vzc2lvbl90IHFwX2RldGFjaF9zZXNzaW9uOw0KPiArCWNyeXB0b2Rldl9hc3ltX3F1 ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdA0KPiBhc3ltX3FwX2F0dGFjaF9zZXNzaW9uOw0KPiAr CS8qKjwgQXR0YWNoIGFzeW1tZXRyaWMgc2Vzc2lvbiB0byBxdWV1ZSBwYWlyLiAqLw0KPiArCWNy eXB0b2Rldl9zeW1fcXVldWVfcGFpcl9hdHRhY2hfc2Vzc2lvbl90IHFwX2RldGFjaF9zZXNzaW9u Ow0KPiArCS8qKjwgRGV0YWNoIHNlc3Npb24gZnJvbSBxdWV1ZSBwYWlyLiAqLw0KPiArCWNyeXB0 b2Rldl9hc3ltX3F1ZXVlX3BhaXJfYXR0YWNoX3Nlc3Npb25fdA0KPiBhc3ltX3FwX2RldGFjaF9z ZXNzaW9uOw0KPiAgCS8qKjwgRGV0YWNoIHNlc3Npb24gZnJvbSBxdWV1ZSBwYWlyLiAqLw0KPiAg fTsNCj4gDQo+IEBAIC01MzUsNiArNjYwLDE5IEBAIHVpbnQ4X3QgcnRlX2NyeXB0b2Rldl9hbGxv Y2F0ZV9kcml2ZXIoc3RydWN0DQo+IGNyeXB0b2Rldl9kcml2ZXIgKmNyeXB0b19kcnYsDQo+ICAJ c2Vzcy0+c2Vzc19wcml2YXRlX2RhdGFbZHJpdmVyX2lkXSA9IHByaXZhdGVfZGF0YTsNCj4gIH0N Cj4gDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgKg0KPiArZ2V0X2FzeW1fc2Vzc2lvbl9wcml2YXRl X2RhdGEoY29uc3Qgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uDQo+ICpzZXNzLA0K PiArCQl1aW50OF90IGRyaXZlcl9pZCkgew0KPiArCXJldHVybiBzZXNzLT5zZXNzX3ByaXZhdGVf ZGF0YVtkcml2ZXJfaWRdOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3Nl dF9hc3ltX3Nlc3Npb25fcHJpdmF0ZV9kYXRhKHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vz c2lvbg0KPiAqc2VzcywNCj4gKwkJdWludDhfdCBkcml2ZXJfaWQsIHZvaWQgKnByaXZhdGVfZGF0 YSkNCj4gK3sNCj4gKwlzZXNzLT5zZXNzX3ByaXZhdGVfZGF0YVtkcml2ZXJfaWRdID0gcHJpdmF0 ZV9kYXRhOw0KPiArfQ0KPiArDQo+ICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gIH0NCj4gICNlbmRp Zg0KPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9jcnlwdG9kZXYvcnRlX2NyeXB0b2Rldl92ZXJz aW9uLm1hcA0KPiBiL2xpYi9saWJydGVfY3J5cHRvZGV2L3J0ZV9jcnlwdG9kZXZfdmVyc2lvbi5t YXANCj4gaW5kZXggZWI0NzMwOC4uMzIzMjk0YSAxMDA2NDQNCj4gLS0tIGEvbGliL2xpYnJ0ZV9j cnlwdG9kZXYvcnRlX2NyeXB0b2Rldl92ZXJzaW9uLm1hcA0KPiArKysgYi9saWIvbGlicnRlX2Ny eXB0b2Rldi9ydGVfY3J5cHRvZGV2X3ZlcnNpb24ubWFwDQo+IEBAIC04NSwzICs4NSwyNCBAQCBE UERLXzE3LjExIHsNCj4gIAlydGVfY3J5cHRvZGV2X3BtZF9wYXJzZV9pbnB1dF9hcmdzOw0KPiAN Cj4gIH0gRFBES18xNy4wODsNCj4gKw0KPiArRVhQRVJJTUVOVEFMIHsNCj4gKwlnbG9iYWw6DQo+ ICsNCj4gKwlydGVfY3J5cHRvZGV2X2FzeW1fY2FwYWJpbGl0eV9nZXQ7DQo+ICsJcnRlX2NyeXB0 b2Rldl9hc3ltX2NhcGFiaWxpdHlfbW9kbGVuOw0KPiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9xdWV1 ZV9wYWlyX2NvdW50Ow0KPiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2NyZWF0ZTsNCj4g KwlydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbl9jbGVhcjsNCj4gKwlydGVfY3J5cHRvZGV2X2Fz eW1fc2Vzc2lvbl9mcmVlOw0KPiArCXJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uX2luaXQ7DQo+ ICsJcnRlX2NyeXB0b2Rldl9nZXRfYXN5bV9zZXNzaW9uX3ByaXZhdGVfc2l6ZTsNCj4gKwlydGVf Y3J5cHRvZGV2X2dldF9zeW1fc2Vzc2lvbl9wcml2YXRlX3NpemU7DQo+ICsJcnRlX2NyeXB0b2Rl dl9nZXRfeGZvcm1fYWxnb19lbnVtOw0KPiArCXJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9hdHRh Y2hfYXN5bV9zZXNzaW9uOw0KPiArCXJ0ZV9jcnlwdG9kZXZfcXVldWVfcGFpcl9kZXRhY2hfYXN5 bV9zZXNzaW9uOw0KPiArCXJ0ZV9jcnlwdG9kZXZfc3ltX3F1ZXVlX3BhaXJfY291bnQ7DQo+ICsJ cnRlX2NyeXB0b19hc3ltX3hmb3JtX3N0cmluZ3M7DQo+ICsJcnRlX2NyeXB0b19hc3ltX29wZXJh dGlvbl9zdHJpbmdzOw0KPiArDQo+ICt9Ow0KPiAtLQ0KPiAxLjkuMQ0KDQo=