From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0070.outbound.protection.outlook.com [104.47.2.70]) by dpdk.org (Postfix) with ESMTP id B66AE7CBD for ; Thu, 7 Dec 2017 08:55:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bcqEXPSKskKbhC5GcKdDEr/4qm97nCHha56OHMjqZNc=; b=vM6BJdnxhLKFKuHYNuAcpDQOvgA1E4BiR+E2Z1BvVYBKiRAFVBHrihDu6jnl3rmbj6be8sr1qb+I+jUHX165rcblTFnKaCRPahspeRApkBZwM2IZy8DR9CpbyJ+be3olaA4Ama6IL56hbZkKV8G5h7wZSupQ9JtsiRmqyvoIFvM= Received: from VI1PR05MB3149.eurprd05.prod.outlook.com (10.170.237.142) by VI1PR05MB3151.eurprd05.prod.outlook.com (10.170.237.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 7 Dec 2017 07:55:39 +0000 Received: from VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::3905:ed70:f744:9dc6]) by VI1PR05MB3149.eurprd05.prod.outlook.com ([fe80::3905:ed70:f744:9dc6%13]) with mapi id 15.20.0260.008; Thu, 7 Dec 2017 07:55:39 +0000 From: Shahaf Shuler To: Ferruh Yigit , "jingjing.wu@intel.com" CC: "dev@dpdk.org" , "Ananyev, Konstantin" Thread-Topic: [dpdk-dev] [PATCH 1/5] app/testpmd: convert to new Ethdev offloads API Thread-Index: AQHTbU+Uubi5gepl1kSobjDEzi5HFKM0Q/FAgAKsoICAAIyD0A== Date: Thu, 7 Dec 2017 07:55:39 +0000 Message-ID: References: <20171123120804.143897-1-shahafs@mellanox.com> <20171123120804.143897-2-shahafs@mellanox.com> <1be9e697-8e23-2212-ddf1-e04336435f87@intel.com> In-Reply-To: <1be9e697-8e23-2212-ddf1-e04336435f87@intel.com> 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=shahafs@mellanox.com; x-originating-ip: [31.154.10.107] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3151; 6:cmEuMVIeVE1eHiwlcp8rw6j8Uov35dqPY9fS4IhlS3X9VT5AU/D1MC6G9ZRPvlr37ETq/iVLSphJefw8xKtEi7MQpSZ5iUw9SurjPH0ljCHGcMC+Y683ZpT/IUoee42Tyc52y9eLDx6zFLGwytw7CZwkUv1gBoCqiPCaB9E3R8MCP9muhL7lbrF7UPPbN6Thc0goehLdKDgEK9SGwEDUVIRLVb/GUrfzSJ38MCQXKaPM2KLvsSgeIGhQ4HXhlzeoBybaPLVGzi7qmxfnLJJJUCMWhd6PrAQKltfgjJg2NDFA/yWEZq31TETEc4z9Mfa5dfU1c2wSEAsH7ohS4TK8MpM3/e9yDZhlLF8DC3us6Bw=; 5:9WWO2IspPl/PXsLSR007rQp8mc6WQaabPT/+X6+hr0t/89LbU25oV+5G55UcKLiagHbiesMkTMEYB1YD9hbctrzvOLEAlFwfkLS5LLr7NKg97xypq+/c/BlCGI8B30bwR+qsUDzgH3eJTHNv7rNUj7aCIBsmDnrl3agoEY7sxXY=; 24:VqTjKObXaR/mzegiEsep889TFGpjYY2I3ASfMzL9aQ/EdKeuW48e+n292kCAXs/h6+X2YYI2jwr7Kq2KVpbtu03jrBUoQ0QeOcENmGUmQ0Y=; 7:3sdoV8B/DfHn3Qr3Tw1XjaPoRj2ejz4Tk2dOg9H7EoO57i8hSt6OLNNO9gceDnlytaG5s3FUavMBnhv8yVSlSQvf9KN29Q+ds4d0ysmFPCBBJz6O/AEiOeVZ6MxzW4+iSzeqKyr2m5b6oc2SjTi+s3TS7H5OM5vx5mtlHrGaNMe5aoxBiVIcfgbDqkcEpYlquB31P7Aml6pzG75REfb2kjsW8DZa1Rkab6rCUlu241ZknXbzkwNA4U22qgdoloo1 x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: c469dc12-0871-4a5b-6d0f-08d53d47e891 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603286); SRVR:VI1PR05MB3151; x-ms-traffictypediagnostic: VI1PR05MB3151: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231022)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123564025)(20161123562025)(20161123558100)(201703131423075)(201703011903075)(201702281528075)(201703061421075)(6072148)(201708071742011); SRVR:VI1PR05MB3151; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR05MB3151; x-forefront-prvs: 05143A8241 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(7966004)(346002)(39860400002)(366004)(376002)(24454002)(199004)(189003)(76104003)(76176011)(2906002)(4326008)(2501003)(5250100002)(6436002)(7696005)(106356001)(99286004)(9686003)(53946003)(53936002)(6246003)(316002)(55016002)(86362001)(2900100001)(25786009)(105586002)(2950100002)(14454004)(81156014)(5660300001)(54906003)(66066001)(8936002)(74316002)(6116002)(3846002)(8676002)(110136005)(93886005)(508600001)(102836003)(101416001)(7736002)(97736004)(6506006)(3660700001)(229853002)(53546010)(33656002)(3280700002)(68736007)(81166006)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3151; H:VI1PR05MB3149.eurprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM 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: c469dc12-0871-4a5b-6d0f-08d53d47e891 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2017 07:55:39.5829 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3151 Subject: Re: [dpdk-dev] [PATCH 1/5] app/testpmd: convert to new Ethdev offloads API 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: Thu, 07 Dec 2017 07:55:42 -0000 VGh1cnNkYXksIERlY2VtYmVyIDcsIDIwMTcgMTI6NTggQU0sIEZlcnJ1aCBZaWdpdDoNCj4gT24g MTIvNC8yMDE3IDEwOjM5IFBNLCBTaGFoYWYgU2h1bGVyIHdyb3RlOg0KPiA+IFR1ZXNkYXksIERl Y2VtYmVyIDUsIDIwMTcgMTI6MzEgQU0sIEZlcnJ1aCBZaWdpdDoNCj4gPj4gT24gMTEvMjMvMjAx NyA0OjA4IEFNLCBTaGFoYWYgU2h1bGVyIHdyb3RlOg0KPiA+Pj4gRXRoZGV2IFJ4L1R4IG9mZmxv YWRzIEFQSSBoYXMgY2hhbmdlZCBzaW5jZToNCj4gPj4+DQo+ID4+PiBjb21taXQgY2UxN2VkZGVm YzIwICgiZXRoZGV2OiBpbnRyb2R1Y2UgUnggcXVldWUgb2ZmbG9hZHMgQVBJIikNCj4gPj4+IGNv bW1pdCBjYmE3ZjUzYjcxN2QgKCJldGhkZXY6IGludHJvZHVjZSBUeCBxdWV1ZSBvZmZsb2FkcyBB UEkiKQ0KPiA+Pj4NCj4gPj4+IENvbnZlcnQgdGhlIGFwcGxpY2F0aW9uIHRvIHVzZSB0aGUgbmV3 IEFQSS4NCj4gPj4NCj4gPj4gSGkgU2hhaGFmLA0KPiA+Pg0KPiA+PiBBcyBmYXIgYXMgSSBjYW4g c2VlIHBhdGNoIGRvZXMgYSBmZXcgdGhpbmdzOg0KPiA+PiAxLSBDb252ZXJ0IHJ4bW9kZSBiaXRm aWVsZHMgdXNhZ2UgdG8gcnhtb2RlIG9mZmxvYWRzIHVzYWdlLg0KPiA+PiAyLSBBcHBseSBzb21l IGNvbmZpZyBvcHRpb25zIHRvIHBvcnQgY29uZmlnIGFuZCBhZGQgc29tZSBwb3J0IGNvbmZpZw0K PiBjaGVja3MuDQo+ID4+IDMtIEFkZGluZyBkZXZpY2UgYWR2ZXJ0aXNlZCBjYXBhYmlsaXR5IGNo ZWNrcyBmb3Igc29tZSBvZmZsb2Fkcy4NCj4gPj4NCj4gPj4gV291bGQgeW91IG1pbmQgc2VwYXJh dGUgMiBhbmQgMyB0byB0aGVpciBvd24gcGF0Y2hlcywgd2l0aCB0aGF0IDENCj4gPj4gc2hvdWxk IGJlIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgMiAmIDMgd2lsbCBiZSBlYXN5IHRvIHJldmlldy4NCj4g Pg0KPiA+IFNlZSBiZWxvdyBjb21tZW50cy4gIzIgb24geW91ciBsaXN0IGlzIGFjdHVhbGx5IG5l ZWRlZCBmb3IgdGhlIGNvbnZlcnNpb24NCj4gcGF0Y2guDQo+IA0KPiBQbGVhc2Ugc2VlIGJlbG93 IGNvbW1lbnQgWzFdIGZvciBpdC4NCj4gDQo+ID4gSSBjYW4gc3BsaXQgdGhlIGV4dHJhIGNhcCBj aGVjayBpZiB5b3UgZmlsbCBpdCBuZWVkcyB0byBiZSBpbiBhIHNlcGFyYXRlIHBhdGNoLg0KPiAN Cj4gSSBmaW5kIGl0IGhhcmQgdG8gcmV2aWV3IHRoaXMgcGF0Y2gsIHNwbGl0dGluZyBpcyB0byBt YWtlIGVhc2llciB0byB1bmRlcnN0YW5kIHRoZQ0KPiBjaGFuZ2VzLCB0aGVyZSBpcyBubyBleHRy YSBuZWVkLg0KDQpPSyB3aWxsIGhhdmUgdGhlbSBzcGxpdHRlZCBvbiB2Mi4gIA0KDQo+IA0KPiA+ DQo+ID4+DQo+ID4+DQo+ID4+IEFuZCBpcyB0aGlzIHVwZGF0ZSB0ZXN0ZWQgd2l0aCBQTURzIGJv dGggc3VwcG9ydCBuZXcgb2ZmbG9hZCBtZXRob2QNCj4gPj4gYW5kIG9sZCBvZmZsb2FkIG1ldGhv ZD8NCj4gPg0KPiA+IEl0IHdhcyB0ZXN0ZWQgd2l0aCBtbHg1IGFuZCBtbHg0IFBNRCBhZnRlciB0 aGUgY29udmVyc2lvbiB0byB0aGUgbmV3DQo+IEFQSXMuDQo+ID4gSSBwdXQgdGhpcyBzZXJpZXMg ZWFybHkgc28gZXZlcnlvbmUgY2FuIHRyeSwgdGVzdCBhbmQgcmVwb3J0IGlmIHNvbWV0aGluZyBp cw0KPiBicm9rZW4uDQo+ID4gSSB3aWxsIHRyeSB0byBkbyBtb3JlIHRlc3Rpbmcgd2l0aCB0aGUg b2xkIG1seCBQTUQuDQo+ID4NCj4gPiBCVFcgLSB3ZSBhZ3JlZWQgdGhhdCB3ZSBzZXQgREQgZm9y IGFsbCBQTURzIHRvIG1vdmUgdG8gdGhlIG5ldyBBUEkgYnkNCj4gPiAxOC4wMi4gSSBzdGlsbCBo YXZlbid0IHNlZSBwYXRjaGVzIGZvciB0aGF0IGZyb20gdGhlIHJlc3QuPg0KPiA+Pg0KPiA+PiBU aGFua3MsDQo+ID4+IGZlcnJ1aA0KPiA+Pg0KPiA+Pj4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFNo YWhhZiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+ Pg0KPiA+Pj4gIAl9IGVsc2UgaWYgKCFzdHJjbXAocmVzLT5uYW1lLCAiaHctdmxhbi1leHRlbmQi KSkgew0KPiA+Pj4gIAkJaWYgKCFzdHJjbXAocmVzLT52YWx1ZSwgIm9uIikpDQo+ID4+PiAtCQkJ cnhfbW9kZS5od192bGFuX2V4dGVuZCA9IDE7DQo+ID4+PiArCQkJcnhfb2ZmbG9hZHMgfD0gREVW X1JYX09GRkxPQURfVkxBTl9FWFRFTkQ7DQo+ID4+DQo+ID4+IE5vdCByZWxhdGVkIHRvIHRoaXMg cGF0Y2gsIGJ1dCBzaW5jZSB5b3UgYXJlIHRvdWNoaW5nIHRoZXNlLCB3aGF0IGlzDQo+ID4+IHRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gREVWX1JYX09GRkxPQURfVkxBTl9FWFRFTkQgYW5kDQo+ID4+ IERFVl9SWF9PRkZMT0FEX1FJTlFfU1RSSVAgPw0KPiA+DQo+ID4gR29vZCBxdWVzdGlvbiwgSSBj b3VsZCBub3QgZmlndXJlIGl0IG91dCBlaXRoZXIuDQo+ID4gSSBndWVzcyB0aG9zZSBhcmUgaWRl bnRpY2FsLiBJbiB0aGUgb2xkIEFQSSB0aGUgaHdfdmxhbl9leHRlbmQgd2FzIHRoZQ0KPiBvZmZs b2FkIGFuZCB0aGUgREVWX1JYX09GRkxPQURfUUlOUV9TVFJJUCB3YXMgdGhlIGNhcC4NCj4gPiBO b3cgdGhhdCB3ZSBtZXJnZWQgdGhlbSB3ZSBoYXZlIGR1cGxpY2F0aW9uLg0KPiA+DQo+ID4gRnJv bSBvbmUgc2lkZSwgdXNpbmcgREVWX1JYX09GRkxPQURfVkxBTl9FWFRFTkQgaXMgbW9yZSBpbnR1 aXRpdmUNCj4gZm9yDQo+ID4gYXBwbGljYXRpb24gd2hpY2ggcHJldmlvdXNseSB1c2VkIGh3X3Zs YW5fZXh0ZW5kIHRvIHNldCB0aGUgb2ZmbG9hZCwgRm9yDQo+IHRoZSBvdGhlciBzaWRlIFFJTlFf U1RSSVAgaXMgbW9yZSBleHBsaWNpdCB3aXRoIHJlc3BlY3QgdG8gd2hhdCB0aGUgZmVhdHVyZQ0K PiBkb2VzLCBhbmQgaXQgaXMgdGhlIGZsYWcgd2hpY2ggaXMgY3VycmVudGx5IGJlaW5nIHVzZWQg Zm9yIFBNRHMuDQo+ID4NCj4gPiBTbyB3aGVuIHdlIHdpbGwgY2hhbmdlIGl0LCBJIGd1ZXNzIEkg YW0gaW4gZmF2b3Igb2YgdGhlIFFJTlEgZmxhZy4NCj4gDQo+ICsxIHRvIFFJTlEuDQo+IA0KPiA+ DQo+ID4+DQo+ID4+PiBAQCAtMzQzNCw3ICszNDM5LDE0IEBAIGNtZF90eF92bGFuX3NldF9wYXJz ZWQodm9pZA0KPiAqcGFyc2VkX3Jlc3VsdCwNCj4gPj4gew0KPiA+Pj4gIAlzdHJ1Y3QgY21kX3R4 X3ZsYW5fc2V0X3Jlc3VsdCAqcmVzID0gcGFyc2VkX3Jlc3VsdDsNCj4gPj4+DQo+ID4+PiArCWlm ICghYWxsX3BvcnRzX3N0b3BwZWQoKSkgew0KPiA+Pj4gKwkJcHJpbnRmKCJQbGVhc2Ugc3RvcCBh bGwgcG9ydHMgZmlyc3RcbiIpOw0KPiA+Pj4gKwkJcmV0dXJuOw0KPiA+Pj4gKwl9DQo+ID4+DQo+ ID4+IHJ0ZV9ldGhfcnhtb2RlIGJpdGZpZWxkcyB0byAib2ZmbG9hZHMiIGNvbnZlcnNpb24gaXMg bW9zdGx5DQo+ID4+IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGlzIGFib3ZlIGtpbmQgb2YgbW9kaWZp Y2F0aW9ucyBwYXJ0IG9mIHRoaXMNCj4gPj4gY29udmVyc2lvbiBvciBhcmUgeW91IGFkZGluZyBt aXNzaW5nIGNoZWNrcz8NCj4gPg0KPiA+IEl0IGlzIHBhcnQgb2YgdGhlIGNvbnZlcnNpb24gYW5k IHRoaXMgaXMgcmVsYXRlZCB0byB0ZXN0cG1kIGRlc2lnbi4NCj4gPg0KPiA+IFByZXZpb3VzbHkg aW4gdGhlIG9sZCBBUEkgdGhlIHR4IG9mZmxvYWRzIHdlcmUgc2V0IGV2ZW4gYWZ0ZXIgdGhlIHBv cnQgaXMNCj4gc3RhcnRlZC4gRm9yIHRoaXMgc3BlY2lmaWMgZXhhbXBsZSB0aGUgdmxhbiBpbnNl cnQganVzdCBjaGFuZ2VkIGEgZmxhZw0KPiAoVEVTVFBNRF9UWF9PRkZMT0FEX0lOU0VSVF9WTEFO KSBvbiB0aGUgYXBwbGljYXRpb24gcG9ydCBzdHJ1Y3QgdG8gdXNlDQo+IFBLVF9UWF9WTEFOX1BL VCBpbiB0aGUgbWJ1ZiBvbF9mbGFncy4gVGhlIGFwcGxpY2F0aW9uIGRpZG4ndCB1cGRhdGUgdGhl DQo+IFBNRCBpbiBhbnl3YXkuIEluIGZhY3QsIGl0IHdhcyBwb3NzaWJsZSB0byBwdXQgdHhxX2Zs YWcgd2hpY2ggc2F5cyBubyB2bGFuDQo+IGluc2VydGlvbiBhbmQgdGhlbiB0byBzZXQgdmxhbiBp bnNlcnRpb24gdGhyb3VnaCB0aGUgQ0xJLg0KPiANCj4gQXMgeW91IHNhaWQsIHNvIEkgYW0gYSBs aXR0bGUgY29uY2VybmVkIGlmIG1pc3Npbmcgc29tZXRoaW5nLCBiZWNhdXNlDQo+IG90aGVyd2lz ZSBob3cgdGhpcyB3YXMgd29ya2luZyBwcmV2aW91c2x5Pw0KDQpBZ2FpbiAtIGJlY2F1c2UgYWxs IG9mIHRoZSB0eCBvZmZsb2FkIHdoZXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gVGhpcyBtZWFucyB0 aGF0IHRoZSBQTURzIHdoaWNoIHN1cHBvcnRzIHRob3NlIG9mZmxvYWQgd2VyZSB1c2luZyB0aGUg dHgvcnhfYnVyc3QgZnVuY3Rpb25zIHdoaWNoIGluY2x1ZGVzIHRoZSBmdW5jdGlvbmFsbHkgKHVu bGVzcyB0aGUgYXBwbGljYXRpb24gZGlzYWJsZSB0aG9zZSBvZmZsb2FkcyB1c2luZyB0eHFfZmxh Z3MpLiBUaGVyZSB3YXMgbm8gbmVlZCB0byBmdXRoZXIgdXBkYXRlIHRoZSBQTUQgb24gdGhlIFR4 IG9mZmxvYWRzIGJlaW5nIHVzZWQuIA0KDQpBcyBmb3IgdGhlIGNvbmZsaWN0cyBiZXR3ZWVuIENM SSBjb21tYW5kcyBhbmQgdHhxIGZsYWdzIC0gc21hbGwgYnVnIGluIFBNRCB3aGljaCB3YXNuJ3Qg ZGlzY292ZXJlZCBwcm9iYWJseSBiZWNhdXNlIG5vIG9uZSBkaWQgc29tZSBzdHJhbmdlIGNvbmZp Z3VyYXRpb24uIA0KDQo+IA0KPiA+IFRoaXMgd2FzIE9LIGJhY2sgdGhlbiBiZWNhdXNlIGFsbCBv ZiB0aGUgVHggb2ZmbG9hZHMgd2VyZSBzZXQgYnkgZGVmYXVsdA0KPiBhbmQgd2UgYXNzdW1lZCB1 c2VycyBrbm93IHdoYXQgdGhleSBhcmUgZG9pbmcgd2hlbiBzZXR0aW5nIHRoZQ0KPiB0eHFfZmxh Z3MuDQo+ID4NCj4gPiBOb3cgYWxsIHRoZSB0eCBvZmZsb2FkcyBhcmUgZGlzYWJsZWQgYnkgZGVm YXVsdC4gRXZlcnkgVHggb2ZmbG9hZCBiZWluZyB1c2VkDQo+IHNob3VsZCB1cGRhdGUgdGhlIFBN RCAoYXMgaXQgbWF5IG5lZWQgdG8gc3dpdGNoIHR4IGJ1cnN0IGZ1bmN0aW9uKS4gVGhpcyBpcw0K PiB3aHkgdGhlIFR4IG9mZmxvYWRzIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBkb25lIHdoZW4gdGhl IHBvcnQgaXMgc3RvcHBlZCwNCj4gYW5kIGJlIGZvbGxvd2VkIHdpdGggcmVjb25maWd1cmF0aW9u IG9mIHRoZSBkZXZpY2UgYW5kIHRoZSBxdWV1ZXMuDQo+IA0KPiBbMV0NCj4gTm90IGFncmVlIG9u IHRoaXMgcGFydC4gSW5kZWVkIHlvdSBhcmUgZml4aW5nIGEgYmVoYXZpb3Igb2YgdGhlIHRlc3Rw bWQsIG5vdA0KPiBqdXN0IGNvbnZlcnRpbmcgdG8gbmV3IG1ldGhvZC4gVGVjaG5pY2FsbHkgeW91 IGNhbiBwcm92aWRlIHNhbWUgb2xkIGNvbmZpZw0KPiB3aXRoIG5ldyBmbGFncywgbGlrZSBlbmFi bGUgYWxsIHR4IG9mZmxvYWRzLCBzbyBiZWhhdmlvciBzaG91bGQgYmUgc2FtZS4NCj4gDQo+IExh dGVyIGNhbiBmaXggdGVzdHBtZCBpbiBhbm90aGVyIHBhdGNoLCB0aGlzIGdpdmVzIGEgYmV0dGVy IHNlcGFyYXRpb24uDQo+IA0KPiBBbmQgZm9yIGV4YW1wbGUgSSByZW1lbWJlciBLb25zdGF0aW4g bWVudGlvbmVkIHNvbWUgSW50ZWwgTklDcyBjYW4NCj4gYWNjZXB0IHZsYW4gcmVsYXRlZCBjb25m aWd1cmF0aW9uIHVwZGF0ZXMgd2l0aG91dCBzdG9wcGluZyB0aGUgZm9yd2FyZGluZywNCj4gd2Ug Y2FuIGRpc2N1c3MgdGhlc2Uga2luZCBvZiB0aGluZ3MgaW4gdGhpcyBmaXggcGF0Y2guDQoNClRo ZSBvbiB0aGUgZmxpZ2h0IFZMQU4gY29uZmlndXJhdGlvbiB3YXMgY29udmVydGVkIGFzIHdlbGwg YW5kIHN1cHBvcnRlZC4gSSB3aWxsIG1ha2UgaXQgbW9yZSBleHBsaWNpdCBvbiB2MiB3aXRoIGEg c2VwYXJhdGUgcGF0Y2guIA0KDQo+IA0KPiBKdXN0IHN1Z2dlc3RpbmcgcmVtb3Zpbmcgc3RyYWln aHRmb3J3YXJkIGJpdGZpZWxkIHRvIG9mZmxvYWRzIGJpdHdpc2UgY2hhbmdlcw0KPiBvdXQgb2Yg d2F5LCBhbmQgZm9jdXMgb24gd2hhdCBsb2dpYyBpcyBjaGFuZ2luZy4NCj4gDQo+ID4NCj4gPj4N Cj4gPj4gSSB3b3VsZCBwcmVmZXIgbWFraW5nIG9ubHkgY29udmVyc2lvbiByZWxhdGVkIGNoYW5n ZXMgaW4gdGhpcyBwYXRjaCwNCj4gPj4gYW5kIGV4dHJhIGltcHJvdmVtZW50cyBpbiBvdGhlciBw YXRjaC4NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICAJdHhfdmxhbl9zZXQocmVzLT5wb3J0X2lkLCBy ZXMtPnZsYW5faWQpOw0KPiA+Pj4gKw0KPiA+Pj4gKwljbWRfcmVjb25maWdfZGV2aWNlX3F1ZXVl KFJURV9QT1JUX0FMTCwgMSwgMSk7DQo+ID4+DQo+ID4+IElzIHRoaXMgcmVxdWlyZWQgZm9yIGNv bnZlcnRpbmcgYml0ZmllbGQgdG8gb2ZmbG9hZHMgdXNhZ2U/DQo+ID4NCj4gPiBZZXMsIHNlZSBh Ym92ZS4NCj4gDQo+IGJ0dywgd2h5IFJURV9QT1JUX0FMTCwganVzdCBwcm92aWRpbmcgYSBwb3J0 X2lkIGFsc28gc2hvdWxkIGJlIE9LLg0KDQpZZWFoLCAgSSB3aWxsIHN3aXRjaCB0byBwb3J0X2lk LiANCj4gDQo+ID4NCj4gPj4NCj4gPj4+ICB9DQo+ID4+Pg0KPiA+Pj4gIGNtZGxpbmVfcGFyc2Vf dG9rZW5fc3RyaW5nX3QgY21kX3R4X3ZsYW5fc2V0X3R4X3ZsYW4gPSBAQCAtMzQ4MSw3DQo+ID4+ PiArMzQ5MywxNCBAQCBjbWRfdHhfdmxhbl9zZXRfcWlucV9wYXJzZWQodm9pZCAqcGFyc2VkX3Jl c3VsdCwgIHsNCj4gPj4+ICAJc3RydWN0IGNtZF90eF92bGFuX3NldF9xaW5xX3Jlc3VsdCAqcmVz ID0gcGFyc2VkX3Jlc3VsdDsNCj4gPj4+DQo+ID4+PiArCWlmICghYWxsX3BvcnRzX3N0b3BwZWQo KSkgew0KPiA+Pj4gKwkJcHJpbnRmKCJQbGVhc2Ugc3RvcCBhbGwgcG9ydHMgZmlyc3RcbiIpOw0K PiA+Pj4gKwkJcmV0dXJuOw0KPiA+Pj4gKwl9DQo+ID4+DQo+ID4+IFNhbWUgZm9yIGFsbCBvY2N1 cnJlbmNlIG9mIHRoZXNlIHVwZGF0ZXMuDQo+ID4+DQo+ID4+IDwuLi4+DQo+ID4+DQo+ID4+PiBA QCAtMzY5MywyMiArMzcyNCwzNCBAQCBjbWRfY3N1bV9wYXJzZWQodm9pZCAqcGFyc2VkX3Jlc3Vs dCwNCj4gPj4+DQo+ID4+PiAgCQlpZiAoIXN0cmNtcChyZXMtPnByb3RvLCAiaXAiKSkgew0KPiA+ Pj4gIAkJCW1hc2sgPSBURVNUUE1EX1RYX09GRkxPQURfSVBfQ0tTVU07DQo+ID4+PiArCQkJY3N1 bV9vZmZsb2FkcyB8PSBERVZfVFhfT0ZGTE9BRF9JUFY0X0NLU1VNOw0KPiA+Pj4gIAkJfSBlbHNl IGlmICghc3RyY21wKHJlcy0+cHJvdG8sICJ1ZHAiKSkgew0KPiA+Pj4gIAkJCW1hc2sgPSBURVNU UE1EX1RYX09GRkxPQURfVURQX0NLU1VNOw0KPiA+Pj4gKwkJCWNzdW1fb2ZmbG9hZHMgfD0gREVW X1RYX09GRkxPQURfVURQX0NLU1VNOw0KPiA+Pj4gIAkJfSBlbHNlIGlmICghc3RyY21wKHJlcy0+ cHJvdG8sICJ0Y3AiKSkgew0KPiA+Pj4gIAkJCW1hc2sgPSBURVNUUE1EX1RYX09GRkxPQURfVENQ X0NLU1VNOw0KPiA+Pj4gKwkJCWNzdW1fb2ZmbG9hZHMgfD0gREVWX1RYX09GRkxPQURfVENQX0NL U1VNOw0KPiA+Pj4gIAkJfSBlbHNlIGlmICghc3RyY21wKHJlcy0+cHJvdG8sICJzY3RwIikpIHsN Cj4gPj4+ICAJCQltYXNrID0gVEVTVFBNRF9UWF9PRkZMT0FEX1NDVFBfQ0tTVU07DQo+ID4+PiAr CQkJY3N1bV9vZmZsb2FkcyB8PSBERVZfVFhfT0ZGTE9BRF9TQ1RQX0NLU1VNOw0KPiA+Pj4gIAkJ fSBlbHNlIGlmICghc3RyY21wKHJlcy0+cHJvdG8sICJvdXRlci1pcCIpKSB7DQo+ID4+PiAgCQkJ bWFzayA9IFRFU1RQTURfVFhfT0ZGTE9BRF9PVVRFUl9JUF9DS1NVTTsNCj4gPj4+ICsJCQljc3Vt X29mZmxvYWRzIHw9DQo+ID4+IERFVl9UWF9PRkZMT0FEX09VVEVSX0lQVjRfQ0tTVU07DQo+ID4+ PiAgCQl9DQo+ID4+Pg0KPiA+Pj4gLQkJaWYgKGh3KQ0KPiA+Pj4gKwkJaWYgKGh3KSB7DQo+ID4+ PiAgCQkJcG9ydHNbcmVzLT5wb3J0X2lkXS50eF9vbF9mbGFncyB8PSBtYXNrOw0KPiA+Pj4gLQkJ ZWxzZQ0KPiA+Pj4gKwkJCXBvcnRzW3Jlcy0+cG9ydF9pZF0uZGV2X2NvbmYudHhtb2RlLm9mZmxv YWRzIHw9DQo+ID4+PiArCQkJCQkJCWNzdW1fb2ZmbG9hZHM7DQo+ID4+DQo+ID4+IFNvIHlvdSBh cmUgdXBkYXRpbmcgcG9ydCBjb25maWcgYXMgd2VsbCBhcyB0ZXN0cG1kIGludGVybmFsDQo+ID4+ IGNvbmZpZ3VyYXRpb24sIGFnYWluIEkgZ3Vlc3MgdGhpcyBpcyBub3QgcmVsYXRlZCB0byBjb252 ZXJzaW9uIHRvIG9mZmxvYWRzDQo+IHVzYWdlLg0KPiA+DQo+ID4gSXQgaXMuIFNlZSBhYm92ZS4N Cj4gPiBUaGUgcG9ydCBjb25maWcgd2lsbCBiZSB1c2VkIGZvciB0aGUgcmVjb25maWd1cmF0aW9u IG9mIHRoZSBkZXZpY2UgYW5kDQo+IHF1ZXVlcy4gVGhpcyBpcyBhIG11c3QgZm9yIHRoZSBUeCBv ZmZsb2FkcyAuDQo+ID4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+IEBAIC0xMzAxNyw2 ICsxMzA5MywxMyBAQCBjbWRfc2V0X21hY3NlY19vZmZsb2FkX29uX3BhcnNlZCgNCj4gPj4+DQo+ ID4+PiAgCXN3aXRjaCAocmV0KSB7DQo+ID4+PiAgCWNhc2UgMDoNCj4gPj4+ICsJCXJ0ZV9ldGhf ZGV2X2luZm9fZ2V0KHBvcnRfaWQsICZkZXZfaW5mbyk7DQo+ID4+PiArCQlpZiAoKGRldl9pbmZv LnR4X29mZmxvYWRfY2FwYSAmDQo+ID4+PiArCQkgICAgIERFVl9UWF9PRkZMT0FEX01BQ1NFQ19J TlNFUlQpID09IDApIHsNCj4gPj4+ICsJCQlwcmludGYoIldhcm5pbmc6IG1hY3NlYyBpbnNlcnQg ZW5hYmxlZCBidXQgbm90ICINCj4gPj4+ICsJCQkJInN1cHBvcnRlZCBieSBwb3J0ICVkXG4iLCBw b3J0X2lkKTsNCj4gPj4+ICsJCX0NCj4gPj4NCj4gPj4gVGhpcyBhbHNvIGFkZGluZyBhbm90aGVy IGxheWVyIG9mIGNoZWNrIGlmIGRldmljZSBhZHZlcnRpc2UgcmVxdWVzdGVkDQo+ID4+IGNhcGFi aWxpdHksIHRoaXMgaXMgYW4gaW1wcm92ZW1lbnQgaW5kZXBlbmRlbnQgZnJvbSBjb252ZXJzaW9u LCBjYW4NCj4gPj4geW91IHBsZWFzZSBzZXBhcmF0ZSBpbnRvIGl0cyBvd24gcGF0Y2g/DQo+ID4N Cj4gPiBZZXMgd2UgY2FuIGRvIGl0Lg0KPiA+DQo+ID4+DQo+ID4+IDwuLi4+DQo+ID4+DQo+ID4+ PiBAQCAtNjA2LDggKzYxNiw4IEBAIHBvcnRfb2ZmbG9hZF9jYXBfZGlzcGxheShwb3J0aWRfdCBw b3J0X2lkKQ0KPiA+Pj4NCj4gPj4+ICAJaWYgKGRldl9pbmZvLnR4X29mZmxvYWRfY2FwYSAmIERF Vl9UWF9PRkZMT0FEX1ZMQU5fSU5TRVJUKSB7DQo+ID4+PiAgCQlwcmludGYoIlZMQU4gaW5zZXJ0 OiAgICAgICAgICAgICAgICAgICAiKTsNCj4gPj4+IC0JCWlmIChwb3J0c1twb3J0X2lkXS50eF9v bF9mbGFncyAmDQo+ID4+PiAtCQkgICAgVEVTVFBNRF9UWF9PRkZMT0FEX0lOU0VSVF9WTEFOKQ0K PiA+Pg0KPiA+PiBUaGlzIGlzIHJlbW92aW5nIHRlc3RwbWQgbG9jYWwgY29uZmlnIGNoZWNrLCBq dXN0IHRvIGRvdWJsZSBjaGVjayBpZg0KPiA+PiBhbGwgcGxhY2VzIHRoYXQgdXBkYXRlcyB0aGlz IGxvY2FsIGNvbmZpZyBjb3ZlcmVkIHRvIHVwZGF0ZSBkZXZpY2UgY29uZmlnDQo+IHZhcmlhYmxl Pw0KPiA+DQo+ID4gSSBob3BlIHNvLiBJZiB5b3UgZmluZCBzb21ldGhpbmcgSSBtaXNzZWQgbGV0 IG1lIGtub3cgOikuDQo+IA0KPiBJZiB5b3UgYXJlIG5vdCBzdXJlLCBhbmQgaWYgeW91IGFyZSBu b3QgcmVtb3ZpbmcgdHhfb2xfZmxhZ3MsIHdoYXQgaXMgdGhlDQo+IGJlbmVmaXQgb2YgcmVwbGFj aW5nPw0KPiANCj4gV2hvZXZlciBkb2VzIHRoZSB3b3JrIHJlbW92aW5nIHR4X29sX2ZsYWdzIGNh biBkbyByZXBsYWNpbmcsIHRoaXMgYWxzbw0KPiBlbnN1cmVzIGFsbCBpbnN0YW5jZXMgdXBkYXRl ZCwgbm8/DQoNCldpbGwgcHJvdmlkZSBhbm90aGVyIHBhdGNoIHRvIHJlbW92ZSB0aGUgb2xfZmxh Z3MuIA0KDQo+IA0KPiA+DQo+ID4+DQo+ID4+IEFuZCBkbyB3ZSBzdGlsbCBuZWVkIHRlc3RwbWQg dHhfb2xfZmxhZ3MgYWZ0ZXIgdGhlc2UgY2hhbmdlcz8NCj4gPg0KPiA+IEN1cnJlbnRseSB0aG9z ZSBmbGFncyBhcmUgYmVpbmcgdXNlZC4gT25lIGNhbiBwcmVwYXJlIGFub3RoZXIgcGF0Y2ggdG8N Cj4gcmVtb3ZlIHRob3NlIGFuZCB1c2UgdGhlIHBvcnQgY29uZmlnIGZsYWdzIGluc3RlYWQuDQo+ ID4gVGhpcyBpcyBub3QgcmVsYXRlZCB0byB0aGUgY29udmVyc2lvbiBhbmQgY291bGQgYmUgYSBu aWNlIGNsZWFudXAuDQo+ID4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+IEBAIC0xNjU4 LDcgKzE2NzksOCBAQCByeHR4X2NvbmZpZ19kaXNwbGF5KHZvaWQpDQo+ID4+PiAgCXByaW50Zigi ICAlcyBwYWNrZXQgZm9yd2FyZGluZyVzIC0gQ1JDIHN0cmlwcGluZyAlcyAtICINCj4gPj4+ICAJ ICAgICAgICJwYWNrZXRzL2J1cnN0PSVkXG4iLCBjdXJfZndkX2VuZy0+ZndkX21vZGVfbmFtZSwN Cj4gPj4+ICAJICAgICAgIHJldHJ5X2VuYWJsZWQgPT0gMCA/ICIiIDogIiB3aXRoIHJldHJ5IiwN Cj4gPj4+IC0JICAgICAgIHJ4X21vZGUuaHdfc3RyaXBfY3JjID8gImVuYWJsZWQiIDogImRpc2Fi bGVkIiwNCj4gPj4+ICsJICAgICAgIChwb3J0c1swXS5kZXZfY29uZi5yeG1vZGUub2ZmbG9hZHMg Jg0KPiA+PiBERVZfUlhfT0ZGTE9BRF9DUkNfU1RSSVApID8NCj4gPj4+ICsJICAgICAgICJlbmFi bGVkIiA6ICJkaXNhYmxlZCIsDQo+ID4+DQo+ID4+IFRoZXJlIGlzIGEgZ2xvYmFsIGNvbmZpZyBv cHRpb24gaW4gdGVzdHBtZCwgZm9yIGFsbCBwb3J0cy4gUHJldmlvdXMNCj4gPj4gbG9nIHdhcyBw cmludCBiYXNlZCBvbiB0aGF0IGNvbmZpZyBvcHRpb24sIGJ1dCBub3cgeW91IGFyZSBwcmludGlu ZyB0aGUNCj4gdmFsdWUgb2YgZmlyc3QgcG9ydC4NCj4gPg0KPiA+IE5vdCBleGFjdGx5ICh0aGVy ZSBhcmUgbXVsdGlwbGUgd3JvbmcgaXNzdWVzIHdpdGggdGhpcyBmdW5jdGlvbikuIEZvcg0KPiBl eGFtcGxlIHRoZSBuZXh0IGxpbmVzIGFyZToNCj4gPg0KPiA+IGlmIChjdXJfZndkX2VuZyA9PSAm dHhfb25seV9lbmdpbmUgfHwgY3VyX2Z3ZF9lbmcgPT0NCj4gJmZsb3dfZ2VuX2VuZ2luZSkNCj4g PiAgICAgICAgIHByaW50ZigiICBwYWNrZXQgbGVuPSV1IC0gbmIgcGFja2V0IHNlZ21lbnRzPSVk XG4iLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCl0eF9wa3RfbGVuZ3Ro LCAoaW50KQ0KPiA+IHR4X3BrdF9uYl9zZWdzKTsNCj4gPg0KPiA+IHN0cnVjdCBydGVfZXRoX3J4 Y29uZiAqcnhfY29uZiA9ICZwb3J0c1swXS5yeF9jb25mOw0KPiA+IHN0cnVjdCBydGVfZXRoX3R4 Y29uZiAqdHhfY29uZiA9ICZwb3J0c1swXS50eF9jb25mOw0KPiA+DQo+ID4gdGhlIGxhc3Qgd2Vy ZSBhZGRlZCBieSBjb21taXQgZjJjNTEyNWE2ODZhICgiYXBwL3Rlc3RwbWQ6IHVzZSBkZWZhdWx0 DQo+IFJ4L1R4IHBvcnQgY29uZmlndXJhdGlvbiIpLg0KPiA+DQo+ID4gQXMgeW91IGNhbiBzZWUg cG9ydFswXSBpcyB0aGUgb25lIGJlaW5nIHVzZWQgZm9yIHRoZSByZXN0IG9mIHRoZQ0KPiBjb25m aWd1cmF0aW9uIHByaW50Lg0KPiA+DQo+ID4+DQo+ID4+IEkgYmVsaWV2ZSBpdCBpcyB3cm9uZyB0 byBkaXNwbGF5IG9ubHkgZmlyc3QgcG9ydCB2YWx1ZXMsIGVpdGhlciBsb2cNCj4gPj4gY2FuIGJl IHVwZGF0ZWQgdG8gc2F5IHRlc3RwbWQgZGVmYXVsdCBjb25maWdzLCBvciByZW1vdmUgY29tcGxl dGVseSwNCj4gPj4gb3IgcHJpbnQgZm9yIGFsbCBwb3J0cywgd2hhdCBkbyB5b3UgdGhpbms/DQo+ ID4NCj4gPiBJTU8gaXQgaXMgdGhlIGJlc3QgdG8gcHJpbnQgZm9yIGFsbCBwb3J0cy4NCj4gDQo+ ICsxLCBjYW4gdGhpcyBmaXggYmUgcGFydCBvZiB0aGlzIHBhdGNoc2V0IGFsdGhvdWdoIGl0IGlz IG5vdCBkaXJlY3RseQ0KPiArcmVsYXRlZCB0bw0KPiB0aGUgb2ZmbG9hZCBjb252ZXJzaW9uPw0K DQpJdCBjYW4uIA0KDQo+IA0KPiA+DQo+ID4+DQo+ID4+IDwuLi4+DQo+ID4+DQo+ID4+PiBAQCAt ODk3LDM0ICs5MDAsMzEgQEAgbGF1bmNoX2FyZ3NfcGFyc2UoaW50IGFyZ2MsIGNoYXIqKiBhcmd2 KQ0KPiA+Pj4gIAkJCX0NCj4gPj4+ICAjZW5kaWYNCj4gPj4+ICAJCQlpZiAoIXN0cmNtcChsZ29w dHNbb3B0X2lkeF0ubmFtZSwgImRpc2FibGUtY3JjLQ0KPiA+PiBzdHJpcCIpKQ0KPiA+Pj4gLQkJ CQlyeF9tb2RlLmh3X3N0cmlwX2NyYyA9IDA7DQo+ID4+PiArCQkJCXJ4X29mZmxvYWRzICY9DQo+ ID4+IH5ERVZfUlhfT0ZGTE9BRF9DUkNfU1RSSVA7DQo+ID4+PiAgCQkJaWYgKCFzdHJjbXAobGdv cHRzW29wdF9pZHhdLm5hbWUsICJlbmFibGUtbHJvIikpDQo+ID4+PiAtCQkJCXJ4X21vZGUuZW5h YmxlX2xybyA9IDE7DQo+ID4+PiAtCQkJaWYgKCFzdHJjbXAobGdvcHRzW29wdF9pZHhdLm5hbWUs ICJlbmFibGUtc2NhdHRlciIpKQ0KPiA+Pj4gLQkJCQlyeF9tb2RlLmVuYWJsZV9zY2F0dGVyID0g MTsNCj4gPj4+ICsJCQkJcnhfb2ZmbG9hZHMgfD0gREVWX1JYX09GRkxPQURfVENQX0xSTzsNCj4g Pj4+ICsJCQlpZiAoIXN0cmNtcChsZ29wdHNbb3B0X2lkeF0ubmFtZSwgImVuYWJsZS1zY2F0dGVy IikpDQo+ID4+IHsNCj4gPj4+ICsJCQkJcnhfb2ZmbG9hZHMgfD0gREVWX1JYX09GRkxPQURfU0NB VFRFUjsNCj4gPj4+ICsJCQl9DQo+ID4+DQo+ID4+IENhbiBkcm9wICJ7fSINCj4gPg0KPiA+IFll cy4NCj4gPg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gZGlmZiAtLWdpdCBhL2FwcC90 ZXN0LXBtZC90ZXN0cG1kLmMgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5jIGluZGV4DQo+ID4+PiBj M2FiNDQ4NDkuLmUzYTdjMjZiOCAxMDA2NDQNCj4gPj4+IC0tLSBhL2FwcC90ZXN0LXBtZC90ZXN0 cG1kLmMNCj4gPj4+ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMNCj4gPj4+IEBAIC0zMzgs MTUgKzMzOCwxMCBAQCBsY29yZWlkX3QgbGF0ZW5jeXN0YXRzX2xjb3JlX2lkID0gLTE7DQo+ID4+ PiAgICovDQo+ID4+PiAgc3RydWN0IHJ0ZV9ldGhfcnhtb2RlIHJ4X21vZGUgPSB7DQo+ID4+PiAg CS5tYXhfcnhfcGt0X2xlbiA9IEVUSEVSX01BWF9MRU4sIC8qKjwgRGVmYXVsdCBtYXhpbXVtIGZy YW1lDQo+ID4+IGxlbmd0aC4gKi8NCj4gPj4+IC0JLnNwbGl0X2hkcl9zaXplID0gMCwNCj4gPj4+ IC0JLmhlYWRlcl9zcGxpdCAgID0gMCwgLyoqPCBIZWFkZXIgU3BsaXQgZGlzYWJsZWQuICovDQo+ ID4+PiAtCS5od19pcF9jaGVja3N1bSA9IDAsIC8qKjwgSVAgY2hlY2tzdW0gb2ZmbG9hZCBkaXNh YmxlZC4gKi8NCj4gPj4+IC0JLmh3X3ZsYW5fZmlsdGVyID0gMSwgLyoqPCBWTEFOIGZpbHRlcmlu ZyBlbmFibGVkLiAqLw0KPiA+Pj4gLQkuaHdfdmxhbl9zdHJpcCAgPSAxLCAvKio8IFZMQU4gc3Ry aXAgZW5hYmxlZC4gKi8NCj4gPj4+IC0JLmh3X3ZsYW5fZXh0ZW5kID0gMCwgLyoqPCBFeHRlbmRl ZCBWTEFOIGRpc2FibGVkLiAqLw0KPiA+Pj4gLQkuanVtYm9fZnJhbWUgICAgPSAwLCAvKio8IEp1 bWJvIEZyYW1lIFN1cHBvcnQgZGlzYWJsZWQuICovDQo+ID4+PiAtCS5od19zdHJpcF9jcmMgICA9 IDEsIC8qKjwgQ1JDIHN0cmlwcGluZyBieSBoYXJkd2FyZSBlbmFibGVkLiAqLw0KPiA+Pj4gLQku aHdfdGltZXN0YW1wICAgPSAwLCAvKio8IEhXIHRpbWVzdGFtcCBlbmFibGVkLiAqLw0KPiA+Pj4g Kwkub2ZmbG9hZHMgPSAoREVWX1JYX09GRkxPQURfVkxBTl9GSUxURVIgfA0KPiA+Pj4gKwkJICAg ICBERVZfUlhfT0ZGTE9BRF9WTEFOX1NUUklQIHwNCj4gPj4+ICsJCSAgICAgREVWX1JYX09GRkxP QURfQ1JDX1NUUklQKSwNCj4gPj4+ICsJLmlnbm9yZV9vZmZsb2FkX2JpdGZpZWxkID0gMSwgLyoq PCBVc2UgcnRlX2V0aF9yeHFfY29uZiBvZmZsb2Fkcw0KPiA+Pj4gK0FQSSAqLw0KPiA+Pg0KPiA+ PiBJcyBjb21tZW50IGNvcnJlY3Q/DQo+ID4NCj4gPiBObyBJIHNob3VsZCByZW1vdmUgaXQuDQo+ ID4NCj4gPj4gRmxhZyBoYXMgdHdvIG1lYW5pbmcgSSBndWVzcywNCj4gPj4gMSkgSWdub3JlIGJp dGZpZWxkIHZhbHVlcyBmb3IgcG9ydCBiYXNlZCBvZmZsb2FkIGNvbmZpZ3VyYXRpb24uDQo+ID4N Cj4gPiBJdCBpcyBvbmx5IHRoaXMgbWVhbmluZy4NCj4gPg0KPiA+PiAyKSBGb3IgcnhxLCB1c2Ug cnhfY29uZi5vZmZsb2FkcyBmaWVsZC4NCj4gPj4NCj4gPj4gdGVzdHBtZCBpcyBzdGlsbCB1c2lu ZyBwb3J0IGJhc2VkIG9mZmxvYWQgKHJ0ZV9ldGhfcnhtb2RlKSBidXQgIm9mZmxvYWRzIg0KPiA+ PiB2YXJpYWJsZSBpbnN0ZWFkIG9mIGJpdGZpZWxkcywgcmlnaHQ/DQo+ID4NCj4gPiBSaWdodC4N Cj4gPg0KPiA+IHF1ZXVlIHNwZWNpZmljIG9uZXMgYXJlIGNvcHkgb2YgcG9ydA0KPiA+PiBjb25m aWdzLg0KPiA+Pg0KPiA+PiA8Li4uPg0KPiANCj4gPiBAQCAtMTQ5NSw2ICsxNDkwLDEwIEBAIHN0 YXJ0X3BvcnQocG9ydGlkX3QgcGlkKQ0KPiA+ICAJCX0NCj4gPiAgCQlpZiAocG9ydC0+bmVlZF9y ZWNvbmZpZ19xdWV1ZXMgPiAwKSB7DQo+ID4gIAkJCXBvcnQtPm5lZWRfcmVjb25maWdfcXVldWVz ID0gMDsNCj4gPiArCQkJLyogVXNlIHJ0ZV9ldGhfdHhxX2NvbmYgb2ZmbG9hZHMgQVBJICovDQo+ ID4gKwkJCXBvcnQtPnR4X2NvbmYudHhxX2ZsYWdzID0gRVRIX1RYUV9GTEFHU19JR05PUkU7DQo+ IA0KPiBBbHNvIEkganVzdCBjYXRjaCB0aGlzIHBhcnQsIGR1cmluZyBhcHAgc3RhcnQgdHhxX2Zs YWdzIHNldCB2aWEgUE1EIGRlZmF1bHQNCj4gdmFsdWVzIChyeHR4X3BvcnRfY29uZmlnKSwgaWYg eW91IG92ZXJ3cml0ZSB0aGlzIGZsYWcgd2l0aG91dCBjb252ZXJ0aW5nIHRvDQo+IG9mZmxvYWRz LCBmb3IgUE1EcyBzdXBwb3J0aW5nIG9sZCBtZXRob2QgeW91IGFyZSBsb29zaW5nIGNvbmZpZ3Vy YXRpb24uDQoNCkFtIGRpc2FncmVlLiANClRoZSB0eHFfZmxhZ3MgYXJlIHRvIGRpc2FibGUgb2Zm bG9hZHMuIEZyb20gYXBwbGljYXRpb24gd2hpY2ggdXNlcyB0aGUgbmV3IEFQSSBwZXJzcGVjdGl2 ZSB0aGV5IGFyZSBhbGwgZGlzYWJsZWQuIFdpdGggdGhlIG5ldyBvZmZsb2FkcyBBUEksIHRoZSBh cHBsaWNhdGlvbiBpcyB0aGUgb25lIHRvIGNob29zZSB0aGUgb2ZmbG9hZHMgYmVpbmcgdXNlZCwg bm90IHRoZSBQTUQgdGhlcmVmb3JlIHRoZXJlIGlzIG5vIHBvaW50IHdpdGggY29udmVydGluZyB0 aGUgUE1EIHR4cV9mbGFncy4NCklmIHRoZSB1bmRlcmx5aW5nIFBNRCBpcyBub3Qgc3VwcG9ydGlu ZyB0aGUgbmV3IEFQSSwgdGhlIG9mZmxvYWRzIGZsYWdzIHNlbGVjdGVkIGJ5IHRoZSBhcHBsaWNh dGlvbiB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIHR4cV9mbGFncy4gRm9yIGV4YW1wbGUgMCB3aWxs IGJlIGNvbnZlcnRlZCB0byBhbGwgb2YgdGhlIFRYUV9GTEFHUy4gDQoNCkl0IGlzIHRydWUgdGhh dCBiZWZvcmUgdGhlIGNoYW5nZXMgd2UgY291bGQgc3RpbGwgaGF2ZSBzb21lIG9mZmxvYWRzIGVu YWJsZWQgKGxpa2UgVFNPKSB3aGVuIHdlIHVzZSB0aGUgUE1EIGRlZmF1bHQgdHhxX2ZsYWdzLiBI b3dldmVyIEkgc2VlIGl0IGFzIGFuIGltcHJvdmVtZW50IGFuZCBub3QgZG93bnNpZGUuIFRoZSBu ZXcgYXBwbGljYXRpb24gaXMgYmV0dGVyIGJlY2F1c2UgaXQgZG9uJ3QgaGF2ZSBvZmZsb2FkcyBl bmFibGVkIGZvciBub3RoaW5nLg0KDQo+IA0KPiA+ICsJCQkvKiBBcHBseSBUeCBvZmZsb2FkcyBj b25maWd1cmF0aW9uICovDQo+ID4gKwkJCXBvcnQtPnR4X2NvbmYub2ZmbG9hZHMgPSBwb3J0LQ0K PiA+ZGV2X2NvbmYudHhtb2RlLm9mZmxvYWRzOw0KPiA+ICAJCQkvKiBzZXR1cCB0eCBxdWV1ZXMg Ki8NCj4gPiAgCQkJZm9yIChxaSA9IDA7IHFpIDwgbmJfdHhxOyBxaSsrKSB7DQo+ID4gIAkJCQlp ZiAoKG51bWFfc3VwcG9ydCkgJiYNCj4gPiBAQCAtMTUyMSw2ICsxNTIwLDggQEAgc3RhcnRfcG9y dChwb3J0aWRfdCBwaWQpDQo+ID4gIAkJCQlwb3J0LT5uZWVkX3JlY29uZmlnX3F1ZXVlcyA9IDE7 DQo+ID4gIAkJCQlyZXR1cm4gLTE7DQo+ID4gIAkJCX0NCj4gPiArCQkJLyogQXBwbHkgUnggb2Zm bG9hZHMgY29uZmlndXJhdGlvbiAqLw0KPiA+ICsJCQlwb3J0LT5yeF9jb25mLm9mZmxvYWRzID0g cG9ydC0NCj4gPmRldl9jb25mLnJ4bW9kZS5vZmZsb2FkczsNCj4gPiAgCQkJLyogc2V0dXAgcngg cXVldWVzICovDQo+ID4gIAkJCWZvciAocWkgPSAwOyBxaSA8IG5iX3J4cTsgcWkrKykgew0KPiA+ ICAJCQkJaWYgKChudW1hX3N1cHBvcnQpICYmDQo+ID4NCg==