From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 33B86A00BE; Tue, 29 Oct 2019 20:39:30 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B06B51BF97; Tue, 29 Oct 2019 20:39:28 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130048.outbound.protection.outlook.com [40.107.13.48]) by dpdk.org (Postfix) with ESMTP id 657C01BEBA for ; Tue, 29 Oct 2019 20:39:27 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MtxSjzz+Ua4ABW6I2372Mk1zaaR6c/T2uz3g5fNRzoQIIm9iYQZIzbAHhgUk+CN4DbCv3vNF7YxiGY+CAGF8/J/O0ckpbFipj+cepsdvPEqhaxrKgixyNNqvtwZE0zeE8PkdGVZsULdO0jMtP1EBv11x/lw8ZGlhlLi6m4dPITVGkFqBy5O+B9osg/Cq09rckprS84nXr9puud4DZ7TNhNdb/vqp0ufoefOTRS3RvJzBEzUfNypVthw8Xg3s466yK4xAvunL1w3B+5qvw9dYnWfn7AEXUv0+VhDRzoIOPkFYI6dUGgPvB/0nJrk/TnAL+Bk/QO2lMaac8C3u5fp3Cg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9mZJ4Ts3/oofhRnwnzv+qAAqV9FcdGYij6A5/hZxbwE=; b=nAAVApNHzDycCreZURhxGjD5cn221xieqC5nXz2PLPEwn2M4kaKG8wr9/RNTtzIEgUDQKok1ilCjWMrdrFTtPSHt35rT3ZdZCinHC/d5IfiCr5ZMG0H0Dp41gChgShQCv4FdxKkzu+v4oagQIkzwOI7WKlxVCgSgVnWS/2UQ12C8jYbpznICTWM4+7fcVEzy6OxPq+6ARIQfslV8QQNFFp+loWucidGzCngw73myObhcYHvdNxYkDoZfJH5foiSdDZPYkK2vm9uT7fEwlxiArte2563uv+tutfIwEJWcycqDP8yfBpZu/V0RN8t85EFOeya3pYcBcZTwb7lW/p/7Sg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9mZJ4Ts3/oofhRnwnzv+qAAqV9FcdGYij6A5/hZxbwE=; b=Jg3wfEyhaRNPgVaW4hqLhDVAeR1b0bcBYaafRK4o/Zn7BFwskts3Lyg2ikSgs6xT4entGpPor+V0x6Wb17ne96gtzN+h4LhQnbNW7t4u1SXAa1y3uRROWrarjQKxlTHXNSOPF1//b5d5vWfD15k99ij86PiubMEVxdojbQ3/U9A= Received: from VI1PR05MB3440.eurprd05.prod.outlook.com (10.170.235.156) by VI1PR05MB3246.eurprd05.prod.outlook.com (10.170.236.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.18; Tue, 29 Oct 2019 19:39:25 +0000 Received: from VI1PR05MB3440.eurprd05.prod.outlook.com ([fe80::f15a:6b64:d203:44dc]) by VI1PR05MB3440.eurprd05.prod.outlook.com ([fe80::f15a:6b64:d203:44dc%7]) with mapi id 15.20.2408.018; Tue, 29 Oct 2019 19:39:25 +0000 From: Ori Kam To: Andrew Rybchenko , John McNamara , Marko Kovacevic , Thomas Monjalon , Ferruh Yigit CC: "dev@dpdk.org" , "jingjing.wu@intel.com" , "stephen@networkplumber.org" Thread-Topic: [dpdk-dev] [PATCH v6 02/14] ethdev: add support for hairpin queue Thread-Index: AQHVjMGZ2GuEETdFDEKLhhN6JpyaTadwK8mAgAAyO3CAAOA9gIAAv5FQ Date: Tue, 29 Oct 2019 19:39:25 +0000 Message-ID: References: <1569479349-36962-1-git-send-email-orika@mellanox.com> <1572179102-163236-1-git-send-email-orika@mellanox.com> <1572179102-163236-3-git-send-email-orika@mellanox.com> <0ceaf36f-a18d-4bb8-0356-7dc28057ae2f@solarflare.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [185.175.35.255] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f2855ce1-e113-4528-5ad5-08d75ca7b471 x-ms-traffictypediagnostic: VI1PR05MB3246: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 0205EDCD76 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(396003)(346002)(366004)(39860400002)(136003)(199004)(189003)(51444003)(13464003)(25786009)(2906002)(6116002)(3846002)(8936002)(33656002)(110136005)(81166006)(54906003)(316002)(8676002)(81156014)(71200400001)(4326008)(256004)(14444005)(66946007)(66476007)(66556008)(64756008)(76116006)(66446008)(14454004)(71190400001)(478600001)(52536014)(486006)(229853002)(6246003)(476003)(66066001)(11346002)(7696005)(74316002)(9686003)(6436002)(186003)(76176011)(30864003)(26005)(53546011)(6506007)(99286004)(305945005)(5660300002)(55016002)(86362001)(102836004)(7736002)(446003)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3246; H:VI1PR05MB3440.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PQ1nbAqrdX96ywRXdZ3QuJSmd6OumNYoVBiKMvIXqE//5DB066iJa9M4TnHJzaNPl7r0EC7pnMWBw9VAB3WQnft99d5Z2S0MlWkFAxYE/X4zrk/IpGszHPwwvY4+DMbhaR51PvnrHB8sqps9v9c7d6SBocdOpqrF+3T+DYutiw0DzqNF21KYuv2d2bPcq986shLGHwctslUnD5AJWSlAYvCKfkqrjpjIYgQLROvhpoBP9LuXky+bo6TJzukdr0AGlAjgPakocBKxb/B6qwR8lCSGjIYFqe5SeWRPqpZp7xpr4b44QkBXPi87tiwl0likjy/K/ne3n36CPhTwckn78iTyodwY8gXMPuqhTdSsr5YoqsttEPbY1oqFkNCGZFqHc0KkPMcbga9249mpnTkdy0r8iGANtj71UeMso3aieyBVOpHRCJ4PKZ62aVANGk7z x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2855ce1-e113-4528-5ad5-08d75ca7b471 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Oct 2019 19:39:25.1027 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8U+IMxQDEFkNQVfrlsNZTDa5mgWoeKOp9suFcGKICAeVQVtItd1Aq2kA9RUQLaI9+wy9SOW1+JmyPOFVKIWMkw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3246 Subject: Re: [dpdk-dev] [PATCH v6 02/14] ethdev: add support for hairpin queue 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgQW5kcmV3LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFuZHJl dyBSeWJjaGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+IFNlbnQ6IFR1ZXNkYXks IE9jdG9iZXIgMjksIDIwMTkgOTozOSBBTQ0KPiBUbzogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3gu Y29tPjsgSm9obiBNY05hbWFyYQ0KPiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBNYXJrbyBL b3ZhY2V2aWMNCj4gPG1hcmtvLmtvdmFjZXZpY0BpbnRlbC5jb20+OyBUaG9tYXMgTW9uamFsb24g PHRob21hc0Btb25qYWxvbi5uZXQ+Ow0KPiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdpdEBpbnRl bC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7IGppbmdqaW5nLnd1QGludGVsLmNvbTsgc3RlcGhl bkBuZXR3b3JrcGx1bWJlci5vcmcNCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY2 IDAyLzE0XSBldGhkZXY6IGFkZCBzdXBwb3J0IGZvciBoYWlycGluIHF1ZXVlDQo+IA0KPiBPbiAx MC8yOC8xOSA5OjQ0IFBNLCBPcmkgS2FtIHdyb3RlOg0KPiA+IEhpIEFuZHJldywNCj4gPg0KPiA+ DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFuZHJldyBSeWJj aGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4+IFNlbnQ6IE1vbmRheSwgT2N0 b2JlciAyOCwgMjAxOSA1OjE2IFBNDQo+ID4+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5j b20+OyBKb2huIE1jTmFtYXJhDQo+ID4+IDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IE1hcmtv IEtvdmFjZXZpYw0KPiA+PiA8bWFya28ua292YWNldmljQGludGVsLmNvbT47IFRob21hcyBNb25q YWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47DQo+ID4+IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlp Z2l0QGludGVsLmNvbT4NCj4gPj4gQ2M6IGRldkBkcGRrLm9yZzsgamluZ2ppbmcud3VAaW50ZWwu Y29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZw0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGst ZGV2XSBbUEFUQ0ggdjYgMDIvMTRdIGV0aGRldjogYWRkIHN1cHBvcnQgZm9yIGhhaXJwaW4NCj4g cXVldWUNCj4gPj4NCj4gPj4gSGkgT3JpLA0KPiA+Pg0KPiA+PiBPbiAxMC8yNy8xOSAzOjI0IFBN LCBPcmkgS2FtIHdyb3RlOg0KPiA+Pj4gVGhpcyBjb21taXQgaW50cm9kdWNlIGhhaXJwaW4gcXVl dWUgdHlwZS4NCj4gPj4+DQo+ID4+PiBUaGUgaGFpcnBpbiBxdWV1ZSBpbiBidWlsZCBmcm9tIFJ4 IHF1ZXVlIGJpbmRlZCB0byBUeCBxdWV1ZS4NCj4gPj4+IEl0IGlzIHVzZWQgdG8gb2ZmbG9hZCB0 cmFmZmljIGNvbWluZyBmcm9tIHRoZSB3aXJlIGFuZCByZWRpcmVjdCBpdCBiYWNrDQo+ID4+PiB0 byB0aGUgd2lyZS4NCj4gPj4+DQo+ID4+PiBUaGVyZSBhcmUgMyBuZXcgZnVuY3Rpb25zOg0KPiA+ Pj4gLSBydGVfZXRoX2Rldl9oYWlycGluX2NhcGFiaWxpdHlfZ2V0DQo+ID4+PiAtIHJ0ZV9ldGhf cnhfaGFpcnBpbl9xdWV1ZV9zZXR1cA0KPiA+Pj4gLSBydGVfZXRoX3R4X2hhaXJwaW5fcXVldWVf c2V0dXANCj4gPj4+DQo+ID4+PiBJbiBvcmRlciB0byB1c2UgdGhlIHF1ZXVlLCB0aGVyZSBpcyBh IG5lZWQgdG8gY3JlYXRlIHJ0ZV9mbG93DQo+ID4+PiB3aXRoIHF1ZXVlIC8gUlNTIGFjdGlvbiB0 aGF0IHRhcmdldHMgb25lIG9yIG1vcmUgb2YgdGhlIFJ4IHF1ZXVlcy4NCj4gPj4+DQo+ID4+PiBT aWduZWQtb2ZmLWJ5OiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+DQo+ID4+PiBSZXZpZXdl ZC1ieTogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj4gPj4g TEdUTSwgbm90aGluZyBjcml0aWNhbCBtYXkgYmUgZXhjZXB0IG1heGltdW0gbnVtYmVyIGNoZWNr DQo+ID4+IHdoaWNoIEkgbG9zdCBmcm9tIG15IHZpZXcgYmVmb3JlLg0KPiA+PiBQbHVzIGZldyBz dHlsZSBzdWdnZXN0aW9ucyB3aGljaCBtYXkgYmUgZHJvcHBlZCwgYnV0IEknZCBiZQ0KPiA+PiBo YXBwaWVyIGlmIGFwcGxpZWQuDQo+ID4+DQo+ID4+IFRoYW5rcy4NCj4gPj4NCj4gPiBJIHJlYWxs eSBhcHJpY2F0ZSB5b3VyIHRpbWUgYW5kIGNvbW1lbnRzLA0KPiA+IFRoaXMgcGF0Y2ggaXMgdGhl IGJhc2Ugb2YgYSBudW1iZXIgb2Ygb3RoZXIgc2VyaWVzIChNZXRhL01ldGVyaW5nKQ0KPiA+IFNv IGlmIGl0IGlzIG5vdGhpbmcgY3JpdGljYWwgSSBwcmVmZXIgdG8gZ2V0IHRoaXMgc2V0IG1lcmdl ZCBhbmQgdGhlbiBjaGFuZ2Ugd2hhdA0KPiBpcyBuZWVkZWQsDQo+ID4gaWYgaXQgaXMgTy5LIGJ5 IHlvdS4NCj4gDQo+IE9LIGZvciBtZQ0KPiANCg0KVGhhbmtzLCBJIHdpbGwgc2VuZCBhIG5ldyBw YXRjaCBhcyBzb29uIGFzIHRoaXMgZ2V0IG1lcmdlZC4NCg0KPiA+IERldGFpbCAgY29tbWVudHMg cGxlYXNlIHNlZSBiZWxvdy4NCj4gPg0KPiA+PiBbc25pcF0NCj4gPj4NCj4gPj4+IGRpZmYgLS1n aXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMgYi9saWIvbGlicnRlX2V0aGRldi9y dGVfZXRoZGV2LmMNCj4gPj4+IGluZGV4IDc3NDMyMDUuLjY4YWNhMWYgMTAwNjQ0DQo+ID4+PiAt LS0gYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPj4+ICsrKyBiL2xpYi9saWJy dGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+Pj4gQEAgLTkyMyw2ICs5MjMsMTMgQEAgc3RydWN0 IHJ0ZV9ldGhfZGV2ICoNCj4gPj4+DQo+ID4+PiAgICAJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQo KmRldi0+ZGV2X29wcy0+cnhfcXVldWVfc3RhcnQsIC0NCj4gPj4gRU5PVFNVUCk7DQo+ID4+PiAr CWlmIChydGVfZXRoX2Rldl9pc19yeF9oYWlycGluX3F1ZXVlKGRldiwgcnhfcXVldWVfaWQpKSB7 DQo+ID4+PiArCQlSVEVfRVRIREVWX0xPRyhJTkZPLA0KPiA+Pj4gKwkJCSJDYW4ndCBzdGFydCBS eCBxdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlIHdpdGgNCj4gPj4gcG9ydF9pZD0lIlBSSXUxNiIg aXMgaGFpcnBpbiBxdWV1ZVxuIiwNCj4gPj4NCj4gPj4gTG9nIG1lc3NhZ2UgbG9va3MgYSBiaXQg c3RyYW5nZToNCj4gPj4gICDCoMKgwqAgQ2FuJ3Qgc3RhcnQgUnggcXVldWUgNSBvZiBkZXZpY2Ug d2l0aCBwb3J0X2lkPTAgaXMgaGFpcnBpbiBxdWV1ZQ0KPiA+PiBtYXkgYmUgdG8gcHV0IGtleSBp bmZvcm1hdGlvbiBmaXJzdDoNCj4gPj4gICDCoMKgwqAgQ2FuJ3Qgc3RhcnQgaGFpcnBpbiBSeCBx dWV1ZSA1IG9mIGRldmljZSB3aXRoIHBvcnRfaWQ9MA0KPiA+Pg0KPiA+IEknbSBub3QgYSBuYXRp dmUgRW5nbGlzaCBzcGVha2VyIGJ1dCBJIHRoaW5rIHRoZSBtZWFuaW5nIGlzIGRpZmZlcmVudC4N Cj4gDQo+IE9idmlvdXNseSBtZSB0b28NCj4gDQo+ID4gSW4gbXkgb3JpZ2luYWwgbG9nIGl0IG1l YW5zIHRoYXQgeW91IHRyeSB0byBzdGFydCBhIHF1ZXVlIGJ1dCBmYWlsIGR1ZSB0bw0KPiA+IHRo ZSBmYWN0IHRoYXQgdGhlIHF1ZXVlIGlzIGhhaXJwaW4gcXVldWUuDQo+ID4NCj4gPiBJbiB5b3Vy IHZlcnNpb24gaXQgbWVhbnMgdGhhdCB5b3UgY2FuJ3Qgc3RhcnQgYW4gaGFpcnBpbiBxdWV1ZSBi dXQgdGhlcmUgaXMgbm8NCj4gPiByZWFzb24gd2h5IG5vdC4NCj4gPg0KPiA+IFdoYXQgZG8geW91 IHRoaW5rPw0KPiANCj4gTGV0J3Mga2VlcCB5b3VyIHZlcnNpb24gaWYgdGhlcmUgaXMgbm8gYmV0 dGVyIHN1Z2dlc3Rpb25zIGZyb20gbmF0aXZlDQo+IHNwZWFrZXJzLg0KPiANCg0KVGhhbmtzLA0K DQo+ID4+PiArCQkJcnhfcXVldWVfaWQsIHBvcnRfaWQpOw0KPiA+Pj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICAgIAlpZiAoZGV2LT5kYXRhLT5yeF9xdWV1 ZV9zdGF0ZVtyeF9xdWV1ZV9pZF0gIT0NCj4gPj4gUlRFX0VUSF9RVUVVRV9TVEFURV9TVE9QUEVE KSB7DQo+ID4+PiAgICAJCVJURV9FVEhERVZfTE9HKElORk8sDQo+ID4+PiAgICAJCQkiUXVldWUg JSJQUkl1MTYiIG9mIGRldmljZSB3aXRoIHBvcnRfaWQ9JSJQUkl1MTYiDQo+ID4+IGFscmVhZHkg c3RhcnRlZFxuIiwNCj4gPj4+IEBAIC05NTAsNiArOTU3LDEzIEBAIHN0cnVjdCBydGVfZXRoX2Rl diAqDQo+ID4+Pg0KPiA+Pj4gICAgCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpkZXYtPmRldl9v cHMtPnJ4X3F1ZXVlX3N0b3AsIC0NCj4gPj4gRU5PVFNVUCk7DQo+ID4+PiArCWlmIChydGVfZXRo X2Rldl9pc19yeF9oYWlycGluX3F1ZXVlKGRldiwgcnhfcXVldWVfaWQpKSB7DQo+ID4+PiArCQlS VEVfRVRIREVWX0xPRyhJTkZPLA0KPiA+Pj4gKwkJCSJDYW4ndCBzdG9wIFJ4IHF1ZXVlICUiUFJJ dTE2IiBvZiBkZXZpY2Ugd2l0aA0KPiA+PiBwb3J0X2lkPSUiUFJJdTE2IiBpcyBoYWlycGluIHF1 ZXVlXG4iLA0KPiA+Pg0KPiA+PiBTYW1lDQo+ID4+DQo+ID4gUGxlYXNlIHNlZSBjb21tZW50IGFi b3ZlLg0KPiA+DQo+ID4+PiArCQkJcnhfcXVldWVfaWQsIHBvcnRfaWQpOw0KPiA+Pj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICAgIAlpZiAoZGV2LT5kYXRh LT5yeF9xdWV1ZV9zdGF0ZVtyeF9xdWV1ZV9pZF0gPT0NCj4gPj4gUlRFX0VUSF9RVUVVRV9TVEFU RV9TVE9QUEVEKSB7DQo+ID4+PiAgICAJCVJURV9FVEhERVZfTE9HKElORk8sDQo+ID4+PiAgICAJ CQkiUXVldWUgJSJQUkl1MTYiIG9mIGRldmljZSB3aXRoIHBvcnRfaWQ9JSJQUkl1MTYiDQo+ID4+ IGFscmVhZHkgc3RvcHBlZFxuIiwNCj4gPj4+IEBAIC05ODMsNiArOTk3LDEzIEBAIHN0cnVjdCBy dGVfZXRoX2RldiAqDQo+ID4+Pg0KPiA+Pj4gICAgCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVUKCpk ZXYtPmRldl9vcHMtPnR4X3F1ZXVlX3N0YXJ0LCAtDQo+ID4+IEVOT1RTVVApOw0KPiA+Pj4gKwlp ZiAocnRlX2V0aF9kZXZfaXNfdHhfaGFpcnBpbl9xdWV1ZShkZXYsIHR4X3F1ZXVlX2lkKSkgew0K PiA+Pj4gKwkJUlRFX0VUSERFVl9MT0coSU5GTywNCj4gPj4+ICsJCQkiQ2FuJ3Qgc3RhcnQgVHgg cXVldWUgJSJQUkl1MTYiIG9mIGRldmljZSB3aXRoDQo+ID4+IHBvcnRfaWQ9JSJQUkl1MTYiIGlz IGhhaXJwaW4gcXVldWVcbiIsDQo+ID4+DQo+ID4+IFNhbWUNCj4gPj4NCj4gPiBQbGVhc2Ugc2Vl IGNvbW1lbnQgYWJvdmUuDQo+ID4NCj4gPj4+ICsJCQl0eF9xdWV1ZV9pZCwgcG9ydF9pZCk7DQo+ ID4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gICAgCWlm IChkZXYtPmRhdGEtPnR4X3F1ZXVlX3N0YXRlW3R4X3F1ZXVlX2lkXSAhPQ0KPiA+PiBSVEVfRVRI X1FVRVVFX1NUQVRFX1NUT1BQRUQpIHsNCj4gPj4+ICAgIAkJUlRFX0VUSERFVl9MT0coSU5GTywN Cj4gPj4+ICAgIAkJCSJRdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlIHdpdGggcG9ydF9pZD0lIlBS SXUxNiINCj4gPj4gYWxyZWFkeSBzdGFydGVkXG4iLA0KPiA+Pj4gQEAgLTEwMDgsNiArMTAyOSwx MyBAQCBzdHJ1Y3QgcnRlX2V0aF9kZXYgKg0KPiA+Pj4NCj4gPj4+ICAgIAlSVEVfRlVOQ19QVFJf T1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT50eF9xdWV1ZV9zdG9wLCAtDQo+ID4+IEVOT1RTVVAp Ow0KPiA+Pj4gKwlpZiAocnRlX2V0aF9kZXZfaXNfdHhfaGFpcnBpbl9xdWV1ZShkZXYsIHR4X3F1 ZXVlX2lkKSkgew0KPiA+Pj4gKwkJUlRFX0VUSERFVl9MT0coSU5GTywNCj4gPj4+ICsJCQkiQ2Fu J3Qgc3RvcCBUeCBxdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlIHdpdGgNCj4gPj4gcG9ydF9pZD0l IlBSSXUxNiIgaXMgaGFpcnBpbiBxdWV1ZVxuIiwNCj4gPj4NCj4gPj4gU2FtZQ0KPiA+Pg0KPiA+ IFBsZWFzZSBzZWUgY29tbWVudCBhYm92ZS4NCj4gPg0KPiA+Pj4gKwkJCXR4X3F1ZXVlX2lkLCBw b3J0X2lkKTsNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+Pj4gKwl9DQo+ID4+PiArDQo+ ID4+PiAgICAJaWYgKGRldi0+ZGF0YS0+dHhfcXVldWVfc3RhdGVbdHhfcXVldWVfaWRdID09DQo+ ID4+IFJURV9FVEhfUVVFVUVfU1RBVEVfU1RPUFBFRCkgew0KPiA+Pj4gICAgCQlSVEVfRVRIREVW X0xPRyhJTkZPLA0KPiA+Pj4gICAgCQkJIlF1ZXVlICUiUFJJdTE2IiBvZiBkZXZpY2Ugd2l0aCBw b3J0X2lkPSUiUFJJdTE2Ig0KPiA+PiBhbHJlYWR5IHN0b3BwZWRcbiIsDQo+ID4+PiBAQCAtMTc4 MCw2ICsxODA4LDc5IEBAIHN0cnVjdCBydGVfZXRoX2RldiAqDQo+ID4+PiAgICB9DQo+ID4+Pg0K PiA+Pj4gICAgaW50DQo+ID4+PiArcnRlX2V0aF9yeF9oYWlycGluX3F1ZXVlX3NldHVwKHVpbnQx Nl90IHBvcnRfaWQsIHVpbnQxNl90IHJ4X3F1ZXVlX2lkLA0KPiA+Pj4gKwkJCSAgICAgICB1aW50 MTZfdCBuYl9yeF9kZXNjLA0KPiA+Pj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2V0aF9o YWlycGluX2NvbmYgKmNvbmYpDQo+ID4+PiArew0KPiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4gKwlz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldjsNCj4gPj4+ICsJc3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9j YXAgY2FwOw0KPiA+Pj4gKwl2b2lkICoqcnhxOw0KPiA+Pj4gKwlpbnQgaTsNCj4gPj4+ICsJaW50 IGNvdW50ID0gMDsNCj4gPj4+ICsNCj4gPj4+ICsJUlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJS X1JFVChwb3J0X2lkLCAtRUlOVkFMKTsNCj4gPj4+ICsNCj4gPj4+ICsJZGV2ID0gJnJ0ZV9ldGhf ZGV2aWNlc1twb3J0X2lkXTsNCj4gPj4+ICsJaWYgKHJ4X3F1ZXVlX2lkID49IGRldi0+ZGF0YS0+ bmJfcnhfcXVldWVzKSB7DQo+ID4+PiArCQlSVEVfRVRIREVWX0xPRyhFUlIsICJJbnZhbGlkIFJY IHF1ZXVlX2lkPSV1XG4iLA0KPiA+PiByeF9xdWV1ZV9pZCk7DQo+ID4+PiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKwlyZXQgPSBydGVfZXRoX2Rldl9oYWlycGluX2NhcGFi aWxpdHlfZ2V0KHBvcnRfaWQsICZjYXApOw0KPiA+Pj4gKwlpZiAocmV0ICE9IDApDQo+ID4+PiAr CQlyZXR1cm4gcmV0Ow0KPiA+Pj4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZf b3BzLQ0KPiA+Pj4gcnhfaGFpcnBpbl9xdWV1ZV9zZXR1cCwNCj4gPj4+ICsJCQkJLUVOT1RTVVAp Ow0KPiA+PiBNb3N0IGxpa2VseSB1bnN1cHBvcnRlZCBoYWlycGluIGlzIGNhdWdodCBieSBjYXBh YmlsaXR5IGdldCBhYm92ZS4NCj4gPj4gU28sIG1heSBiZSBpdCBpcyBiZXR0ZXIgdG8gbW92ZSB0 aGUgY2hlY2sganVzdCBiZWZvcmUgdXNhZ2UgZmFyIGJlbG93Lg0KPiA+PiBBbHNvLCBpZiBsaW5l IGxlbmd0aCBpcyBzdWZmaWNpZW50IEkgdGhpbmsgaXQgd291bGQgYmV0dGVyIHRvIHB1dCAtRU5P VFNVUA0KPiA+PiB0byB0aGUgcHJldmlvdXMgbGluZSBqdXN0IHRvIGZvbGxvdyBwb3J0X2lkIGNo ZWNrIHN0eWxlLg0KPiA+Pg0KPiA+IEkgdGhpbmsgdGhhdCBpbiBtb3N0IGZ1bmN0aW9uIHdlIGFy ZSBzdGFydGluZyB3aXRoIHRoZSBjaGVjay4NCj4gPiBwZXJzb25hbGx5IEkgbGlrZSB0byBoYXZl IGJhc2ljIGNoZWNrcyBpbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb2RlLg0KPiA+IEJ1dCBJIHdp bGwgZG8gd2hhdCB5b3UgdGhpbmsgaXMgYmVzdC4gSWYgSSByZW1lbWJlciBjb3JyZWN0bHkgdGhl IGxpbmUNCj4gPiBsZW5ndGggaXMgdG8gc2hvcnQsIGJ1dCBJIHdpbGwgdGVzdCBhZ2Fpbi4NCj4g DQo+IFVwIHRvIHlvdS4gVGhhbmtzLg0KPiANCg0KSSB3aWxsIGtlZXAgbXkgdmVyc2lvbiwgYnV0 IHdpbGwgdGVzdCBhZ2FpbiBpZiBJIGNhbiBtZXJnZSBpdCB0byBvbmUgbGluZS4NCg0KPiA+Pj4g KwkvKiBVc2UgZGVmYXVsdCBzcGVjaWZpZWQgYnkgZHJpdmVyLCBpZiBuYl9yeF9kZXNjIGlzIHpl cm8gKi8NCj4gPj4+ICsJaWYgKG5iX3J4X2Rlc2MgPT0gMCkNCj4gPj4+ICsJCW5iX3J4X2Rlc2Mg PSBjYXAubWF4X25iX2Rlc2M7DQo+ID4+IEZ1bmN0aW9uIGRlc2NyaXB0aW9uIGFuZCBjb21tZW50 IGFib3ZlIG1lbnRpb25zIFBNRCBkZWZhdWx0LCBidXQNCj4gPj4gdGhlcmUgaXMgbm8gZGVmYXVs dC4gSXQgdXNlcyBqdXN0IG1heGltdW0uIEkgaGF2ZSBubyBzdHJvbmcgb3Bpbmlvbg0KPiA+PiBp ZiBkZWZhdWx0IGlzIHJlYWxseSByZXF1aXJlZCBvciBpdCBpcyBPSyB0byBzYXkgdGhhdCBtYXhp bXVtIGlzIHVzZWQuDQo+ID4+IFRoZSBvbmx5IGNvbmNlcm4gaXM6IHdoeSBtYXhpbXVtPw0KPiA+ Pg0KPiA+IE1vc3QgbGlrZWx5IHRoZSBiZXN0IHZhbHVlIGlzIHRoZSBtYXgsIGJ1dCBJIGNhbiBh ZGQgYSBuZXcgZmllbGQgdG8gdGhlIGNhcA0KPiA+IHRoYXQgc2F5IGRlZmF1bHQgdmFsdWUuIFdo YXQgZG8geW91IHRoaW5rPw0KPiANCj4gSSdtIG5vdCAxMDAlIHN1cmUgc2luY2UgZGVmYXVsdCBy ZXF1aXJlcyAwIHZhbHVlIGhhbmRsaW5nIGFuZA0KPiBJIHRoaW5rIGZhbGxiYWNrIHRvIG1heGlt dW0gY291bGQgYmUgdGhlIHJpZ2h0IGhhbmRsaW5nIGhlcmUuDQo+IE1heSBiZSBpdCBpcyBiZXR0 ZXIgdG8gZG9jdW1lbnQgdGhhdCBtYXhpbXVtIGlzIHVzZWQgYW5kDQo+IGludHJvZHVjZSBkZWZh dWx0IGlmIGl0IGlzIHJlYWxseSByZXF1aXJlZCBpbiB0aGUgZnV0dXJlLg0KPiBJdCBzaG91bGQg YmUgcmVjb25zaWRlcmVkIHdoZW4gQVBJIGlzIHByb21vdGVkIHRvIHN0YWJsZQ0KPiBmcm9tIGV4 cGVyaW1lbnRhbC4NCj4gDQo+IEJhc2ljYWxseSBib3RoIG9wdGlvbnMgYXJlIE9LIGZvciBtZS4N Cj4gDQoNCkkgbGlrZSB5b3VyIGlkZWEsIEkgd2lsbCBjaGFuZ2UgdGhlIGRvY3VtZW50YXRpb24g dG8gc2F5IHRoYXQgdGhlIG1heCB3aWxsIGJlIHVzZWQuDQoNCj4gPj4+ICsJaWYgKG5iX3J4X2Rl c2MgPiBjYXAubWF4X25iX2Rlc2MpIHsNCj4gPj4+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwNCj4g Pj4+ICsJCQkiSW52YWxpZCB2YWx1ZSBmb3IgbmJfcnhfZGVzYyg9JWh1KSwgc2hvdWxkIGJlOiA8 PQ0KPiA+PiAlaHUiLA0KPiA+Pj4gKwkJCW5iX3J4X2Rlc2MsIGNhcC5tYXhfbmJfZGVzYyk7DQo+ ID4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKwlpZiAoY29uZi0+cGVl cl9jb3VudCA+IGNhcC5tYXhfcnhfMl90eCkgew0KPiA+Pj4gKwkJUlRFX0VUSERFVl9MT0coRVJS LA0KPiA+Pj4gKwkJCSJJbnZhbGlkIHZhbHVlIGZvciBudW1iZXIgb2YgcGVlcnMgZm9yIFJ4IHF1 ZXVlKD0laHUpLA0KPiA+PiBzaG91bGQgYmU6IDw9ICVodSIsDQo+ID4+PiArCQkJY29uZi0+cGVl cl9jb3VudCwgY2FwLm1heF9yeF8yX3R4KTsNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ Pj4gKwl9DQo+ID4+PiArCWlmIChjb25mLT5wZWVyX2NvdW50ID09IDApIHsNCj4gPj4+ICsJCVJU RV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+ICsJCQkiSW52YWxpZCB2YWx1ZSBmb3IgbnVtYmVyIG9m IHBlZXJzIGZvciBSeCBxdWV1ZSg9JWh1KSwNCj4gPj4gc2hvdWxkIGJlOiA+IDAiLA0KPiA+Pj4g KwkJCWNvbmYtPnBlZXJfY291bnQpOw0KPiA+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiAr CX0NCj4gPj4+ICsJaWYgKGNhcC5tYXhfbmJfcXVldWVzICE9IFVJTlQxNl9NQVgpIHsNCj4gPj4g SSdtIG5vdCBzdXJlIHRoYXQgd2UgbmVlZCB0byBoYW5kbGUgaXQgc2VwYXJhdGVseS4gQ29kZSBi ZWxvdw0KPiA+PiBzaG91bGQgaGFuZGxlIGl0IGFuZCBpdCBhbmQgdGhlcmUgaXMgbm8gcG9pbnQg dG8gb3B0aW1pemUgaXQuDQo+ID4+DQo+ID4gVGhpcyBpcyBkb25lIHRvIHNhdmUgdGltZSBpZiB0 aGUgdXNlciBzZXQgdWludDE2X21heCB0aGVyZSBpcyBubyBwb2ludCB0byB0aGUNCj4gPiBsb29w LCBJIGNhbiBhZGQgdGhlIGNoZWNrIGFzIGNvbmRpdGlvbiB0byB0aGUgbG9vcCBidXQgdGhlbiBp dCBsb29rcyBpbmNvcnJlY3QNCj4gPiBzaW5jZSB3ZSBhcmUgY2hlY2tpbmcgc29tZSB0aGluayB0 aGF0IGNhbuKAmXQgYmUgY2hhbmdlZC4NCj4gPiBXaGF0IGRvIHlvdSB0aGluaz8NCj4gDQo+IEZy YW5rbHkgc3BlYWtpbmcgSSBzZWUgbm8gdmFsdWUgaW4gdGhlIG9wdGltaXphdGlvbi4gSXQgaXMg Y29udHJvbA0KPiBwYXRoIGFuZCBJJ2QgcHJlZmVyIHNpbXBsZXIgY29kZSBoZXJlLg0KPiANCg0K Ty5LLiB3aWxsIGFkZCB0aGUgY2hlY2sgaW4gdGhlIGZvciBjb21tYW5kLg0KDQo+ID4+PiArCQlm b3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXM7IGkrKykgew0KPiA+PiBNYXkg SSBzdWdnZXN0IHRvIGFzc2lnbiBjb3VudCA9IDAgdG8gbWFrZSBpdCBhIGJpdCBlYXNpZXIgdG8g cmVhZCBhbmQNCj4gPj4gbW9yZSByb2J1c3QgYWdhaW5zdCBmdXR1cmUgY2hhbmdlcy4NCj4gPj4N Cj4gPiBZb3UgbWVhbiBhZGQgY291bnQgPSAwIHRvIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBsb29w Pw0KPiANCj4gWWVzLCByaWdodCBub3cgY291bnQgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSB0b28g ZmFyIGZyb20gdGhlIGxpbmUuDQo+IA0KDQpXaWxsIGZpeC4NCg0KPiA+Pj4gKwkJCWlmIChydGVf ZXRoX2Rldl9pc19yeF9oYWlycGluX3F1ZXVlKGRldiwgaSkpDQo+ID4+IFRoZSBjb25kaXRpb24g c2hvdWxkIGJlIG1vcmUgdHJpY2t5IGlmIHdlIHJlc2V0dXAgaGFpcnBpbiBxdWV1ZS4NCj4gPj4g SS5lLiB3ZSBzaG91bGQgY2hlY2sgaWYgaSBpcyByeF9xdWV1ZV9pZCBhbmQgY291bnQgaXQgYW55 d2F5Lg0KPiA+Pg0KPiA+Pj4gKwkJCQljb3VudCsrOw0KPiA+Pj4gKwkJfQ0KPiA+Pj4gKwkJaWYg KGNvdW50ID4gY2FwLm1heF9uYl9xdWV1ZXMpIHsNCj4gPj4+ICsJCQlSVEVfRVRIREVWX0xPRyhF UlIsICJUbyBtYW55IFJ4IGhhaXJwaW4gcXVldWVzDQo+ID4+ICVkIiwNCj4gPj4NCj4gPj4gSSB0 aGluayBpdCB3b3VsZCBiZSB1c2VmdWwgdG8gbG9nIG1heCBoZXJlIGFzIHdlbGwgdG8gY2F0Y2gN Cj4gPj4gdW5zZXQgbWF4IGNhc2VzIGVhc2llci4NCj4gPj4NCj4gPiBJJ20gbm90IHN1cmUgSSB1 bmRlcnN0YW5kLg0KPiANCj4gSWYgdGhlIHF1ZXN0aW9uIGlzIGFib3V0IGxvZ2dpbmcsIHRoZSBh bnN3ZXIgaXMgc2ltcGxlOg0KPiBpZiB0aGUgdXNlciBmb3JnZXQgdG8gaW5pdGlhbGl6ZSBtYXhp bXVtIG51bWJlciBvZiBoYWlycGluIHF1ZXVlcw0KPiBwcm9wZXJseSwgaXQgd2lsbCBiZSB6ZXJv IGFuZCBzZXR1cCB3aWxsIGZhaWwgaGVyZS4gU28sIGl0IHdvdWxkIGJlDQo+IGdvb2QgdG8gbG9n IG1heGltdW0gdmFsdWUgaGVyZSBqdXN0IHRvIG1ha2UgaXQgY2xlYXIgd2hpY2gNCj4gbGltaXQg aXMgZXhjZWVkZWQuDQo+IA0KDQpNYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcgYnV0IHRoZSBQ TUQgc2V0cyB0aGUgbWF4IG51bWJlciBvZiBoYWlycGluIHF1ZXVlcy4NCkJ1dCBpbiBhbnkgY2Fz ZSBJIGFncmVlIHdlIHNob3VsZCBsb2cgd2hhdCB0aGUgdXNlciByZXF1ZXN0ZWQgYW5kIHdoYXQg aXMgdGhlIG1heCANCnRoYXQgdGhlIFBNRCByZXBvcnRzLg0KDQo+IElmIHRoZSBxdWVzdGlvbiBp cyBhYm91dCBhYm92ZSBjaGVjaywgbGV0J3MgY29uc2lkZXIgdGhlIGNhc2Ugd2hlbg0KPiBtYXhp bXVtIGlzIG9uZSBhbmQgb25lIGhhaXJwaW4gcXVldWUgaXMgYWxyZWFkeSBzZXR1cCwgYnV0DQo+ IHVzZXIgdHJpZXMgdG8gc2V0dXAgb25lIG1vcmUuIEFib3ZlIGxvb3Agd2lsbCBjb3VudCBvbmx5 IG9uZSBzaW5jZQ0KPiBoYWlycGluIHN0YXRlIGZvciBjdXJyZW50IHF1ZXVlIGlzIHNldCBiZWxv dy4gU28sIHRoZSBjb25kaXRpb24gd2lsbA0KPiBhbGxvdyB0byBzZXR1cCB0aGUgc2Vjb25kIGhh aXJwaW4gcXVldWUuDQo+IEluIHRoZW9yeSwgd2UgY291bGQgaW5pdGlhbGl6ZSBjb3VuZD0xIHRv IGNvdW50IHRoaXMgb25lLCBidXQNCj4gaXQgd291bGQgYnJlYWsgdGhlIGNhc2Ugd2hlbiB3ZSBj YWxsIHNldHVwIG9uY2UgYWdhaW4gZm9yIHRoZQ0KPiBxdWV1ZSB3aGljaCBpcyBhbHJlYWR5IGhh aXJwaW4uIEFQSSBhbGxvd3MgYW5kIGhhbmRsZXMgaXQuDQo+IA0KDQpOaWNlIGNhdGNoLiBJIHRo aW5rIHRoZSBiZXN0IHNvbHV0aW9uIGlzIHRvIGNvbXBhcmUgdGhlIGNvdW50IHRvIGNhcC5tYXhf bmJfcXVldWVzIC0gMS4NCmFuZCBldmVuIGJlZm9yZSB0aGlzIGNvbXBhcmlzb24gY2hlY2sgaWYg dGhlIGN1cnJlbnQgcXVldWUgaXMgYWxyZWFkeSBoYWlycGluIHF1ZXVlIGlmIHNvDQp3ZSBjYW4g c2tpcCB0aGlzIGNoZWNrLg0KV2hhdCBkbyB5b3UgdGhpbms/DQoNCj4gPj4+ICsJCQljb3VudCk7 DQo+ID4+PiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArCQl9DQo+ID4+PiArCX0NCj4gPj4+ ICsJaWYgKGRldi0+ZGF0YS0+ZGV2X3N0YXJ0ZWQpDQo+ID4+PiArCQlyZXR1cm4gLUVCVVNZOw0K PiA+Pj4gKwlyeHEgPSBkZXYtPmRhdGEtPnJ4X3F1ZXVlczsNCj4gPj4+ICsJaWYgKHJ4cVtyeF9x dWV1ZV9pZF0gIT0gTlVMTCkgew0KPiA+Pj4gKwkJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRl di0+ZGV2X29wcy0NCj4gPj4+IHJ4X3F1ZXVlX3JlbGVhc2UsDQo+ID4+PiArCQkJCQktRU5PVFNV UCk7DQo+ID4+PiArCQkoKmRldi0+ZGV2X29wcy0+cnhfcXVldWVfcmVsZWFzZSkocnhxW3J4X3F1 ZXVlX2lkXSk7DQo+ID4+PiArCQlyeHFbcnhfcXVldWVfaWRdID0gTlVMTDsNCj4gPj4+ICsJfQ0K PiA+Pj4gKwlyZXQgPSAoKmRldi0+ZGV2X29wcy0+cnhfaGFpcnBpbl9xdWV1ZV9zZXR1cCkoZGV2 LCByeF9xdWV1ZV9pZCwNCj4gPj4+ICsJCQkJCQkgICAgICBuYl9yeF9kZXNjLCBjb25mKTsNCj4g Pj4+ICsJaWYgKHJldCA9PSAwKQ0KPiA+Pj4gKwkJZGV2LT5kYXRhLT5yeF9xdWV1ZV9zdGF0ZVty eF9xdWV1ZV9pZF0gPQ0KPiA+Pj4gKwkJCVJURV9FVEhfUVVFVUVfU1RBVEVfSEFJUlBJTjsNCj4g Pj4+ICsJcmV0dXJuIGV0aF9lcnIocG9ydF9pZCwgcmV0KTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ ID4+PiAraW50DQo+ID4+PiAgICBydGVfZXRoX3R4X3F1ZXVlX3NldHVwKHVpbnQxNl90IHBvcnRf aWQsIHVpbnQxNl90IHR4X3F1ZXVlX2lkLA0KPiA+Pj4gICAgCQkgICAgICAgdWludDE2X3QgbmJf dHhfZGVzYywgdW5zaWduZWQgaW50IHNvY2tldF9pZCwNCj4gPj4+ICAgIAkJICAgICAgIGNvbnN0 IHN0cnVjdCBydGVfZXRoX3R4Y29uZiAqdHhfY29uZikNCj4gPj4+IEBAIC0xODc4LDYgKzE5Nzks NzggQEAgc3RydWN0IHJ0ZV9ldGhfZGV2ICoNCj4gPj4+ICAgIAkJICAgICAgIHR4X3F1ZXVlX2lk LCBuYl90eF9kZXNjLCBzb2NrZXRfaWQsICZsb2NhbF9jb25mKSk7DQo+ID4+PiAgICB9DQo+ID4+ Pg0KPiA+Pj4gK2ludA0KPiA+Pj4gK3J0ZV9ldGhfdHhfaGFpcnBpbl9xdWV1ZV9zZXR1cCh1aW50 MTZfdCBwb3J0X2lkLCB1aW50MTZfdCB0eF9xdWV1ZV9pZCwNCj4gPj4+ICsJCQkgICAgICAgdWlu dDE2X3QgbmJfdHhfZGVzYywNCj4gPj4+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhf aGFpcnBpbl9jb25mICpjb25mKQ0KPiA+PiBTYW1lIG5vdGVzIGFzIGZvciBSeCBxdWV1ZSBhYm92 ZS4NCj4gPj4NCj4gPiBPLksuIHNhbWUgY29tbWVudHMuDQo+ID4NCj4gPj4+ICt7DQo+ID4+PiAr CXN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0KPiA+Pj4gKwlzdHJ1Y3QgcnRlX2V0aF9oYWlycGlu X2NhcCBjYXA7DQo+ID4+PiArCXZvaWQgKip0eHE7DQo+ID4+PiArCWludCBpOw0KPiA+Pj4gKwlp bnQgY291bnQgPSAwOw0KPiA+Pj4gKwlpbnQgcmV0Ow0KPiA+Pj4gKw0KPiA+Pj4gKwlSVEVfRVRI X1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1FSU5WQUwpOw0KPiA+Pj4gKwlkZXYg PSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRdOw0KPiA+Pj4gKwlpZiAodHhfcXVldWVfaWQgPj0g ZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXMpIHsNCj4gPj4+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwg IkludmFsaWQgVFggcXVldWVfaWQ9JXVcbiIsDQo+ID4+IHR4X3F1ZXVlX2lkKTsNCj4gPj4+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+Pj4gKwl9DQo+ID4+PiArCXJldCA9IHJ0ZV9ldGhfZGV2X2hh aXJwaW5fY2FwYWJpbGl0eV9nZXQocG9ydF9pZCwgJmNhcCk7DQo+ID4+PiArCWlmIChyZXQgIT0g MCkNCj4gPj4+ICsJCXJldHVybiByZXQ7DQo+ID4+PiArCVJURV9GVU5DX1BUUl9PUl9FUlJfUkVU KCpkZXYtPmRldl9vcHMtDQo+ID4+PiB0eF9oYWlycGluX3F1ZXVlX3NldHVwLA0KPiA+Pj4gKwkJ CQktRU5PVFNVUCk7DQo+ID4+PiArCS8qIFVzZSBkZWZhdWx0IHNwZWNpZmllZCBieSBkcml2ZXIs IGlmIG5iX3R4X2Rlc2MgaXMgemVybyAqLw0KPiA+Pj4gKwlpZiAobmJfdHhfZGVzYyA9PSAwKQ0K PiA+Pj4gKwkJbmJfdHhfZGVzYyA9IGNhcC5tYXhfbmJfZGVzYzsNCj4gPj4+ICsJaWYgKG5iX3R4 X2Rlc2MgPiBjYXAubWF4X25iX2Rlc2MpIHsNCj4gPj4+ICsJCVJURV9FVEhERVZfTE9HKEVSUiwN Cj4gPj4+ICsJCQkiSW52YWxpZCB2YWx1ZSBmb3IgbmJfdHhfZGVzYyg9JWh1KSwgc2hvdWxkIGJl OiA8PQ0KPiA+PiAlaHUiLA0KPiA+Pj4gKwkJCW5iX3R4X2Rlc2MsIGNhcC5tYXhfbmJfZGVzYyk7 DQo+ID4+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKwlpZiAoY29uZi0+ cGVlcl9jb3VudCA+IGNhcC5tYXhfdHhfMl9yeCkgew0KPiA+Pj4gKwkJUlRFX0VUSERFVl9MT0co RVJSLA0KPiA+Pj4gKwkJCSJJbnZhbGlkIHZhbHVlIGZvciBudW1iZXIgb2YgcGVlcnMgZm9yIFR4 IHF1ZXVlKD0laHUpLA0KPiA+PiBzaG91bGQgYmU6IDw9ICVodSIsDQo+ID4+PiArCQkJY29uZi0+ cGVlcl9jb3VudCwgY2FwLm1heF90eF8yX3J4KTsNCj4gPj4+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+Pj4gKwl9DQo+ID4+PiArCWlmIChjb25mLT5wZWVyX2NvdW50ID09IDApIHsNCj4gPj4+ICsJ CVJURV9FVEhERVZfTE9HKEVSUiwNCj4gPj4+ICsJCQkiSW52YWxpZCB2YWx1ZSBmb3IgbnVtYmVy IG9mIHBlZXJzIGZvciBUeCBxdWV1ZSg9JWh1KSwNCj4gPj4gc2hvdWxkIGJlOiA+IDAiLA0KPiA+ Pj4gKwkJCWNvbmYtPnBlZXJfY291bnQpOw0KPiA+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+ PiArCX0NCj4gPj4+ICsJaWYgKGNhcC5tYXhfbmJfcXVldWVzICE9IFVJTlQxNl9NQVgpIHsNCj4g Pj4+ICsJCWZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3R4X3F1ZXVlczsgaSsrKSB7DQo+ ID4+PiArCQkJaWYgKHJ0ZV9ldGhfZGV2X2lzX3R4X2hhaXJwaW5fcXVldWUoZGV2LCBpKSkNCj4g Pj4+ICsJCQkJY291bnQrKzsNCj4gPj4+ICsJCX0NCj4gPj4+ICsJCWlmIChjb3VudCA+IGNhcC5t YXhfbmJfcXVldWVzKSB7DQo+ID4+PiArCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+Pj4gKwkJ CQkgICAgICAgIlRvIG1hbnkgVHggaGFpcnBpbiBxdWV1ZXMgJWQiLCBjb3VudCk7DQo+ID4+PiAr CQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArCQl9DQo+ID4+PiArCX0NCj4gPj4+ICsJaWYgKGRl di0+ZGF0YS0+ZGV2X3N0YXJ0ZWQpDQo+ID4+PiArCQlyZXR1cm4gLUVCVVNZOw0KPiA+Pj4gKwl0 eHEgPSBkZXYtPmRhdGEtPnR4X3F1ZXVlczsNCj4gPj4+ICsJaWYgKHR4cVt0eF9xdWV1ZV9pZF0g IT0gTlVMTCkgew0KPiA+Pj4gKwkJUlRFX0ZVTkNfUFRSX09SX0VSUl9SRVQoKmRldi0+ZGV2X29w cy0NCj4gPj4+IHR4X3F1ZXVlX3JlbGVhc2UsDQo+ID4+PiArCQkJCQktRU5PVFNVUCk7DQo+ID4+ PiArCQkoKmRldi0+ZGV2X29wcy0+dHhfcXVldWVfcmVsZWFzZSkodHhxW3R4X3F1ZXVlX2lkXSk7 DQo+ID4+PiArCQl0eHFbdHhfcXVldWVfaWRdID0gTlVMTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKwly ZXQgPSAoKmRldi0+ZGV2X29wcy0+dHhfaGFpcnBpbl9xdWV1ZV9zZXR1cCkNCj4gPj4+ICsJCShk ZXYsIHR4X3F1ZXVlX2lkLCBuYl90eF9kZXNjLCBjb25mKTsNCj4gPj4+ICsJaWYgKHJldCA9PSAw KQ0KPiA+Pj4gKwkJZGV2LT5kYXRhLT50eF9xdWV1ZV9zdGF0ZVt0eF9xdWV1ZV9pZF0gPQ0KPiA+ Pj4gKwkJCVJURV9FVEhfUVVFVUVfU1RBVEVfSEFJUlBJTjsNCj4gPj4+ICsJcmV0dXJuIGV0aF9l cnIocG9ydF9pZCwgcmV0KTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiAgICB2b2lkDQo+ID4+ PiAgICBydGVfZXRoX3R4X2J1ZmZlcl9kcm9wX2NhbGxiYWNrKHN0cnVjdCBydGVfbWJ1ZiAqKnBr dHMsIHVpbnQxNl90DQo+IHVuc2VudCwNCj4gPj4+ICAgIAkJdm9pZCAqdXNlcmRhdGEgX19ydGVf dW51c2VkKQ0KPiA+Pj4gQEAgLTQwMDcsMTIgKzQxODAsMTkgQEAgaW50IHJ0ZV9ldGhfc2V0X3F1 ZXVlX3JhdGVfbGltaXQodWludDE2X3QNCj4gPj4gcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWR4 LA0KPiA+Pj4gICAgCXJ0ZV9lcnJubyA9IEVOT1RTVVA7DQo+ID4+PiAgICAJcmV0dXJuIE5VTEw7 DQo+ID4+PiAgICAjZW5kaWYNCj4gPj4+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXY7DQo+ID4+ PiArDQo+ID4+PiAgICAJLyogY2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiA+Pj4gICAgCWlm ICghcnRlX2V0aF9kZXZfaXNfdmFsaWRfcG9ydChwb3J0X2lkKSB8fCBmbiA9PSBOVUxMIHx8DQo+ ID4+PiAgICAJCSAgICBxdWV1ZV9pZCA+PSBydGVfZXRoX2RldmljZXNbcG9ydF9pZF0uZGF0YS0+ bmJfcnhfcXVldWVzKSB7DQo+ID4+PiAgICAJCXJ0ZV9lcnJubyA9IEVJTlZBTDsNCj4gPj4+ICAg IAkJcmV0dXJuIE5VTEw7DQo+ID4+PiAgICAJfQ0KPiA+Pj4gKwlkZXYgPSAmcnRlX2V0aF9kZXZp Y2VzW3BvcnRfaWRdOw0KPiA+Pj4gKwlpZiAocnRlX2V0aF9kZXZfaXNfcnhfaGFpcnBpbl9xdWV1 ZShkZXYsIHF1ZXVlX2lkKSkgew0KPiA+Pj4gKwkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+Pj4g KwkJcmV0dXJuIE5VTEw7DQo+ID4+PiArCX0NCj4gPj4+ICAgIAlzdHJ1Y3QgcnRlX2V0aF9yeHR4 X2NhbGxiYWNrICpjYiA9IHJ0ZV96bWFsbG9jKE5VTEwsIHNpemVvZigqY2IpLCAwKTsNCj4gPj4+ DQo+ID4+PiAgICAJaWYgKGNiID09IE5VTEwpIHsNCj4gPj4+IEBAIC00MDg0LDYgKzQyNjQsOCBA QCBpbnQgcnRlX2V0aF9zZXRfcXVldWVfcmF0ZV9saW1pdCh1aW50MTZfdA0KPiBwb3J0X2lkLA0K PiA+PiB1aW50MTZfdCBxdWV1ZV9pZHgsDQo+ID4+PiAgICAJcnRlX2Vycm5vID0gRU5PVFNVUDsN Cj4gPj4+ICAgIAlyZXR1cm4gTlVMTDsNCj4gPj4+ICAgICNlbmRpZg0KPiA+Pj4gKwlzdHJ1Y3Qg cnRlX2V0aF9kZXYgKmRldjsNCj4gPj4+ICsNCj4gPj4+ICAgIAkvKiBjaGVjayBpbnB1dCBwYXJh bWV0ZXJzICovDQo+ID4+PiAgICAJaWYgKCFydGVfZXRoX2Rldl9pc192YWxpZF9wb3J0KHBvcnRf aWQpIHx8IGZuID09IE5VTEwgfHwNCj4gPj4+ICAgIAkJICAgIHF1ZXVlX2lkID49IHJ0ZV9ldGhf ZGV2aWNlc1twb3J0X2lkXS5kYXRhLT5uYl90eF9xdWV1ZXMpIHsNCj4gPj4+IEBAIC00MDkxLDYg KzQyNzMsMTIgQEAgaW50IHJ0ZV9ldGhfc2V0X3F1ZXVlX3JhdGVfbGltaXQodWludDE2X3QNCj4g Pj4gcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWR4LA0KPiA+Pj4gICAgCQlyZXR1cm4gTlVMTDsN Cj4gPj4+ICAgIAl9DQo+ID4+Pg0KPiA+Pj4gKwlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRf aWRdOw0KPiA+Pj4gKwlpZiAocnRlX2V0aF9kZXZfaXNfdHhfaGFpcnBpbl9xdWV1ZShkZXYsIHF1 ZXVlX2lkKSkgew0KPiA+Pj4gKwkJcnRlX2Vycm5vID0gRUlOVkFMOw0KPiA+Pj4gKwkJcmV0dXJu IE5VTEw7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ICAgIAlzdHJ1Y3QgcnRlX2V0aF9yeHR4 X2NhbGxiYWNrICpjYiA9IHJ0ZV96bWFsbG9jKE5VTEwsIHNpemVvZigqY2IpLCAwKTsNCj4gPj4+ DQo+ID4+PiAgICAJaWYgKGNiID09IE5VTEwpIHsNCj4gPj4+IEBAIC00MjA0LDYgKzQzOTIsMTMg QEAgaW50IHJ0ZV9ldGhfc2V0X3F1ZXVlX3JhdGVfbGltaXQodWludDE2X3QNCj4gPj4gcG9ydF9p ZCwgdWludDE2X3QgcXVldWVfaWR4LA0KPiA+Pj4gICAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4+ ICAgIAl9DQo+ID4+Pg0KPiA+Pj4gKwlpZiAocnRlX2V0aF9kZXZfaXNfcnhfaGFpcnBpbl9xdWV1 ZShkZXYsIHF1ZXVlX2lkKSkgew0KPiA+Pj4gKwkJUlRFX0VUSERFVl9MT0coSU5GTywNCj4gPj4+ ICsJCQkiQ2FuJ3QgZ2V0IHF1ZXVlIGluZm8gZm9yIFJ4IHF1ZXVlICUiUFJJdTE2IiBvZiBkZXZp Y2UNCj4gPj4gd2l0aCBwb3J0X2lkPSUiUFJJdTE2IiBpcyBoYWlycGluIHF1ZXVlXG4iLA0KPiA+ Pg0KPiA+PiAicXVldWUiIGlzIHJlcGVhdGVkIDMgdGltZXMgYWJvdmUgOykgSSdtIGFmcmFpZCBp dCBpcyB0b28gbXVjaCwgbWF5IGJlOg0KPiA+PiAiQ2FuJ3QgZ2V0IGhhaXJwaW4gUnggcXVldWUg JSIgUFJJdTE2ICIgcG9ydCAlIiBQUkl1MTYgIiBpbmZvXG4iDQo+ID4+IG9yDQo+ID4+ICJDYW4n dCBnZXQgaGFpcnBpbiBSeCBxdWV1ZSAlIiBQUkl1MTYgIiBpbmZvIG9mIGRldmljZSB3aXRoIHBv cnRfaWQ9JSINCj4gPj4gUFJJdTE2ICJcbiINCj4gPj4gQW55d2F5IHVwIHRvIHlvdS4NCj4gPj4N Cj4gPiBPLksuICBJIHdpbGwgdXBkYXRlLg0KPiA+DQo+ID4+PiArCQkJcXVldWVfaWQsIHBvcnRf aWQpOw0KPiA+Pj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiArCX0NCj4gPj4+ICsNCj4gPj4+ ICAgIAlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5yeHFfaW5mb19nZXQs IC0NCj4gPj4gRU5PVFNVUCk7DQo+ID4+PiAgICAJbWVtc2V0KHFpbmZvLCAwLCBzaXplb2YoKnFp bmZvKSk7DQo+ID4+PiBAQCAtNDIyOCw2ICs0NDIzLDEzIEBAIGludCBydGVfZXRoX3NldF9xdWV1 ZV9yYXRlX2xpbWl0KHVpbnQxNl90DQo+ID4+IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlX2lkeCwN Cj4gPj4+ICAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+PiAgICAJfQ0KPiA+Pj4NCj4gPj4+ICsJ aWYgKHJ0ZV9ldGhfZGV2X2lzX3R4X2hhaXJwaW5fcXVldWUoZGV2LCBxdWV1ZV9pZCkpIHsNCj4g Pj4+ICsJCVJURV9FVEhERVZfTE9HKElORk8sDQo+ID4+PiArCQkJIkNhbid0IGdldCBxdWV1ZSBp bmZvIGZvciBUeCBxdWV1ZSAlIlBSSXUxNiIgb2YgZGV2aWNlDQo+ID4+IHdpdGggcG9ydF9pZD0l IlBSSXUxNiIgaXMgaGFpcnBpbiBxdWV1ZVxuIiwNCj4gPj4NCj4gPj4gU2FtZQ0KPiA+Pg0KPiA+ IFNhbWUuDQo+ID4NCj4gPj4+ICsJCQlxdWV1ZV9pZCwgcG9ydF9pZCk7DQo+ID4+PiArCQlyZXR1 cm4gLUVJTlZBTDsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0KPiA+Pj4gICAgCVJURV9GVU5DX1BUUl9P Ul9FUlJfUkVUKCpkZXYtPmRldl9vcHMtPnR4cV9pbmZvX2dldCwgLQ0KPiA+PiBFTk9UU1VQKTsN Cj4gPj4+ICAgIAltZW1zZXQocWluZm8sIDAsIHNpemVvZigqcWluZm8pKTsNCj4gPj4+IEBAIC00 NjAwLDYgKzQ4MDIsMjEgQEAgaW50IHJ0ZV9ldGhfc2V0X3F1ZXVlX3JhdGVfbGltaXQodWludDE2 X3QNCj4gPj4gcG9ydF9pZCwgdWludDE2X3QgcXVldWVfaWR4LA0KPiA+Pj4gICAgfQ0KPiA+Pj4N Cj4gPj4+ICAgIGludA0KPiA+Pj4gK3J0ZV9ldGhfZGV2X2hhaXJwaW5fY2FwYWJpbGl0eV9nZXQo dWludDE2X3QgcG9ydF9pZCwNCj4gPj4+ICsJCQkJICAgc3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9j YXAgKmNhcCkNCj4gPj4+ICt7DQo+ID4+PiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0KPiA+ Pj4gKw0KPiA+Pj4gKwlSVEVfRVRIX1ZBTElEX1BPUlRJRF9PUl9FUlJfUkVUKHBvcnRfaWQsIC1F SU5WQUwpOw0KPiA+Pj4gKw0KPiA+Pj4gKwlkZXYgPSAmcnRlX2V0aF9kZXZpY2VzW3BvcnRfaWRd Ow0KPiA+Pj4gKwlSVEVfRlVOQ19QVFJfT1JfRVJSX1JFVCgqZGV2LT5kZXZfb3BzLT5oYWlycGlu X2NhcF9nZXQsDQo+ID4+PiArCQkJCS1FTk9UU1VQKTsNCj4gPj4gUGxlYXNlLCBtb3ZlIC1FTk9U U1VQIHRvIHRoZSBwcmV2aW91cyBsaW5lIHNpbmNlIGxpbmUgbGVuZ3RoIGlzIHN1ZmZpY2llbnQN Cj4gPj4gYW5kIG1ha2UgaXQgc2ltaWxhciB0byBwb3J0X2lkIGNoZWNrIGFib3ZlLg0KPiA+Pg0K PiA+IExhc3QgdGltZSBJIGNoZWNrIGl0IGRpZG4ndCBoYXZlIHJvb20sIEkgd2lsbCBjaGVjayBh Z2Fpbi4NCj4gPg0KPiA+Pj4gKwltZW1zZXQoY2FwLCAwLCBzaXplb2YoKmNhcCkpOw0KPiA+Pj4g KwlyZXR1cm4gZXRoX2Vycihwb3J0X2lkLCAoKmRldi0+ZGV2X29wcy0+aGFpcnBpbl9jYXBfZ2V0 KShkZXYsIGNhcCkpOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICtpbnQNCj4gPj4+ICAgIHJ0 ZV9ldGhfZGV2X3Bvb2xfb3BzX3N1cHBvcnRlZCh1aW50MTZfdCBwb3J0X2lkLCBjb25zdCBjaGFy ICpwb29sKQ0KPiA+Pj4gICAgew0KPiA+Pj4gICAgCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2Ow0K PiA+Pj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaCBiL2xpYi9s aWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+Pj4gaW5kZXggOWUxZjlhZS4uOWI2OTI1NSAx MDA2NDQNCj4gPj4+IC0tLSBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+Pj4g KysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5oDQo+ID4+PiBAQCAtODM5LDYgKzgz OSw0NiBAQCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgew0KPiA+Pj4gICAgfTsNCj4gPj4+DQo+ID4+ PiAgICAvKioNCj4gPj4+ICsgKiBAd2FybmluZw0KPiA+Pj4gKyAqIEBiIEVYUEVSSU1FTlRBTDog dGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiA+PiBu b3RpY2UNCj4gPj4+ICsgKg0KPiA+Pj4gKyAqIEEgc3RydWN0dXJlIHVzZWQgdG8gcmV0dXJuIHRo ZSBoYWlycGluIGNhcGFiaWxpdGllcyB0aGF0IGFyZSBzdXBwb3J0ZWQuDQo+ID4+PiArICovDQo+ ID4+PiArc3RydWN0IHJ0ZV9ldGhfaGFpcnBpbl9jYXAgew0KPiA+Pj4gKwkvKiogVGhlIG1heCBu dW1iZXIgb2YgaGFpcnBpbiBxdWV1ZXMgKGRpZmZlcmVudCBiaW5kaW5ncykuICovDQo+ID4+PiAr CXVpbnQxNl90IG1heF9uYl9xdWV1ZXM7DQo+ID4+PiArCS8qKjwgTWF4IG51bWJlciBvZiBSeCBx dWV1ZXMgdG8gYmUgY29ubmVjdGVkIHRvIG9uZSBUeCBxdWV1ZS4gKi8NCj4gPj4gU2hvdWxkIGJl IC8qKg0KPiA+Pg0KPiA+IFdpbGwgZml4Lg0KPiA+DQo+ID4+PiArCXVpbnQxNl90IG1heF9yeF8y X3R4Ow0KPiA+Pj4gKwkvKio8IE1heCBudW1iZXIgb2YgVHggcXVldWVzIHRvIGJlIGNvbm5lY3Rl ZCB0byBvbmUgUnggcXVldWUuICovDQo+ID4+IFNob3VsZCBiZSAvKioNCj4gPj4NCj4gPiBXaWxs IGZpeC4NCj4gPg0KPiA+PiBbc25pcF0NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBPcmkNCg0KVGhh bmtzLA0KT3JpDQo=