From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 529B2A0032; Fri, 1 Oct 2021 19:58:33 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BBDAB41149; Fri, 1 Oct 2021 19:58:32 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150073.outbound.protection.outlook.com [40.107.15.73]) by mails.dpdk.org (Postfix) with ESMTP id 070DC40040 for ; Fri, 1 Oct 2021 19:58:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NcuIIeWUHj5rrh0LLrSnWl0dcOCWfDnlDenfrXEIfQQ=; b=qme3Cn7YfNLbDu5PMi0zzcu2+QvHyK05yARgxGjGIyvD1j0njounp76LruPWT4AkhNwA6Pc5Zx5ZAPPR8BRbikxpfQEXvhwQO1+MtThhyX7fjhZKHmb1DtgeR5g0GKaOGiWKI19qw1riwBtsmNXSsxQNDepG44Sff92ou/y+kbc= Received: from AM6P191CA0058.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:7f::35) by VI1PR0801MB1758.eurprd08.prod.outlook.com (2603:10a6:800:53::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15; Fri, 1 Oct 2021 17:58:27 +0000 Received: from VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:7f:cafe::d3) by AM6P191CA0058.outlook.office365.com (2603:10a6:209:7f::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.15 via Frontend Transport; Fri, 1 Oct 2021 17:58:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT027.mail.protection.outlook.com (10.152.18.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14 via Frontend Transport; Fri, 1 Oct 2021 17:58:27 +0000 Received: ("Tessian outbound 71ebfb754289:v103"); Fri, 01 Oct 2021 17:58:24 +0000 X-CR-MTA-TID: 64aa7808 Received: from 9640d4b5651a.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 56FA0720-4780-4894-AE3C-462E5CEE6DDE.1; Fri, 01 Oct 2021 17:58:12 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9640d4b5651a.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 01 Oct 2021 17:58:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hI4uIFiY1R+Rgh1CFuC2uTvJzSSKa3pVWB1zsJ+m0Em9MdJ0DwN98C0RcUPpEDUQbXXQr3BZ1wT5ixzx658vSpWcXwnMwv0u8UO++LxXsfyPpow4dUSbaYpf/rOXM4LQR0dr6ll7c8uAdkERP+/rGDTujt13sKYgt1ugi5dyqQKVL7AY+skQNeieNc2/eYHdZZxRbZnuHDjT+M/5wi2BWj6gEaqxigbWxUf5DOfco9sLBzmSE9VPOX/CQgLyh6B1RsjU0nBBYvqsshi3+HCfYeZyp2uwjRxWBKp0ZHsLiWDlpst8xIqVV1mKjLTzK8Y0p0p1hSYJkeHJ6Cu7RCsAOA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NcuIIeWUHj5rrh0LLrSnWl0dcOCWfDnlDenfrXEIfQQ=; b=T4jiRm6vVAyXryyddhEKwxG/gmyZCTkoxvDLjOvaiLRDdXQ5PY3iQTYrqQ4gbAV/NqBKyitBZGPfEZQXo652tOfu9cSBRiFOwtYwwOfmoZHzXtQ8lz2jJJWC94eXP07b6OT5423LpbkTHdyj2ZWhMYgQ1CCokx0/EcRxOJKr275e/8Dlk+zPCiVd+S3uNJrOgP6FTQBKRmJQ8G8gshZbEVUsEfU2Y4+SDrPefllRa8dzYpeqhKrA7JwCAJF7fV7Y2+sOeXp1bMEWNMg3Tvn4ns3FHLQ3yrcWAWf5EiaRCc3fvihkIO+xS697ylkaWc8GcDF6kufCZvnZWPlBU9lF3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NcuIIeWUHj5rrh0LLrSnWl0dcOCWfDnlDenfrXEIfQQ=; b=qme3Cn7YfNLbDu5PMi0zzcu2+QvHyK05yARgxGjGIyvD1j0njounp76LruPWT4AkhNwA6Pc5Zx5ZAPPR8BRbikxpfQEXvhwQO1+MtThhyX7fjhZKHmb1DtgeR5g0GKaOGiWKI19qw1riwBtsmNXSsxQNDepG44Sff92ou/y+kbc= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DBBPR08MB6202.eurprd08.prod.outlook.com (2603:10a6:10:209::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.19; Fri, 1 Oct 2021 17:57:59 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::8187:ccbc:30d:3464]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::8187:ccbc:30d:3464%6]) with mapi id 15.20.4544.025; Fri, 1 Oct 2021 17:57:59 +0000 From: Honnappa Nagarahalli To: Jerin Jacob CC: Dharmik Thakkar , Olivier Matz , Andrew Rybchenko , dpdk-dev , nd , Ruifeng Wang , nd Thread-Topic: [dpdk-dev] [RFC] mempool: implement index-based per core cache Thread-Index: AQHXtsE23FbH85c80U2vmaazO82iNau+R+TwgAAfIgCAAAbMIA== Date: Fri, 1 Oct 2021 17:57:59 +0000 Message-ID: References: <20210930172735.2675627-1-dharmik.thakkar@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: DEDB7D8DC346BB4F858BDCE3A980AF14.0 x-checkrecipientchecked: true Authentication-Results-Original: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: bcdca66c-b5f4-4e9f-0504-08d985051205 x-ms-traffictypediagnostic: DBBPR08MB6202:|VI1PR0801MB1758: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: YEo0Q+mG0ej5IzgRSaGG/yQWYB5kPR13t+TzhKIt+BoMwM1Y/kw+zTfgy8g2jqF0+x55AknYM7JVKj4nnrLPouqj3t2RPR7MZ31AKny05WOwyCxzsYp0Y39KJxojL1fuRmF2GYL1P9GP7PWe1jxybCuK39ElbKWzdQoR91hMN7auUZ5orr3jWlHfEL/F0lo5aeQL5mNI40/VO+IrtkG3ziS7jkh48aRI9N3e9n/mxHqI5as4YS7XT83zo+LhtuOvPdDClVzTA1zIkAsbnoi+EepWUE865YT2rrJxNBxW2J9lxB+p5wSUYwtLTuixGMx19RUVt7veNYl+mI3MaWe30znXnfeSJNcfOVvttwGgX1lYZMSVXqxccYVaEwVdvwUGujT+3D7q1EC7CkBTB6hX5o7FQvbyc+tan4dkKrsuZqb99iIcnoEh0H/eRIj5UCoh3BJuKgrJqBCaeRj2HSQd0n+wMebGV7+vML6/6NioQgh1pTGQV9bCPWQWlZZ0/zU5m9v2XgTHG9YzJG9AYQfa0e9vmCgUhKwIDVgbA6+5pFK80ZxBFdDc6m5JzF6rFhMyG+fOMYARSnq86Lg2lIST0vPwF2wH4aD7mfr4RtDge+Y+THHn5fTUHiAUJrW0xEbM6gCV0HOWVNN9CjvBfZUEEnUE8yVq7H3AJ+D94dQhkT+wYAWz1/kOGbrAGzD+S/YgeWopaAsUIgIVwAgzbAhDsw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6506007)(52536014)(54906003)(4326008)(26005)(122000001)(53546011)(38100700002)(7696005)(5660300002)(316002)(2906002)(30864003)(71200400001)(66946007)(38070700005)(83380400001)(9686003)(76116006)(66476007)(6916009)(33656002)(8676002)(186003)(55016002)(86362001)(8936002)(66556008)(66446008)(64756008)(508600001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6202 Original-Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 44674cdd-ea02-4b2a-1eab-08d9850501a6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5kxLp5y8k7NXYu9baSi1hGlomIqkU7clfYzXU0fm2a7zecwYbVNKFh22SDHNGImFxuMeTZZJbSAEqIhlpify5jinwMOHV/9VTL//K0Cfjy9ZjQKJTAUWzlOwkD/d6gTmykLTlF6ivUS8Xwomqs8wtgVfmpNohhRFmUyb9Sa1eOoFEF3lcvLCBc2bpwh3mWCK1pL8AcHQDz0T/3svLhlNzGl3YrVYkf8EAUSFvGdoCT7tr1pFWSoKcdClI077Ka/00XV+wKmT0Ju8P/DeX/wVkK3U+7hKoEqMMypSEDDiskdcWSlNEimDCQuB15OwMphtCHVkW0MVjcruycUoKxXhRrkwnrQdzTd9Z18Elq0aeIMwVuju3alO3Saqtx2xtfE+++DQegFQXqOZeG7rFOnO3SAgFW11OuifffqZf+ShHZfm1/7D7TgoPJRaqH+0id0jMAnHt8K+/t1PKjHQ9wS/KyJAOYKHfjkJ3Ie3fhjVAz4VurDKdFRCJufIo8VWT/jdw/kw18vhi2JOcXMkIYbwj8UYl/wf6InCWGRSChRW6PBmgt07xXRmG1SKKYLHmWbiB4mxYKxbCUTMP8FnUco8Vy2cfe4J/N8RIPkYqceBZn239wBYJQQ/RzmmAewOd8dACo2iSBxqnuTnxt4mRvh7yKUbrVXs/+d3wZ5CnPXVZ4wk4qSux450XqXmqiyQhfCoQhun5g1oMELw/vNL7ShRXw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(46966006)(36840700001)(186003)(8676002)(508600001)(55016002)(82310400003)(36860700001)(9686003)(83380400001)(5660300002)(30864003)(316002)(86362001)(6862004)(47076005)(336012)(6506007)(2906002)(52536014)(8936002)(70586007)(4326008)(81166007)(356005)(53546011)(54906003)(33656002)(26005)(7696005)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2021 17:58:27.1856 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bcdca66c-b5f4-4e9f-0504-08d985051205 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1758 Subject: Re: [dpdk-dev] [RFC] mempool: implement index-based per core cache X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" PHNuaXA+DQo+ID4NCj4gPiA+DQo+ID4gPiBPbiBUaHUsIFNlcCAzMCwgMjAyMSBhdCAxMDo1NyBQ TSBEaGFybWlrIFRoYWtrYXINCj4gPiA+IDxkaGFybWlrLnRoYWtrYXJAYXJtLmNvbT4gd3JvdGU6 DQo+ID4gPiA+DQo+ID4gPiA+IEN1cnJlbnQgbWVtcG9vbCBwZXIgY29yZSBjYWNoZSBpbXBsZW1l bnRhdGlvbiBpcyBiYXNlZCBvbiBwb2ludGVyDQo+ID4gPiA+IEZvciBtb3N0IGFyY2hpdGVjdHVy ZXMsIGVhY2ggcG9pbnRlciBjb25zdW1lcyA2NGIgUmVwbGFjZSBpdCB3aXRoDQo+ID4gPiA+IGlu ZGV4LWJhc2VkIGltcGxlbWVudGF0aW9uLCB3aGVyZSBpbiBlYWNoIGJ1ZmZlciBpcyBhZGRyZXNz ZWQgYnkNCj4gPiA+ID4gKHBvb2wgYWRkcmVzcyArIGluZGV4KSBJdCB3aWxsIHJlZHVjZSBtZW1v cnkgcmVxdWlyZW1lbnRzDQo+ID4gPiA+DQo+ID4gPiA+IEwzRndkIHBlcmZvcm1hbmNlIHRlc3Rp bmcgcmV2ZWFscyBtaW5vciBpbXByb3ZlbWVudHMgaW4gdGhlIGNhY2hlDQo+ID4gPiA+IHBlcmZv cm1hbmNlIGFuZCBubyBjaGFuZ2UgaW4gdGhyb3VnaHB1dA0KPiA+ID4gPg0KPiA+ID4gPiBNaWNy by1iZW5jaG1hcmtpbmcgdGhlIHBhdGNoIHVzaW5nIG1lbXBvb2xfcGVyZl90ZXN0IHNob3dzDQo+ ID4gPiA+IHNpZ25pZmljYW50IGltcHJvdmVtZW50IHdpdGggbWFqb3JpdHkgb2YgdGhlIHRlc3Qg Y2FzZXMNCj4gPiA+ID4NCj4gPiA+ID4gRnV0dXJlIHBsYW4gaW52b2x2ZXMgcmVwbGFjaW5nIGds b2JhbCBwb29sJ3MgcG9pbnRlci1iYXNlZA0KPiA+ID4gPiBpbXBsZW1lbnRhdGlvbiB3aXRoIGlu ZGV4LWJhc2VkIGltcGxlbWVudGF0aW9uDQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IERoYXJtaWsgVGhha2thciA8ZGhhcm1pay50aGFra2FyQGFybS5jb20+DQo+ID4gPg0KPiA+ID4N Cj4gPiA+IFNhbmUgaWRlYS4gTGlrZSBWUFAsIHdlIHRyaWVkIHRvIGRvIHRoaXMgZm9yIHJ0ZV9n cmFwaCwgYnV0IG5vdA0KPiA+ID4gb2JzZXJ2ZWQgbXVjaCBnYWluLg0KPiA+ID4gU2luY2UgbGNv cmUgY2FjaGUgaXMgdHlwaWNhbGx5IDUxMiwgbWF5YmUgdGhlcmUgaXMgYSBnYWluIG9uIHRoZSBt ZW1wb29sDQo+IHBhdGguDQo+ID4gPiBBbHNvLCBTaW5jZSB5b3UgYXJlIGVuYWJsaW5nIG9ubHkg Zm9yIGxvY2FsIGNhY2hlLCBpdCBpcyBnb29kIGFzDQo+ID4gPiBtZW1wb29sIGRyaXZlcnMgY2Fu IHdvcmsgYXMtaXMuKGkuZSBIVyBkcml2ZXJzIHdvcmtzIHdpdGggNjRiaXQpIEkNCj4gPiA+IHRo aW5rLCBnZXR0aW5nIG1vcmUgcGVyZm9ybWFuY2UgbnVtYmVycyBmb3IgdmFyaW91cyBjYXNlcyBt YXkgYmUgdGhlDQo+IG5leHQgc3RlcC4NCj4gPiBUaGUgZ2FpbiBpcyBub3Qgb2JzZXJ2ZWQgaW4g dGVybXMgb2YgUFBTIGltcHJvdmVtZW50LCBidXQgZG8gc2VlIHNvbWUNCj4gaW1wcm92ZW1lbnRz IHRoYXQgUE1VcyBpbmRpY2F0ZS4gVGhpcyBhcHByb2FjaCBkZWZpbml0ZWx5IHJlc3VsdHMgaW4g c2F2aW5ncw0KPiBpbiBudW1iZXIgb2YgY2FjaGUgbGluZXMgdXRpbGl6ZWQuDQo+IA0KPiBPSy4g SU1PLCBJZiBQUFMgaGFzIHJlZ3Jlc3Npb24gdGhlbiB0aGlzIHBhdGggaXMgbm90IHZpYWJsZSwg ZWxzZSBpdCBtYXkgYmUgT0suDQpQUFMgaGFzIG5vdCByZWdyZXNzZWQuIEl0IGhhcyBpbXByb3Zl ZCwgYnV0IG5vdCBzaWduaWZpY2FudGx5Lg0KT3RoZXIgd2F5IHRvIGxvb2sgYXQgdGhpcyBpcywg d2UgYXJlIGRvaW5nIHRoZSBzYW1lIHdvcmsgd2l0aCBsZXNzIGFtb3VudCBvZiByZXNvdXJjZXMu DQoNCj4gDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvbWVt cG9vbC9yaW5nL3J0ZV9tZW1wb29sX3JpbmcuYyB8ICAyICstDQo+ID4gPiA+ICBsaWIvbWVtcG9v bC9ydGVfbWVtcG9vbC5jICAgICAgICAgICAgICAgfCAgOCArKysNCj4gPiA+ID4gIGxpYi9tZW1w b29sL3J0ZV9tZW1wb29sLmggICAgICAgICAgICAgICB8IDc0ICsrKysrKysrKysrKysrKysrKysr KystLS0NCj4gPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgMTAgZGVs ZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXBvb2wv cmluZy9ydGVfbWVtcG9vbF9yaW5nLmMNCj4gPiA+ID4gYi9kcml2ZXJzL21lbXBvb2wvcmluZy9y dGVfbWVtcG9vbF9yaW5nLmMNCj4gPiA+ID4gaW5kZXggYjFmMDlmZjI4ZjRkLi5lNTU5MTNlNDdm MjEgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvbWVtcG9vbC9yaW5nL3J0ZV9tZW1wb29s X3JpbmcuYw0KPiA+ID4gPiArKysgYi9kcml2ZXJzL21lbXBvb2wvcmluZy9ydGVfbWVtcG9vbF9y aW5nLmMNCj4gPiA+ID4gQEAgLTEwMSw3ICsxMDEsNyBAQCByaW5nX2FsbG9jKHN0cnVjdCBydGVf bWVtcG9vbCAqbXAsIHVpbnQzMl90DQo+ID4gPiByZ19mbGFncykNCj4gPiA+ID4gICAgICAgICAg ICAgICAgIHJldHVybiAtcnRlX2Vycm5vOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgIG1wLT5w b29sX2RhdGEgPSByOw0KPiA+ID4gPiAtDQo+ID4gPiA+ICsgICAgICAgbXAtPmxvY2FsX2NhY2hl X2Jhc2VfYWRkciA9ICZyWzFdOw0KPiA+ID4gPiAgICAgICAgIHJldHVybiAwOw0KPiA+ID4gPiAg fQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wu YyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmMNCj4gPiA+ID4gaW5kZXggNTlhNTg4NDI1YmQ2 Li40MjRiZGIxOWMzMjMgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2xpYi9tZW1wb29sL3J0ZV9tZW1w b29sLmMNCj4gPiA+ID4gKysrIGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuYw0KPiA+ID4gPiBA QCAtNDgwLDYgKzQ4MCw3IEBAIHJ0ZV9tZW1wb29sX3BvcHVsYXRlX2RlZmF1bHQoc3RydWN0DQo+ ID4gPiBydGVfbWVtcG9vbCAqbXApDQo+ID4gPiA+ICAgICAgICAgaW50IHJldDsNCj4gPiA+ID4g ICAgICAgICBib29sIG5lZWRfaW92YV9jb250aWdfb2JqOw0KPiA+ID4gPiAgICAgICAgIHNpemVf dCBtYXhfYWxsb2Nfc2l6ZSA9IFNJWkVfTUFYOw0KPiA+ID4gPiArICAgICAgIHVuc2lnbmVkIGxj b3JlX2lkOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgIHJldCA9IG1lbXBvb2xfb3BzX2FsbG9j X29uY2UobXApOw0KPiA+ID4gPiAgICAgICAgIGlmIChyZXQgIT0gMCkNCj4gPiA+ID4gQEAgLTYw MCw2ICs2MDEsMTMgQEAgcnRlX21lbXBvb2xfcG9wdWxhdGVfZGVmYXVsdChzdHJ1Y3QNCj4gPiA+ IHJ0ZV9tZW1wb29sICptcCkNCj4gPiA+ID4gICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gICAg ICAgICB9DQo+ID4gPiA+DQo+ID4gPiA+ICsgICAgICAgLyogSW5pdCBhbGwgZGVmYXVsdCBjYWNo ZXMuICovDQo+ID4gPiA+ICsgICAgICAgaWYgKG1wLT5jYWNoZV9zaXplICE9IDApIHsNCj4gPiA+ ID4gKyAgICAgICAgICAgICAgIGZvciAobGNvcmVfaWQgPSAwOyBsY29yZV9pZCA8IFJURV9NQVhf TENPUkU7IGxjb3JlX2lkKyspDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIG1wLT5s b2NhbF9jYWNoZVtsY29yZV9pZF0ubG9jYWxfY2FjaGVfYmFzZV92YWx1ZSA9DQo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2b2lkICoqKW1wLT5sb2NhbF9jYWNoZV9i YXNlX2FkZHI7DQo+ID4gPiA+ICsgICAgICAgfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICAgICAgICAg cnRlX21lbXBvb2xfdHJhY2VfcG9wdWxhdGVfZGVmYXVsdChtcCk7DQo+ID4gPiA+ICAgICAgICAg cmV0dXJuIG1wLT5zaXplOw0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBv b2wvcnRlX21lbXBvb2wuaCBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPiA+ID4gaW5k ZXggNDIzNWQ2ZjBiZjJiLi41NDU0MDVjMGQzY2UgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2xpYi9t ZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPiA+ID4gKysrIGIvbGliL21lbXBvb2wvcnRlX21lbXBv b2wuaA0KPiA+ID4gPiBAQCAtNTEsNiArNTEsOCBAQA0KPiA+ID4gPiAgI2luY2x1ZGUgPHJ0ZV9t ZW1jcHkuaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4gPiA+DQo+ID4g PiA+ICsjaW5jbHVkZSA8YXJtX25lb24uaD4NCj4gPiA+ID4gKw0KPiA+ID4gPiAgI2luY2x1ZGUg InJ0ZV9tZW1wb29sX3RyYWNlX2ZwLmgiDQo+ID4gPiA+DQo+ID4gPiA+ICAjaWZkZWYgX19jcGx1 c3BsdXMNCj4gPiA+ID4gQEAgLTkxLDExICs5MywxMiBAQCBzdHJ1Y3QgcnRlX21lbXBvb2xfY2Fj aGUgew0KPiA+ID4gPiAgICAgICAgIHVpbnQzMl90IHNpemU7ICAgICAgICAvKio8IFNpemUgb2Yg dGhlIGNhY2hlICovDQo+ID4gPiA+ICAgICAgICAgdWludDMyX3QgZmx1c2h0aHJlc2g7IC8qKjwg VGhyZXNob2xkIGJlZm9yZSB3ZSBmbHVzaA0KPiA+ID4gPiBleGNlc3MgZWxlbWVudHMNCj4gPiA+ ICovDQo+ID4gPiA+ICAgICAgICAgdWludDMyX3QgbGVuOyAgICAgICAgIC8qKjwgQ3VycmVudCBj YWNoZSBjb3VudCAqLw0KPiA+ID4gPiArICAgICAgIHZvaWQgKmxvY2FsX2NhY2hlX2Jhc2VfdmFs dWU7IC8qKjwgQmFzZSB2YWx1ZSB0byBjYWxjdWxhdGUNCj4gPiA+ID4gKyBpbmRpY2VzICovDQo+ ID4gPiA+ICAgICAgICAgLyoNCj4gPiA+ID4gICAgICAgICAgKiBDYWNoZSBpcyBhbGxvY2F0ZWQg dG8gdGhpcyBzaXplIHRvIGFsbG93IGl0IHRvIG92ZXJmbG93IGluIGNlcnRhaW4NCj4gPiA+ID4g ICAgICAgICAgKiBjYXNlcyB0byBhdm9pZCBuZWVkbGVzcyBlbXB0eWluZyBvZiBjYWNoZS4NCj4g PiA+ID4gICAgICAgICAgKi8NCj4gPiA+ID4gLSAgICAgICB2b2lkICpvYmpzW1JURV9NRU1QT09M X0NBQ0hFX01BWF9TSVpFICogM107IC8qKjwgQ2FjaGUNCj4gb2JqZWN0cw0KPiA+ID4gKi8NCj4g PiA+ID4gKyAgICAgICB1aW50MzJfdCBvYmpzW1JURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFICog M107IC8qKjwgQ2FjaGUNCj4gPiA+ID4gKyBvYmplY3RzICovDQo+ID4gPiA+ICB9IF9fcnRlX2Nh Y2hlX2FsaWduZWQ7DQo+ID4gPiA+DQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gQEAgLTE3Miw3ICsx NzUsNiBAQCBzdHJ1Y3QgcnRlX21lbXBvb2xfb2JqdGxyIHsNCj4gPiA+ID4gICAqIEEgbGlzdCBv ZiBtZW1vcnkgd2hlcmUgb2JqZWN0cyBhcmUgc3RvcmVkDQo+ID4gPiA+ICAgKi8NCj4gPiA+ID4g IFNUQUlMUV9IRUFEKHJ0ZV9tZW1wb29sX21lbWhkcl9saXN0LCBydGVfbWVtcG9vbF9tZW1oZHIp Ow0KPiA+ID4gPiAtDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gICAqIENhbGxiYWNrIHVzZWQgdG8g ZnJlZSBhIG1lbW9yeSBjaHVuaw0KPiA+ID4gPiAgICovDQo+ID4gPiA+IEBAIC0yNDQsNiArMjQ2 LDcgQEAgc3RydWN0IHJ0ZV9tZW1wb29sIHsNCj4gPiA+ID4gICAgICAgICBpbnQzMl90IG9wc19p bmRleDsNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUg KmxvY2FsX2NhY2hlOyAvKio8IFBlci1sY29yZQ0KPiA+ID4gPiBsb2NhbCBjYWNoZSAqLw0KPiA+ ID4gPiArICAgICAgIHZvaWQgKmxvY2FsX2NhY2hlX2Jhc2VfYWRkcjsgLyoqPCBSZWZlcmVuY2Ug dG8gdGhlIGJhc2UNCj4gPiA+ID4gKyB2YWx1ZSAqLw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAg IHVpbnQzMl90IHBvcHVsYXRlZF9zaXplOyAgICAgICAgIC8qKjwgTnVtYmVyIG9mIHBvcHVsYXRl ZCBvYmplY3RzLiAqLw0KPiA+ID4gPiAgICAgICAgIHN0cnVjdCBydGVfbWVtcG9vbF9vYmpoZHJf bGlzdCBlbHRfbGlzdDsgLyoqPCBMaXN0IG9mDQo+ID4gPiA+IG9iamVjdHMgaW4gcG9vbCAqLyBA QCAtMTI2OSw3ICsxMjcyLDE1IEBADQo+ID4gPiA+IHJ0ZV9tZW1wb29sX2NhY2hlX2ZsdXNoKHN0 cnVjdA0KPiA+ID4gcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ID4gPiAgICAgICAgIGlm IChjYWNoZSA9PSBOVUxMIHx8IGNhY2hlLT5sZW4gPT0gMCkNCj4gPiA+ID4gICAgICAgICAgICAg ICAgIHJldHVybjsNCj4gPiA+ID4gICAgICAgICBydGVfbWVtcG9vbF90cmFjZV9jYWNoZV9mbHVz aChjYWNoZSwgbXApOw0KPiA+ID4gPiAtICAgICAgIHJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1 bGsobXAsIGNhY2hlLT5vYmpzLCBjYWNoZS0+bGVuKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAg ICAgIHVuc2lnbmVkIGludCBpOw0KPiA+ID4gPiArICAgICAgIHVuc2lnbmVkIGludCBjYWNoZV9s ZW4gPSBjYWNoZS0+bGVuOw0KPiA+ID4gPiArICAgICAgIHZvaWQgKm9ial90YWJsZVtSVEVfTUVN UE9PTF9DQUNIRV9NQVhfU0laRSAqIDNdOw0KPiA+ID4gPiArICAgICAgIHZvaWQgKmJhc2VfdmFs dWUgPSBjYWNoZS0+bG9jYWxfY2FjaGVfYmFzZV92YWx1ZTsNCj4gPiA+ID4gKyAgICAgICB1aW50 MzJfdCAqY2FjaGVfb2JqcyA9IGNhY2hlLT5vYmpzOw0KPiA+ID4gPiArICAgICAgIGZvciAoaSA9 IDA7IGkgPCBjYWNoZV9sZW47IGkrKykNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIG9ial90YWJs ZVtpXSA9ICh2b2lkICopIFJURV9QVFJfQUREKGJhc2VfdmFsdWUsDQo+IGNhY2hlX29ianNbaV0p Ow0KPiA+ID4gPiArICAgICAgIHJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAsIG9ial90 YWJsZSwgY2FjaGUtPmxlbik7DQo+ID4gPiA+ICAgICAgICAgY2FjaGUtPmxlbiA9IDA7DQo+ID4g PiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+IEBAIC0xMjg5LDcgKzEzMDAsOSBAQCBzdGF0aWMgX19y dGVfYWx3YXlzX2lubGluZSB2b2lkDQo+ID4gPiA+IF9fbWVtcG9vbF9nZW5lcmljX3B1dChzdHJ1 Y3QgcnRlX21lbXBvb2wgKm1wLCB2b2lkICogY29uc3QNCj4gKm9ial90YWJsZSwNCj4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuLCBzdHJ1Y3QgcnRlX21lbXBvb2xf Y2FjaGUNCj4gPiA+ID4gKmNhY2hlKSB7DQo+ID4gPiA+IC0gICAgICAgdm9pZCAqKmNhY2hlX29i anM7DQo+ID4gPiA+ICsgICAgICAgdWludDMyX3QgKmNhY2hlX29ianM7DQo+ID4gPiA+ICsgICAg ICAgdm9pZCAqYmFzZV92YWx1ZTsNCj4gPiA+ID4gKyAgICAgICB1aW50MzJfdCBpOw0KPiA+ID4g Pg0KPiA+ID4gPiAgICAgICAgIC8qIGluY3JlbWVudCBzdGF0IG5vdywgYWRkaW5nIGluIG1lbXBv b2wgYWx3YXlzIHN1Y2Nlc3MgKi8NCj4gPiA+ID4gICAgICAgICBfX01FTVBPT0xfU1RBVF9BREQo bXAsIHB1dF9idWxrLCAxKTsgQEAgLTEzMDEsNiArMTMxNCwxMg0KPiA+ID4gPiBAQCBfX21lbXBv b2xfZ2VuZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0DQo+ID4g PiA+ICpvYmpfdGFibGUsDQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgY2FjaGVfb2JqcyA9ICZj YWNoZS0+b2Jqc1tjYWNoZS0+bGVuXTsNCj4gPiA+ID4NCj4gPiA+ID4gKyAgICAgICBiYXNlX3Zh bHVlID0gY2FjaGUtPmxvY2FsX2NhY2hlX2Jhc2VfdmFsdWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KyAgICAgICB1aW50NjR4Ml90IHZfb2JqX3RhYmxlOw0KPiA+ID4gPiArICAgICAgIHVpbnQ2NHgy X3Qgdl9iYXNlX3ZhbHVlID0gdmR1cHFfbl91NjQoKHVpbnQ2NF90KWJhc2VfdmFsdWUpOw0KPiA+ ID4gPiArICAgICAgIHVpbnQzMngyX3Qgdl9jYWNoZV9vYmpzOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICAgICAgICAgLyoNCj4gPiA+ID4gICAgICAgICAgKiBUaGUgY2FjaGUgZm9sbG93cyB0aGUgZm9s bG93aW5nIGFsZ29yaXRobQ0KPiA+ID4gPiAgICAgICAgICAqICAgMS4gQWRkIHRoZSBvYmplY3Rz IHRvIHRoZSBjYWNoZQ0KPiA+ID4gPiBAQCAtMTMwOSwxMiArMTMyOCwyNiBAQCBfX21lbXBvb2xf Z2VuZXJpY19wdXQoc3RydWN0DQo+IHJ0ZV9tZW1wb29sDQo+ID4gPiAqbXAsIHZvaWQgKiBjb25z dCAqb2JqX3RhYmxlLA0KPiA+ID4gPiAgICAgICAgICAqLw0KPiA+ID4gPg0KPiA+ID4gPiAgICAg ICAgIC8qIEFkZCBlbGVtZW50cyBiYWNrIGludG8gdGhlIGNhY2hlICovDQo+ID4gPiA+IC0gICAg ICAgcnRlX21lbWNweSgmY2FjaGVfb2Jqc1swXSwgb2JqX3RhYmxlLCBzaXplb2Yodm9pZCAqKSAq IG4pOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaWYgZGVmaW5lZCBfX0FSTV9ORU9ODQo+ID4gPiA+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IChuICYgfjB4MSk7IGkrPTIpIHsNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIHZfb2JqX3RhYmxlID0gdmxkMXFfdTY0KChjb25zdCB1aW50NjRfdCAqKSZv YmpfdGFibGVbaV0pOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgdl9jYWNoZV9vYmpzID0gdnFt b3ZuX3U2NCh2c3VicV91NjQodl9vYmpfdGFibGUsDQo+ID4gPiB2X2Jhc2VfdmFsdWUpKTsNCj4g PiA+ID4gKyAgICAgICAgICAgICAgIHZzdDFfdTMyKGNhY2hlX29ianMgKyBpLCB2X2NhY2hlX29i anMpOw0KPiA+ID4gPiArICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICBpZiAobiAmIDB4MSkgew0K PiA+ID4gPiArICAgICAgICAgICAgICAgY2FjaGVfb2Jqc1tpXSA9ICh1aW50MzJfdCkgUlRFX1BU Ul9ESUZGKG9ial90YWJsZVtpXSwNCj4gYmFzZV92YWx1ZSk7DQo+ID4gPiA+ICsgICAgICAgfQ0K PiA+ID4gPiArI2Vsc2UNCj4gPiA+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7 DQo+ID4gPiA+ICsgICAgICAgICAgICAgICBjYWNoZV9vYmpzW2ldID0gKHVpbnQzMl90KSBSVEVf UFRSX0RJRkYob2JqX3RhYmxlW2ldLA0KPiBiYXNlX3ZhbHVlKTsNCj4gPiA+ID4gKyAgICAgICB9 DQo+ID4gPiA+ICsjZW5kaWYNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBjYWNoZS0+bGVuICs9 IG47DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgICAgaWYgKGNhY2hlLT5sZW4gPj0gY2FjaGUtPmZs dXNodGhyZXNoKSB7DQo+ID4gPiA+IC0gICAgICAgICAgICAgICBydGVfbWVtcG9vbF9vcHNfZW5x dWV1ZV9idWxrKG1wLCAmY2FjaGUtPm9ianNbY2FjaGUtDQo+ID5zaXplXSwNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIHJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAsIG9ial90YWJsZSAr DQo+ID4gPiA+ICsgY2FjaGUtPmxlbiAtIGNhY2hlLT5zaXplLA0KPiA+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLT5sZW4gLSBjYWNoZS0+c2l6ZSk7DQo+ID4gPiA+ ICAgICAgICAgICAgICAgICBjYWNoZS0+bGVuID0gY2FjaGUtPnNpemU7DQo+ID4gPiA+ICAgICAg ICAgfQ0KPiA+ID4gPiBAQCAtMTQxNSwyMyArMTQ0OCwyNiBAQCBfX21lbXBvb2xfZ2VuZXJpY19n ZXQoc3RydWN0DQo+IHJ0ZV9tZW1wb29sDQo+ID4gPiAqbXAsIHZvaWQgKipvYmpfdGFibGUsDQo+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbiwgc3RydWN0IHJ0ZV9t ZW1wb29sX2NhY2hlDQo+ID4gPiA+ICpjYWNoZSkgew0KPiA+ID4gPiAgICAgICAgIGludCByZXQ7 DQo+ID4gPiA+ICsgICAgICAgdWludDMyX3QgaTsNCj4gPiA+ID4gICAgICAgICB1aW50MzJfdCBp bmRleCwgbGVuOw0KPiA+ID4gPiAtICAgICAgIHZvaWQgKipjYWNoZV9vYmpzOw0KPiA+ID4gPiAr ICAgICAgIHVpbnQzMl90ICpjYWNoZV9vYmpzOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgIC8q IE5vIGNhY2hlIHByb3ZpZGVkIG9yIGNhbm5vdCBiZSBzYXRpc2ZpZWQgZnJvbSBjYWNoZSAqLw0K PiA+ID4gPiAgICAgICAgIGlmICh1bmxpa2VseShjYWNoZSA9PSBOVUxMIHx8IG4gPj0gY2FjaGUt PnNpemUpKQ0KPiA+ID4gPiAgICAgICAgICAgICAgICAgZ290byByaW5nX2RlcXVldWU7DQo+ID4g PiA+DQo+ID4gPiA+ICsgICAgICAgdm9pZCAqYmFzZV92YWx1ZSA9IGNhY2hlLT5sb2NhbF9jYWNo ZV9iYXNlX3ZhbHVlOw0KPiA+ID4gPiAgICAgICAgIGNhY2hlX29ianMgPSBjYWNoZS0+b2JqczsN Cj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICAvKiBDYW4gdGhpcyBiZSBzYXRpc2ZpZWQgZnJvbSB0 aGUgY2FjaGU/ICovDQo+ID4gPiA+ICAgICAgICAgaWYgKGNhY2hlLT5sZW4gPCBuKSB7DQo+ID4g PiA+ICAgICAgICAgICAgICAgICAvKiBOby4gQmFja2ZpbGwgdGhlIGNhY2hlIGZpcnN0LCBhbmQg dGhlbiBmaWxsIGZyb20gaXQgKi8NCj4gPiA+ID4gICAgICAgICAgICAgICAgIHVpbnQzMl90IHJl cSA9IG4gKyAoY2FjaGUtPnNpemUgLSBjYWNoZS0+bGVuKTsNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgIHZvaWQgKnRlbXBfb2Jqc1tSVEVfTUVNUE9PTF9DQUNIRV9NQVhfU0laRSAqIDNdOw0KPiA+ ID4gPiArIC8qKjwgQ2FjaGUgb2JqZWN0cyAqLw0KPiA+ID4gPg0KPiA+ID4gPiAgICAgICAgICAg ICAgICAgLyogSG93IG1hbnkgZG8gd2UgcmVxdWlyZSBpLmUuIG51bWJlciB0byBmaWxsIHRoZQ0K PiA+ID4gPiBjYWNoZSArIHRoZQ0KPiA+ID4gcmVxdWVzdCAqLw0KPiA+ID4gPiAgICAgICAgICAg ICAgICAgcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVfYnVsayhtcCwNCj4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5dLCByZXEpOw0KPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX29ianMsIHJlcSk7DQo+ID4gPiA+ICAg ICAgICAgICAgICAgICBpZiAodW5saWtlbHkocmV0IDwgMCkpIHsNCj4gPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgLyoNCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICogSW4g dGhlIG9mZiBjaGFuY2UgdGhhdCB3ZSBhcmUgYnVmZmVyDQo+ID4gPiA+IGNvbnN0cmFpbmVkLCBA QCAtMTQ0MiwxMiArMTQ3OCwzMiBAQA0KPiBfX21lbXBvb2xfZ2VuZXJpY19nZXQoc3RydWN0DQo+ ID4gPiBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKipvYmpfdGFibGUsDQo+ID4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gcmluZ19kZXF1ZXVlOw0KPiA+ID4gPiAgICAgICAgICAgICAg ICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiArICAgICAgICAgICAgICAgbGVuID0gY2FjaGUtPmxlbjsN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXE7ICsraSwgKytsZW4p IHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfb2Jqc1tsZW5dID0gKHVp bnQzMl90KQ0KPiA+ID4gPiArIFJURV9QVFJfRElGRih0ZW1wX29ianNbaV0sDQo+ID4gPiBiYXNl X3ZhbHVlKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiAg ICAgICAgICAgICAgICAgY2FjaGUtPmxlbiArPSByZXE7DQo+ID4gPiA+ICAgICAgICAgfQ0KPiA+ ID4gPg0KPiA+ID4gPiArICAgICAgIHVpbnQ2NHgyX3Qgdl9vYmpfdGFibGU7DQo+ID4gPiA+ICsg ICAgICAgdWludDY0eDJfdCB2X2NhY2hlX29ianM7DQo+ID4gPiA+ICsgICAgICAgdWludDY0eDJf dCB2X2Jhc2VfdmFsdWUgPQ0KPiA+ID4gPiArIHZkdXBxX25fdTY0KCh1aW50NjRfdCliYXNlX3Zh bHVlKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgICAgICAgIC8qIE5vdyBmaWxsIGluIHRoZSByZXNw b25zZSAuLi4gKi8NCj4gPiA+ID4gKyNpZiBkZWZpbmVkIF9fQVJNX05FT04NCj4gPiA+ID4gKyAg ICAgICBmb3IgKGluZGV4ID0gMCwgbGVuID0gY2FjaGUtPmxlbiAtIDE7IGluZGV4IDwgKG4gJiB+ MHgxKTsgaW5kZXgrPTIsDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbi09Miwgb2JqX3RhYmxlKz0yKSB7DQo+ID4gPiA+ICsgICAgICAg ICAgICAgICB2X2NhY2hlX29ianMgPSB2bW92bF91MzIodmxkMV91MzIoY2FjaGVfb2JqcyArIGxl biAtIDEpKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHZfb2JqX3RhYmxlID0gdmFkZHFfdTY0 KHZfY2FjaGVfb2Jqcywgdl9iYXNlX3ZhbHVlKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHZz dDFxX3U2NCgodWludDY0X3QgKilvYmpfdGFibGUsIHZfb2JqX3RhYmxlKTsNCj4gPiA+ID4gKyAg ICAgICB9DQo+ID4gPiA+ICsgICAgICAgaWYgKG4gJiAweDEpDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAqb2JqX3RhYmxlID0gKHZvaWQgKikgUlRFX1BUUl9BREQoYmFzZV92YWx1ZSwNCj4gPiA+ ID4gK2NhY2hlX29ianNbbGVuXSk7ICNlbHNlDQo+ID4gPiA+ICAgICAgICAgZm9yIChpbmRleCA9 IDAsIGxlbiA9IGNhY2hlLT5sZW4gLSAxOyBpbmRleCA8IG47ICsraW5kZXgsDQo+ID4gPiA+IGxl bi0tLA0KPiA+ID4gb2JqX3RhYmxlKyspDQo+ID4gPiA+IC0gICAgICAgICAgICAgICAqb2JqX3Rh YmxlID0gY2FjaGVfb2Jqc1tsZW5dOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgKm9ial90YWJs ZSA9ICh2b2lkICopIFJURV9QVFJfQUREKGJhc2VfdmFsdWUsDQo+ID4gPiA+ICtjYWNoZV9vYmpz W2xlbl0pOyAjZW5kaWYNCj4gPiA+ID4NCj4gPiA+ID4gICAgICAgICBjYWNoZS0+bGVuIC09IG47 DQo+ID4gPiA+DQo+ID4gPiA+IC0tDQo+ID4gPiA+IDIuMTcuMQ0KPiA+ID4gPg0K