From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id AC160A04DB for ; Fri, 16 Oct 2020 17:43:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 792111F006; Fri, 16 Oct 2020 17:43:09 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60050.outbound.protection.outlook.com [40.107.6.50]) by dpdk.org (Postfix) with ESMTP id CE22F1D8CF; Fri, 16 Oct 2020 17:42:58 +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=WBC2X41qqbx6N1qN8oe0BJO8/8kF4woCj/N/c3Zn7MM=; b=NTx1LmlQi3YSOGb6oKBwfRX8eCyhQaopDdvoxyjoPZ6/K6TNHLTOt2Z3BNwb6r19TYgnSqQNdiYM6N0kzWM6gKSOLUv+0omfVZMuHW68X+dFAM2WpJlJaDcbQWNaPui+GGGcCMDZ7VIiZu4IrzJ/RTN+OIsP3EEzE34PZKfkskw= Received: from AM5PR04CA0003.eurprd04.prod.outlook.com (2603:10a6:206:1::16) by DB6PR08MB2885.eurprd08.prod.outlook.com (2603:10a6:6:1b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.29; Fri, 16 Oct 2020 15:42:56 +0000 Received: from VE1EUR03FT025.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:1:cafe::60) by AM5PR04CA0003.outlook.office365.com (2603:10a6:206:1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.22 via Frontend Transport; Fri, 16 Oct 2020 15:42:55 +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 VE1EUR03FT025.mail.protection.outlook.com (10.152.18.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21 via Frontend Transport; Fri, 16 Oct 2020 15:42:55 +0000 Received: ("Tessian outbound c579d876a324:v64"); Fri, 16 Oct 2020 15:42:53 +0000 X-CR-MTA-TID: 64aa7808 Received: from 34bd49cd30c3.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 06657845-6FAE-44B0-BAC0-D75D4CE9E9F8.1; Fri, 16 Oct 2020 15:42:48 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 34bd49cd30c3.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 16 Oct 2020 15:42:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L1xFm4zVIh4TKDr9UdzcJvkFyVRT3tMbfh+y0O0yS53dBt+mIjeyVyFQ2LKhZAZhWLPXBCv0jwOWWn49RHpyV/+aXl4JUjJUw7SP1jsPpBH/0xqdDYMxnICUCLSD7WVmMMqBFO11sPztYYsS0aTKfku1GIlBHtc/JI3zz/EhZp8UQTpBf9W2KjCAEIj4FeHUnFZ4jbQAnU8kcnNnfDlC3bG33pC3f4HTxy/GyZGZ81f35PpX6aig2YkveBmRLMemaYfYatUhUDb8nx8SPrk+McgX+0v3Spu7EAlsKkSPDuOcpDUwiAXbxaaxIgiaw3JDPmGCb3hw/fSouOQfNIpuCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WBC2X41qqbx6N1qN8oe0BJO8/8kF4woCj/N/c3Zn7MM=; b=RxJLgy16fD2ExOWFkAZ6uVMAMloJOHlBtHJsK862xK9RiOldCyGe3COzF43bL96TiPwxLv9srgyRXElOkxhsN3GUcFb9cbpCgWEH6wG6SYbk7A2/N1Butbiup6pBFFLywf+fFnwkVDpeq1BDkuoQRMUddIB9EQcFActIUxjg2wtXrOpYe5C8bGohchTgrL4Ncjxm9BMKd6KdJSrm8Wusexr7UQw6XUspmZaONNet6hUVO8qgmTemea/1T7GvGbqe/ISRSK0ym5gyWALf+238GmAxougomKEUYEPxFO1MNoDleAeMF9g51K8dXKY8P4IEdlCJU17NNbRzsqPfaUA+Ag== 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=WBC2X41qqbx6N1qN8oe0BJO8/8kF4woCj/N/c3Zn7MM=; b=NTx1LmlQi3YSOGb6oKBwfRX8eCyhQaopDdvoxyjoPZ6/K6TNHLTOt2Z3BNwb6r19TYgnSqQNdiYM6N0kzWM6gKSOLUv+0omfVZMuHW68X+dFAM2WpJlJaDcbQWNaPui+GGGcCMDZ7VIiZu4IrzJ/RTN+OIsP3EEzE34PZKfkskw= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB7PR08MB3083.eurprd08.prod.outlook.com (2603:10a6:5:28::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.24; Fri, 16 Oct 2020 15:42:45 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::7814:9c1:781f:475d%4]) with mapi id 15.20.3477.020; Fri, 16 Oct 2020 15:42:45 +0000 From: Honnappa Nagarahalli To: Lukasz Wojciechowski , David Hunt , Bruce Richardson CC: "dev@dpdk.org" , "stable@dpdk.org" , nd , David Marchand , Honnappa Nagarahalli , nd Thread-Topic: [dpdk-dev] [PATCH v4 2/8] test/distributor: synchronize lcores statistics Thread-Index: AQHWo39FwMPR3IZuj0a0+jLy15bN0KmaLNAAgAAEU4CAACzo4A== Date: Fri, 16 Oct 2020 15:42:45 +0000 Message-ID: References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-3-l.wojciechow@partner.samsung.com> <572a9ba1-3141-ff11-b283-74a81c7ddc89@partner.samsung.com> In-Reply-To: <572a9ba1-3141-ff11-b283-74a81c7ddc89@partner.samsung.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 3CCA59CD5CF5B34C962E301B2A2EF59E.0 x-checkrecipientchecked: true Authentication-Results-Original: partner.samsung.com; dkim=none (message not signed) header.d=none;partner.samsung.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.110.7] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 5ae57bad-f359-4be0-f385-08d871ea26a2 x-ms-traffictypediagnostic: DB7PR08MB3083:|DB6PR08MB2885: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 1wmw58+OKYRnoLvz8z1GFIgRzoqdteiIyn44GgLyBZ+bbhVUxVg1BnMXm9Qx26sw+y1xLcKFrDI81MICZ5mrXjnIxLtdu8AriYc2pYnQryjDdC+EGyL41//zmpiQ/ZOT+jGPfWEJ+vVvUTOFf7Rya4rRgFkq60T/B9LNAcsJeKPaVMXaJkOkY9c4gt2crCgHf+km2/SQhQtw5mnn+7Xqhaz83St+bdTMEZH/nlJQvfQMxaTpmFzQr3FuRvP2NL6JpURugxGriDPEDMZ6uYK0k5z7XQhUcWTb7Coco2Xd5V/hxm4TpUoBq/lkSChm3ubHi6ytJ4+tFVTHbTyZvEKc9NWF3kUVJsDKFLprpWh6832UZF/Es8lJB6thapiURIYJB2397RUMk64Wus2Crpx5lg== 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)(136003)(366004)(39860400002)(396003)(376002)(346002)(26005)(186003)(6506007)(33656002)(71200400001)(86362001)(7696005)(4326008)(8936002)(2906002)(5660300002)(30864003)(316002)(66476007)(478600001)(66946007)(966005)(8676002)(76116006)(66556008)(52536014)(55016002)(110136005)(54906003)(66446008)(83380400001)(64756008)(9686003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: FxNldwduPFgNog9HJSSdcFMsbuiyN0r6SOyCPiJr3jQN6pgXjRwfqgdSkCxGtKSldPd39fgjjv3//4Mw87AirHFPjmd47oHXcpdWdfKWjgYGYNH3RAP3V97mW4nE6O1rN69ujbwEAmCjyfwCTujAYzmOWsheQ8kxqwHauPayS2s++af7zPHSvvaR4PZFtzy+fJg9wHivXiAnIZ3LL4KwMIpEgTtFvdGRJo4VCLKDzsEbzDBAs+SG/JKj15mpC8vDqZlQku2lM8gyMdq+Dk2InYl0dsiKTfaCppIBQTZy/1fngEKJk++h2+Y58BoXMAbGGuAl9r8hJ7DqPoP7hWn+pHofaqtNlmuRcm3zzADu0F81qIOEHdmLS3ThlHGeWmTrj8xwuwpWqp+wU/SAhdJFWUV8sxXmvSTt/Oyrhtz2Q+gNcRHial4r+SegmJb5xmPgyzuH5A6xEKlbIsyoHIRmSi3ztP+YEXguISszVrdDCrH9q4Fdd4Wuxmue3Pq1D4iuDmCZrXnIqGz36WyRATVG4RvPHjGugj0B9UXaeBrHpdq5MTKB3O9Ocu8jPQNxrdhBoTkoiEefgZ4mM8rSOvjv4IR8SBqxAM8PrADwWB1Fo9Guic6M47uw0orITEwb0OjIe31WwG9yNBOrpmiBc1dJcA== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3083 Original-Authentication-Results: partner.samsung.com; dkim=none (message not signed) header.d=none;partner.samsung.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: bff83314-2508-4ced-f577-08d871ea20b2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gDL4FS4TlUDkZUVfeFmPFGqJu32PLxb/1AmOo9ljRVkGmpJoiT6LWSJkFwJ0c0hnahbUwb4fvxnHlAmmDWbYWc5CvlqRbHULfZzVUSkxr3qWYejJfKO+1wmHDTOUZ0+TmjdAaiGj2JeT5ukoxHCEFSdbUhIftlOCN26Yqr7Mufs0o3KJ10v/otyAyTw67YJhgrjD6XJSLXsFnGp/3queJPWoSXF4F4Ol1QTH3QQoqGHPELmPqtSthSJrkDRnA8gLwsOIMRpYRLg32bn0FUXyPb0ZYxYGCHLMVtr/7B37bQK69+eLp8eX5dDMWDfkTWhbtgQEVWhc8TeDk3QJoji+TsqdCI11l+xpDVchk5NHfgiwV1s8fE5UnIgmWXJbr2jX3ONyOD5Bb1FOE7WMqEXoFmDPvZsqx42s6fq9YzblLsJFXM26d446Wj8jjg3lLsbKICRYDzlxeo8lK3zjribtMrJXcqptQP1MfzFtaamqbqk= 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)(136003)(376002)(346002)(39850400004)(396003)(46966005)(9686003)(186003)(47076004)(36906005)(8676002)(356005)(82740400003)(26005)(110136005)(4326008)(316002)(450100002)(336012)(81166007)(83380400001)(8936002)(54906003)(478600001)(70206006)(86362001)(6506007)(966005)(52536014)(7696005)(70586007)(2906002)(82310400003)(5660300002)(55016002)(30864003)(33656002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2020 15:42:55.5585 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5ae57bad-f359-4be0-f385-08d871ea26a2 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: VE1EUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2885 Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH v4 2/8] test/distributor: synchronize lcores statistics X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" PHNuaXA+DQoNCj4gDQo+IFcgZG5pdSAxNi4xMC4yMDIwIG/CoDE0OjQzLCBMdWthc3ogV29qY2ll Y2hvd3NraSBwaXN6ZToNCj4gPiBIaSBIb25uYXBwYSwNCj4gPg0KPiA+IFRoYW5rIHlvdSBmb3Ig eW91ciBhbnN3ZXIuDQo+ID4gSW4gdGhlIGN1cnJlbnQgdjcgdmVyc2lvbiBJIGZvbGxvd2VkIHlv dXIgYWR2aXNlIGFuZCB1c2VkIFJFTEFYRUQgbWVtb3J5DQo+IG1vZGVsLg0KPiA+IEFuZCBpdCB3 b3JrcyB3aXRob3V0IGFueSBpc3N1ZXMuIEkgZ3Vlc3MgYWZ0ZXIgZml4aW5nIG90aGVyIGlzc3Vl cyBmb3VuZA0KPiBzaW5jZSB2NCB0aGUgZGlzdHJpYnV0b3Igd29ya3MgbW9yZSBzdGFibGUuDQo+ ID4gSSBkaWRuJ3QgaGF2ZSB0aW1lIHRvIHJlYXJyYW5nZSBhbGwgdGVzdHMgaW4gdGhlIHdheSBJ IHByb3Bvc2VkLCBidXQgSSBndWVzcyBpZg0KPiB0aGV5IHdvcmsgbGlrZSB0aGlzIGl0J3Mgbm90 IGEgdG9wIHByaW9yaXR5Lg0KQWdyZWUsIG5vdCBhIHRvcCBwcmlvcml0eS4NCg0KPiA+DQo+ID4g Q2FuIHlvdSBnaXZlIGFuIGFjayBvbiB0aGUgc2VyaWVzPyBJIGJlbGlldmUgRGF2aWQgTWFyY2hh bmQgaXMgd2FpdGluZyBmb3INCj4geW91ciBvcGluaW9uIHRvIHByb2Nlc3MgaXQuDQo+IEknbSBz b3JyeSBJIGRpZG4ndCBzZWUgeW91ciBvdGhlciBjb21tZW50cy4gSSdsbCB0cnkgdG8gZml4IHRo ZW0gdGhlbSB0b2RheS4NCk5vIHByb2JsZW0sIEkgY2FuIHJldmlldyB0aGUgbmV4dCBzZXJpZXMg cXVpY2tseS4NCg0KPiA+DQo+ID4gQmVzdCByZWdhcmRzDQo+ID4gTHVrYXN6DQo+ID4NCj4gPiBX IGRuaXUgMTYuMTAuMjAyMCBvwqAwNzo0MywgSG9ubmFwcGEgTmFnYXJhaGFsbGkgcGlzemU6DQo+ ID4+IDxzbmlwPg0KPiA+Pg0KPiA+Pj4gSGkgSG9ubmFwcGEsDQo+ID4+Pg0KPiA+Pj4gTWFueSB0 aGFua3MgZm9yIHRoZSByZXZpZXchDQo+ID4+Pg0KPiA+Pj4gSSdsbCB3cml0ZSBteSBhbnN3ZXJz IGhlcmUgbm90IGlubGluZSBhcyBpdCB3b3VsZCBiZSBlYXNpZXIgdG8gcmVhZA0KPiA+Pj4gdGhl bSBpbiBvbmUgcGxhY2UsIEkgdGhpbmsuDQo+ID4+PiBTbyBmaXJzdCBvZiBhbGwgSSBhZ3JlZSB3 aXRoIHlvdSBpbiAyIHRoaW5nczoNCj4gPj4+IDEpIGFsbCB1c2VzIG9mIHN0YXRpc3RpY3MgbXVz dCBiZSBhdG9taWMgYW5kIGxhY2sgb2YgdGhhdCBjYXVzZWQNCj4gPj4+IG1vc3Qgb2YgdGhlIHBy b2JsZW1zDQo+ID4+PiAyKSBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVwbGFjZSBiYXJyaWVyIGFu ZCBtZW1zZXQgaW4NCj4gPj4+IGNsZWFyX3BhY2tldF9jb3VudCgpIHdpdGggYXRvbWljIHN0b3Jl cyBhcyB5b3Ugc3VnZ2VzdGVkDQo+ID4+Pg0KPiA+Pj4gU28gSSB3aWxsIGFwcGx5IGJvdGggb2Yg YWJvdmUuDQo+ID4+Pg0KPiA+Pj4gSG93ZXZlciBJIHdhc24ndCBub3QgZnVsbHkgY29udmluY2Vk IG9uIGNoYW5naW5nIGFjcXVpcmUvcmVsZWFzZSB0bw0KPiByZWxheGVkLg0KPiA+Pj4gSXQgd29v ZCBiZSBwZXJmZWN0bHkgb2sgaWYgaXQgd291bGQgbG9vayBsaWtlIGluIHRoaXMgSGVyYiBTdXR0 ZXIncyBleGFtcGxlOg0KPiA+Pj4gaHR0cHM6Ly95b3V0dS5iZS9LZUxCZDJbXSAgRUpMT1U/dD00 MTcwIEJ1dCBpbiBoaXMgY2FzZSB0aGUgY291bnRlcnMNCj4gPj4+IGFyZSBjbGVhcmVkIGJlZm9y ZSB3b3JrZXIgdGhyZWFkcyBzdGFydCBhbmQgYXJlIHByaW50b3V0IGFmdGVyIHRoZXkNCj4gPj4+ IGFyZSBjb21wbGV0ZWQuDQo+ID4+Pg0KPiA+Pj4gSW4gY2FzZSBvZiB0aGUgZHBkayBkaXN0cmli dXRvciB0ZXN0cyBib3RoIHdvcmtlciBhbmQgbWFpbiBjb3JlcyBhcmUNCj4gPj4+IHJ1bm5pbmcg YXQgdGhlIHNhbWUgdGltZS4gSW4gdGhlIHNhbml0eV90ZXN0LCB0aGUgc3RhdGlzdGljcyBhcmUN Cj4gPj4+IGNsZWFyZWQgYW5kIHZlcmlmaWVkIGZldyB0aW1lcyBmb3IgZGlmZmVyZW50IGhhc2hl cyBvZiBwYWNrYWdlcy4gVGhlDQo+ID4+PiB3b3JrZXIgY29yZXMgYXJlIG5vdCBzdG9wcGVkIGF0 IHRoaXMgdGltZSBhbmQgdGhleSBjb250aW51ZSB0aGVpciBsb29wcw0KPiBpbiBoYW5kbGUgcHJv Y2VkdXJlLg0KPiA+Pj4gVmVyaWZpY2F0aW9uIG1hZGUgaW4gbWFpbiBjb3JlIGlzIGFuIGV4Y2hh bmdlIG9mIGRhdGEgYXMgdGhlIGN1cnJlbnQNCj4gPj4+IHN0YXRpc3RpY3MgaW5kaWNhdGUgaG93 IHRoZSB0ZXN0IHdpbGwgcmVzdWx0Lg0KPiA+PiBBZ3JlZS4gVGhlIGtleSBwb2ludCB3ZSBoYXZl IHRvIG5vdGUgaXMgdGhhdCB0aGUgZGF0YSB0aGF0IGlzIGV4Y2hhbmdlZA0KPiBiZXR3ZWVuIHRo ZSB0d28gdGhyZWFkcyBpcyBhbHJlYWR5IGF0b21pYyAoaGFuZGxlZF9wYWNrZXRzIGlzIGF0b21p YykuDQo+ID4+DQo+ID4+PiBTbyBhcyBJIHdhc24ndCBjb252aW5jZWQsIEkgcnVuIHNvbWUgdGVz dHMgd2l0aCBib3RoIGJvdGggcmVsYXhlZA0KPiA+Pj4gYW5kIGFjcXVpcmUvcmVsZWFzZSBtb2Rl cyBhbmQgdGhleSBib3RoIGZhaWwgOiggVGhlIGZhaWx1cmVzIGNhdXNlZA0KPiA+Pj4gYnkgc3Rh dGlzdGljcyBlcnJvcnMgdG8gbnVtYmVyIG9mIHRlc3RzIHJhdGlvIGZvcg0KPiA+Pj4gMjAwMDAw IHRlc3RzIHdhczoNCj4gPj4+IGZvciByZWxheGVkOiAwLDAwMDc5MDU2Mg0KPiA+Pj4gZm9yIGFj cS9yZWw6IDAsMDAwMDkxMzIxDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+IFRoYXQncyB3aHkgSSdtIGdv aW5nIHRvIG1vZGlmeSB0ZXN0cyBpbiBzdWNoIHdheSwgdGhhdCB0aGV5IHdvdWxkOg0KPiA+Pj4g MSkgY2xlYXIgc3RhdGlzdGljcw0KPiA+Pj4gMikgbGF1bmNoIHdvcmtlciB0aHJlYWRzDQo+ID4+ PiAzKSBydW4gdGVzdA0KPiA+Pj4gNCkgd2FpdCBmb3Igd29ya2VycyBwcm9jZWR1cmVzIHRvIGNv bXBsZXRlDQo+ID4+PiA1KSBjaGVjayBzdGF0cywgdmVyaWZ5IHJlc3VsdHMgYW5kIHByaW50IHRo ZW0gb3V0DQo+ID4+Pg0KPiA+Pj4gVGhpcyB3YXkgd29ya2VyIG1haW4gY29yZSB3aWxsIHVzZSAo Y2xlYXIgb3IgdmVyaWZ5KSBzdGF0cyBvbmx5IHdoZW4NCj4gPj4+IHRoZXJlIGFyZSBubyB3b3Jr ZXIgdGhyZWFkcy4gVGhpcyB3b3VsZCBtYWtlIHRoaW5ncyBzaW1wbGVyIGFuZA0KPiA+Pj4gYWxs b3dpbmcgdG8gZm9jdXMgb24gdGVzdGluZyB0aGUgZGlzdHJpYnV0b3Igbm90IHRlc3RzLiBBbmQg b2YNCj4gPj4+IGNvdXJzZSByZWxheGVkIG1vZGUgd291bGQgYmUgZW5vdWdoIQ0KPiA+PiBBZ3Jl ZSwgdGhpcyB3b3VsZCBiZSB0aGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIG1haW4gdGhy ZWFkIHNlZXMNCj4gPj4gdGhlIGNvcnJlY3Qgc3RhdGlzdGljcyAoanVzdCBsaWtlIGluIHRoZSB2 aWRlbykNCj4gPj4NCj4gPj4+IEJlc3QgcmVnYXJkcw0KPiA+Pj4gTHVrYXN6DQo+ID4+Pg0KPiA+ Pj4NCj4gPj4+IFcgZG5pdSAyOS4wOS4yMDIwIG/CoDA3OjQ5LCBIb25uYXBwYSBOYWdhcmFoYWxs aSBwaXN6ZToNCj4gPj4+PiA8c25pcD4NCj4gPj4+Pg0KPiA+Pj4+PiBTdGF0aXN0aWNzIG9mIGhh bmRsZWQgcGFja2V0cyBhcmUgY2xlYXJlZCBhbmQgcmVhZCBvbiBtYWluIGxjb3JlLA0KPiA+Pj4+ PiB3aGlsZSB0aGV5IGFyZSBpbmNyZWFzZWQgaW4gd29ya2VycyBoYW5kbGVycyBvbiBkaWZmZXJl bnQgbGNvcmVzLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBXaXRob3V0IHN5bmNocm9uaXphdGlvbiBvY2Nh c2lvbmFsbHkgc2hvd2VkIGludmFsaWQgdmFsdWVzLg0KPiA+Pj4+PiBUaGlzIHBhdGNoIHVzZXMg YXRvbWljIGFjcXVpcmUvcmVsZWFzZSBtZWNoYW5pc21zIHRvIHN5bmNocm9uaXplLg0KPiA+Pj4+ IEluIGdlbmVyYWwsIGxvYWQtYWNxdWlyZSBhbmQgc3RvcmUtcmVsZWFzZSBtZW1vcnkgb3JkZXJp bmdzIGFyZQ0KPiA+Pj4+IHJlcXVpcmVkDQo+ID4+PiB3aGlsZSBzeW5jaHJvbml6aW5nIGRhdGEg KHRoYXQgY2Fubm90IGJlIHVwZGF0ZWQgYXRvbWljYWxseSkgYmV0d2Vlbg0KPiA+Pj4gdGhyZWFk cy4gSW4gdGhlIHNpdHVhdGlvbiwgbWFraW5nIGNvdW50ZXJzIGF0b21pYyBpcyBlbm91Z2guDQo+ ID4+Pj4+IEZpeGVzOiBjM2VhYmZmMTI0ZTYgKCJkaXN0cmlidXRvcjogYWRkIHVuaXQgdGVzdHMi KQ0KPiA+Pj4+PiBDYzogYnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20NCj4gPj4+Pj4gQ2M6IHN0 YWJsZUBkcGRrLm9yZw0KPiA+Pj4+Pg0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMdWthc3ogV29q Y2llY2hvd3NraQ0KPiA+Pj4+PiA8bC53b2pjaWVjaG93QHBhcnRuZXIuc2Ftc3VuZy5jb20+DQo+ ID4+Pj4+IEFja2VkLWJ5OiBEYXZpZCBIdW50IDxkYXZpZC5odW50QGludGVsLmNvbT4NCj4gPj4+ Pj4gLS0tDQo+ID4+Pj4+ICAgICBhcHAvdGVzdC90ZXN0X2Rpc3RyaWJ1dG9yLmMgfCAzOQ0KPiA+ Pj4+PiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiA+Pj4gLS0NCj4gPj4+ Pj4gICAgIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkN Cj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0L3Rlc3RfZGlzdHJpYnV0b3Iu Yw0KPiA+Pj4+PiBiL2FwcC90ZXN0L3Rlc3RfZGlzdHJpYnV0b3IuYyBpbmRleA0KPiA+Pj4+PiAz NWIyNTQ2M2EuLjBlNDllMzcxNCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvYXBwL3Rlc3QvdGVzdF9k aXN0cmlidXRvci5jDQo+ID4+Pj4+ICsrKyBiL2FwcC90ZXN0L3Rlc3RfZGlzdHJpYnV0b3IuYw0K PiA+Pj4+PiBAQCAtNDMsNyArNDMsOCBAQCB0b3RhbF9wYWNrZXRfY291bnQodm9pZCkgIHsNCj4g Pj4+Pj4gICAgIAl1bnNpZ25lZCBpLCBjb3VudCA9IDA7DQo+ID4+Pj4+ICAgICAJZm9yIChpID0g MDsgaSA8IHdvcmtlcl9pZHg7IGkrKykNCj4gPj4+Pj4gLQkJY291bnQgKz0gd29ya2VyX3N0YXRz W2ldLmhhbmRsZWRfcGFja2V0czsNCj4gPj4+Pj4gKwkJY291bnQgKz0NCj4gPj4+Pj4gX19hdG9t aWNfbG9hZF9uKCZ3b3JrZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiArCQkJ CV9fQVRPTUlDX0FDUVVJUkUpOw0KPiA+Pj4+IFJFTEFYRUQgbWVtb3J5IG9yZGVyIGlzIHN1ZmZp Y2llbnQuIEZvciBleDogdGhlIHdvcmtlciB0aHJlYWRzIGFyZQ0KPiA+Pj4+IG5vdA0KPiA+Pj4g J3JlbGVhc2luZycgYW55IGRhdGEgdGhhdCBpcyBub3QgYXRvbWljYWxseSB1cGRhdGVkIHRvIHRo ZSBtYWluIHRocmVhZC4NCj4gPj4+Pj4gICAgIAlyZXR1cm4gY291bnQ7DQo+ID4+Pj4+ICAgICB9 DQo+ID4+Pj4+DQo+ID4+Pj4+IEBAIC01Miw2ICs1Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZA0K PiA+Pj4+PiAgICAgY2xlYXJfcGFja2V0X2NvdW50KHZvaWQpDQo+ID4+Pj4+ICAgICB7DQo+ID4+ Pj4+ICAgICAJbWVtc2V0KCZ3b3JrZXJfc3RhdHMsIDAsIHNpemVvZih3b3JrZXJfc3RhdHMpKTsN Cj4gPj4+Pj4gKwlydGVfYXRvbWljX3RocmVhZF9mZW5jZShfX0FUT01JQ19SRUxFQVNFKTsNCj4g Pj4+PiBJZGVhbGx5LCB0aGUgY291bnRlcnMgc2hvdWxkIGJlIHNldCB0byAwIGF0b21pY2FsbHkg cmF0aGVyIHRoYW4NCj4gPj4+PiB1c2luZyBhDQo+ID4+PiBtZW1zZXQuDQo+ID4+Pj4+ICAgICB9 DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAvKiB0aGlzIGlzIHRoZSBiYXNpYyB3b3JrZXIgZnVuY3Rp b24gZm9yIHNhbml0eSB0ZXN0IEBAIC03MiwxMw0KPiA+Pj4+PiArNzQsMTMgQEAgaGFuZGxlX3dv cmsodm9pZCAqYXJnKQ0KPiA+Pj4+PiAgICAgCW51bSA9IHJ0ZV9kaXN0cmlidXRvcl9nZXRfcGt0 KGRiLCBpZCwgYnVmLCBidWYsIG51bSk7DQo+ID4+Pj4+ICAgICAJd2hpbGUgKCFxdWl0KSB7DQo+ ID4+Pj4+DQo+IAlfX2F0b21pY19mZXRjaF9hZGQoJndvcmtlcl9zdGF0c1tpZF0uaGFuZGxlZF9w YWNrZXRzLA0KPiA+Pj4+PiBudW0sDQo+ID4+Pj4+IC0JCQkJX19BVE9NSUNfUkVMQVhFRCk7DQo+ ID4+Pj4+ICsJCQkJX19BVE9NSUNfQUNRX1JFTCk7DQo+ID4+Pj4gVXNpbmcgdGhlIF9fQVRPTUlD X0FDUV9SRUwgb3JkZXIgZG9lcyBub3QgbWVhbiBhbnl0aGluZyB0byB0aGUNCj4gbWFpbg0KPiA+ Pj4gdGhyZWFkLiBUaGUgbWFpbiB0aHJlYWQgbWlnaHQgc3RpbGwgc2VlIHRoZSB1cGRhdGVzIGZy b20gZGlmZmVyZW50DQo+ID4+PiB0aHJlYWRzIGluIGRpZmZlcmVudCBvcmRlci4NCj4gPj4+Pj4g ICAgIAkJY291bnQgKz0gbnVtOw0KPiA+Pj4+PiAgICAgCQludW0gPSBydGVfZGlzdHJpYnV0b3Jf Z2V0X3BrdChkYiwgaWQsDQo+ID4+Pj4+ICAgICAJCQkJYnVmLCBidWYsIG51bSk7DQo+ID4+Pj4+ ICAgICAJfQ0KPiA+Pj4+PiAgICAgCV9fYXRvbWljX2ZldGNoX2FkZCgmd29ya2VyX3N0YXRzW2lk XS5oYW5kbGVkX3BhY2tldHMsDQo+IG51bSwNCj4gPj4+Pj4gLQkJCV9fQVRPTUlDX1JFTEFYRUQp Ow0KPiA+Pj4+PiArCQkJX19BVE9NSUNfQUNRX1JFTCk7DQo+ID4+Pj4gU2FtZSBoZXJlLCBkbyBu b3Qgc2VlIHdoeSB0aGlzIGNoYW5nZSBpcyByZXF1aXJlZC4NCj4gPj4+Pg0KPiA+Pj4+PiAgICAg CWNvdW50ICs9IG51bTsNCj4gPj4+Pj4gICAgIAlydGVfZGlzdHJpYnV0b3JfcmV0dXJuX3BrdChk YiwgaWQsIGJ1ZiwgbnVtKTsNCj4gPj4+Pj4gICAgIAlyZXR1cm4gMDsNCj4gPj4+Pj4gQEAgLTEz NCw3ICsxMzYsOCBAQCBzYW5pdHlfdGVzdChzdHJ1Y3Qgd29ya2VyX3BhcmFtcyAqd3AsIHN0cnVj dA0KPiA+Pj4+PiBydGVfbWVtcG9vbCAqcCkNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAlmb3IgKGkg PSAwOyBpIDwgcnRlX2xjb3JlX2NvdW50KCkgLSAxOyBpKyspDQo+ID4+Pj4+ICAgICAJCXByaW50 ZigiV29ya2VyICV1IGhhbmRsZWQgJXUgcGFja2V0c1xuIiwgaSwNCj4gPj4+Pj4gLQkJCQl3b3Jr ZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzKTsNCj4gPj4+Pj4gKw0KPiAJX19hdG9taWNfbG9h ZF9uKCZ3b3JrZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiArCQkJCQlfX0FU T01JQ19BQ1FVSVJFKSk7DQo+ID4+Pj4gX19BVE9NSUNfUkVMQVhFRCBpcyBlbm91Z2guDQo+ID4+ Pj4NCj4gPj4+Pj4gICAgIAlwcmludGYoIlNhbml0eSB0ZXN0IHdpdGggYWxsIHplcm8gaGFzaGVz IGRvbmUuXG4iKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkvKiBwaWNrIHR3byBmbG93cyBhbmQg Y2hlY2sgdGhleSBnbyBjb3JyZWN0bHkgKi8gQEAgLTE1OSw3DQo+ID4+Pj4+ICsxNjIsOSBAQCBz YW5pdHlfdGVzdChzdHJ1Y3Qgd29ya2VyX3BhcmFtcyAqd3AsIHN0cnVjdA0KPiBydGVfbWVtcG9v bA0KPiA+Pj4+PiAqcCkNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkJZm9yIChpID0gMDsgaSA8IHJ0 ZV9sY29yZV9jb3VudCgpIC0gMTsgaSsrKQ0KPiA+Pj4+PiAgICAgCQkJcHJpbnRmKCJXb3JrZXIg JXUgaGFuZGxlZCAldSBwYWNrZXRzXG4iLCBpLA0KPiA+Pj4+PiAtDQo+IAl3b3JrZXJfc3RhdHNb aV0uaGFuZGxlZF9wYWNrZXRzKTsNCj4gPj4+Pj4gKwkJCQlfX2F0b21pY19sb2FkX24oDQo+ID4+ Pj4+ICsNCj4gCSZ3b3JrZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiArCQkJ CQlfX0FUT01JQ19BQ1FVSVJFKSk7DQo+ID4+Pj4gX19BVE9NSUNfUkVMQVhFRCBpcyBlbm91Z2gN Cj4gPj4+Pg0KPiA+Pj4+PiAgICAgCQlwcmludGYoIlNhbml0eSB0ZXN0IHdpdGggdHdvIGhhc2gg dmFsdWVzIGRvbmVcbiIpOw0KPiA+Pj4+PiAgICAgCX0NCj4gPj4+Pj4NCj4gPj4+Pj4gQEAgLTE4 NSw3ICsxOTAsOCBAQCBzYW5pdHlfdGVzdChzdHJ1Y3Qgd29ya2VyX3BhcmFtcyAqd3AsIHN0cnVj dA0KPiA+Pj4+PiBydGVfbWVtcG9vbCAqcCkNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAlmb3IgKGkg PSAwOyBpIDwgcnRlX2xjb3JlX2NvdW50KCkgLSAxOyBpKyspDQo+ID4+Pj4+ICAgICAJCXByaW50 ZigiV29ya2VyICV1IGhhbmRsZWQgJXUgcGFja2V0c1xuIiwgaSwNCj4gPj4+Pj4gLQkJCQl3b3Jr ZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzKTsNCj4gPj4+Pj4gKw0KPiAJX19hdG9taWNfbG9h ZF9uKCZ3b3JrZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiArCQkJCQlfX0FU T01JQ19BQ1FVSVJFKSk7DQo+ID4+Pj4gX19BVE9NSUNfUkVMQVhFRCBpcyBlbm91Z2gNCj4gPj4+ Pg0KPiA+Pj4+PiAgICAgCXByaW50ZigiU2FuaXR5IHRlc3Qgd2l0aCBub24temVybyBoYXNoZXMg ZG9uZVxuIik7DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAJcnRlX21lbXBvb2xfcHV0X2J1bGsocCwg KHZvaWQgKilidWZzLCBCVVJTVCk7IEBAIC0yODAsMTUNCj4gPj4+Pj4gKzI4NiwxNyBAQCBoYW5k bGVfd29ya193aXRoX2ZyZWVfbWJ1ZnModm9pZCAqYXJnKQ0KPiA+Pj4+PiAgICAgCQlidWZbaV0g PSBOVUxMOw0KPiA+Pj4+PiAgICAgCW51bSA9IHJ0ZV9kaXN0cmlidXRvcl9nZXRfcGt0KGQsIGlk LCBidWYsIGJ1ZiwgbnVtKTsNCj4gPj4+Pj4gICAgIAl3aGlsZSAoIXF1aXQpIHsNCj4gPj4+Pj4g LQkJd29ya2VyX3N0YXRzW2lkXS5oYW5kbGVkX3BhY2tldHMgKz0gbnVtOw0KPiA+Pj4+PiAgICAg CQljb3VudCArPSBudW07DQo+ID4+Pj4+ICsNCj4gCV9fYXRvbWljX2ZldGNoX2FkZCgmd29ya2Vy X3N0YXRzW2lkXS5oYW5kbGVkX3BhY2tldHMsDQo+ID4+Pj4+IG51bSwNCj4gPj4+Pj4gKwkJCQlf X0FUT01JQ19BQ1FfUkVMKTsNCj4gPj4+PiBJTU8sIHRoZSBwcm9ibGVtIHdvdWxkIGJlIHRoZSBu b24tYXRvbWljIHVwZGF0ZSBvZiB0aGUgc3RhdGlzdGljcy4NCj4gPj4+PiBTbywgX19BVE9NSUNf UkVMQVhFRCBpcyBlbm91Z2gNCj4gPj4+Pg0KPiA+Pj4+PiAgICAgCQlmb3IgKGkgPSAwOyBpIDwg bnVtOyBpKyspDQo+ID4+Pj4+ICAgICAJCQlydGVfcGt0bWJ1Zl9mcmVlKGJ1ZltpXSk7DQo+ID4+ Pj4+ICAgICAJCW51bSA9IHJ0ZV9kaXN0cmlidXRvcl9nZXRfcGt0KGQsDQo+ID4+Pj4+ICAgICAJ CQkJaWQsIGJ1ZiwgYnVmLCBudW0pOw0KPiA+Pj4+PiAgICAgCX0NCj4gPj4+Pj4gLQl3b3JrZXJf c3RhdHNbaWRdLmhhbmRsZWRfcGFja2V0cyArPSBudW07DQo+ID4+Pj4+ICAgICAJY291bnQgKz0g bnVtOw0KPiA+Pj4+PiArCV9fYXRvbWljX2ZldGNoX2FkZCgmd29ya2VyX3N0YXRzW2lkXS5oYW5k bGVkX3BhY2tldHMsDQo+IG51bSwNCj4gPj4+Pj4gKwkJCV9fQVRPTUlDX0FDUV9SRUwpOw0KPiA+ Pj4+IFNhbWUgaGVyZSwgdGhlIHByb2JsZW0gaXMgbm9uLWF0b21pYyB1cGRhdGUgb2YgdGhlIHN0 YXRpc3RpY3MsDQo+ID4+PiBfX0FUT01JQ19SRUxBWEVEIGlzIGVub3VnaC4NCj4gPj4+PiBTaW1p bGFybHksIGZvciBjaGFuZ2VzIGJlbG93LCBfX0FUT01JQ19SRUxBWEVEIGlzIGVub3VnaC4NCj4g Pj4+Pg0KPiA+Pj4+PiAgICAgCXJ0ZV9kaXN0cmlidXRvcl9yZXR1cm5fcGt0KGQsIGlkLCBidWYs IG51bSk7DQo+ID4+Pj4+ICAgICAJcmV0dXJuIDA7DQo+ID4+Pj4+ICAgICB9DQo+ID4+Pj4+IEBA IC0zNjMsOCArMzcxLDkgQEAgaGFuZGxlX3dvcmtfZm9yX3NodXRkb3duX3Rlc3Qodm9pZCAqYXJn KQ0KPiA+Pj4+PiAgICAgCS8qIHdhaXQgZm9yIHF1aXQgc2luZ2xlIGdsb2JhbGx5LCBvciBmb3Ig d29ya2VyIHplcm8sIHdhaXQNCj4gPj4+Pj4gICAgIAkgKiBmb3IgemVyb19xdWl0ICovDQo+ID4+ Pj4+ICAgICAJd2hpbGUgKCFxdWl0ICYmICEoaWQgPT0gemVyb19pZCAmJiB6ZXJvX3F1aXQpKSB7 DQo+ID4+Pj4+IC0JCXdvcmtlcl9zdGF0c1tpZF0uaGFuZGxlZF9wYWNrZXRzICs9IG51bTsNCj4g Pj4+Pj4gICAgIAkJY291bnQgKz0gbnVtOw0KPiA+Pj4+PiArDQo+IAlfX2F0b21pY19mZXRjaF9h ZGQoJndvcmtlcl9zdGF0c1tpZF0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiBudW0sDQo+ID4+ Pj4+ICsJCQkJX19BVE9NSUNfQUNRX1JFTCk7DQo+ID4+Pj4+ICAgICAJCWZvciAoaSA9IDA7IGkg PCBudW07IGkrKykNCj4gPj4+Pj4gICAgIAkJCXJ0ZV9wa3RtYnVmX2ZyZWUoYnVmW2ldKTsNCj4g Pj4+Pj4gICAgIAkJbnVtID0gcnRlX2Rpc3RyaWJ1dG9yX2dldF9wa3QoZCwgQEAgLTM3OSwxMA0K PiArMzg4LDExIEBADQo+ID4+Pj4+IGhhbmRsZV93b3JrX2Zvcl9zaHV0ZG93bl90ZXN0KHZvaWQg KmFyZykNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkJdG90YWwgKz0gbnVtOw0KPiA+Pj4+PiAgICAg CX0NCj4gPj4+Pj4gLQl3b3JrZXJfc3RhdHNbaWRdLmhhbmRsZWRfcGFja2V0cyArPSBudW07DQo+ ID4+Pj4+ICAgICAJY291bnQgKz0gbnVtOw0KPiA+Pj4+PiAgICAgCXJldHVybmVkID0gcnRlX2Rp c3RyaWJ1dG9yX3JldHVybl9wa3QoZCwgaWQsIGJ1ZiwgbnVtKTsNCj4gPj4+Pj4NCj4gPj4+Pj4g KwlfX2F0b21pY19mZXRjaF9hZGQoJndvcmtlcl9zdGF0c1tpZF0uaGFuZGxlZF9wYWNrZXRzLA0K PiBudW0sDQo+ID4+Pj4+ICsJCQlfX0FUT01JQ19BQ1FfUkVMKTsNCj4gPj4+Pj4gICAgIAlpZiAo aWQgPT0gemVyb19pZCkgew0KPiA+Pj4+PiAgICAgCQkvKiBmb3Igd29ya2VyIHplcm8sIGFsbG93 IGl0IHRvIHJlc3RhcnQgdG8gcGljayB1cCBsYXN0DQo+IHBhY2tldA0KPiA+Pj4+PiAgICAgCQkg KiB3aGVuIGFsbCB3b3JrZXJzIGFyZSBzaHV0dGluZyBkb3duLg0KPiA+Pj4+PiBAQCAtMzk0LDEw ICs0MDQsMTEgQEAgaGFuZGxlX3dvcmtfZm9yX3NodXRkb3duX3Rlc3Qodm9pZCAqYXJnKQ0KPiA+ Pj4+PiAgICAgCQkJCWlkLCBidWYsIGJ1ZiwgbnVtKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAkJ d2hpbGUgKCFxdWl0KSB7DQo+ID4+Pj4+IC0JCQl3b3JrZXJfc3RhdHNbaWRdLmhhbmRsZWRfcGFj a2V0cyArPSBudW07DQo+ID4+Pj4+ICAgICAJCQljb3VudCArPSBudW07DQo+ID4+Pj4+ICAgICAJ CQlydGVfcGt0bWJ1Zl9mcmVlKHBrdCk7DQo+ID4+Pj4+ICAgICAJCQludW0gPSBydGVfZGlzdHJp YnV0b3JfZ2V0X3BrdChkLCBpZCwgYnVmLCBidWYsDQo+IG51bSk7DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gCV9fYXRvbWljX2ZldGNoX2FkZCgmd29ya2VyX3N0YXRzW2lkXS5oYW5kbGVkX3BhY2tldHMs DQo+ID4+Pj4+ICsJCQkJCW51bSwgX19BVE9NSUNfQUNRX1JFTCk7DQo+ID4+Pj4+ICAgICAJCX0N Cj4gPj4+Pj4gICAgIAkJcmV0dXJuZWQgPSBydGVfZGlzdHJpYnV0b3JfcmV0dXJuX3BrdChkLA0K PiA+Pj4+PiAgICAgCQkJCWlkLCBidWYsIG51bSk7DQo+ID4+Pj4+IEBAIC00NjEsNyArNDcyLDgg QEAgc2FuaXR5X3Rlc3Rfd2l0aF93b3JrZXJfc2h1dGRvd24oc3RydWN0DQo+ID4+Pj4+IHdvcmtl cl9wYXJhbXMgKndwLA0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgCWZvciAoaSA9IDA7IGkgPCBydGVf bGNvcmVfY291bnQoKSAtIDE7IGkrKykNCj4gPj4+Pj4gICAgIAkJcHJpbnRmKCJXb3JrZXIgJXUg aGFuZGxlZCAldSBwYWNrZXRzXG4iLCBpLA0KPiA+Pj4+PiAtCQkJCXdvcmtlcl9zdGF0c1tpXS5o YW5kbGVkX3BhY2tldHMpOw0KPiA+Pj4+PiArDQo+IAlfX2F0b21pY19sb2FkX24oJndvcmtlcl9z dGF0c1tpXS5oYW5kbGVkX3BhY2tldHMsDQo+ID4+Pj4+ICsJCQkJCV9fQVRPTUlDX0FDUVVJUkUp KTsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgIAlpZiAodG90YWxfcGFja2V0X2NvdW50KCkgIT0gQlVS U1QgKiAyKSB7DQo+ID4+Pj4+ICAgICAJCXByaW50ZigiTGluZSAlZDogRXJyb3IsIG5vdCBhbGwg cGFja2V0cyBmbHVzaGVkLiAiDQo+ID4+Pj4+IEBAIC01MTQsNyArNTI2LDggQEAgdGVzdF9mbHVz aF93aXRoX3dvcmtlcl9zaHV0ZG93bihzdHJ1Y3QNCj4gPj4+Pj4gd29ya2VyX3BhcmFtcyAqd3As DQo+ID4+Pj4+ICAgICAJemVyb19xdWl0ID0gMDsNCj4gPj4+Pj4gICAgIAlmb3IgKGkgPSAwOyBp IDwgcnRlX2xjb3JlX2NvdW50KCkgLSAxOyBpKyspDQo+ID4+Pj4+ICAgICAJCXByaW50ZigiV29y a2VyICV1IGhhbmRsZWQgJXUgcGFja2V0c1xuIiwgaSwNCj4gPj4+Pj4gLQkJCQl3b3JrZXJfc3Rh dHNbaV0uaGFuZGxlZF9wYWNrZXRzKTsNCj4gPj4+Pj4gKw0KPiAJX19hdG9taWNfbG9hZF9uKCZ3 b3JrZXJfc3RhdHNbaV0uaGFuZGxlZF9wYWNrZXRzLA0KPiA+Pj4+PiArCQkJCQlfX0FUT01JQ19B Q1FVSVJFKSk7DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAJaWYgKHRvdGFsX3BhY2tldF9jb3VudCgp ICE9IEJVUlNUKSB7DQo+ID4+Pj4+ICAgICAJCXByaW50ZigiTGluZSAlZDogRXJyb3IsIG5vdCBh bGwgcGFja2V0cyBmbHVzaGVkLiAiDQo+ID4+Pj4+IC0tDQo+ID4+Pj4+IDIuMTcuMQ0KPiA+Pj4g LS0NCj4gPj4+IEx1a2FzeiBXb2pjaWVjaG93c2tpDQo+ID4+PiBQcmluY2lwYWwgU29mdHdhcmUg RW5naW5lZXINCj4gPj4+DQo+ID4+PiBTYW1zdW5nIFImRCBJbnN0aXR1dGUgUG9sYW5kDQo+ID4+ PiBTYW1zdW5nIEVsZWN0cm9uaWNzDQo+ID4+PiBPZmZpY2UgKzQ4IDIyIDM3NyA4OCAyNQ0KPiA+ Pj4gbC53b2pjaWVjaG93QHBhcnRuZXIuc2Ftc3VuZy5jb20NCj4gDQo+IC0tDQo+IEx1a2FzeiBX b2pjaWVjaG93c2tpDQo+IFByaW5jaXBhbCBTb2Z0d2FyZSBFbmdpbmVlcg0KPiANCj4gU2Ftc3Vu ZyBSJkQgSW5zdGl0dXRlIFBvbGFuZA0KPiBTYW1zdW5nIEVsZWN0cm9uaWNzDQo+IE9mZmljZSAr NDggMjIgMzc3IDg4IDI1DQo+IGwud29qY2llY2hvd0BwYXJ0bmVyLnNhbXN1bmcuY29tDQoNCg==