From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0064.outbound.protection.outlook.com [104.47.2.64]) by dpdk.org (Postfix) with ESMTP id 979891B753 for ; Sat, 14 Apr 2018 12:13:02 +0200 (CEST) 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=ou0bF58cOFKu8TvqXD+hlX2eXCBfyjR0qZO3A5zqVbk=; b=waxvVQlytmxvv28momzsPGT3TJM+tf5EANRbEDFqJF7omBxOm06jr+rDaWT8g6LIcHC8qKimdW3W9dML33UBY4Mq+uEzIrGzdRiAwSBEAVkN2uSBdCy+xZL5FrO2ge6IQd6g8FCiz7C0nBnbSkVXbTVCf5ehJAF/9P7DIri7UUg= Received: from VI1PR05MB1678.eurprd05.prod.outlook.com (10.165.235.152) by VI1PR05MB1760.eurprd05.prod.outlook.com (10.165.236.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.10; Sat, 14 Apr 2018 10:12:59 +0000 Received: from VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a]) by VI1PR05MB1678.eurprd05.prod.outlook.com ([fe80::6da4:14c3:f5d8:3f4a%14]) with mapi id 15.20.0675.014; Sat, 14 Apr 2018 10:12:58 +0000 From: "Xueming(Steven) Li" To: =?utf-8?B?TsOpbGlvIExhcmFuamVpcm8=?= CC: Shahaf Shuler , "dev@dpdk.org" Thread-Topic: [PATCH v3 07/14] net/mlx5: support tunnel RSS level Thread-Index: AQHT0xl/UAgOxpZjZESRSwnmzfhkyqP+sAKAgADkgZA= Date: Sat, 14 Apr 2018 10:12:58 +0000 Message-ID: References: <20180410133415.189905-1-xuemingl%40mellanox.com> <20180413112023.106420-8-xuemingl@mellanox.com> <20180413132701.auavvxjj6sn5tzfq@laranjeiro-vm.dev.6wind.com> In-Reply-To: <20180413132701.auavvxjj6sn5tzfq@laranjeiro-vm.dev.6wind.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=xuemingl@mellanox.com; x-originating-ip: [114.83.166.179] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB1760; 7:MNZXDJpMH63Y50f/lALw+cMo6VV1fk9Xw7Vu5TQEYl2MwU+3TcEvct79gBymtFGMJ9PZakN2VOrC6V6iYj4Qis2fL/RGNsghnTGkxJMrNX9lMe3T6PSP8IVWiNI6Bptn/wxw2toSgKsuH9eZUwJX0v5B0ymgww7fO9ApkWPMPahgh9RVHvT7+QfVD8twX0N8i8wzheuvkBxKw+sKv8Z8FjolRQcJyRESpvPYk88Pk3mxafQSC0YbVlqLnhFvKx7F x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB1760; x-ms-traffictypediagnostic: VI1PR05MB1760: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(788757137089); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231232)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:VI1PR05MB1760; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB1760; x-forefront-prvs: 0642A5E7BA x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(346002)(376002)(39860400002)(366004)(199004)(13464003)(189003)(81166006)(6246003)(26005)(4326008)(186003)(105586002)(102836004)(66066001)(106356001)(99286004)(55016002)(5660300001)(7736002)(3660700001)(6436002)(5250100002)(6506007)(229853002)(53546011)(74316002)(446003)(14454004)(9686003)(7696005)(16200700003)(2900100001)(53946003)(76176011)(3846002)(97736004)(11346002)(6116002)(86362001)(68736007)(8676002)(59450400001)(53936002)(6916009)(305945005)(478600001)(33656002)(81156014)(316002)(45080400002)(476003)(486006)(2906002)(25786009)(54906003)(8936002)(3280700002)(21314002)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB1760; H:VI1PR05MB1678.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-microsoft-antispam-message-info: n2ZeXU7rlt+NWiUJDxmlgcTHT1imvFy/Rca+v6XIP7aIMHQb2m8mHq3VT/HM6tFogsxIfmw96zS1DezAZZUnM4wuhexH25Ue57cmwP+tjGdf3oyB61g3XClFbM/ip23segvFgaV5OCh7062ZmfEYkdRDjzi6wA1YCL6M2wFd4Erz6B6XyeBZieF/4g6GnTsa spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 1d18a18e-597a-418b-8920-08d5a1f04c71 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d18a18e-597a-418b-8920-08d5a1f04c71 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Apr 2018 10:12:58.7806 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1760 Subject: Re: [dpdk-dev] [PATCH v3 07/14] net/mlx5: support tunnel RSS level 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: Sat, 14 Apr 2018 10:13:02 -0000 SGkgTmVsaW8sDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTsOpbGlv IExhcmFuamVpcm8gPG5lbGlvLmxhcmFuamVpcm9ANndpbmQuY29tPg0KPiBTZW50OiBGcmlkYXks IEFwcmlsIDEzLCAyMDE4IDk6MjcgUE0NCj4gVG86IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVlbWlu Z2xAbWVsbGFub3guY29tPg0KPiBDYzogU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5j b20+OyBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MyAwNy8xNF0gbmV0L21s eDU6IHN1cHBvcnQgdHVubmVsIFJTUyBsZXZlbA0KPiANCj4gU2VlbXMgeW91IGRpZCBub3QgcmVh ZCBteSBjb21tZW50cyBvbiB0aGlzIHBhdGNoLCBJIGhhdmUgZXhhY3RseSB0aGUgc2FtZQ0KPiBv bmVzLg0KDQpJIGZpbmFsbHkgZm91bmQgeW91ciBwcmV2aW91cyBjb21tZW50cyBpbiB0cmFzaCBi b3gsIG5vdCBzdXJlIHdoeSBvdXRsb29rIA0KYWx3YXlzIGRlbGl2ZXIgaW1wb3J0YW50IG1haWwg dG8gdHJhc2ggYm94LCBhbnl3YXkgSSB1cGRhdGVkIHJ1bGVzLg0KDQo+IA0KPiBPbiBGcmksIEFw ciAxMywgMjAxOCBhdCAwNzoyMDoxNlBNICswODAwLCBYdWVtaW5nIExpIHdyb3RlOg0KPiA+IFR1 bm5lbCBSU1MgbGV2ZWwgb2YgZmxvdyBSU1MgYWN0aW9uIG9mZmVycyB1c2VyIGEgY2hvaWNlIHRv IGRvIFJTUw0KPiA+IGhhc2ggY2FsY3VsYXRpb24gb24gaW5uZXIgb3Igb3V0ZXIgUlNTIGZpZWxk cy4gVGVzdHBtZCBmbG93IGNvbW1hbmQNCj4gZXhhbXBsZXM6DQo+ID4NCj4gPiBHUkUgZmxvdyBp bm5lciBSU1M6DQo+ID4gICBmbG93IGNyZWF0ZSAwIGluZ3Jlc3MgcGF0dGVybiBldGggLyBpcHY0 IHByb3RvIGlzIDQ3IC8gZ3JlIC8gZW5kDQo+ID4gYWN0aW9ucyByc3MgcXVldWVzIDEgMiBlbmQg bGV2ZWwgMSAvIGVuZA0KPiA+DQo+ID4gR1JFIHR1bm5lbCBmbG93IG91dGVyIFJTUzoNCj4gPiAg IGZsb3cgY3JlYXRlIDAgaW5ncmVzcyBwYXR0ZXJuIGV0aCAgLyBpcHY0IHByb3RvIGlzIDQ3IC8g Z3JlIC8gZW5kDQo+ID4gYWN0aW9ucyByc3MgcXVldWVzIDEgMiBlbmQgbGV2ZWwgMCAvIGVuZA0K PiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogWHVlbWluZyBMaSA8eHVlbWluZ2xAbWVsbGFub3guY29t Pg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlICAgIHwgICAyICstDQo+ ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmMgfCAyNDcNCj4gPiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4 NV9nbHVlLmMgfCAgMTYgKysrDQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmggfCAg IDggKysNCj4gPiAgZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jICB8ICA1NiArKysrKysrKyst DQo+ID4gIGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4LmggfCAgIDUgKy0NCj4gPiAgNiBmaWxl cyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L21seDUv TWFrZWZpbGUNCj4gPiBpbmRleCBhZTExOGFkMzMuLmY5YTZjNDYwYiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL25ldC9tbHg1L01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9N YWtlZmlsZQ0KPiA+IEBAIC0zNSw3ICszNSw3IEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUu dmFycy5tayAgTElCID0NCj4gPiBsaWJydGVfcG1kX21seDUuYSAgTElCX0dMVUUgPSAkKExJQl9H TFVFX0JBU0UpLiQoTElCX0dMVUVfVkVSU0lPTikNCj4gPiAgTElCX0dMVUVfQkFTRSA9IGxpYnJ0 ZV9wbWRfbWx4NV9nbHVlLnNvIC1MSUJfR0xVRV9WRVJTSU9OID0gMTguMDIuMA0KPiA+ICtMSUJf R0xVRV9WRVJTSU9OID0gMTguMDUuMA0KPiA+DQo+ID4gICMgU291cmNlcy4NCj4gPiAgU1JDUy0k KENPTkZJR19SVEVfTElCUlRFX01MWDVfUE1EKSArPSBtbHg1LmMgZGlmZiAtLWdpdA0KPiA+IGEv ZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93 LmMgaW5kZXgNCj4gPiBkZDA5OWYzMjguLmEyMjU1NDcwNiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2 ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1 X2Zsb3cuYw0KPiA+IEBAIC0xMTYsNiArMTE2LDcgQEAgZW51bSBoYXNoX3J4cV90eXBlIHsNCj4g PiAgCUhBU0hfUlhRX1VEUFY2LA0KPiA+ICAJSEFTSF9SWFFfSVBWNiwNCj4gPiAgCUhBU0hfUlhR X0VUSCwNCj4gPiArCUhBU0hfUlhRX1RVTk5FTCwNCj4gPiAgfTsNCj4gPg0KPiA+ICAvKiBJbml0 aWFsaXphdGlvbiBkYXRhIGZvciBoYXNoIFJYIHF1ZXVlLiAqLyBAQCAtNDU0LDYgKzQ1NSw3IEBA DQo+ID4gc3RydWN0IG1seDVfZmxvd19wYXJzZSB7DQo+ID4gIAl1aW50MTZfdCBxdWV1ZXNbUlRF X01BWF9RVUVVRVNfUEVSX1BPUlRdOyAvKio8IFF1ZXVlcyBpbmRleGVzIHRvIHVzZS4NCj4gKi8N Cj4gPiAgCXVpbnQ4X3QgcnNzX2tleVs0MF07IC8qKjwgY29weSBvZiB0aGUgUlNTIGtleS4gKi8N Cj4gPiAgCWVudW0gaGFzaF9yeHFfdHlwZSBsYXllcjsgLyoqPCBMYXN0IHBhdHRlcm4gbGF5ZXIg ZGV0ZWN0ZWQuICovDQo+ID4gKwllbnVtIGhhc2hfcnhxX3R5cGUgb3V0X2xheWVyOyAvKio8IExh c3Qgb3V0ZXIgcGF0dGVybiBsYXllcg0KPiA+ICtkZXRlY3RlZC4gKi8NCj4gPiAgCXVpbnQzMl90 IHR1bm5lbDsgLyoqPCBUdW5uZWwgdHlwZSBvZiBSVEVfUFRZUEVfVFVOTkVMX1hYWC4gKi8NCj4g PiAgCXN0cnVjdCBpYnZfY291bnRlcl9zZXQgKmNzOyAvKio8IEhvbGRzIHRoZSBjb3VudGVyIHNl dCBmb3IgdGhlIHJ1bGUNCj4gKi8NCj4gPiAgCXN0cnVjdCB7DQo+ID4gQEAgLTQ2MSw2ICs0NjMs NyBAQCBzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlIHsNCj4gPiAgCQkvKio8IFBvaW50ZXIgdG8gVmVy YnMgYXR0cmlidXRlcy4gKi8NCj4gPiAgCQl1bnNpZ25lZCBpbnQgb2Zmc2V0Ow0KPiA+ICAJCS8q KjwgQ3VycmVudCBwb3NpdGlvbiBvciB0b3RhbCBzaXplIG9mIHRoZSBhdHRyaWJ1dGUuICovDQo+ ID4gKwkJdWludDY0X3QgaGFzaF9maWVsZHM7IC8qKjwgVmVyYnMgaGFzaCBmaWVsZHMuICovDQo+ ID4gIAl9IHF1ZXVlW1JURV9ESU0oaGFzaF9yeHFfaW5pdCldOw0KPiA+ICB9Ow0KPiA+DQo+ID4g QEAgLTY5Niw3ICs2OTksOCBAQCBtbHg1X2Zsb3dfY29udmVydF9hY3Rpb25zKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LA0KPiA+ICAJCQkJCQkgICAiIGZ1bmN0aW9uIGlzIFRvZXBsaXR6Iik7DQo+ ID4gIAkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAgCQkJfQ0KPiA+IC0JCQlpZiAocnNzLT5s ZXZlbCkgew0KPiA+ICsjaWZuZGVmIEhBVkVfSUJWX0RFVklDRV9UVU5ORUxfU1VQUE9SVA0KPiA+ ICsJCQlpZiAocGFyc2VyLT5yc3NfY29uZi5sZXZlbCA+IDApIHsNCj4gPiAgCQkJCXJ0ZV9mbG93 X2Vycm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICAJCQkJCQkgICBSVEVfRkxPV19FUlJPUl9U WVBFX0FDVElPTiwNCj4gPiAgCQkJCQkJICAgYWN0aW9ucywNCj4gPiBAQCAtNzA0LDYgKzcwOCwx NSBAQCBtbHg1X2Zsb3dfY29udmVydF9hY3Rpb25zKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0K PiA+ICAJCQkJCQkgICAiIGxldmVsIGlzIG5vdCBzdXBwb3J0ZWQiKTsNCj4gPiAgCQkJCXJldHVy biAtcnRlX2Vycm5vOw0KPiA+ICAJCQl9DQo+ID4gKyNlbmRpZg0KPiA+ICsJCQlpZiAocGFyc2Vy LT5yc3NfY29uZi5sZXZlbCA+IDEpIHsNCj4gPiArCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJv ciwgRUlOVkFMLA0KPiA+ICsJCQkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FDVElPTiwNCj4g PiArCQkJCQkJICAgYWN0aW9ucywNCj4gPiArCQkJCQkJICAgIlJTUyBlbmNhcHN1bGF0aW9uIGxl dmVsIg0KPiA+ICsJCQkJCQkgICAiID4gMSBpcyBub3Qgc3VwcG9ydGVkIik7DQo+ID4gKwkJCQly ZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCQkJfQ0KPiA+ICAJCQlpZiAocnNzLT50eXBlcyAmIE1M WDVfUlNTX0hGX01BU0spIHsNCj4gPiAgCQkJCXJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRUlO VkFMLA0KPiA+ICAJCQkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBFX0FDVElPTiwNCj4gDQo+IFNh bWUgY29tbWVudCBhcyBpbiBwcmV2aW91cyByZXZpZXcuDQo+IFRoZSBsZXZlbHMgYXJlIG5vdCBt YXRjaGluZyB0aGUgcHJvcG9zZWQgQVBJLg0KPiBMZXZlbCAgMCA9IHVuc3BlY2lmaWVkLCAxID0g b3V0ZXJtb3N0LCAyID0gbmV4dCBvdXRlcm1vc3QsIDMgPSBuZXh0DQo+IG5leHQgLi4uDQoNClRo YW5rcywgYSBiaWcgIG1pc3NpbmcgaW4gcmViYXNlLg0KDQo+IA0KPiA+IEBAIC03NTQsNyArNzY3 LDcgQEAgbWx4NV9mbG93X2NvbnZlcnRfYWN0aW9ucyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gPiAgCQkJfQ0KPiA+ICAJCQlwYXJzZXItPnJzc19jb25mID0gKHN0cnVjdCBydGVfZmxvd19h Y3Rpb25fcnNzKXsNCj4gPiAgCQkJCS5mdW5jID0gUlRFX0VUSF9IQVNIX0ZVTkNUSU9OX0RFRkFV TFQsDQo+ID4gLQkJCQkubGV2ZWwgPSAwLA0KPiA+ICsJCQkJLmxldmVsID0gcnNzLT5sZXZlbCwN Cj4gPiAgCQkJCS50eXBlcyA9IHJzcy0+dHlwZXMsDQo+ID4gIAkJCQkua2V5X2xlbiA9IHJzc19r ZXlfbGVuLA0KPiA+ICAJCQkJLnF1ZXVlX251bSA9IHJzcy0+cXVldWVfbnVtLA0KPiA+IEBAIC04 MzgsMTAgKzg1MSwxMiBAQCBtbHg1X2Zsb3dfY29udmVydF9hY3Rpb25zKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICAgKiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1 ZSBvdGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBpcw0KPiBzZXQuDQo+ID4gICAqLw0KPiA+ICBzdGF0 aWMgaW50DQo+ID4gLW1seDVfZmxvd19jb252ZXJ0X2l0ZW1zX3ZhbGlkYXRlKGNvbnN0IHN0cnVj dCBydGVfZmxvd19pdGVtIGl0ZW1zW10sDQo+ID4gK21seDVfZmxvd19jb252ZXJ0X2l0ZW1zX3Zh bGlkYXRlKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtIGl0ZW1zW10sDQo+ID4gIAkJCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICpl cnJvciwNCj4gPiAgCQkJCSBzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlICpwYXJzZXIpDQo+ID4gIHsN Cj4gPiArCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiAg CWNvbnN0IHN0cnVjdCBtbHg1X2Zsb3dfaXRlbXMgKmN1cl9pdGVtID0gbWx4NV9mbG93X2l0ZW1z Ow0KPiA+ICAJdW5zaWduZWQgaW50IGk7DQo+ID4gIAlpbnQgcmV0ID0gMDsNCj4gPiBAQCAtODgx LDYgKzg5NiwxNCBAQCBtbHg1X2Zsb3dfY29udmVydF9pdGVtc192YWxpZGF0ZShjb25zdCBzdHJ1 Y3QNCj4gcnRlX2Zsb3dfaXRlbSBpdGVtc1tdLA0KPiA+ICAJCQkJCQkgICAiIHR1bm5lbCBlbmNh cHN1bGF0aW9ucy4iKTsNCj4gPiAgCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICAJCQl9DQo+ ID4gKwkJCWlmICghcHJpdi0+Y29uZmlnLnR1bm5lbF9lbiAmJg0KPiA+ICsJCQkgICAgcGFyc2Vy LT5yc3NfY29uZi5sZXZlbCkgew0KPiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBF Tk9UU1VQLA0KPiA+ICsJCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfSVRFTSwNCj4gPiArCQkJCQlp dGVtcywNCj4gPiArCQkJCQkiVHVubmVsIG9mZmxvYWRpbmcgbm90IGVuYWJsZWQiKTsNCj4gPiAr CQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJCQl9DQo+ID4gIAkJCXBhcnNlci0+aW5uZXIg PSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICAJCQlwYXJzZXItPnR1bm5lbCA9IGZsb3dfcHR5 cGVbaXRlbXMtPnR5cGVdOw0KPiA+ICAJCX0NCj4gPiBAQCAtMTAwMCw3ICsxMDIzLDExIEBAIHN0 YXRpYyB2b2lkDQo+ID4gIG1seDVfZmxvd19jb252ZXJ0X2ZpbmFsaXNlKHN0cnVjdCBtbHg1X2Zs b3dfcGFyc2UgKnBhcnNlcikgIHsNCj4gPiAgCXVuc2lnbmVkIGludCBpOw0KPiA+ICsJdWludDMy X3QgaW5uZXIgPSBwYXJzZXItPmlubmVyOw0KPiA+DQo+ID4gKwkvKiBEb24ndCBjcmVhdGUgZXh0 cmEgZmxvd3MgZm9yIG91dGVyIFJTUy4gKi8NCj4gPiArCWlmIChwYXJzZXItPnR1bm5lbCAmJiAh cGFyc2VyLT5yc3NfY29uZi5sZXZlbCkNCj4gPiArCQlyZXR1cm47DQo+ID4gIAkvKg0KPiA+ICAJ ICogRmlsbCBtaXNzaW5nIGxheWVycyBpbiB2ZXJicyBzcGVjaWZpY2F0aW9ucywgb3IgY29tcHV0 ZSB0aGUNCj4gY29ycmVjdA0KPiA+ICAJICogb2Zmc2V0IHRvIGFsbG9jYXRlIHRoZSBtZW1vcnkg c3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGVzIGFuZCBAQA0KPiA+IC0xMDExLDIzICsxMDM4LDI1IEBA IG1seDVfZmxvd19jb252ZXJ0X2ZpbmFsaXNlKHN0cnVjdCBtbHg1X2Zsb3dfcGFyc2UNCj4gKnBh cnNlcikNCj4gPiAgCQkJc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NF9leHQgaXB2NDsNCj4gPiAg CQkJc3RydWN0IGlidl9mbG93X3NwZWNfaXB2NiBpcHY2Ow0KPiA+ICAJCQlzdHJ1Y3QgaWJ2X2Zs b3dfc3BlY190Y3BfdWRwIHVkcF90Y3A7DQo+ID4gKwkJCXN0cnVjdCBpYnZfZmxvd19zcGVjX2V0 aCBldGg7DQo+ID4gIAkJfSBzcGVjczsNCj4gPiAgCQl2b2lkICpkc3Q7DQo+ID4gIAkJdWludDE2 X3Qgc2l6ZTsNCj4gPg0KPiA+ICAJCWlmIChpID09IHBhcnNlci0+bGF5ZXIpDQo+ID4gIAkJCWNv bnRpbnVlOw0KPiA+IC0JCWlmIChwYXJzZXItPmxheWVyID09IEhBU0hfUlhRX0VUSCkgew0KPiA+ ICsJCWlmIChwYXJzZXItPmxheWVyID09IEhBU0hfUlhRX0VUSCB8fA0KPiA+ICsJCSAgICBwYXJz ZXItPmxheWVyID09IEhBU0hfUlhRX1RVTk5FTCkgew0KPiA+ICAJCQlpZiAoaGFzaF9yeHFfaW5p dFtpXS5pcF92ZXJzaW9uID09IE1MWDVfSVBWNCkgew0KPiA+ICAJCQkJc2l6ZSA9IHNpemVvZihz dHJ1Y3QgaWJ2X2Zsb3dfc3BlY19pcHY0X2V4dCk7DQo+ID4gIAkJCQlzcGVjcy5pcHY0ID0gKHN0 cnVjdCBpYnZfZmxvd19zcGVjX2lwdjRfZXh0KXsNCj4gPiAtCQkJCQkudHlwZSA9IElCVl9GTE9X X1NQRUNfSVBWNF9FWFQsDQo+ID4gKwkJCQkJLnR5cGUgPSBpbm5lciB8IElCVl9GTE9XX1NQRUNf SVBWNF9FWFQsDQo+ID4gIAkJCQkJLnNpemUgPSBzaXplLA0KPiA+ICAJCQkJfTsNCj4gPiAgCQkJ fSBlbHNlIHsNCj4gPiAgCQkJCXNpemUgPSBzaXplb2Yoc3RydWN0IGlidl9mbG93X3NwZWNfaXB2 Nik7DQo+ID4gIAkJCQlzcGVjcy5pcHY2ID0gKHN0cnVjdCBpYnZfZmxvd19zcGVjX2lwdjYpew0K PiA+IC0JCQkJCS50eXBlID0gSUJWX0ZMT1dfU1BFQ19JUFY2LA0KPiA+ICsJCQkJCS50eXBlID0g aW5uZXIgfCBJQlZfRkxPV19TUEVDX0lQVjYsDQo+ID4gIAkJCQkJLnNpemUgPSBzaXplLA0KPiA+ ICAJCQkJfTsNCj4gPiAgCQkJfQ0KPiA+IEBAIC0xMDQ0LDcgKzEwNzMsNyBAQCBtbHg1X2Zsb3df Y29udmVydF9maW5hbGlzZShzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlDQo+ICpwYXJzZXIpDQo+ID4g IAkJICAgIChpID09IEhBU0hfUlhRX1VEUFY2KSB8fCAoaSA9PSBIQVNIX1JYUV9UQ1BWNikpIHsN Cj4gPiAgCQkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190Y3BfdWRwKTsNCj4g PiAgCQkJc3BlY3MudWRwX3RjcCA9IChzdHJ1Y3QgaWJ2X2Zsb3dfc3BlY190Y3BfdWRwKSB7DQo+ ID4gLQkJCQkudHlwZSA9ICgoaSA9PSBIQVNIX1JYUV9VRFBWNCB8fA0KPiA+ICsJCQkJLnR5cGUg PSBpbm5lciB8ICgoaSA9PSBIQVNIX1JYUV9VRFBWNCB8fA0KPiA+ICAJCQkJCSAgaSA9PSBIQVNI X1JYUV9VRFBWNikgPw0KPiA+ICAJCQkJCSBJQlZfRkxPV19TUEVDX1VEUCA6DQo+ID4gIAkJCQkJ IElCVl9GTE9XX1NQRUNfVENQKSwNCj4gPiBAQCAtMTA2NSw2ICsxMDk0LDggQEAgbWx4NV9mbG93 X2NvbnZlcnRfZmluYWxpc2Uoc3RydWN0DQo+ID4gbWx4NV9mbG93X3BhcnNlICpwYXJzZXIpDQo+ ID4gIC8qKg0KPiA+ICAgKiBVcGRhdGUgZmxvd3MgYWNjb3JkaW5nIHRvIHBhdHRlcm4gYW5kIFJT UyBoYXNoIGZpZWxkcy4NCj4gPiAgICoNCj4gPiArICogQHBhcmFtIGRldg0KPiA+ICsgKiAgIFBv aW50ZXIgdG8gRXRoZXJuZXQgZGV2aWNlLg0KPiA+ICAgKiBAcGFyYW1baW4sIG91dF0gcGFyc2Vy DQo+ID4gICAqICAgSW50ZXJuYWwgcGFyc2VyIHN0cnVjdHVyZS4NCj4gPiAgICoNCj4gPiBAQCAt MTA3MiwxNiArMTEwMywxNyBAQCBtbHg1X2Zsb3dfY29udmVydF9maW5hbGlzZShzdHJ1Y3QNCj4g bWx4NV9mbG93X3BhcnNlICpwYXJzZXIpDQo+ID4gICAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0 aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzDQo+IHNldC4NCj4gPiAg ICovDQo+ID4gIHN0YXRpYyBpbnQNCj4gPiAtbWx4NV9mbG93X2NvbnZlcnRfcnNzKHN0cnVjdCBt bHg1X2Zsb3dfcGFyc2UgKnBhcnNlcikNCj4gPiArbWx4NV9mbG93X2NvbnZlcnRfcnNzKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9mbG93X3BhcnNlDQo+ID4gKypwYXJzZXIp DQo+ID4gIHsNCj4gPiAtCWNvbnN0IHVuc2lnbmVkIGludCBpcHY0ID0NCj4gPiArCXVuc2lnbmVk IGludCBpcHY0ID0NCj4gPiAgCQloYXNoX3J4cV9pbml0W3BhcnNlci0+bGF5ZXJdLmlwX3ZlcnNp b24gPT0gTUxYNV9JUFY0Ow0KPiA+ICAJY29uc3QgZW51bSBoYXNoX3J4cV90eXBlIGhtaW4gPSBp cHY0ID8gSEFTSF9SWFFfVENQVjQgOg0KPiBIQVNIX1JYUV9UQ1BWNjsNCj4gPiAgCWNvbnN0IGVu dW0gaGFzaF9yeHFfdHlwZSBobWF4ID0gaXB2NCA/IEhBU0hfUlhRX0lQVjQgOiBIQVNIX1JYUV9J UFY2Ow0KPiA+ICAJY29uc3QgZW51bSBoYXNoX3J4cV90eXBlIG9obWluID0gaXB2NCA/IEhBU0hf UlhRX1RDUFY2IDoNCj4gSEFTSF9SWFFfVENQVjQ7DQo+ID4gIAljb25zdCBlbnVtIGhhc2hfcnhx X3R5cGUgb2htYXggPSBpcHY0ID8gSEFTSF9SWFFfSVBWNiA6DQo+IEhBU0hfUlhRX0lQVjQ7DQo+ ID4gLQljb25zdCBlbnVtIGhhc2hfcnhxX3R5cGUgaXAgPSBpcHY0ID8gSEFTSF9SWFFfSVBWNCA6 IEhBU0hfUlhRX0lQVjY7DQo+ID4gKwllbnVtIGhhc2hfcnhxX3R5cGUgaXAgPSBpcHY0ID8gSEFT SF9SWFFfSVBWNCA6IEhBU0hfUlhRX0lQVjY7DQo+ID4gIAl1bnNpZ25lZCBpbnQgaTsNCj4gPiAr CWludCBmb3VuZCA9IDA7DQo+ID4NCj4gPiAgCS8qIFJlbW92ZSBhbnkgb3RoZXIgZmxvdyBub3Qg bWF0Y2hpbmcgdGhlIHBhdHRlcm4uICovDQo+ID4gIAlpZiAocGFyc2VyLT5yc3NfY29uZi5xdWV1 ZV9udW0gPT0gMSAmJiAhcGFyc2VyLT5yc3NfY29uZi50eXBlcykgeyBAQA0KPiA+IC0xMDkzLDkg KzExMjUsNTEgQEAgbWx4NV9mbG93X2NvbnZlcnRfcnNzKHN0cnVjdCBtbHg1X2Zsb3dfcGFyc2Ug KnBhcnNlcikNCj4gPiAgCQl9DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gIAl9DQo+ID4gLQlpZiAo cGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9FVEgpDQo+ID4gKwkvKg0KPiA+ICsJICogT3V0ZXIg UlNTLg0KPiA+ICsJICogSEFTSF9SWFFfRVRIIGlzIHRoZSBvbmx5IHJ1bGUgc2luY2UgdHVubmVs IHBhY2tldCBtYXRjaCB0aGlzDQo+ID4gKwkgKiBydWxlIG11c3QgbWF0Y2ggb3V0ZXIgcGF0dGVy bi4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKHBhcnNlci0+dHVubmVsICYmICFwYXJzZXItPnJzc19j b25mLmxldmVsKSB7DQo+ID4gKwkJLyogUmVtb3ZlIGZsb3dzIG90aGVyIHRoYW4gZGVmYXVsdC4g Ki8NCj4gPiArCQlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbiAtIDE7ICsraSkgew0K PiA+ICsJCQlydGVfZnJlZShwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKTsNCj4gPiArCQkJcGFy c2VyLT5xdWV1ZVtpXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gKwkJfQ0KPiA+ICsJCWlwdjQgPSBo YXNoX3J4cV9pbml0W3BhcnNlci0+b3V0X2xheWVyXS5pcF92ZXJzaW9uID09DQo+IE1MWDVfSVBW NDsNCj4gPiArCQlpcCA9IGlwdjQgPyBIQVNIX1JYUV9JUFY0IDogSEFTSF9SWFFfSVBWNjsNCj4g PiArCQlpZiAoaGFzaF9yeHFfaW5pdFtwYXJzZXItPm91dF9sYXllcl0uZHBka19yc3NfaGYgJg0K PiA+ICsJCSAgICBwYXJzZXItPnJzc19jb25mLnR5cGVzKSB7DQo+ID4gKwkJCXBhcnNlci0+cXVl dWVbSEFTSF9SWFFfRVRIXS5oYXNoX2ZpZWxkcyA9DQo+ID4gKwkJCQloYXNoX3J4cV9pbml0W3Bh cnNlci0+b3V0X2xheWVyXS5oYXNoX2ZpZWxkczsNCj4gPiArCQl9IGVsc2UgaWYgKGlwICYmICho YXNoX3J4cV9pbml0W2lwXS5kcGRrX3Jzc19oZiAmDQo+ID4gKwkJICAgIHBhcnNlci0+cnNzX2Nv bmYudHlwZXMpKSB7DQo+ID4gKwkJCXBhcnNlci0+cXVldWVbSEFTSF9SWFFfRVRIXS5oYXNoX2Zp ZWxkcyA9DQo+ID4gKwkJCQloYXNoX3J4cV9pbml0W2lwXS5oYXNoX2ZpZWxkczsNCj4gPiArCQl9 IGVsc2UgaWYgKHBhcnNlci0+cnNzX2NvbmYudHlwZXMpIHsNCj4gPiArCQkJRFJWX0xPRyhXQVJO SU5HLA0KPiA+ICsJCQkJInBvcnQgJXUgcnNzIG91dGVyIGhhc2ggZnVuY3Rpb24gZG9lc24ndCBt YXRjaCINCj4gPiArCQkJCSIgcGF0dGVybiIsIGRldi0+ZGF0YS0+cG9ydF9pZCk7DQo+ID4gKwkJ fQ0KPiA+ICsJCXJldHVybiAwOw0KPiA+ICsJfQ0KPiA+ICsJaWYgKHBhcnNlci0+bGF5ZXIgPT0g SEFTSF9SWFFfRVRIIHx8IHBhcnNlci0+bGF5ZXIgPT0NCj4gSEFTSF9SWFFfVFVOTkVMKSB7DQo+ ID4gKwkJLyogUmVtb3ZlIHVudXNlZCBmbG93cyBhY2NvcmRpbmcgdG8gaGFzaCBmdW5jdGlvbi4g Ki8NCj4gPiArCQlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbiAtIDE7ICsraSkgew0K PiA+ICsJCQlpZiAoIXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIpDQo+ID4gKwkJCQljb250aW51 ZTsNCj4gPiArCQkJaWYgKGhhc2hfcnhxX2luaXRbaV0uZHBka19yc3NfaGYgJg0KPiA+ICsJCQkg ICAgcGFyc2VyLT5yc3NfY29uZi50eXBlcykgew0KPiA+ICsJCQkJcGFyc2VyLT5xdWV1ZVtpXS5o YXNoX2ZpZWxkcyA9DQo+ID4gKwkJCQkJaGFzaF9yeHFfaW5pdFtpXS5oYXNoX2ZpZWxkczsNCj4g PiArCQkJCWNvbnRpbnVlOw0KPiA+ICsJCQl9DQo+ID4gKwkJCXJ0ZV9mcmVlKHBhcnNlci0+cXVl dWVbaV0uaWJ2X2F0dHIpOw0KPiA+ICsJCQlwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyID0gTlVM TDsNCj4gPiArCQl9DQo+ID4gIAkJcmV0dXJuIDA7DQo+ID4gLQkvKiBUaGlzIGxheWVyIGJlY29t ZXMgdXNlbGVzcyBhcyB0aGUgcGF0dGVybiBkZWZpbmUgdW5kZXIgbGF5ZXJzLiAqLw0KPiA+ICsJ fQ0KPiA+ICsJLyogUmVtb3ZlIEVUSCBsYXllciBmbG93LiAqLw0KPiA+ICAJcnRlX2ZyZWUocGFy c2VyLT5xdWV1ZVtIQVNIX1JYUV9FVEhdLmlidl9hdHRyKTsNCj4gPiAgCXBhcnNlci0+cXVldWVb SEFTSF9SWFFfRVRIXS5pYnZfYXR0ciA9IE5VTEw7DQo+ID4gIAkvKiBSZW1vdmUgb3Bwb3NpdGUg a2luZCBvZiBsYXllciBlLmcuIElQdjYgaWYgdGhlIHBhdHRlcm4gaXMgSVB2NC4NCj4gPiAqLyBA QCAtMTEwNSwyMCArMTE3OSw1MCBAQCBtbHg1X2Zsb3dfY29udmVydF9yc3Moc3RydWN0IG1seDVf Zmxvd19wYXJzZQ0KPiAqcGFyc2VyKQ0KPiA+ICAJCXJ0ZV9mcmVlKHBhcnNlci0+cXVldWVbaV0u aWJ2X2F0dHIpOw0KPiA+ICAJCXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIgPSBOVUxMOw0KPiA+ ICAJfQ0KPiA+IC0JLyogUmVtb3ZlIGltcG9zc2libGUgZmxvdyBhY2NvcmRpbmcgdG8gdGhlIFJT UyBjb25maWd1cmF0aW9uLiAqLw0KPiA+IC0JaWYgKGhhc2hfcnhxX2luaXRbcGFyc2VyLT5sYXll cl0uZHBka19yc3NfaGYgJg0KPiA+IC0JICAgIHBhcnNlci0+cnNzX2NvbmYudHlwZXMpIHsNCj4g PiAtCQkvKiBSZW1vdmUgYW55IG90aGVyIGZsb3cuICovDQo+ID4gKwkvKg0KPiA+ICsJICogS2Vl cCBMNCBmbG93cyBhcyBJUCBwYXR0ZXJuIGhhcyB0byBzdXBwb3J0IEw0IFJTUy4NCj4gPiArCSAq IE90aGVyd2lzZSwgb25seSBrZWVwIHRoZSBmbG93IHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4uDQo+ ID4gKwkgKi8NCj4gPiArCWlmIChwYXJzZXItPmxheWVyICE9IGlwKSB7DQo+ID4gKwkJLyogT25s eSBrZWVwIHRoZSBmbG93IHRoYXQgbWF0Y2ggdGhlIHBhdHRlcm4uICovDQo+ID4gIAkJZm9yIChp ID0gaG1pbjsgaSAhPSAoaG1heCArIDEpOyArK2kpIHsNCj4gPiAtCQkJaWYgKGkgPT0gcGFyc2Vy LT5sYXllciB8fCAhcGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0cikNCj4gPiArCQkJaWYgKGkgPT0g cGFyc2VyLT5sYXllcikNCj4gPiAgCQkJCWNvbnRpbnVlOw0KPiA+ICAJCQlydGVfZnJlZShwYXJz ZXItPnF1ZXVlW2ldLmlidl9hdHRyKTsNCj4gPiAgCQkJcGFyc2VyLT5xdWV1ZVtpXS5pYnZfYXR0 ciA9IE5VTEw7DQo+ID4gIAkJfQ0KPiA+IC0JfSBlbHNlIGlmICghcGFyc2VyLT5xdWV1ZVtpcF0u aWJ2X2F0dHIpIHsNCj4gPiAtCQkvKiBubyBSU1MgcG9zc2libGUgd2l0aCB0aGUgY3VycmVudCBj b25maWd1cmF0aW9uLiAqLw0KPiA+IC0JCXBhcnNlci0+cnNzX2NvbmYucXVldWVfbnVtID0gMTsN Cj4gPiAgCX0NCj4gPiArCS8qIFJlbW92ZSBpbXBvc3NpYmxlIGZsb3cgYWNjb3JkaW5nIHRvIHRo ZSBSU1MgY29uZmlndXJhdGlvbi4gKi8NCj4gPiArCWZvciAoaSA9IGhtaW47IGkgIT0gKGhtYXgg KyAxKTsgKytpKSB7DQo+ID4gKwkJaWYgKCFwYXJzZXItPnF1ZXVlW2ldLmlidl9hdHRyKQ0KPiA+ ICsJCQljb250aW51ZTsNCj4gPiArCQlpZiAocGFyc2VyLT5yc3NfY29uZi50eXBlcyAmDQo+ID4g KwkJICAgIGhhc2hfcnhxX2luaXRbaV0uZHBka19yc3NfaGYpIHsNCj4gPiArCQkJcGFyc2VyLT5x dWV1ZVtpXS5oYXNoX2ZpZWxkcyA9DQo+ID4gKwkJCQloYXNoX3J4cV9pbml0W2ldLmhhc2hfZmll bGRzOw0KPiA+ICsJCQlmb3VuZCA9IDE7DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCX0NCj4g PiArCQkvKiBMNCBmbG93IGNvdWxkIGJlIHVzZWQgZm9yIEwzIFJTUy4gKi8NCj4gPiArCQlpZiAo aSA9PSBwYXJzZXItPmxheWVyICYmIGkgPCBpcCAmJg0KPiA+ICsJCSAgICAoaGFzaF9yeHFfaW5p dFtpcF0uZHBka19yc3NfaGYgJg0KPiA+ICsJCSAgICAgcGFyc2VyLT5yc3NfY29uZi50eXBlcykp IHsNCj4gPiArCQkJcGFyc2VyLT5xdWV1ZVtpXS5oYXNoX2ZpZWxkcyA9DQo+ID4gKwkJCQloYXNo X3J4cV9pbml0W2lwXS5oYXNoX2ZpZWxkczsNCj4gPiArCQkJZm91bmQgPSAxOw0KPiA+ICsJCQlj b250aW51ZTsNCj4gPiArCQl9DQo+ID4gKwkJLyogTDMgZmxvdyBhbmQgTDQgaGFzaDogbm9uLXJz cyBMMyBmbG93LiAqLw0KPiA+ICsJCWlmIChpID09IHBhcnNlci0+bGF5ZXIgJiYgaSA9PSBpcCAm JiBmb3VuZCkNCj4gPiArCQkJLyogSVAgcGF0dGVybiBhbmQgTDQgSEYuICovDQo+ID4gKwkJCWNv bnRpbnVlOw0KPiA+ICsJCXJ0ZV9mcmVlKHBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIpOw0KPiA+ ICsJCXBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHIgPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsJaWYg KCFmb3VuZCkNCj4gPiArCQlEUlZfTE9HKFdBUk5JTkcsDQo+ID4gKwkJCSJwb3J0ICV1IHJzcyBo YXNoIGZ1bmN0aW9uIGRvZXNuJ3QgbWF0Y2ggIg0KPiA+ICsJCQkicGF0dGVybiIsIGRldi0+ZGF0 YS0+cG9ydF9pZCk7DQo+IA0KPiBUaGUgaGFzaCBmdW5jdGlvbiBpcyB0b2VwbGl0eiwgeG9yLCBp dCBpcyBub3QgYXBwbGllZCBvbiB0aGUgcGF0dGVybiBidXQNCj4gdXNlZCB0byBjb21wdXRlIGFu IGhhc2ggcmVzdWx0IHVzaW5nIHNvbWUgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFja2V0Lg0KPiBU aGlzIGNvbW1lbnQgaXMgdG90YWxseSB3cm9uZy4NCg0KVGhhbmtzLCBJJ2xsIHJlcGxhY2UgImhh c2ggZnVuY3Rpb24iIHRvICJoYXNoIGZpZWxkcyIuDQoNCj4gDQo+IEFub3RoZXIgcG9pbnQsIHN1 Y2ggbG9nIHdpbGwgdHJpZ2dlciBvbiBhbiBhcHBsaWNhdGlvbiB1c2luZyBNTFg1IFBNRCBidXQN Cj4gbm90IG9uIE1MWDQgUE1EIGFuZCB0aGlzIHNwZWNpZmljYWxseSBiZWNhdXNlIG9uIGhvdyB0 aGUgTklDIHVzaW5nIHRoZQ0KPiBNTFg1IFBNRCBhcmUgbWFkZSBpbnRlcm5hbGx5IChNTFg0IGNh biB1c2UgYSBzaW5nbGUgSGFzaCBSWCBxdWV1ZSB3aGVyZWFzDQo+IE1MWDUgbmVlZHMgYW4gSGFz aCBSeCBxdWV1ZSBwZXIga2luZCBvZiBwcm90b2NvbCkuDQo+IFRoZSBmYWN0IGJlaW5nIGl0IHdp bGwgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvciBJJ2xsICpzdHJvbmdseSoNCj4gc3VnZ2Vz dCB0byByZW1vdmUgc3VjaCBhbm5veWluZyB3YXJuaW5nLg0KDQpBZnRlciBzb21lIHRlc3Qgb24g bWx4NSBjdXJyZW50IGNvZGUsIHRoZSBiZWhhdmlvciBpbiBwcmV2aW91cyBjb2RlIGRvZXNuJ3QN CnNlZW0gdG8gYmUgY29uc2lzdGVudCwgbm90IHN1cmUgd2hldGhlciBpdCBzYW1lIGluIG1seDQg UE1EOg0KLSBQYXR0ZXJuOiBldGgvaXB2NC90Y3AsIFJTUzogVURQLCBjcmVhdGlvbiBzdWNjZXNz Lg0KLSBQYXR0ZXJuOiBldGgvaXB2NCxSU1M6IElQdjYsIGNyZWF0aW9uIGZhaWxlZC4NCg0KVGhp cyBwYXRjaCBzdXBwb3J0IHRoZSAybmQgY2FzZSB3L28gaGFzaCwgYW5kIHdhcm4gdXBvbiB0aGUg Zmlyc3QgY2FzZS4NClRha2UgZXhhbXBsZSBvZiBmaXJzdCBjYXNlLCBhIHBhY2tldCB0aGF0IG1h dGNoZXMgdGhlIHBhdHRlcm4gbXVzdCBiZSBUQ1AsDQpubyByZWFzb24gdG8gaGFzaCBpdCBhcyBU Q1AsIHNhbWUgdG8gdGhlIDJuZCBjYXNlLiBUaGV5IGFyZSB0b3RhbGx5DQp3cm9uZyBjb25maWd1 cmF0aW9uLCBidXQgdG8gYmUgcm9idXN0LCB3YXJuaW5nIGlzIHVzZWQgaGVyZSwgYW5kIHVzZXJz IA0KaGF2ZSB0byBsZWFybiB0aGF0IE5PIGhhc2ggcmVzdWx0IGJlY2F1c2UgSEYgY29uZmlndXJh dGlvbiBtaXNtYXRjaCB0aHJvdWdoIA0KdGhpcyB3YXJuaW5nIG1lc3NhZ2UuDQoNClBsZWFzZSBu b3RlIHRoYXQgYmVsb3cgY2FzZXMgYXJlIHZhbGlkIGFuZCBubyB3YXJuaW5nOg0KLSBQYXR0ZXJu OiBldGgvaXB2NCwgUlNTOiBVRFANCi0gUGF0dGVybjogZXRoL2lwdjQvdWRwLCBSU1M6IElQdjQN Cg0KPiANCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtMTE2NSw3ICsxMjY5 LDcgQEAgbWx4NV9mbG93X2NvbnZlcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAly ZXQgPSBtbHg1X2Zsb3dfY29udmVydF9hY3Rpb25zKGRldiwgYWN0aW9ucywgZXJyb3IsIHBhcnNl cik7DQo+ID4gIAlpZiAocmV0KQ0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gLQlyZXQgPSBtbHg1 X2Zsb3dfY29udmVydF9pdGVtc192YWxpZGF0ZShpdGVtcywgZXJyb3IsIHBhcnNlcik7DQo+ID4g KwlyZXQgPSBtbHg1X2Zsb3dfY29udmVydF9pdGVtc192YWxpZGF0ZShkZXYsIGl0ZW1zLCBlcnJv ciwgcGFyc2VyKTsNCj4gPiAgCWlmIChyZXQpDQo+ID4gIAkJcmV0dXJuIHJldDsNCj4gPiAgCW1s eDVfZmxvd19jb252ZXJ0X2ZpbmFsaXNlKHBhcnNlcik7DQo+ID4gQEAgLTExODYsMTAgKzEyOTAs NiBAQCBtbHg1X2Zsb3dfY29udmVydChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCQlm b3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4gIAkJCXVuc2lnbmVk IGludCBvZmZzZXQ7DQo+ID4NCj4gPiAtCQkJaWYgKCEocGFyc2VyLT5yc3NfY29uZi50eXBlcyAm DQo+ID4gLQkJCSAgICAgIGhhc2hfcnhxX2luaXRbaV0uZHBka19yc3NfaGYpICYmDQo+ID4gLQkJ CSAgICAoaSAhPSBIQVNIX1JYUV9FVEgpKQ0KPiA+IC0JCQkJY29udGludWU7DQo+ID4gIAkJCW9m ZnNldCA9IHBhcnNlci0+cXVldWVbaV0ub2Zmc2V0Ow0KPiA+ICAJCQlwYXJzZXItPnF1ZXVlW2ld Lmlidl9hdHRyID0NCj4gPiAgCQkJCW1seDVfZmxvd19jb252ZXJ0X2FsbG9jYXRlKG9mZnNldCwg ZXJyb3IpOyBAQCAtDQo+IDEyMDEsNiArMTMwMSw3IEBADQo+ID4gbWx4NV9mbG93X2NvbnZlcnQo c3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkvKiBUaGlyZCBzdGVwLiBDb252ZXJzaW9u IHBhcnNlLCBmaWxsIHRoZSBzcGVjaWZpY2F0aW9ucy4gKi8NCj4gPiAgCXBhcnNlci0+aW5uZXIg PSAwOw0KPiA+ICAJcGFyc2VyLT50dW5uZWwgPSAwOw0KPiA+ICsJcGFyc2VyLT5sYXllciA9IEhB U0hfUlhRX0VUSDsNCj4gPiAgCWZvciAoOyBpdGVtcy0+dHlwZSAhPSBSVEVfRkxPV19JVEVNX1RZ UEVfRU5EOyArK2l0ZW1zKSB7DQo+ID4gIAkJc3RydWN0IG1seDVfZmxvd19kYXRhIGRhdGEgPSB7 DQo+ID4gIAkJCS5wYXJzZXIgPSBwYXJzZXIsDQo+ID4gQEAgLTEyMTgsMjMgKzEzMTksMjMgQEAg bWx4NV9mbG93X2NvbnZlcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gIAkJaWYgKHJl dCkNCj4gPiAgCQkJZ290byBleGl0X2ZyZWU7DQo+ID4gIAl9DQo+ID4gLQlpZiAocGFyc2VyLT5t YXJrKQ0KPiA+IC0JCW1seDVfZmxvd19jcmVhdGVfZmxhZ19tYXJrKHBhcnNlciwgcGFyc2VyLT5t YXJrX2lkKTsNCj4gPiAtCWlmIChwYXJzZXItPmNvdW50ICYmIHBhcnNlci0+Y3JlYXRlKSB7DQo+ ID4gLQkJbWx4NV9mbG93X2NyZWF0ZV9jb3VudChkZXYsIHBhcnNlcik7DQo+ID4gLQkJaWYgKCFw YXJzZXItPmNzKQ0KPiA+IC0JCQlnb3RvIGV4aXRfY291bnRfZXJyb3I7DQo+ID4gLQl9DQo+ID4g IAkvKg0KPiA+ICAJICogTGFzdCBzdGVwLiBDb21wbGV0ZSBtaXNzaW5nIHNwZWNpZmljYXRpb24g dG8gcmVhY2ggdGhlIFJTUw0KPiA+ICAJICogY29uZmlndXJhdGlvbi4NCj4gPiAgCSAqLw0KPiA+ ICAJaWYgKCFwYXJzZXItPmRyb3ApDQo+ID4gLQkJcmV0ID0gbWx4NV9mbG93X2NvbnZlcnRfcnNz KHBhcnNlcik7DQo+ID4gKwkJcmV0ID0gbWx4NV9mbG93X2NvbnZlcnRfcnNzKGRldiwgcGFyc2Vy KTsNCj4gPiAgCQlpZiAocmV0KQ0KPiA+ICAJCQlnb3RvIGV4aXRfZnJlZTsNCj4gPiAgCQltbHg1 X2Zsb3dfY29udmVydF9maW5hbGlzZShwYXJzZXIpOw0KPiA+ICAJbWx4NV9mbG93X3VwZGF0ZV9w cmlvcml0eShkZXYsIHBhcnNlciwgYXR0cik7DQo+ID4gKwlpZiAocGFyc2VyLT5tYXJrKQ0KPiA+ ICsJCW1seDVfZmxvd19jcmVhdGVfZmxhZ19tYXJrKHBhcnNlciwgcGFyc2VyLT5tYXJrX2lkKTsN Cj4gPiArCWlmIChwYXJzZXItPmNvdW50ICYmIHBhcnNlci0+Y3JlYXRlKSB7DQo+ID4gKwkJbWx4 NV9mbG93X2NyZWF0ZV9jb3VudChkZXYsIHBhcnNlcik7DQo+ID4gKwkJaWYgKCFwYXJzZXItPmNz KQ0KPiA+ICsJCQlnb3RvIGV4aXRfY291bnRfZXJyb3I7DQo+ID4gKwl9DQo+ID4gIGV4aXRfZnJl ZToNCj4gPiAgCS8qIE9ubHkgdmVyaWZpY2F0aW9uIGlzIGV4cGVjdGVkLCBhbGwgcmVzb3VyY2Vz IHNob3VsZCBiZSByZWxlYXNlZC4NCj4gKi8NCj4gPiAgCWlmICghcGFyc2VyLT5jcmVhdGUpIHsN Cj4gPiBAQCAtMTI4MiwxNyArMTM4MywxMSBAQCBtbHg1X2Zsb3dfY3JlYXRlX2NvcHkoc3RydWN0 IG1seDVfZmxvd19wYXJzZQ0KPiAqcGFyc2VyLCB2b2lkICpzcmMsDQo+ID4gIAlmb3IgKGkgPSAw OyBpICE9IGhhc2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4gIAkJaWYgKCFwYXJzZXItPnF1ZXVl W2ldLmlidl9hdHRyKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiAtCQkvKiBTcGVjaWZpY2F0aW9u IG11c3QgYmUgdGhlIHNhbWUgbDMgdHlwZSBvciBub25lLiAqLw0KPiA+IC0JCWlmIChwYXJzZXIt PmxheWVyID09IEhBU0hfUlhRX0VUSCB8fA0KPiA+IC0JCSAgICAoaGFzaF9yeHFfaW5pdFtwYXJz ZXItPmxheWVyXS5pcF92ZXJzaW9uID09DQo+ID4gLQkJICAgICBoYXNoX3J4cV9pbml0W2ldLmlw X3ZlcnNpb24pIHx8DQo+ID4gLQkJICAgIChoYXNoX3J4cV9pbml0W2ldLmlwX3ZlcnNpb24gPT0g MCkpIHsNCj4gPiAtCQkJZHN0ID0gKHZvaWQgKikoKHVpbnRwdHJfdClwYXJzZXItPnF1ZXVlW2ld Lmlidl9hdHRyICsNCj4gPiAtCQkJCQlwYXJzZXItPnF1ZXVlW2ldLm9mZnNldCk7DQo+ID4gLQkJ CW1lbWNweShkc3QsIHNyYywgc2l6ZSk7DQo+ID4gLQkJCSsrcGFyc2VyLT5xdWV1ZVtpXS5pYnZf YXR0ci0+bnVtX29mX3NwZWNzOw0KPiA+IC0JCQlwYXJzZXItPnF1ZXVlW2ldLm9mZnNldCArPSBz aXplOw0KPiA+IC0JCX0NCj4gPiArCQlkc3QgPSAodm9pZCAqKSgodWludHB0cl90KXBhcnNlci0+ cXVldWVbaV0uaWJ2X2F0dHIgKw0KPiA+ICsJCQkJcGFyc2VyLT5xdWV1ZVtpXS5vZmZzZXQpOw0K PiA+ICsJCW1lbWNweShkc3QsIHNyYywgc2l6ZSk7DQo+ID4gKwkJKytwYXJzZXItPnF1ZXVlW2ld Lmlidl9hdHRyLT5udW1fb2Zfc3BlY3M7DQo+ID4gKwkJcGFyc2VyLT5xdWV1ZVtpXS5vZmZzZXQg Kz0gc2l6ZTsNCj4gPiAgCX0NCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTEzMjMsOSArMTQxOCw3IEBA IG1seDVfZmxvd19jcmVhdGVfZXRoKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtDQo+ICppdGVt LA0KPiA+ICAJCS5zaXplID0gZXRoX3NpemUsDQo+ID4gIAl9Ow0KPiA+DQo+ID4gLQkvKiBEb24n dCB1cGRhdGUgbGF5ZXIgZm9yIHRoZSBpbm5lciBwYXR0ZXJuLiAqLw0KPiA+IC0JaWYgKCFwYXJz ZXItPmlubmVyKQ0KPiA+IC0JCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9FVEg7DQo+ID4gKwlw YXJzZXItPmxheWVyID0gSEFTSF9SWFFfRVRIOw0KPiA+ICAJaWYgKHNwZWMpIHsNCj4gPiAgCQl1 bnNpZ25lZCBpbnQgaTsNCj4gPg0KPiA+IEBAIC0xNDM4LDkgKzE1MzEsNyBAQCBtbHg1X2Zsb3df Y3JlYXRlX2lwdjQoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0NCj4gKml0ZW0sDQo+ID4gIAkJ LnNpemUgPSBpcHY0X3NpemUsDQo+ID4gIAl9Ow0KPiA+DQo+ID4gLQkvKiBEb24ndCB1cGRhdGUg bGF5ZXIgZm9yIHRoZSBpbm5lciBwYXR0ZXJuLiAqLw0KPiA+IC0JaWYgKCFwYXJzZXItPmlubmVy KQ0KPiA+IC0JCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9JUFY0Ow0KPiA+ICsJcGFyc2VyLT5s YXllciA9IEhBU0hfUlhRX0lQVjQ7DQo+ID4gIAlpZiAoc3BlYykgew0KPiA+ICAJCWlmICghbWFz aykNCj4gPiAgCQkJbWFzayA9IGRlZmF1bHRfbWFzazsNCj4gPiBAQCAtMTQ5Myw5ICsxNTg0LDcg QEAgbWx4NV9mbG93X2NyZWF0ZV9pcHY2KGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtDQo+ICpp dGVtLA0KPiA+ICAJCS5zaXplID0gaXB2Nl9zaXplLA0KPiA+ICAJfTsNCj4gPg0KPiA+IC0JLyog RG9uJ3QgdXBkYXRlIGxheWVyIGZvciB0aGUgaW5uZXIgcGF0dGVybi4gKi8NCj4gPiAtCWlmICgh cGFyc2VyLT5pbm5lcikNCj4gPiAtCQlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfSVBWNjsNCj4g PiArCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9JUFY2Ow0KPiA+ICAJaWYgKHNwZWMpIHsNCj4g PiAgCQl1bnNpZ25lZCBpbnQgaTsNCj4gPiAgCQl1aW50MzJfdCB2dGNfZmxvd192YWw7DQo+ID4g QEAgLTE1NjgsMTMgKzE2NTcsMTAgQEAgbWx4NV9mbG93X2NyZWF0ZV91ZHAoY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X2l0ZW0NCj4gKml0ZW0sDQo+ID4gIAkJLnNpemUgPSB1ZHBfc2l6ZSwNCj4gPiAg CX07DQo+ID4NCj4gPiAtCS8qIERvbid0IHVwZGF0ZSBsYXllciBmb3IgdGhlIGlubmVyIHBhdHRl cm4uICovDQo+ID4gLQlpZiAoIXBhcnNlci0+aW5uZXIpIHsNCj4gPiAtCQlpZiAocGFyc2VyLT5s YXllciA9PSBIQVNIX1JYUV9JUFY0KQ0KPiA+IC0JCQlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFf VURQVjQ7DQo+ID4gLQkJZWxzZQ0KPiA+IC0JCQlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfVURQ VjY7DQo+ID4gLQl9DQo+ID4gKwlpZiAocGFyc2VyLT5sYXllciA9PSBIQVNIX1JYUV9JUFY0KQ0K PiA+ICsJCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9VRFBWNDsNCj4gPiArCWVsc2UNCj4gPiAr CQlwYXJzZXItPmxheWVyID0gSEFTSF9SWFFfVURQVjY7DQo+ID4gIAlpZiAoc3BlYykgew0KPiA+ ICAJCWlmICghbWFzaykNCj4gPiAgCQkJbWFzayA9IGRlZmF1bHRfbWFzazsNCj4gPiBAQCAtMTYx NywxMyArMTcwMywxMCBAQCBtbHg1X2Zsb3dfY3JlYXRlX3RjcChjb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfaXRlbQ0KPiAqaXRlbSwNCj4gPiAgCQkuc2l6ZSA9IHRjcF9zaXplLA0KPiA+ICAJfTsNCj4g Pg0KPiA+IC0JLyogRG9uJ3QgdXBkYXRlIGxheWVyIGZvciB0aGUgaW5uZXIgcGF0dGVybi4gKi8N Cj4gPiAtCWlmICghcGFyc2VyLT5pbm5lcikgew0KPiA+IC0JCWlmIChwYXJzZXItPmxheWVyID09 IEhBU0hfUlhRX0lQVjQpDQo+ID4gLQkJCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9UQ1BWNDsN Cj4gPiAtCQllbHNlDQo+ID4gLQkJCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9UQ1BWNjsNCj4g PiAtCX0NCj4gPiArCWlmIChwYXJzZXItPmxheWVyID09IEhBU0hfUlhRX0lQVjQpDQo+ID4gKwkJ cGFyc2VyLT5sYXllciA9IEhBU0hfUlhRX1RDUFY0Ow0KPiA+ICsJZWxzZQ0KPiA+ICsJCXBhcnNl ci0+bGF5ZXIgPSBIQVNIX1JYUV9UQ1BWNjsNCj4gPiAgCWlmIChzcGVjKSB7DQo+ID4gIAkJaWYg KCFtYXNrKQ0KPiA+ICAJCQltYXNrID0gZGVmYXVsdF9tYXNrOw0KPiA+IEBAIC0xNjczLDYgKzE3 NTYsOCBAQCBtbHg1X2Zsb3dfY3JlYXRlX3Z4bGFuKGNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVt DQo+ICppdGVtLA0KPiA+ICAJaWQudm5pWzBdID0gMDsNCj4gPiAgCXBhcnNlci0+aW5uZXIgPSBJ QlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICAJcGFyc2VyLT50dW5uZWwgPSBwdHlwZV9leHRbUFRZ UEVfSURYKFJURV9QVFlQRV9UVU5ORUxfVlhMQU4pXTsNCj4gPiArCXBhcnNlci0+b3V0X2xheWVy ID0gcGFyc2VyLT5sYXllcjsNCj4gPiArCXBhcnNlci0+bGF5ZXIgPSBIQVNIX1JYUV9UVU5ORUw7 DQo+ID4gIAlpZiAoc3BlYykgew0KPiA+ICAJCWlmICghbWFzaykNCj4gPiAgCQkJbWFzayA9IGRl ZmF1bHRfbWFzazsNCj4gPiBAQCAtMTcyNyw2ICsxODEyLDggQEAgbWx4NV9mbG93X2NyZWF0ZV9n cmUoY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2l0ZW0NCj4gPiAqaXRlbSBfX3J0ZV91bnVzZWQsDQo+ ID4NCj4gPiAgCXBhcnNlci0+aW5uZXIgPSBJQlZfRkxPV19TUEVDX0lOTkVSOw0KPiA+ICAJcGFy c2VyLT50dW5uZWwgPSBwdHlwZV9leHRbUFRZUEVfSURYKFJURV9QVFlQRV9UVU5ORUxfR1JFKV07 DQo+ID4gKwlwYXJzZXItPm91dF9sYXllciA9IHBhcnNlci0+bGF5ZXI7DQo+ID4gKwlwYXJzZXIt PmxheWVyID0gSEFTSF9SWFFfVFVOTkVMOw0KPiA+ICAJbWx4NV9mbG93X2NyZWF0ZV9jb3B5KHBh cnNlciwgJnR1bm5lbCwgc2l6ZSk7DQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+IEBAIC0x ODkwLDMzICsxOTc3LDMzIEBAIG1seDVfZmxvd19jcmVhdGVfYWN0aW9uX3F1ZXVlX3JzcyhzdHJ1 Y3QNCj4gcnRlX2V0aF9kZXYgKmRldiwNCj4gPiAgCXVuc2lnbmVkIGludCBpOw0KPiA+DQo+ID4g IAlmb3IgKGkgPSAwOyBpICE9IGhhc2hfcnhxX2luaXRfbjsgKytpKSB7DQo+ID4gLQkJdWludDY0 X3QgaGFzaF9maWVsZHM7DQo+ID4gLQ0KPiA+ICAJCWlmICghcGFyc2VyLT5xdWV1ZVtpXS5pYnZf YXR0cikNCj4gPiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxvdy0+ZnJ4cVtpXS5pYnZfYXR0ciA9 IHBhcnNlci0+cXVldWVbaV0uaWJ2X2F0dHI7DQo+ID4gIAkJcGFyc2VyLT5xdWV1ZVtpXS5pYnZf YXR0ciA9IE5VTEw7DQo+ID4gLQkJaGFzaF9maWVsZHMgPSBoYXNoX3J4cV9pbml0W2ldLmhhc2hf ZmllbGRzOw0KPiA+ICsJCWZsb3ctPmZyeHFbaV0uaGFzaF9maWVsZHMgPSBwYXJzZXItPnF1ZXVl W2ldLmhhc2hfZmllbGRzOw0KPiA+ICAJCWlmICghcHJpdi0+ZGV2LT5kYXRhLT5kZXZfc3RhcnRl ZCkNCj4gPiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxvdy0+ZnJ4cVtpXS5ocnhxID0NCj4gPiAg CQkJbWx4NV9ocnhxX2dldChkZXYsDQo+ID4gIAkJCQkgICAgICBwYXJzZXItPnJzc19jb25mLmtl eSwNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAtCQkJCSAg ICAgIGhhc2hfZmllbGRzLA0KPiA+ICsJCQkJICAgICAgZmxvdy0+ZnJ4cVtpXS5oYXNoX2ZpZWxk cywNCj4gPiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWUsDQo+ID4gIAkJCQkgICAg ICBwYXJzZXItPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiAtCQkJCSAgICAgIHBhcnNlci0+dHVu bmVsKTsNCj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVsLA0KPiA+ICsJCQkJICAgICAgcGFy c2VyLT5yc3NfY29uZi5sZXZlbCk7DQo+ID4gIAkJaWYgKGZsb3ctPmZyeHFbaV0uaHJ4cSkNCj4g PiAgCQkJY29udGludWU7DQo+ID4gIAkJZmxvdy0+ZnJ4cVtpXS5ocnhxID0NCj4gPiAgCQkJbWx4 NV9ocnhxX25ldyhkZXYsDQo+ID4gIAkJCQkgICAgICBwYXJzZXItPnJzc19jb25mLmtleSwNCj4g PiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAtCQkJCSAgICAgIGhh c2hfZmllbGRzLA0KPiA+ICsJCQkJICAgICAgZmxvdy0+ZnJ4cVtpXS5oYXNoX2ZpZWxkcywNCj4g PiAgCQkJCSAgICAgIHBhcnNlci0+cnNzX2NvbmYucXVldWUsDQo+ID4gIAkJCQkgICAgICBwYXJz ZXItPnJzc19jb25mLnF1ZXVlX251bSwNCj4gPiAtCQkJCSAgICAgIHBhcnNlci0+dHVubmVsKTsN Cj4gPiArCQkJCSAgICAgIHBhcnNlci0+dHVubmVsLA0KPiA+ICsJCQkJICAgICAgcGFyc2VyLT5y c3NfY29uZi5sZXZlbCk7DQo+ID4gIAkJaWYgKCFmbG93LT5mcnhxW2ldLmhyeHEpIHsNCj4gPiAg CQkJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3NldChlcnJvciwgRU5PTUVNLA0KPiA+ICAJCQkJCQkg IFJURV9GTE9XX0VSUk9SX1RZUEVfSEFORExFLA0KPiA+IEBAIC0yMDEzLDcgKzIxMDAsNyBAQCBt bHg1X2Zsb3dfY3JlYXRlX2FjdGlvbl9xdWV1ZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldiwN Cj4gPiAgCQlEUlZfTE9HKERFQlVHLCAicG9ydCAldSAlcCB0eXBlICVkIFFQICVwIGlidl9mbG93 ICVwIiwNCj4gPiAgCQkJZGV2LT5kYXRhLT5wb3J0X2lkLA0KPiA+ICAJCQkodm9pZCAqKWZsb3cs IGksDQo+ID4gLQkJCSh2b2lkICopZmxvdy0+ZnJ4cVtpXS5ocnhxLA0KPiA+ICsJCQkodm9pZCAq KWZsb3ctPmZyeHFbaV0uaHJ4cS0+cXAsDQo+ID4gIAkJCSh2b2lkICopZmxvdy0+ZnJ4cVtpXS5p YnZfZmxvdyk7DQo+ID4gIAl9DQo+ID4gIAlpZiAoIWZsb3dzX24pIHsNCj4gPiBAQCAtMjU0MSwx OSArMjYyOCwyMSBAQCBtbHg1X2Zsb3dfc3RhcnQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHN0 cnVjdA0KPiBtbHg1X2Zsb3dzICpsaXN0KQ0KPiA+ICAJCQlmbG93LT5mcnhxW2ldLmhyeHEgPQ0K PiA+ICAJCQkJbWx4NV9ocnhxX2dldChkZXYsIGZsb3ctPnJzc19jb25mLmtleSwNCj4gPiAgCQkJ CQkgICAgICBmbG93LT5yc3NfY29uZi5rZXlfbGVuLA0KPiA+IC0JCQkJCSAgICAgIGhhc2hfcnhx X2luaXRbaV0uaGFzaF9maWVsZHMsDQo+ID4gKwkJCQkJICAgICAgZmxvdy0+ZnJ4cVtpXS5oYXNo X2ZpZWxkcywNCj4gPiAgCQkJCQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZSwNCj4gPiAgCQkJ CQkgICAgICBmbG93LT5yc3NfY29uZi5xdWV1ZV9udW0sDQo+ID4gLQkJCQkJICAgICAgZmxvdy0+ dHVubmVsKTsNCj4gPiArCQkJCQkgICAgICBmbG93LT50dW5uZWwsDQo+ID4gKwkJCQkJICAgICAg Zmxvdy0+cnNzX2NvbmYubGV2ZWwpOw0KPiA+ICAJCQlpZiAoZmxvdy0+ZnJ4cVtpXS5ocnhxKQ0K PiA+ICAJCQkJZ290byBmbG93X2NyZWF0ZTsNCj4gPiAgCQkJZmxvdy0+ZnJ4cVtpXS5ocnhxID0N Cj4gPiAgCQkJCW1seDVfaHJ4cV9uZXcoZGV2LCBmbG93LT5yc3NfY29uZi5rZXksDQo+ID4gIAkJ CQkJICAgICAgZmxvdy0+cnNzX2NvbmYua2V5X2xlbiwNCj4gPiAtCQkJCQkgICAgICBoYXNoX3J4 cV9pbml0W2ldLmhhc2hfZmllbGRzLA0KPiA+ICsJCQkJCSAgICAgIGZsb3ctPmZyeHFbaV0uaGFz aF9maWVsZHMsDQo+ID4gIAkJCQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWUsDQo+ID4gIAkJ CQkJICAgICAgZmxvdy0+cnNzX2NvbmYucXVldWVfbnVtLA0KPiA+IC0JCQkJCSAgICAgIGZsb3ct PnR1bm5lbCk7DQo+ID4gKwkJCQkJICAgICAgZmxvdy0+dHVubmVsLA0KPiA+ICsJCQkJCSAgICAg IGZsb3ctPnJzc19jb25mLmxldmVsKTsNCj4gPiAgCQkJaWYgKCFmbG93LT5mcnhxW2ldLmhyeHEp IHsNCj4gPiAgCQkJCURSVl9MT0coREVCVUcsDQo+ID4gIAkJCQkJInBvcnQgJXUgZmxvdyAlcCBj YW5ub3QgYmUgYXBwbGllZCIsIGRpZmYgLS0NCj4gZ2l0DQo+ID4gYS9kcml2ZXJzL25ldC9tbHg1 L21seDVfZ2x1ZS5jIGIvZHJpdmVycy9uZXQvbWx4NS9tbHg1X2dsdWUuYyBpbmRleA0KPiA+IGJl Njg0ZDM3OC4uNjg3NGFhMzJhIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUvbWx4 NV9nbHVlLmMNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfZ2x1ZS5jDQo+ID4gQEAg LTMxMyw2ICszMTMsMjEgQEAgbWx4NV9nbHVlX2R2X2luaXRfb2JqKHN0cnVjdCBtbHg1ZHZfb2Jq ICpvYmosDQo+IHVpbnQ2NF90IG9ial90eXBlKQ0KPiA+ICAJcmV0dXJuIG1seDVkdl9pbml0X29i aihvYmosIG9ial90eXBlKTsgIH0NCj4gPg0KPiA+ICtzdGF0aWMgc3RydWN0IGlidl9xcCAqDQo+ ID4gK21seDVfZ2x1ZV9kdl9jcmVhdGVfcXAoc3RydWN0IGlidl9jb250ZXh0ICpjb250ZXh0LA0K PiA+ICsJCSAgICAgICBzdHJ1Y3QgaWJ2X3FwX2luaXRfYXR0cl9leCAqcXBfaW5pdF9hdHRyX2V4 LA0KPiA+ICsJCSAgICAgICBzdHJ1Y3QgbWx4NWR2X3FwX2luaXRfYXR0ciAqZHZfcXBfaW5pdF9h dHRyKSB7ICNpZmRlZg0KPiA+ICtIQVZFX0lCVl9ERVZJQ0VfVFVOTkVMX1NVUFBPUlQNCj4gPiAr CXJldHVybiBtbHg1ZHZfY3JlYXRlX3FwKGNvbnRleHQsIHFwX2luaXRfYXR0cl9leCwgZHZfcXBf aW5pdF9hdHRyKTsNCj4gPiArI2Vsc2UNCj4gPiArCSh2b2lkKWNvbnRleHQ7DQo+ID4gKwkodm9p ZClxcF9pbml0X2F0dHJfZXg7DQo+ID4gKwkodm9pZClkdl9xcF9pbml0X2F0dHI7DQo+ID4gKwly ZXR1cm4gTlVMTDsNCj4gPiArI2VuZGlmDQo+ID4gK30NCj4gPiArDQo+ID4gIGNvbnN0IHN0cnVj dCBtbHg1X2dsdWUgKm1seDVfZ2x1ZSA9ICYoY29uc3Qgc3RydWN0IG1seDVfZ2x1ZSl7DQo+ID4g IAkudmVyc2lvbiA9IE1MWDVfR0xVRV9WRVJTSU9OLA0KPiA+ICAJLmZvcmtfaW5pdCA9IG1seDVf Z2x1ZV9mb3JrX2luaXQsDQo+ID4gQEAgLTM1Niw0ICszNzEsNSBAQCBjb25zdCBzdHJ1Y3QgbWx4 NV9nbHVlICptbHg1X2dsdWUgPSAmKGNvbnN0IHN0cnVjdA0KPiBtbHg1X2dsdWUpew0KPiA+ICAJ LmR2X3F1ZXJ5X2RldmljZSA9IG1seDVfZ2x1ZV9kdl9xdWVyeV9kZXZpY2UsDQo+ID4gIAkuZHZf c2V0X2NvbnRleHRfYXR0ciA9IG1seDVfZ2x1ZV9kdl9zZXRfY29udGV4dF9hdHRyLA0KPiA+ICAJ LmR2X2luaXRfb2JqID0gbWx4NV9nbHVlX2R2X2luaXRfb2JqLA0KPiA+ICsJLmR2X2NyZWF0ZV9x cCA9IG1seDVfZ2x1ZV9kdl9jcmVhdGVfcXAsDQo+ID4gIH07DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9nbHVlLmgNCj4gPiBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9n bHVlLmggaW5kZXggYjVlZmVlM2I2Li44NDEzNjM4NzIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy cy9uZXQvbWx4NS9tbHg1X2dsdWUuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9n bHVlLmgNCj4gPiBAQCAtMzEsNiArMzEsMTAgQEAgc3RydWN0IGlidl9jb3VudGVyX3NldF9pbml0 X2F0dHI7ICBzdHJ1Y3QNCj4gPiBpYnZfcXVlcnlfY291bnRlcl9zZXRfYXR0cjsgICNlbmRpZg0K PiA+DQo+ID4gKyNpZm5kZWYgSEFWRV9JQlZfREVWSUNFX1RVTk5FTF9TVVBQT1JUIHN0cnVjdCBt bHg1ZHZfcXBfaW5pdF9hdHRyOw0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gIC8qIExJQl9HTFVF X1ZFUlNJT04gbXVzdCBiZSB1cGRhdGVkIGV2ZXJ5IHRpbWUgdGhpcyBzdHJ1Y3R1cmUgaXMNCj4g PiBtb2RpZmllZC4gKi8gIHN0cnVjdCBtbHg1X2dsdWUgew0KPiA+ICAJY29uc3QgY2hhciAqdmVy c2lvbjsNCj4gPiBAQCAtMTA2LDYgKzExMCwxMCBAQCBzdHJ1Y3QgbWx4NV9nbHVlIHsNCj4gPiAg CQkJCSAgIGVudW0gbWx4NWR2X3NldF9jdHhfYXR0cl90eXBlIHR5cGUsDQo+ID4gIAkJCQkgICB2 b2lkICphdHRyKTsNCj4gPiAgCWludCAoKmR2X2luaXRfb2JqKShzdHJ1Y3QgbWx4NWR2X29iaiAq b2JqLCB1aW50NjRfdCBvYmpfdHlwZSk7DQo+ID4gKwlzdHJ1Y3QgaWJ2X3FwICooKmR2X2NyZWF0 ZV9xcCkNCj4gPiArCQkoc3RydWN0IGlidl9jb250ZXh0ICpjb250ZXh0LA0KPiA+ICsJCSBzdHJ1 Y3QgaWJ2X3FwX2luaXRfYXR0cl9leCAqcXBfaW5pdF9hdHRyX2V4LA0KPiA+ICsJCSBzdHJ1Y3Qg bWx4NWR2X3FwX2luaXRfYXR0ciAqZHZfcXBfaW5pdF9hdHRyKTsNCj4gPiAgfTsNCj4gPg0KPiA+ ICBjb25zdCBzdHJ1Y3QgbWx4NV9nbHVlICptbHg1X2dsdWU7DQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYw0K PiA+IGluZGV4IDA3MzczMmUxNi4uMTk5NzYwOWVjIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMv bmV0L21seDUvbWx4NV9yeHEuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEu Yw0KPiA+IEBAIC0xMzg2LDYgKzEzODYsOCBAQCBtbHg1X2luZF90YWJsZV9pYnZfdmVyaWZ5KHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiA+ICAgKiAgIE51bWJlciBvZiBxdWV1ZXMuDQo+ID4g ICAqIEBwYXJhbSB0dW5uZWwNCj4gPiAgICogICBUdW5uZWwgdHlwZS4NCj4gPiArICogQHBhcmFt IHJzc19sZXZlbA0KPiA+ICsgKiAgIFJTUyBoYXNoIG9uIHR1bm5lbCBsZXZlbC4NCj4gPiAgICoN Cj4gPiAgICogQHJldHVybg0KPiA+ICAgKiAgIFRoZSBWZXJicyBvYmplY3QgaW5pdGlhbGlzZWQs IE5VTEwgb3RoZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+IEBAIC0xMzk0LDEzICsx Mzk2LDE3IEBAIHN0cnVjdCBtbHg1X2hyeHEgKiAgbWx4NV9ocnhxX25ldyhzdHJ1Y3QNCj4gPiBy dGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJICAgICAgY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWlu dDMyX3QgcnNzX2tleV9sZW4sDQo+ID4gIAkgICAgICB1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4g PiAtCSAgICAgIGNvbnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVlc19uLCB1aW50 MzJfdCB0dW5uZWwpDQo+ID4gKwkgICAgICBjb25zdCB1aW50MTZfdCAqcXVldWVzLCB1aW50MzJf dCBxdWV1ZXNfbiwNCj4gPiArCSAgICAgIHVpbnQzMl90IHR1bm5lbCwgdWludDMyX3QgcnNzX2xl dmVsKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgcHJpdiAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3By aXZhdGU7DQo+ID4gIAlzdHJ1Y3QgbWx4NV9ocnhxICpocnhxOw0KPiA+ICAJc3RydWN0IG1seDVf aW5kX3RhYmxlX2lidiAqaW5kX3RibDsNCj4gPiAgCXN0cnVjdCBpYnZfcXAgKnFwOw0KPiA+ICAJ aW50IGVycjsNCj4gPiArI2lmZGVmIEhBVkVfSUJWX0RFVklDRV9UVU5ORUxfU1VQUE9SVA0KPiA+ ICsJc3RydWN0IG1seDVkdl9xcF9pbml0X2F0dHIgcXBfaW5pdF9hdHRyID0gezB9OyAjZW5kaWYN Cj4gPg0KPiA+ICAJcXVldWVzX24gPSBoYXNoX2ZpZWxkcyA/IHF1ZXVlc19uIDogMTsNCj4gPiAg CWluZF90YmwgPSBtbHg1X2luZF90YWJsZV9pYnZfZ2V0KGRldiwgcXVldWVzLCBxdWV1ZXNfbik7 IEBAIC0xNDEwLDYNCj4gPiArMTQxNiwzNiBAQCBtbHg1X2hyeHFfbmV3KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICAJCXJ0ZV9lcnJubyA9IEVOT01FTTsNCj4gPiAgCQlyZXR1cm4gTlVM TDsNCj4gPiAgCX0NCj4gPiArI2lmZGVmIEhBVkVfSUJWX0RFVklDRV9UVU5ORUxfU1VQUE9SVA0K PiA+ICsJaWYgKHR1bm5lbCkgew0KPiA+ICsJCXFwX2luaXRfYXR0ci5jb21wX21hc2sgPQ0KPiA+ ICsJCQkJTUxYNURWX1FQX0lOSVRfQVRUUl9NQVNLX1FQX0NSRUFURV9GTEFHUzsNCj4gPiArCQlx cF9pbml0X2F0dHIuY3JlYXRlX2ZsYWdzID0gTUxYNURWX1FQX0NSRUFURV9UVU5ORUxfT0ZGTE9B RFM7DQo+ID4gKwl9DQo+ID4gKwlxcCA9IG1seDVfZ2x1ZS0+ZHZfY3JlYXRlX3FwKA0KPiA+ICsJ CXByaXYtPmN0eCwNCj4gPiArCQkmKHN0cnVjdCBpYnZfcXBfaW5pdF9hdHRyX2V4KXsNCj4gPiAr CQkJLnFwX3R5cGUgPSBJQlZfUVBUX1JBV19QQUNLRVQsDQo+ID4gKwkJCS5jb21wX21hc2sgPQ0K PiA+ICsJCQkJSUJWX1FQX0lOSVRfQVRUUl9QRCB8DQo+ID4gKwkJCQlJQlZfUVBfSU5JVF9BVFRS X0lORF9UQUJMRSB8DQo+ID4gKwkJCQlJQlZfUVBfSU5JVF9BVFRSX1JYX0hBU0gsDQo+ID4gKwkJ CS5yeF9oYXNoX2NvbmYgPSAoc3RydWN0IGlidl9yeF9oYXNoX2NvbmYpew0KPiA+ICsJCQkJLnJ4 X2hhc2hfZnVuY3Rpb24gPSBJQlZfUlhfSEFTSF9GVU5DX1RPRVBMSVRaLA0KPiA+ICsJCQkJLnJ4 X2hhc2hfa2V5X2xlbiA9IHJzc19rZXlfbGVuID8gcnNzX2tleV9sZW4gOg0KPiA+ICsJCQkJCQkg ICByc3NfaGFzaF9kZWZhdWx0X2tleV9sZW4sDQo+ID4gKwkJCQkucnhfaGFzaF9rZXkgPSByc3Nf a2V5ID8NCj4gPiArCQkJCQkgICAgICAgKHZvaWQgKikodWludHB0cl90KXJzc19rZXkgOg0KPiA+ ICsJCQkJCSAgICAgICByc3NfaGFzaF9kZWZhdWx0X2tleSwNCj4gPiArCQkJCS5yeF9oYXNoX2Zp ZWxkc19tYXNrID0gaGFzaF9maWVsZHMgfA0KPiA+ICsJCQkJCSh0dW5uZWwgJiYgcnNzX2xldmVs ID8NCj4gPiArCQkJCQkodWludDMyX3QpSUJWX1JYX0hBU0hfSU5ORVIgOiAwKSwNCj4gPiArCQkJ fSwNCj4gPiArCQkJLnJ3cV9pbmRfdGJsID0gaW5kX3RibC0+aW5kX3RhYmxlLA0KPiA+ICsJCQku cGQgPSBwcml2LT5wZCwNCj4gPiArCQl9LA0KPiA+ICsJCSZxcF9pbml0X2F0dHIpOw0KPiA+ICsj ZWxzZQ0KPiA+ICAJcXAgPSBtbHg1X2dsdWUtPmNyZWF0ZV9xcF9leA0KPiA+ICAJCShwcml2LT5j dHgsDQo+ID4gIAkJICYoc3RydWN0IGlidl9xcF9pbml0X2F0dHJfZXgpew0KPiA+IEBAIC0xNDIw LDEzICsxNDU2LDE3IEBAIG1seDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ ID4gIAkJCQlJQlZfUVBfSU5JVF9BVFRSX1JYX0hBU0gsDQo+ID4gIAkJCS5yeF9oYXNoX2NvbmYg PSAoc3RydWN0IGlidl9yeF9oYXNoX2NvbmYpew0KPiA+ICAJCQkJLnJ4X2hhc2hfZnVuY3Rpb24g PSBJQlZfUlhfSEFTSF9GVU5DX1RPRVBMSVRaLA0KPiA+IC0JCQkJLnJ4X2hhc2hfa2V5X2xlbiA9 IHJzc19rZXlfbGVuLA0KPiA+IC0JCQkJLnJ4X2hhc2hfa2V5ID0gKHZvaWQgKikodWludHB0cl90 KXJzc19rZXksDQo+ID4gKwkJCQkucnhfaGFzaF9rZXlfbGVuID0gcnNzX2tleV9sZW4gPyByc3Nf a2V5X2xlbiA6DQo+ID4gKwkJCQkJCSAgIHJzc19oYXNoX2RlZmF1bHRfa2V5X2xlbiwNCj4gPiAr CQkJCS5yeF9oYXNoX2tleSA9IHJzc19rZXkgPw0KPiA+ICsJCQkJCSAgICAgICAodm9pZCAqKSh1 aW50cHRyX3QpcnNzX2tleSA6DQo+ID4gKwkJCQkJICAgICAgIHJzc19oYXNoX2RlZmF1bHRfa2V5 LA0KPiA+ICAJCQkJLnJ4X2hhc2hfZmllbGRzX21hc2sgPSBoYXNoX2ZpZWxkcywNCj4gPiAgCQkJ fSwNCj4gPiAgCQkJLnJ3cV9pbmRfdGJsID0gaW5kX3RibC0+aW5kX3RhYmxlLA0KPiA+ICAJCQku cGQgPSBwcml2LT5wZCwNCj4gPiAgCQkgfSk7DQo+ID4gKyNlbmRpZg0KPiA+ICAJaWYgKCFxcCkg ew0KPiA+ICAJCXJ0ZV9lcnJubyA9IGVycm5vOw0KPiA+ICAJCWdvdG8gZXJyb3I7DQo+ID4gQEAg LTE0MzksNiArMTQ3OSw3IEBAIG1seDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs DQo+ID4gIAlocnhxLT5yc3Nfa2V5X2xlbiA9IHJzc19rZXlfbGVuOw0KPiA+ICAJaHJ4cS0+aGFz aF9maWVsZHMgPSBoYXNoX2ZpZWxkczsNCj4gPiAgCWhyeHEtPnR1bm5lbCA9IHR1bm5lbDsNCj4g PiArCWhyeHEtPnJzc19sZXZlbCA9IHJzc19sZXZlbDsNCj4gPiAgCW1lbWNweShocnhxLT5yc3Nf a2V5LCByc3Nfa2V5LCByc3Nfa2V5X2xlbik7DQo+ID4gIAlydGVfYXRvbWljMzJfaW5jKCZocnhx LT5yZWZjbnQpOw0KPiA+ICAJTElTVF9JTlNFUlRfSEVBRCgmcHJpdi0+aHJ4cXMsIGhyeHEsIG5l eHQpOyBAQCAtMTQ0OCw2ICsxNDg5LDggQEANCj4gPiBtbHg1X2hyeHFfbmV3KHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LA0KPiA+ICAJcmV0dXJuIGhyeHE7DQo+ID4gIGVycm9yOg0KPiA+ICAJZXJy ID0gcnRlX2Vycm5vOyAvKiBTYXZlIHJ0ZV9lcnJubyBiZWZvcmUgY2xlYW51cC4gKi8NCj4gPiAr CURSVl9MT0coRVJSLCAicG9ydCAldTogRXJyb3IgY3JlYXRpbmcgSGFzaCBSeCBxdWV1ZSIsDQo+ ID4gKwkJZGV2LT5kYXRhLT5wb3J0X2lkKTsNCj4gDQo+IEludGVybmFsIGRldmVsb3BlciBsb2cg c2hvdWxkIG5vdCByZW1haW4gaW4gdGhlIGNvZGUuICBUaGUgdXNlciB3aWxsDQo+IGFscmVhZHkg aGF2ZSBhIGZsb3cgY3JlYXRpb24gZmFpbHVyZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhbm5veSBo aW0gd2l0aA0KPiBtZXNzYWdlcyBoZSBjYW5ub3QgdW5kZXJzdGFuZC4NCj4gDQo+ID4gIAltbHg1 X2luZF90YWJsZV9pYnZfcmVsZWFzZShkZXYsIGluZF90YmwpOw0KPiA+ICAJaWYgKHFwKQ0KPiA+ ICAJCWNsYWltX3plcm8obWx4NV9nbHVlLT5kZXN0cm95X3FwKHFwKSk7DQo+ID4gQEAgLTE0Njks NiArMTUxMiw4IEBAIG1seDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4g ICAqICAgTnVtYmVyIG9mIHF1ZXVlcy4NCj4gPiAgICogQHBhcmFtIHR1bm5lbA0KPiA+ICAgKiAg IFR1bm5lbCB0eXBlLg0KPiA+ICsgKiBAcGFyYW0gcnNzX2xldmVsDQo+ID4gKyAqICAgUlNTIGhh c2ggb24gdHVubmVsIGxldmVsDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4NCj4gPiAgICogICBB biBoYXNoIFJ4IHF1ZXVlIG9uIHN1Y2Nlc3MuDQo+ID4gQEAgLTE0NzcsNyArMTUyMiw4IEBAIHN0 cnVjdCBtbHg1X2hyeHEgKiAgbWx4NV9ocnhxX2dldChzdHJ1Y3QNCj4gPiBydGVfZXRoX2RldiAq ZGV2LA0KPiA+ICAJICAgICAgY29uc3QgdWludDhfdCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tl eV9sZW4sDQo+ID4gIAkgICAgICB1aW50NjRfdCBoYXNoX2ZpZWxkcywNCj4gPiAtCSAgICAgIGNv bnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVlc19uLCB1aW50MzJfdCB0dW5uZWwp DQo+ID4gKwkgICAgICBjb25zdCB1aW50MTZfdCAqcXVldWVzLCB1aW50MzJfdCBxdWV1ZXNfbiwN Cj4gPiArCSAgICAgIHVpbnQzMl90IHR1bm5lbCwgdWludDMyX3QgcnNzX2xldmVsKQ0KPiANCj4g cnNzX2xldmVsID4gMSBtZWFucyB0dW5uZWwsIHRoZXJlIGlzIG5vIG5lZWQgdG8gaGF2ZSBhIHJl ZHVuZGFudA0KPiBpbmZvcm1hdGlvbi4NCj4gDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBwcml2ICpw cml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiAgCXN0cnVjdCBtbHg1X2hyeHEgKmhy eHE7DQo+ID4gQEAgLTE0OTQsNiArMTU0MCw4IEBAIG1seDVfaHJ4cV9nZXQoc3RydWN0IHJ0ZV9l dGhfZGV2ICpkZXYsDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+ICAJCWlmIChocnhxLT50dW5uZWwg IT0gdHVubmVsKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiArCQlpZiAoaHJ4cS0+cnNzX2xldmVs ICE9IHJzc19sZXZlbCkNCj4gPiArCQkJY29udGludWU7DQo+ID4gIAkJaW5kX3RibCA9IG1seDVf aW5kX3RhYmxlX2lidl9nZXQoZGV2LCBxdWV1ZXMsIHF1ZXVlc19uKTsNCj4gPiAgCQlpZiAoIWlu ZF90YmwpDQo+ID4gIAkJCWNvbnRpbnVlOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9t bHg1L21seDVfcnh0eC5oDQo+ID4gYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oIGluZGV4 IGQzNTYwNWI1NS4uNjJjZjU1MTA5IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L21seDUv bWx4NV9yeHR4LmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oDQo+ID4g QEAgLTE0Nyw2ICsxNDcsNyBAQCBzdHJ1Y3QgbWx4NV9ocnhxIHsNCj4gPiAgCXN0cnVjdCBpYnZf cXAgKnFwOyAvKiBWZXJicyBxdWV1ZSBwYWlyLiAqLw0KPiA+ICAJdWludDY0X3QgaGFzaF9maWVs ZHM7IC8qIFZlcmJzIEhhc2ggZmllbGRzLiAqLw0KPiA+ICAJdWludDMyX3QgdHVubmVsOyAvKiBU dW5uZWwgdHlwZS4gKi8NCj4gPiArCXVpbnQzMl90IHJzc19sZXZlbDsgLyogUlNTIG9uIHR1bm5l bCBsZXZlbC4gKi8NCj4gPiAgCXVpbnQzMl90IHJzc19rZXlfbGVuOyAvKiBIYXNoIGtleSBsZW5n dGggaW4gYnl0ZXMuICovDQo+ID4gIAl1aW50OF90IHJzc19rZXlbXTsgLyogSGFzaCBrZXkuICov DQo+ID4gIH07DQo+ID4gQEAgLTI1MSwxMiArMjUyLDEyIEBAIHN0cnVjdCBtbHg1X2hyeHEgKm1s eDVfaHJ4cV9uZXcoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ICpkZXYsDQo+ID4gIAkJCQljb25zdCB1 aW50OF90ICpyc3Nfa2V5LCB1aW50MzJfdCByc3Nfa2V5X2xlbiwNCj4gPiAgCQkJCXVpbnQ2NF90 IGhhc2hfZmllbGRzLA0KPiA+ICAJCQkJY29uc3QgdWludDE2X3QgKnF1ZXVlcywgdWludDMyX3Qg cXVldWVzX24sDQo+ID4gLQkJCQl1aW50MzJfdCB0dW5uZWwpOw0KPiA+ICsJCQkJdWludDMyX3Qg dHVubmVsLCB1aW50MzJfdCByc3NfbGV2ZWwpOw0KPiA+ICBzdHJ1Y3QgbWx4NV9ocnhxICptbHg1 X2hyeHFfZ2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICAJCQkJY29uc3QgdWludDhf dCAqcnNzX2tleSwgdWludDMyX3QgcnNzX2tleV9sZW4sDQo+ID4gIAkJCQl1aW50NjRfdCBoYXNo X2ZpZWxkcywNCj4gPiAgCQkJCWNvbnN0IHVpbnQxNl90ICpxdWV1ZXMsIHVpbnQzMl90IHF1ZXVl c19uLA0KPiA+IC0JCQkJdWludDMyX3QgdHVubmVsKTsNCj4gPiArCQkJCXVpbnQzMl90IHR1bm5l bCwgdWludDMyX3QgcnNzX2xldmVsKTsNCj4gPiAgaW50IG1seDVfaHJ4cV9yZWxlYXNlKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9ocnhxDQo+ID4gKmh4cnEpOyAgaW50IG1s eDVfaHJ4cV9pYnZfdmVyaWZ5KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsgIHVpbnQ2NF90DQo+ ID4gbWx4NV9nZXRfcnhfcG9ydF9vZmZsb2Fkcyh2b2lkKTsNCj4gPiAtLQ0KPiA+IDIuMTMuMw0K PiA+DQo+IA0KPiBUaGFua3MsDQo+IC0tDQo+IE7DqWxpbyBMYXJhbmplaXJvDQo+IDZXSU5EDQo=