From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43562CA9ECE for ; Fri, 18 Oct 2019 03:33:13 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 3BE1521897 for ; Fri, 18 Oct 2019 03:33:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="aaEWe15v"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com header.b="aaEWe15v" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3BE1521897 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B08611DFF2; Fri, 18 Oct 2019 05:33:10 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20070.outbound.protection.outlook.com [40.107.2.70]) by dpdk.org (Postfix) with ESMTP id 74DEE1DFF1 for ; Fri, 18 Oct 2019 05:33:09 +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=zrYYVXycE6cOKIfVXhPJaNvnn21QibzSS5MSAXBHyOA=; b=aaEWe15v4FxrsHlJWp7RU0ne0r1YdLOVeJ8L7vc1dFeMyYhC/FGPDmzOWSsjLLo04+rZ9EQ55rGh3MT1vOJe76GGAhW5D7zdM17QH8Btq8kH/HvbUESJpIYn8gcvOaZwCKowyNPC0SRjbD9ejohDug3UJ9987YVpYltNU0W4zFo= Received: from HE1PR08CA0062.eurprd08.prod.outlook.com (2603:10a6:7:2a::33) by AM0PR08MB3876.eurprd08.prod.outlook.com (2603:10a6:208:fc::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Fri, 18 Oct 2019 03:33:06 +0000 Received: from VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::202) by HE1PR08CA0062.outlook.office365.com (2603:10a6:7:2a::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2347.17 via Frontend Transport; Fri, 18 Oct 2019 03:33:06 +0000 Authentication-Results: spf=temperror (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=none action=none header.from=arm.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of arm.com: DNS Timeout) Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT043.mail.protection.outlook.com (10.152.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2305.15 via Frontend Transport; Fri, 18 Oct 2019 03:33:04 +0000 Received: ("Tessian outbound 3fba803f6da3:v33"); Fri, 18 Oct 2019 03:33:01 +0000 X-CR-MTA-TID: 64aa7808 Received: from cd7589888d27.2 (ip-172-16-0-2.eu-west-1.compute.internal [104.47.1.56]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id A61E6C9B-34AA-4525-8E6E-A3A9D1F26F0A.1; Fri, 18 Oct 2019 03:32:56 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2056.outbound.protection.outlook.com [104.47.1.56]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cd7589888d27.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 18 Oct 2019 03:32:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jYk+NaRlKlSPR+P89mFdM3ZCmvb52vMsAR269kPKDkmYLzs0Kc1HJJs93GtgUTvuCzq5TRlsvV8FawtzcnrvvnJepixinW39aoGp8wp71OsBLOrqHj6/HNG9ya9fOvMxn2BJ20IygfdA8GBQHzUCGPXQpWMpq+7YOIpjNh6OjOlswozQNhm+0jEhg6QTI1gWCRYZ6W5eGvZ1+WMxSk+Oli0XDotAaLlh4O2wxCr5d1+q23jBBb5pcIAxCBlV4xwYtEn3ddGpK0dgkPMMWV4sOXRxnv1ItIHXZe1ZoVv/VDwTRy3pneyIY7SOVqFxppiJXwWhsL387t/8I7SvPvVf6A== 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=zrYYVXycE6cOKIfVXhPJaNvnn21QibzSS5MSAXBHyOA=; b=EO2tiXRssVYr0LJyassb8B+PgV4BqcpJHuP9q8uCbjCAzywraoWAmEKdG2Fd3GHke3IBbwEg2IsEHCIYVF7PTEsHB28cNJ8JJiAVxIxbm9ABYUrWrOcPx0SGrvT3/L4kqzQDPocGahCz6U6zjRQvZiO6sFrekkaUUlCC15/GBod2eqoM6KrJ65bbbrOYbn0gMfJJ6t5Qi+jVncIxFvjOd13qPVZQVDdDONg+qVbefUhJN2ZgAmN2E4UG7t40R/K/3Evr/Pqo4VI4WL/bi7ypo0cOMyiKDv8OAr6vKvr/NKBn955E1HFAvSreIIRoONK49ZWvO+iyiuKT7ZPjgnqYRg== 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=zrYYVXycE6cOKIfVXhPJaNvnn21QibzSS5MSAXBHyOA=; b=aaEWe15v4FxrsHlJWp7RU0ne0r1YdLOVeJ8L7vc1dFeMyYhC/FGPDmzOWSsjLLo04+rZ9EQ55rGh3MT1vOJe76GGAhW5D7zdM17QH8Btq8kH/HvbUESJpIYn8gcvOaZwCKowyNPC0SRjbD9ejohDug3UJ9987YVpYltNU0W4zFo= Received: from VE1PR08MB5149.eurprd08.prod.outlook.com (20.179.30.27) by VE1PR08MB4639.eurprd08.prod.outlook.com (10.255.112.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Fri, 18 Oct 2019 03:32:53 +0000 Received: from VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::8c82:8d9c:c78d:22a6]) by VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::8c82:8d9c:c78d:22a6%7]) with mapi id 15.20.2347.023; Fri, 18 Oct 2019 03:32:53 +0000 From: Honnappa Nagarahalli To: "Ananyev, Konstantin" , "Richardson, Bruce" , "Medvedkin, Vladimir" , "olivier.matz@6wind.com" CC: "dev@dpdk.org" , "stephen@networkplumber.org" , "paulmck@linux.ibm.com" , "Gavin Hu (Arm Technology China)" , Dharmik Thakkar , "Ruifeng Wang (Arm Technology China)" , Honnappa Nagarahalli , nd , nd Thread-Topic: [PATCH v3 1/3] lib/lpm: integrate RCU QSBR Thread-Index: AQHVeIYn7Ch9Psq+bkuvfni/VY08BadO8EQAgAkGgoCAA6vFgIADw9lw Date: Fri, 18 Oct 2019 03:32:52 +0000 Message-ID: References: <20190906094534.36060-1-ruifeng.wang@arm.com> <20191001182857.43867-1-honnappa.nagarahalli@arm.com> <20191001182857.43867-2-honnappa.nagarahalli@arm.com> <2601191342CEEE43887BDE71AB9772580191971F35@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725801A8C68CBC@IRSMSX104.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB97725801A8C68CBC@IRSMSX104.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 03163661-54c6-4f2c-adc1-82c6855fdaf1.0 x-checkrecipientchecked: true Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: b8987982-779a-4f65-2853-08d7537be28c X-MS-Office365-Filtering-HT: Tenant X-MS-TrafficTypeDiagnostic: VE1PR08MB4639:|VE1PR08MB4639:|AM0PR08MB3876: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:3044;OLM:3044; x-forefront-prvs: 01949FE337 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM; SFS:(10009020)(4636009)(346002)(376002)(396003)(39860400002)(366004)(136003)(199004)(189003)(6506007)(7696005)(66066001)(71200400001)(9686003)(25786009)(14454004)(6436002)(316002)(54906003)(110136005)(86362001)(14444005)(71190400001)(256004)(2501003)(6116002)(30864003)(52536014)(55016002)(99286004)(5660300002)(3846002)(229853002)(76176011)(2906002)(478600001)(186003)(11346002)(446003)(81166006)(305945005)(7736002)(81156014)(6246003)(4326008)(76116006)(66556008)(66446008)(26005)(64756008)(476003)(8676002)(33656002)(66946007)(102836004)(74316002)(486006)(66476007)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR08MB4639; H:VE1PR08MB5149.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: VsNZlPw/uN+zongz5wDUpDzuJX911XAl7b8Mf734d1XTQ6p9YVzTVXPpo8y4lWH27mxqgj16ohI+ryWGne1FtKj4A8dV8k4rCktJ8qxC/vOiuc69I9zrwRtOc7AijNPhHdXFgOhAC7Pe1UWQ9jIUtbmM83HCpZrn+6u3CtPL1MIkNMd0PCp6G8ChBC7+AKe/7NKWCwxC74L3WGz8ejmVSfM+9umMwc5+f2mVZ8fhtusBWhjYGITxgi1AvXdytMSpg2LMSfWHfD6h9PR1WMdxaEadFqBGNUIEnZY6jrHhIXOTYvWy8cb7KdMp1VKczzeYbq3m+VmLK5x5QL46K+w8ZEiBkPwUuM6B/ApoMFxs2DYOcBFDuBY9BPnk/pPTq/p9i1wXM5XqgrxmwzuH7sQwtDnLWQ+hMMYHcSGJkMlOvro= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4639 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; IPV:CAL; SCL:-1; CTRY:IE; EFV:NLI; SFV:NSPM; SFS:(10009020)(4636009)(346002)(39860400002)(396003)(136003)(376002)(199004)(189003)(316002)(2906002)(33656002)(22756006)(356004)(3846002)(26005)(6116002)(14444005)(186003)(9686003)(47776003)(6506007)(55016002)(7696005)(25786009)(66066001)(2486003)(23676004)(76176011)(6246003)(2501003)(229853002)(4326008)(102836004)(14454004)(50466002)(86362001)(99286004)(478600001)(26826003)(336012)(63350400001)(486006)(126002)(8936002)(36906005)(76130400001)(70206006)(54906003)(476003)(70586007)(11346002)(446003)(436003)(74316002)(30864003)(5660300002)(52536014)(7736002)(8676002)(305945005)(81166006)(81156014)(110136005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR08MB3876; H:64aa7808-outbound-1.mta.getcheckrecipient.com; FPR:; SPF:TempError; LANG:en; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; A:1; MX:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 7a4ba252-ca85-4f5e-96bd-08d7537bdbe3 NoDisclaimer: True X-Forefront-PRVS: 01949FE337 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DnXAGuQN5VGzMuIKEraQhnF6faL+S86kbPfsbUmVQmrqp3bHqSjwaXe1s3qmwyFNjXEgEbo0f77AIRoEADZ5bLzitSHR867qH8pHsTsAIuka1jxetNQsu+h+soVj0Zmwb/RBUI/Z8zBLQxkjTDjLTeepn6rg+XCZ91E5riO1ICLVuUwHMBDTrmjeFCyImOkEShcic9MZSpFmGbdhxD8nsyVf52SxTseOLOiMiUWc4vpsq1YratTXiaOIhry5i6M+PMtSr6RnBbhF446hrgDLe5v2ZVU8Gdl/dpLXIbZ+HiPorFuGpLBbyJvXM1jie5t7AwyUQb4DVoTBysuVbSDezAlnwrPpGjpQUSsZUsJS86aGRBsB/9Tm0lHZJ6fgJt5CwGxgbZpI3++y95/eIQ0yY1ahilV3MNshR8XQMFH0rnU= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2019 03:33:04.1722 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b8987982-779a-4f65-2853-08d7537be28c 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-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3876 Subject: Re: [dpdk-dev] [PATCH v3 1/3] lib/lpm: integrate RCU QSBR X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" PHNuaXA+DQoNCj4gPg0KPiA+ID4gSGkgZ3V5cywNCj4gPiBJIGhhdmUgdHJpZWQgdG8gY29uc29s aWRhdGUgZGVzaWduIHJlbGF0ZWQgcXVlc3Rpb25zIGhlcmUuIElmIEkgaGF2ZSBtaXNzZWQNCj4g YW55dGhpbmcsIHBsZWFzZSBhZGQuDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEZyb206 IFJ1aWZlbmcgV2FuZyA8cnVpZmVuZy53YW5nQGFybS5jb20+DQo+ID4gPiA+DQo+ID4gPiA+IEN1 cnJlbnRseSwgdGhlIHRibDggZ3JvdXAgaXMgZnJlZWQgZXZlbiB0aG91Z2ggdGhlIHJlYWRlcnMg bWlnaHQNCj4gPiA+ID4gYmUgdXNpbmcgdGhlIHRibDggZ3JvdXAgZW50cmllcy4gVGhlIGZyZWVk IHRibDggZ3JvdXAgY2FuIGJlDQo+ID4gPiA+IHJlYWxsb2NhdGVkIHF1aWNrbHkuIFRoaXMgcmVz dWx0cyBpbiBpbmNvcnJlY3QgbG9va3VwIHJlc3VsdHMuDQo+ID4gPiA+DQo+ID4gPiA+IFJDVSBR U0JSIHByb2Nlc3MgaXMgaW50ZWdyYXRlZCBmb3Igc2FmZSB0Ymw4IGdyb3VwIHJlY2xhaW0uDQo+ ID4gPiA+IFJlZmVyIHRvIFJDVSBkb2N1bWVudGF0aW9uIHRvIHVuZGVyc3RhbmQgdmFyaW91cyBh c3BlY3RzIG9mDQo+ID4gPiA+IGludGVncmF0aW5nIFJDVSBsaWJyYXJ5IGludG8gb3RoZXIgbGli cmFyaWVzLg0KPiA+ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSdWlmZW5nIFdhbmcgPHJ1 aWZlbmcud2FuZ0Bhcm0uY29tPg0KPiA+ID4gPiBSZXZpZXdlZC1ieTogSG9ubmFwcGEgTmFnYXJh aGFsbGkgPGhvbm5hcHBhLm5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4g PiAgbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMyArLQ0KPiA+ID4gPiAg bGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgICAgICAgICB8ICAgMiArDQo+ID4gPiA+ICBsaWIv bGlicnRlX2xwbS9ydGVfbHBtLmMgICAgICAgICAgIHwgMTAyICsrKysrKysrKysrKysrKysrKysr KysrKystLS0tDQo+ID4gPiA+ICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtLmggICAgICAgICAgIHwg IDIxICsrKysrKw0KPiA+ID4gPiAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcCB8 ICAgNiArKw0KPiA+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTIg ZGVsZXRpb25zKC0pDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xw bS9NYWtlZmlsZSBiL2xpYi9saWJydGVfbHBtL01ha2VmaWxlDQo+ID4gPiA+IGluZGV4DQo+ID4g PiA+IGE3OTQ2YTFjNS4uY2E5ZTE2MzEyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9saWIvbGlicnRl X2xwbS9NYWtlZmlsZQ0KPiA+ID4gPiArKysgYi9saWIvbGlicnRlX2xwbS9NYWtlZmlsZQ0KPiA+ ID4gPiBAQCAtNiw5ICs2LDEwIEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5tayAg IyBsaWJyYXJ5IG5hbWUNCj4gPiA+ID4gTElCID0gbGlicnRlX2xwbS5hDQo+ID4gPiA+DQo+ID4g PiA+ICtDRkxBR1MgKz0gLURBTExPV19FWFBFUklNRU5UQUxfQVBJDQo+ID4gPiA+ICBDRkxBR1Mg Kz0gLU8zDQo+ID4gPiA+ICBDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpIC1JJChTUkNESVIpIC1M RExJQlMgKz0gLWxydGVfZWFsDQo+ID4gPiA+IC1scnRlX2hhc2gNCj4gPiA+ID4gK0xETElCUyAr PSAtbHJ0ZV9lYWwgLWxydGVfaGFzaCAtbHJ0ZV9yY3UNCj4gPiA+ID4NCj4gPiA+ID4gIEVYUE9S VF9NQVAgOj0gcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQNCj4gPiA+ID4gYi9saWIvbGlicnRlX2xwbS9t ZXNvbi5idWlsZCBpbmRleCBhNTE3NmQ4YWUuLjE5YTM1MTA3ZiAxMDA2NDQNCj4gPiA+ID4gLS0t IGEvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQNCj4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9s cG0vbWVzb24uYnVpbGQNCj4gPiA+ID4gQEAgLTIsOSArMiwxMSBAQA0KPiA+ID4gPiAgIyBDb3B5 cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4gPg0KPiA+ID4gPiAgdmVyc2lv biA9IDINCj4gPiA+ID4gK2FsbG93X2V4cGVyaW1lbnRhbF9hcGlzID0gdHJ1ZQ0KPiA+ID4gPiAg c291cmNlcyA9IGZpbGVzKCdydGVfbHBtLmMnLCAncnRlX2xwbTYuYycpICBoZWFkZXJzID0NCj4g PiA+ID4gZmlsZXMoJ3J0ZV9scG0uaCcsICdydGVfbHBtNi5oJykgICMgc2luY2UgaGVhZGVyIGZp bGVzIGhhdmUNCj4gPiA+ID4gZGlmZmVyZW50IG5hbWVzLCB3ZSBjYW4gaW5zdGFsbCBhbGwgdmVj dG9yIGhlYWRlcnMgICMgd2l0aG91dA0KPiA+ID4gPiB3b3JyeWluZyBhYm91dCB3aGljaCBhcmNo aXRlY3R1cmUgd2UgYWN0dWFsbHkgbmVlZCAgaGVhZGVycyArPQ0KPiA+ID4gPiBmaWxlcygncnRl X2xwbV9hbHRpdmVjLmgnLCAncnRlX2xwbV9uZW9uLmgnLCAncnRlX2xwbV9zc2UuaCcpDQo+ID4g PiA+IGRlcHMgKz0gWydoYXNoJ10NCj4gPiA+ID4gK2RlcHMgKz0gWydyY3UnXQ0KPiA+ID4gPiBk aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jIGIvbGliL2xpYnJ0ZV9scG0vcnRl X2xwbS5jDQo+ID4gPiA+IGluZGV4DQo+ID4gPiA+IDNhOTI5YTFiMS4uY2E1OGQ0YjM1IDEwMDY0 NA0KPiA+ID4gPiAtLS0gYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4gPiA+ID4gKysrIGIv bGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jDQo+ID4gPiA+IEBAIC0xLDUgKzEsNiBAQA0KPiA+ID4g PiAgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ID4gPiAgICog Q29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4gPiArICogQ29w eXJpZ2h0KGMpIDIwMTkgQXJtIExpbWl0ZWQNCj4gPiA+ID4gICAqLw0KPiA+ID4gPg0KPiA+ID4g PiAgI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ID4gPiBAQCAtMzgxLDYgKzM4Miw4IEBAIHJ0ZV9s cG1fZnJlZV92MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtKQ0KPiA+ID4gPg0KPiA+ID4gPiAgCXJ0 ZV9tY2ZnX3RhaWxxX3dyaXRlX3VubG9jaygpOw0KPiA+ID4gPg0KPiA+ID4gPiArCWlmIChscG0t PmRxKQ0KPiA+ID4gPiArCQlydGVfcmN1X3FzYnJfZHFfZGVsZXRlKGxwbS0+ZHEpOw0KPiA+ID4g PiAgCXJ0ZV9mcmVlKGxwbS0+dGJsOCk7DQo+ID4gPiA+ICAJcnRlX2ZyZWUobHBtLT5ydWxlc190 YmwpOw0KPiA+ID4gPiAgCXJ0ZV9mcmVlKGxwbSk7DQo+ID4gPiA+IEBAIC0zOTAsNiArMzkzLDU5 IEBAIEJJTkRfREVGQVVMVF9TWU1CT0wocnRlX2xwbV9mcmVlLCBfdjE2MDQsDQo+ID4gPiAxNi4w NCk7DQo+ID4gPiA+IE1BUF9TVEFUSUNfU1lNQk9MKHZvaWQgcnRlX2xwbV9mcmVlKHN0cnVjdCBy dGVfbHBtICpscG0pLA0KPiA+ID4gPiAgCQlydGVfbHBtX2ZyZWVfdjE2MDQpOw0KPiA+ID4gPg0K PiA+ID4gPiArc3RydWN0IF9fcnRlX2xwbV9yY3VfZHFfZW50cnkgew0KPiA+ID4gPiArCXVpbnQz Ml90IHRibDhfZ3JvdXBfaW5kZXg7DQo+ID4gPiA+ICsJdWludDMyX3QgcGFkOw0KPiA+ID4gPiAr fTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIHZvaWQNCj4gPiA+ID4gK19fbHBtX3JjdV9x c2JyX2ZyZWVfcmVzb3VyY2Uodm9pZCAqcCwgdm9pZCAqZGF0YSkgew0KPiA+ID4gPiArCXN0cnVj dCBydGVfbHBtX3RibF9lbnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07DQo+ID4gPiA+ICsJc3Ry dWN0IF9fcnRlX2xwbV9yY3VfZHFfZW50cnkgKmUgPQ0KPiA+ID4gPiArCQkJKHN0cnVjdCBfX3J0 ZV9scG1fcmN1X2RxX2VudHJ5ICopZGF0YTsNCj4gPiA+ID4gKwlzdHJ1Y3QgcnRlX2xwbV90Ymxf ZW50cnkgKnRibDggPSAoc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICopcDsNCj4gPiA+ID4gKw0K PiA+ID4gPiArCS8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQgKi8NCj4gPiA+ID4gKwlfX2F0b21p Y19zdG9yZSgmdGJsOFtlLT50Ymw4X2dyb3VwX2luZGV4XSwgJnplcm9fdGJsOF9lbnRyeSwNCj4g PiA+ID4gKwkJX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKy8qIEFzc29jaWF0ZSBRU0JSIHZhcmlhYmxlIHdpdGggYW4gTFBNIG9iamVjdC4NCj4gPiA+ ID4gKyAqLw0KPiA+ID4gPiAraW50DQo+ID4gPiA+ICtydGVfbHBtX3JjdV9xc2JyX2FkZChzdHJ1 Y3QgcnRlX2xwbSAqbHBtLCBzdHJ1Y3QgcnRlX3JjdV9xc2JyICp2KSB7DQo+ID4gPiA+ICsJY2hh ciByY3VfZHFfbmFtZVtSVEVfUkNVX1FTQlJfRFFfTkFNRVNJWkVdOw0KPiA+ID4gPiArCXN0cnVj dCBydGVfcmN1X3FzYnJfZHFfcGFyYW1ldGVycyBwYXJhbXM7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwlpZiAoKGxwbSA9PSBOVUxMKSB8fCAodiA9PSBOVUxMKSkgew0KPiA+ID4gPiArCQlydGVfZXJy bm8gPSBFSU5WQUw7DQo+ID4gPiA+ICsJCXJldHVybiAxOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArCWlmIChscG0tPmRxKSB7DQo+ID4gPiA+ICsJCXJ0ZV9lcnJubyA9IEVFWElT VDsNCj4gPiA+ID4gKwkJcmV0dXJuIDE7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ ICsJLyogSW5pdCBRU0JSIGRlZmVyIHF1ZXVlLiAqLw0KPiA+ID4gPiArCXNucHJpbnRmKHJjdV9k cV9uYW1lLCBzaXplb2YocmN1X2RxX25hbWUpLCAiTFBNX1JDVV8lcyIsIGxwbS0NCj4gPiA+ID5u YW1lKTsNCj4gPiA+ID4gKwlwYXJhbXMubmFtZSA9IHJjdV9kcV9uYW1lOw0KPiA+ID4gPiArCXBh cmFtcy5zaXplID0gbHBtLT5udW1iZXJfdGJsOHM7DQo+ID4gPiA+ICsJcGFyYW1zLmVzaXplID0g c2l6ZW9mKHN0cnVjdCBfX3J0ZV9scG1fcmN1X2RxX2VudHJ5KTsNCj4gPiA+ID4gKwlwYXJhbXMu ZiA9IF9fbHBtX3JjdV9xc2JyX2ZyZWVfcmVzb3VyY2U7DQo+ID4gPiA+ICsJcGFyYW1zLnAgPSBs cG0tPnRibDg7DQo+ID4gPiA+ICsJcGFyYW1zLnYgPSB2Ow0KPiA+ID4gPiArCWxwbS0+ZHEgPSBy dGVfcmN1X3FzYnJfZHFfY3JlYXRlKCZwYXJhbXMpOw0KPiA+ID4gPiArCWlmIChscG0tPmRxID09 IE5VTEwpIHsNCj4gPiA+ID4gKwkJUlRFX0xPRyhFUlIsIExQTSwgIkxQTSBRUyBkZWZlciBxdWV1 ZSBjcmVhdGlvbiBmYWlsZWRcbiIpOw0KPiA+ID4gPiArCQlyZXR1cm4gMTsNCj4gPiA+ID4gKwl9 DQo+ID4gPg0KPiA+ID4gRmV3IHRob3VnaHRzIGFib3V0IHRoYXQgZnVuY3Rpb246DQo+ID4gRmV3 IHRoaW5ncyB0byBrZWVwIGluIG1pbmQsIHRoZSBnb2FsIG9mIHRoZSBkZXNpZ24gaXMgdG8gbWFr ZSBpdCBlYXN5DQo+ID4gZm9yIHRoZSBhcHBsaWNhdGlvbnMgdG8gYWRvcHQgbG9jay1mcmVlIGFs Z29yaXRobXMuIFRoZSByZWNsYW1hdGlvbg0KPiA+IHByb2Nlc3MgaW4gdGhlIHdyaXRlciBpcyBh IG1ham9yIHBvcnRpb24gb2YgY29kZSBvbmUgaGFzIHRvIHdyaXRlIGZvciB1c2luZw0KPiBsb2Nr LWZyZWUgYWxnb3JpdGhtcy4gVGhlIGN1cnJlbnQgZGVzaWduIGlzIHN1Y2ggdGhhdCB0aGUgd3Jp dGVyIGRvZXMgbm90IGhhdmUNCj4gdG8gY2hhbmdlIGFueSBjb2RlIG9yIHdyaXRlIGFkZGl0aW9u YWwgY29kZSBvdGhlciB0aGFuIGNhbGxpbmcNCj4gJ3J0ZV9scG1fcmN1X3FzYnJfYWRkJy4NCj4g Pg0KPiA+ID4gSXQgbmFtZXMgcmN1X3FzYnJfYWRkKCkgYnV0IGluIGZhY3QgaXQgYWxsb2NhdGVz IGRlZmVyIHF1ZXVlIGZvciBnaXZlIHJjdSB2YXIuDQo+ID4gPiBTbyBmaXJzdCB0aG91Z2h0IC0g aXMgaXQgYWx3YXlzIG5lY2Vzc2FyeT8NCj4gPiBUaGlzIGlzIHBhcnQgb2YgdGhlIGRlc2lnbi4g SWYgdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHdhbnQgdG8gdXNlDQo+ID4gdGhpcyBpbnRlZ3Jh dGVkIGxvZ2ljIHRoZW4sIGl0IGRvZXMgbm90IGhhdmUgdG8gY2FsbCB0aGlzIEFQSS4gSXQgY2Fu DQo+ID4gdXNlIHRoZSBSQ1UgZGVmZXIgQVBJcyB0byBpbXBsZW1lbnQgaXRzIG93biBsb2dpYy4g QnV0LCBpZiBJIGFzayB0aGUgcXVlc3Rpb24sDQo+IGRvZXMgdGhpcyBpbnRlZ3JhdGVkIGxvZ2lj IGFkZHJlc3MgbW9zdCBvZiB0aGUgdXNlIGNhc2VzIG9mIHRoZSBMUE0gbGlicmFyeSwgSQ0KPiB0 aGluayB0aGUgYW5zd2VyIGlzIHllcy4NCj4gPg0KPiA+ID4gRm9yIHNvbWUgdXNlLWNhc2VzIEkg c3VwcG9zZSB1c2VyIG1pZ2h0IGJlIG9rIHRvIHdhaXQgZm9yIHF1aWVzY2VudA0KPiA+ID4gc3Rh dGUgY2hhbmdlIGluc2lkZSB0Ymw4X2ZyZWUoKT8NCj4gPiBZZXMsIHRoYXQgaXMgYSBwb3NzaWJp bGl0eSAoZm9yIGV4OiBubyBmcmVxdWVudCByb3V0ZSBjaGFuZ2VzKS4gQnV0LCBJDQo+ID4gdGhp bmsgdGhhdCBpcyB2ZXJ5IHRyaXZpYWwgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBpbXBsZW1lbnQu IFRob3VnaCwgdGhlIExQTQ0KPiBsaWJyYXJ5IGhhcyB0byBzZXBhcmF0ZSB0aGUgJ2RlbGV0ZScg YW5kICdmcmVlJyBvcGVyYXRpb25zLg0KPiANCj4gRXhhY3RseS4NCj4gVGhhdCdzIHdoeSBpdCBp cyBub3QgdHJpdmlhbCB3aXRoIGN1cnJlbnQgTFBNIGxpYnJhcnkuDQo+IEluIGZhY3QgdG8gZG8g dGhhdCBoaW1zZWxmIHJpZ2h0IG5vdywgdXNlciB3b3VsZCBoYXZlIHRvIGltcGxlbWVudCBhbmQg c3VwcG9ydA0KPiBoaXMgb3duIHZlcnNpb24gb2YgTFBNIGNvZGUuDQrwn5iKLCB3ZWxsIHdlIGRl ZmluaXRlbHkgZG9uJ3Qgd2FudCB0aGVtIHRvIHdyaXRlIHRoZWlyIG93biBsaWJyYXJ5IChpZiBE UERLIExQTSBpcyBlbm91Z2gpDQpJTU8sIHdlIG5lZWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90 aGVyIGxpYnJhcmllcyBpbiB0ZXJtcyBvZiBBUElzLiBUaGF0J3MgYW5vdGhlciB0b3BpYy4NCkkg ZG8gbm90IHNlZSBhbnkgcHJvYmxlbSB0byBpbXBsZW1lbnQgdGhpcyBvciBwcm92aWRlIGZhY2ls aXR5IHRvIGltcGxlbWVudCB0aGlzIGluIHRoZSBmdXR1cmUgaW4gdGhlIEFQSXMgbm93LiBXZSBj YW4gYWRkICdmbGFncycgZmllbGQgd2hpY2ggd2lsbCBhbGxvdyBmb3Igb3RoZXIgbWV0aG9kcyBv ZiByZWNsYW1hdGlvbi4NCg0KPiANCj4gSG9uZXN0bHksIEkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkg eW91IGNvbnNpZGVyIGl0IGFzIGEgZHJhd2JhY2suDQo+IEZyb20gbXkgcGVyc3BlY3RpdmUgb25s eSBmZXcgdGhpbmdzIG5lZWQgdG8gYmUgY2hhbmdlZDoNCj4gDQo+IDEuIEFkZCAyIHBhcmFtZXRl cnMgdG8gJ3J0ZV9scG1fcmN1X3FzYnJfYWRkKCk6DQo+ICAgICBudW1iZXIgb2YgZWxlbXMgaW4g ZGVmZXJfcXVldWUNCj4gICAgIHJlY2xhaW0oKSB0aHJlc2hvbGQgdmFsdWUuDQo+IElmIHRoZSB1 c2VyIGRvZXNuJ3Qgd2FudCB0byBwcm92aWRlIGFueSB2YWx1ZXMsIHRoYXQncyBmaW5lIHdlIGNh biB1c2UgZGVmYXVsdA0KPiBvbmVzIGhlcmUgKGFzIHlvdSBkbyBpdCByaWdodCBub3cpLg0KSSB0 aGluayB3ZSBoYXZlIGFncmVlZCBvbiB0aGlzLCBJIHNlZSB0aGUgdmFsdWUgaW4gZG9pbmcgdGhp cy4NCg0KPiAyLiBNYWtlIHJ0ZV9scG1fcmN1X3FzYnJfYWRkKCkgdG8gcmV0dXJuIHBvaW50ZXIg dG8gdGhlIGRlZmVyX3F1ZXVlLg0KPiBBZ2FpbiBpZiB1c2VyIGRvZXNuJ3Qgd2FudCB0byBjYWxs IHJlY2xhaW0oKSBoaW1zZWxmLCBoZSBjYW4ganVzdCBpZ25vcmUgcmV0dXJuDQo+IHZhbHVlLg0K R2l2ZW4gdGhlIGdvYWwgb2YgcmVkdWNpbmcgdGhlIGJ1cmRlbiBvbiB0aGUgdXNlciwgdGhpcyBp cyBub3QgaW4gdGhhdCBkaXJlY3Rpb24uIEJ1dCBpZiB5b3Ugc2VlIGEgdXNlIGNhc2UgZm9yIGl0 LCBJIGRvbid0IGhhdmUgYW55IGlzc3Vlcy4gVmxhZGltaXIgYXNrZWQgZm9yIGl0IGFzIHdlbGwg aW4gdGhlIG90aGVyIHRocmVhZC4NCg0KPiANCj4gVGhlc2UgMiBjaGFuZ2VzIHdpbGwgcHJvdmlk ZSB1cyB3aXRoIG5lY2Vzc2FyeSBmbGV4aWJpbGl0eSB0aGF0IHdvdWxkIGhlbHAgdG8NCj4gY292 ZXIgbW9yZSB1c2UtY2FzZXM6DQo+IC0gdXNlciBjYW4gZGVjaWRlIGhvdyBiaWcgc2hvdWxkIGJl IHRoZSBkZWZlciBxdWV1ZQ0KPiAtIHVzZXIgY2FuIGRlY2lkZSB3aGVuL2hvdyBoZSB3YW50cyB0 byBkbyByZWNsYWltKCkNCj4gDQo+IEtvbnN0YW50aW4NCj4gDQo+ID5TaW1pbGFyIG9wZXJhdGlv bnMgYXJlIHByb3ZpZGVkIGluIHJ0ZV9oYXNoIGxpYnJhcnkuIElNTywgd2Ugc2hvdWxkDQo+ID5m b2xsb3cgIGNvbnNpc3RlbnQgYXBwcm9hY2guDQo+ID4NCj4gPiA+IEFub3RoZXIgdGhpbmcgeW91 IGRvIGFsbG9jYXRlIGRlZmVyIHF1ZXVlLCBidXQgaXQgaXMgaW50ZXJuYWwsIHNvDQo+ID4gPiB1 c2VyIGNhbid0IGNhbGwNCj4gPiA+IHJlY2xhaW0oKSBtYW51YWxseSwgd2hpY2ggbG9va3Mgc3Ry YW5nZS4NCj4gPiA+IFdoeSBub3QgdG8gcmV0dXJuIGRlZmVyX3F1ZXVlIHBvaW50ZXIgdG8gdGhl IHVzZXIsIHNvIGhlIGNhbiBjYWxsDQo+ID4gPiByZWNsYWltKCkgaGltc2VsZiBhdCBhcHByb3By aWF0ZSB0aW1lPw0KPiA+IFRoZSBpbnRlbnRpb24gb2YgdGhlIGRlc2lnbiBpcyB0byB0YWtlIHRo ZSBjb21wbGV4aXR5IGF3YXkgZnJvbSB0aGUNCj4gPiB1c2VyIG9mIExQTSBsaWJyYXJ5LiBJTU8s IHRoZSBjdXJyZW50IGRlc2lnbiB3aWxsIGFkZHJlc3MgbW9zdCB1c2VzIGNhc2VzIG9mDQo+IExQ TSBsaWJyYXJ5LiBJZiB3ZSBleHBvc2UgdGhlIDIgcGFyYW1ldGVycyAod2hlbiB0byB0cmlnZ2Vy IHJlY2xhbWF0aW9uIGFuZA0KPiBob3cgbXVjaCB0byByZWNsYWltKSBpbiB0aGUgJ3J0ZV9scG1f cmN1X3FzYnJfYWRkJw0KPiA+IEFQSSwgaXQgc2hvdWxkIHByb3ZpZGUgZW5vdWdoIGZsZXhpYmls aXR5IHRvIHRoZSBhcHBsaWNhdGlvbi4NCj4gPg0KPiA+ID4gVGhpcmQgdGhpbmcgLSB5b3UgYWx3 YXlzIGFsbG9jYXRlIGRlZmVyIHF1ZXVlIHdpdGggc2l6ZSBlcXVhbCB0bw0KPiA+ID4gbnVtYmVy IG9mIHRibDguDQo+ID4gPiBUaG91Z2ggSSB1bmRlcnN0YW5kIGl0IGNvdWxkIGJlIHVwIHRvIDE2 TSB0Ymw4IGdyb3VwcyBpbnNpZGUgdGhlIExQTS4NCj4gPiA+IERvIHdlIHJlYWxseSBuZWVkIGRl ZmVyIHF1ZXVlIHRoYXQgbG9uZz8NCj4gPiBObywgd2UgZG8gbm90IG5lZWQgaXQgdG8gYmUgdGhp cyBsb25nLiBJdCBpcyB0aGlzIGxvbmcgdG9kYXkgdG8gYXZvaWQgcmV0dXJuaW5nDQo+IG5vLXNw YWNlIG9uIHRoZSBkZWZlciBxdWV1ZSBlcnJvci4NCj4gPg0KPiA+ID4gRXNwZWNpYWxseSAgY29u c2lkZXJpbmcgdGhhdCBjdXJyZW50IHJjdV9kZWZlcl9xdWV1ZSB3aWxsIHN0YXJ0DQo+ID4gPiBy ZWNsYW1hdGlvbiB3aGVuIDEvOCBvZiBkZWZlcl9xdXVldWUgYmVjb21lcyBmdWxsIGFuZCB3b3Vs ZG4ndA0KPiA+ID4gcmVjbGFpbSBtb3JlIHRoZW4NCj4gPiA+IDEvMTYgb2YgaXQuDQo+ID4gPiBQ cm9iYWJseSBiZXR0ZXIgdG8gbGV0IHVzZXIgdG8gZGVjaWRlIGhpbXNlbGYgaG93IGxvbmcgZGVm ZXJfcXVldWUNCj4gPiA+IGhlIG5lZWRzIGZvciB0aGF0IExQTT8NCj4gPiBJdCBtYWtlcyBzZW5z ZSB0byBleHBvc2UgaXQgdG8gdGhlIHVzZXIgaWYgdGhlIHdyaXRlci13cml0ZXINCj4gPiBjb25j dXJyZW5jeSBpcyBsb2NrLWZyZWUgKG5vIG1lbW9yeSBhbGxvY2F0aW9uIGFsbG93ZWQgdG8gZXhw YW5kIHRoZQ0KPiA+IGRlZmVyIHF1ZXVlIHNpemUgd2hlbiB0aGUgcXVldWUgaXMgZnVsbCkuIEhv d2V2ZXIsIExQTSBpcyBub3QgbG9jay1mcmVlIG9uDQo+IHRoZSB3cml0ZXIgc2lkZS4gSWYgd2Ug dGhpbmsgdGhlIHdyaXRlciBjb3VsZCBiZSBsb2NrLWZyZWUgaW4gdGhlIGZ1dHVyZSwgaXQgaGFz IHRvDQo+IGJlIGV4cG9zZWQgdG8gdGhlIHVzZXIuDQo+ID4NCj4gPiA+DQo+ID4gPiBLb25zdGFu dGluDQo+ID4gUHVsbGluZyBxdWVzdGlvbnMvY29tbWVudHMgZnJvbSBvdGhlciB0aHJlYWRzOg0K PiA+IENhbiB3ZSBsZWF2ZSByZWNsYW1hdGlvbiB0byBzb21lIG90aGVyIGhvdXNlLWtlZXBpbmcg dGhyZWFkIHRvIGRvIChzb3J0IG9mDQo+IGdhcmJhZ2UgY29sbGVjdG9yKS4gT3Igc3VjaCBtb2Rl IGlzIG5vdCBzdXBwb3J0ZWQvcGxhbm5lZD8NCj4gPg0KPiA+IFtIb25uYXBwYV0gSWYgdGhlIHJl Y2xhbWF0aW9uIGNvc3QgaXMgc21hbGwsIHRoZSBjdXJyZW50IG1ldGhvZA0KPiA+IHByb3ZpZGVz IGFkdmFudGFnZXMgb3ZlciBoYXZpbmcgYSBzZXBhcmF0ZSB0aHJlYWQgdG8gZG8gcmVjbGFtYXRp b24uIEkNCj4gPiBkaWQgbm90IHBsYW4gdG8gcHJvdmlkZSBzdWNoIGFuIG9wdGlvbi4gQnV0IG1h eSBiZSBpdCBtYWtlcyBzZW5zZSB0byBrZWVwIHRoZQ0KPiBvcHRpb25zIG9wZW4gKGVzcGVjaWFs bHkgZnJvbSBBQkkgcGVyc3BlY3RpdmUpLiBNYXkgYmUgd2Ugc2hvdWxkIGFkZCBhIGZsYWdzDQo+ IGZpZWxkIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gaW1wbGVtZW50IGRpZmZlcmVudCBtZXRob2Rz IGluIHRoZSBmdXR1cmU/DQo+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsJ cmV0dXJuIDA7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gIC8qDQo+ID4gPiA+ICAg KiBBZGRzIGEgcnVsZSB0byB0aGUgcnVsZSB0YWJsZS4NCj4gPiA+ID4gICAqDQo+ID4gPiA+IEBA IC02NzksMTQgKzczNSwxNSBAQCB0Ymw4X2FsbG9jX3YyMChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50 cnlfdjIwDQo+ID4gPiA+ICp0Ymw4KSAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAgc3RhdGljIGludDMy X3QNCj4gPiA+ID4gLXRibDhfYWxsb2NfdjE2MDQoc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0 Ymw4LCB1aW50MzJfdA0KPiA+ID4gPiBudW1iZXJfdGJsOHMpDQo+ID4gPiA+ICtfX3RibDhfYWxs b2NfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAl1aW50 MzJfdCBncm91cF9pZHg7IC8qIHRibDggZ3JvdXAgaW5kZXguICovDQo+ID4gPiA+ICAJc3RydWN0 IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4X2VudHJ5Ow0KPiA+ID4gPg0KPiA+ID4gPiAgCS8qIFNj YW4gdGhyb3VnaCB0Ymw4IHRvIGZpbmQgYSBmcmVlIChpLmUuIElOVkFMSUQpIHRibDggZ3JvdXAu ICovDQo+ID4gPiA+IC0JZm9yIChncm91cF9pZHggPSAwOyBncm91cF9pZHggPCBudW1iZXJfdGJs OHM7IGdyb3VwX2lkeCsrKSB7DQo+ID4gPiA+IC0JCXRibDhfZW50cnkgPSAmdGJsOFtncm91cF9p ZHggKg0KPiA+ID4gUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsNCj4gPiA+ID4gKwlm b3IgKGdyb3VwX2lkeCA9IDA7IGdyb3VwX2lkeCA8IGxwbS0+bnVtYmVyX3RibDhzOyBncm91cF9p ZHgrKykgew0KPiA+ID4gPiArCQl0Ymw4X2VudHJ5ID0gJmxwbS0+dGJsOFtncm91cF9pZHggKg0K PiA+ID4gPiArDQo+ID4gPiAJUlRFX0xQTV9UQkw4X0dST1VQX05VTV9FTlRSSUVTXTsNCj4gPiA+ ID4gIAkJLyogSWYgYSBmcmVlIHRibDggZ3JvdXAgaXMgZm91bmQgY2xlYW4gaXQgYW5kIHNldCBh cyBWQUxJRC4gKi8NCj4gPiA+ID4gIAkJaWYgKCF0Ymw4X2VudHJ5LT52YWxpZF9ncm91cCkgew0K PiA+ID4gPiAgCQkJc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190Ymw4X2VudHJ5ID0geyBA QCAtDQo+ID4gPiA3MTIsNiArNzY5LDIxIEBADQo+ID4gPiA+IHRibDhfYWxsb2NfdjE2MDQoc3Ry dWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4LCB1aW50MzJfdCBudW1iZXJfdGJsOHMpDQo+ID4g PiA+ICAJcmV0dXJuIC1FTk9TUEM7DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ID4gPiA+ICtzdGF0 aWMgaW50MzJfdA0KPiA+ID4gPiArdGJsOF9hbGxvY192MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBt KSB7DQo+ID4gPiA+ICsJaW50MzJfdCBncm91cF9pZHg7IC8qIHRibDggZ3JvdXAgaW5kZXguICov DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlncm91cF9pZHggPSBfX3RibDhfYWxsb2NfdjE2MDQobHBt KTsNCj4gPiA+ID4gKwlpZiAoKGdyb3VwX2lkeCA8IDApICYmIChscG0tPmRxICE9IE5VTEwpKSB7 DQo+ID4gPiA+ICsJCS8qIElmIHRoZXJlIGFyZSBubyB0Ymw4IGdyb3VwcyB0cnkgdG8gcmVjbGFp bSBzb21lLiAqLw0KPiA+ID4gPiArCQlpZiAocnRlX3JjdV9xc2JyX2RxX3JlY2xhaW0obHBtLT5k cSkgPT0gMCkNCj4gPiA+ID4gKwkJCWdyb3VwX2lkeCA9IF9fdGJsOF9hbGxvY192MTYwNChscG0p Ow0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldHVybiBncm91cF9pZHg7DQo+ ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gIHN0YXRpYyB2b2lkDQo+ID4gPiA+ICB0Ymw4 X2ZyZWVfdjIwKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeV92MjAgKnRibDgsIHVpbnQzMl90DQo+ ID4gPiA+IHRibDhfZ3JvdXBfc3RhcnQpICB7IEBAIC03MjgsMTMgKzgwMCwyMSBAQCB0Ymw4X2Zy ZWVfdjIwKHN0cnVjdA0KPiA+ID4gPiBydGVfbHBtX3RibF9lbnRyeV92MjAgKnRibDgsIHVpbnQz Ml90IHRibDhfZ3JvdXBfc3RhcnQpICB9DQo+ID4gPiA+DQo+ID4gPiA+ICBzdGF0aWMgdm9pZA0K PiA+ID4gPiAtdGJsOF9mcmVlX3YxNjA0KHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOCwg dWludDMyX3QNCj4gPiA+ID4gdGJsOF9ncm91cF9zdGFydCkNCj4gPiA+ID4gK3RibDhfZnJlZV92 MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1aW50MzJfdCB0Ymw4X2dyb3VwX3N0YXJ0KQ0KPiA+ ID4gPiAgew0KPiA+ID4gPiAtCS8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+ID4gPiAg CXN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07DQo+ID4gPiA+ ICsJc3RydWN0IF9fcnRlX2xwbV9yY3VfZHFfZW50cnkgZTsNCj4gPiA+ID4NCj4gPiA+ID4gLQlf X2F0b21pY19zdG9yZSgmdGJsOFt0Ymw4X2dyb3VwX3N0YXJ0XSwgJnplcm9fdGJsOF9lbnRyeSwN Cj4gPiA+ID4gLQkJCV9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ID4gPiArCWlmIChscG0tPmRxICE9 IE5VTEwpIHsNCj4gPiA+ID4gKwkJZS50Ymw4X2dyb3VwX2luZGV4ID0gdGJsOF9ncm91cF9zdGFy dDsNCj4gPiA+ID4gKwkJZS5wYWQgPSAwOw0KPiA+ID4gPiArCQkvKiBQdXNoIGludG8gUVNCUiBk ZWZlciBxdWV1ZS4gKi8NCj4gPiA+ID4gKwkJcnRlX3JjdV9xc2JyX2RxX2VucXVldWUobHBtLT5k cSwgKHZvaWQgKikmZSk7DQo+ID4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ID4gKwkJLyogU2V0IHRi bDggZ3JvdXAgaW52YWxpZCovDQo+ID4gPiA+ICsJCV9fYXRvbWljX3N0b3JlKCZscG0tPnRibDhb dGJsOF9ncm91cF9zdGFydF0sDQo+ID4gPiAmemVyb190Ymw4X2VudHJ5LA0KPiA+ID4gPiArCQkJ CV9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gIH0NCj4gPiA+ID4NCj4g PiA+ID4gIHN0YXRpYyBfX3J0ZV9ub2lubGluZSBpbnQzMl90DQo+ID4gPiA+IEBAIC0xMDM3LDcg KzExMTcsNyBAQCBhZGRfZGVwdGhfYmlnX3YxNjA0KHN0cnVjdCBydGVfbHBtICpscG0sDQo+ID4g PiA+IHVpbnQzMl90IGlwX21hc2tlZCwgdWludDhfdCBkZXB0aCwNCj4gPiA+ID4NCj4gPiA+ID4g IAlpZiAoIWxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLnZhbGlkKSB7DQo+ID4gPiA+ICAJCS8qIFNl YXJjaCBmb3IgYSBmcmVlIHRibDggZ3JvdXAuICovDQo+ID4gPiA+IC0JCXRibDhfZ3JvdXBfaW5k ZXggPSB0Ymw4X2FsbG9jX3YxNjA0KGxwbS0+dGJsOCwgbHBtLQ0KPiA+ID4gPm51bWJlcl90Ymw4 cyk7DQo+ID4gPiA+ICsJCXRibDhfZ3JvdXBfaW5kZXggPSB0Ymw4X2FsbG9jX3YxNjA0KGxwbSk7 DQo+ID4gPiA+DQo+ID4gPiA+ICAJCS8qIENoZWNrIHRibDggYWxsb2NhdGlvbiB3YXMgc3VjY2Vz c2Z1bC4gKi8NCj4gPiA+ID4gIAkJaWYgKHRibDhfZ3JvdXBfaW5kZXggPCAwKSB7DQo+ID4gPiA+ IEBAIC0xMDgzLDcgKzExNjMsNyBAQCBhZGRfZGVwdGhfYmlnX3YxNjA0KHN0cnVjdCBydGVfbHBt ICpscG0sDQo+ID4gPiB1aW50MzJfdCBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4gPiA+ ICAJfSAvKiBJZiB2YWxpZCBlbnRyeSBidXQgbm90IGV4dGVuZGVkIGNhbGN1bGF0ZSB0aGUgaW5k ZXggaW50byBUYWJsZTguICovDQo+ID4gPiA+ICAJZWxzZSBpZiAobHBtLT50YmwyNFt0YmwyNF9p bmRleF0udmFsaWRfZ3JvdXAgPT0gMCkgew0KPiA+ID4gPiAgCQkvKiBTZWFyY2ggZm9yIGZyZWUg dGJsOCBncm91cC4gKi8NCj4gPiA+ID4gLQkJdGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2Nf djE2MDQobHBtLT50Ymw4LCBscG0tDQo+ID4gPiA+bnVtYmVyX3RibDhzKTsNCj4gPiA+ID4gKwkJ dGJsOF9ncm91cF9pbmRleCA9IHRibDhfYWxsb2NfdjE2MDQobHBtKTsNCj4gPiA+ID4NCj4gPiA+ ID4gIAkJaWYgKHRibDhfZ3JvdXBfaW5kZXggPCAwKSB7DQo+ID4gPiA+ICAJCQlyZXR1cm4gdGJs OF9ncm91cF9pbmRleDsNCj4gPiA+ID4gQEAgLTE4MTgsNyArMTg5OCw3IEBAIGRlbGV0ZV9kZXB0 aF9iaWdfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSwNCj4gPiA+IHVpbnQzMl90IGlwX21hc2tl ZCwNCj4gPiA+ID4gIAkJICovDQo+ID4gPiA+ICAJCWxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLnZh bGlkID0gMDsNCj4gPiA+ID4gIAkJX19hdG9taWNfdGhyZWFkX2ZlbmNlKF9fQVRPTUlDX1JFTEVB U0UpOw0KPiA+ID4gPiAtCQl0Ymw4X2ZyZWVfdjE2MDQobHBtLT50Ymw4LCB0Ymw4X2dyb3VwX3N0 YXJ0KTsNCj4gPiA+ID4gKwkJdGJsOF9mcmVlX3YxNjA0KGxwbSwgdGJsOF9ncm91cF9zdGFydCk7 DQo+ID4gPiA+ICAJfSBlbHNlIGlmICh0Ymw4X3JlY3ljbGVfaW5kZXggPiAtMSkgew0KPiA+ID4g PiAgCQkvKiBVcGRhdGUgdGJsMjQgZW50cnkuICovDQo+ID4gPiA+ICAJCXN0cnVjdCBydGVfbHBt X3RibF9lbnRyeSBuZXdfdGJsMjRfZW50cnkgPSB7IEBAIC0xODM0LDcNCj4gPiA+ICsxOTE0LDcg QEANCj4gPiA+ID4gZGVsZXRlX2RlcHRoX2JpZ192MTYwNChzdHJ1Y3QgcnRlX2xwbSAqbHBtLCB1 aW50MzJfdCBpcF9tYXNrZWQsDQo+ID4gPiA+ICAJCV9fYXRvbWljX3N0b3JlKCZscG0tPnRibDI0 W3RibDI0X2luZGV4XSwNCj4gPiA+ICZuZXdfdGJsMjRfZW50cnksDQo+ID4gPiA+ICAJCQkJX19B VE9NSUNfUkVMQVhFRCk7DQo+ID4gPiA+ICAJCV9fYXRvbWljX3RocmVhZF9mZW5jZShfX0FUT01J Q19SRUxFQVNFKTsNCj4gPiA+ID4gLQkJdGJsOF9mcmVlX3YxNjA0KGxwbS0+dGJsOCwgdGJsOF9n cm91cF9zdGFydCk7DQo+ID4gPiA+ICsJCXRibDhfZnJlZV92MTYwNChscG0sIHRibDhfZ3JvdXBf c3RhcnQpOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gICN1bmRlZiBncm91cF9pZHgNCj4gPiA+ID4g IAlyZXR1cm4gMDsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG0u aCBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+ID4gPiBpbmRleCA5MDZlYzQ0ODMuLjQ5 YzEyYTY4ZCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ ID4gPiA+ICsrKyBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uaA0KPiA+ID4gPiBAQCAtMSw1ICsx LDYgQEANCj4gPiA+ID4gIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UN Cj4gPiA+ID4gICAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24NCj4g PiA+ID4gKyAqIENvcHlyaWdodChjKSAyMDE5IEFybSBMaW1pdGVkDQo+ID4gPiA+ICAgKi8NCj4g PiA+ID4NCj4gPiA+ID4gICNpZm5kZWYgX1JURV9MUE1fSF8NCj4gPiA+ID4gQEAgLTIxLDYgKzIy LDcgQEANCj4gPiA+ID4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4gPiA+ICAjaW5jbHVk ZSA8cnRlX3ZlY3QuaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxydGVfY29tcGF0Lmg+DQo+ID4gPiA+ ICsjaW5jbHVkZSA8cnRlX3JjdV9xc2JyLmg+DQo+ID4gPiA+DQo+ID4gPiA+ICAjaWZkZWYgX19j cGx1c3BsdXMNCj4gPiA+ID4gIGV4dGVybiAiQyIgew0KPiA+ID4gPiBAQCAtMTg2LDYgKzE4OCw3 IEBAIHN0cnVjdCBydGVfbHBtIHsNCj4gPiA+ID4gIAkJCV9fcnRlX2NhY2hlX2FsaWduZWQ7IC8q KjwgTFBNIHRibDI0IHRhYmxlLiAqLw0KPiA+ID4gPiAgCXN0cnVjdCBydGVfbHBtX3RibF9lbnRy eSAqdGJsODsgLyoqPCBMUE0gdGJsOCB0YWJsZS4gKi8NCj4gPiA+ID4gIAlzdHJ1Y3QgcnRlX2xw bV9ydWxlICpydWxlc190Ymw7IC8qKjwgTFBNIHJ1bGVzLiAqLw0KPiA+ID4gPiArCXN0cnVjdCBy dGVfcmN1X3FzYnJfZHEgKmRxOwkvKio8IFJDVSBRU0JSIGRlZmVyIHF1ZXVlLiovDQo+ID4gPiA+ ICB9Ow0KPiA+ID4gPg0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+IEBAIC0yNDgsNiArMjUxLDI0IEBA IHJ0ZV9scG1fZnJlZV92MjAoc3RydWN0IHJ0ZV9scG1fdjIwICpscG0pOw0KPiA+ID4gdm9pZA0K PiA+ID4gPiBydGVfbHBtX2ZyZWVfdjE2MDQoc3RydWN0IHJ0ZV9scG0gKmxwbSk7DQo+ID4gPiA+ DQo+ID4gPiA+ICsvKioNCj4gPiA+ID4gKyAqIEFzc29jaWF0ZSBSQ1UgUVNCUiB2YXJpYWJsZSB3 aXRoIGFuIExQTSBvYmplY3QuDQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICogQHBhcmFtIGxwbQ0K PiA+ID4gPiArICogICB0aGUgbHBtIG9iamVjdCB0byBhZGQgUkNVIFFTQlINCj4gPiA+ID4gKyAq IEBwYXJhbSB2DQo+ID4gPiA+ICsgKiAgIFJDVSBRU0JSIHZhcmlhYmxlDQo+ID4gPiA+ICsgKiBA cmV0dXJuDQo+ID4gPiA+ICsgKiAgIE9uIHN1Y2Nlc3MgLSAwDQo+ID4gPiA+ICsgKiAgIE9uIGVy cm9yIC0gMSB3aXRoIGVycm9yIGNvZGUgc2V0IGluIHJ0ZV9lcnJuby4NCj4gPiA+ID4gKyAqICAg UG9zc2libGUgcnRlX2Vycm5vIGNvZGVzIGFyZToNCj4gPiA+ID4gKyAqICAgLSBFSU5WQUwgLSBp bnZhbGlkIHBvaW50ZXINCj4gPiA+ID4gKyAqICAgLSBFRVhJU1QgLSBhbHJlYWR5IGFkZGVkIFFT QlINCj4gPiA+ID4gKyAqICAgLSBFTk9NRU0gLSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlDQo+ ID4gPiA+ICsgKi8NCj4gPiA+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ID4gPiAraW50IHJ0 ZV9scG1fcmN1X3FzYnJfYWRkKHN0cnVjdCBydGVfbHBtICpscG0sIHN0cnVjdCBydGVfcmN1X3Fz YnINCj4gPiA+ID4gKyp2KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+ICAgKiBB ZGQgYSBydWxlIHRvIHRoZSBMUE0gdGFibGUuDQo+ID4gPiA+ICAgKg0KPiA+ID4gPiBkaWZmIC0t Z2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1hcA0KPiA+ID4gPiBiL2xpYi9s aWJydGVfbHBtL3J0ZV9scG1fdmVyc2lvbi5tYXANCj4gPiA+ID4gaW5kZXggOTBiZWFjODUzLi5i MzUzYWFiZDIgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG1fdmVy c2lvbi5tYXANCj4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbV92ZXJzaW9uLm1h cA0KPiA+ID4gPiBAQCAtNDQsMyArNDQsOSBAQCBEUERLXzE3LjA1IHsNCj4gPiA+ID4gIAlydGVf bHBtNl9sb29rdXBfYnVsa19mdW5jOw0KPiA+ID4gPg0KPiA+ID4gPiAgfSBEUERLXzE2LjA0Ow0K PiA+ID4gPiArDQo+ID4gPiA+ICtFWFBFUklNRU5UQUwgew0KPiA+ID4gPiArCWdsb2JhbDoNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXJ0ZV9scG1fcmN1X3FzYnJfYWRkOw0KPiA+ID4gPiArfTsNCj4g PiA+ID4gLS0NCj4gPiA+ID4gMi4xNy4xDQoNCg==