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 EDE3BA0350; Tue, 23 Jun 2020 06:35:02 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4951B1D52B; Tue, 23 Jun 2020 06:35:02 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20043.outbound.protection.outlook.com [40.107.2.43]) by dpdk.org (Postfix) with ESMTP id 6B6FB1D52A for ; Tue, 23 Jun 2020 06:35:01 +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=5ZLZoJNOkZZlvZH+KRwdfadOb1pp5VyBk6oOJIs1Pq8=; b=JXQE6sPRLjQPKYhyMDexUQyL7/F2DiJ10i9RHPhWNbEsATMC+Zu17MId4E5XZ7RYbxl9yQODX3SvQK5uicpNZp1URBcrwsEe1lSDB4CsqQcogwoSc/q1v7cr94ni6tWNXDN88F5gUQvkI9QtonMh6xbstLHMetNW7XT7ty3bMdI= Received: from AM5PR1001CA0020.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:2::33) by VE1PR08MB4911.eurprd08.prod.outlook.com (2603:10a6:802:af::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Tue, 23 Jun 2020 04:35:00 +0000 Received: from VE1EUR03FT035.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:2:cafe::69) by AM5PR1001CA0020.outlook.office365.com (2603:10a6:206:2::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Tue, 23 Jun 2020 04:34:59 +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=bestguesspass 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 VE1EUR03FT035.mail.protection.outlook.com (10.152.18.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Tue, 23 Jun 2020 04:34:59 +0000 Received: ("Tessian outbound 839770a6d413:v59"); Tue, 23 Jun 2020 04:34:59 +0000 X-CR-MTA-TID: 64aa7808 Received: from ca5ca08d442a.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 548C860A-F917-4C5C-B1AD-D7D59A4637D3.1; Tue, 23 Jun 2020 04:34:54 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ca5ca08d442a.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 23 Jun 2020 04:34:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KwVUHb2ubXSBToF/5xkCCSZwqPXwj1PaqLz/kO0DTw1iP9/ULCesEwT3oQxwE/+M6VKddtqq5nVkp99rBB36WxrFymdT2MROwu3jBvEY/41SMVGumeWrLWJiY7GxH7vlqE2WpS0WnhIDjdjm81QwImRk2JQ26nAy/Xwx4xFBx0GoJD6d7OtfsIS40hcT8Vahkp7hrGgncVCdPlopGBOrdJUahQbjHfiUppyvuI0smWodSwJ0+TC4XT83kit6g70LJ/eXqe9wp2I02laqI2tWSMKmiZGZY8HFoX0uwojUnCLlsqHuJ5UL6MZHYJilljalyK2Notg9DXuMODJUbIyuGw== 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=5ZLZoJNOkZZlvZH+KRwdfadOb1pp5VyBk6oOJIs1Pq8=; b=UhGNCEsrCFZXNRHStOg2cydJ8w9q5B/NiUvdJYMH5GwpQAIXIt9UuFwGMUqYbSst1i4tVBWh+pGjYwpeVzddizZv+ncEthBN+MnwYIq62sP+KgFnVrYJlX+Yl3OX52KPULTlJyS1flv0dNNlYqNqaUwYs0JxyBYpfQt7ggFmXq3MefzX0jI42JiXHYzwMu6tUCkSVYnC0Xhq7oGoBnmZIhN/IL1z37/yrkSFtBB0CmUiiW7Dy9plIbGh/uCS2Z+GxdzhY+2sN/knSYvspBBguPcQ5lnFZrHGjFvOJFvgeZT/vio7Zl6tiLnktX37qfsfjCijLZnaCKt4XcBqrZBdrg== 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=5ZLZoJNOkZZlvZH+KRwdfadOb1pp5VyBk6oOJIs1Pq8=; b=JXQE6sPRLjQPKYhyMDexUQyL7/F2DiJ10i9RHPhWNbEsATMC+Zu17MId4E5XZ7RYbxl9yQODX3SvQK5uicpNZp1URBcrwsEe1lSDB4CsqQcogwoSc/q1v7cr94ni6tWNXDN88F5gUQvkI9QtonMh6xbstLHMetNW7XT7ty3bMdI= Received: from DB6PR0802MB2216.eurprd08.prod.outlook.com (2603:10a6:4:85::9) by DB6PR0802MB2375.eurprd08.prod.outlook.com (2603:10a6:4:87::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Tue, 23 Jun 2020 04:34:53 +0000 Received: from DB6PR0802MB2216.eurprd08.prod.outlook.com ([fe80::1128:b7e7:e832:310f]) by DB6PR0802MB2216.eurprd08.prod.outlook.com ([fe80::1128:b7e7:e832:310f%9]) with mapi id 15.20.3109.027; Tue, 23 Jun 2020 04:34:53 +0000 From: Honnappa Nagarahalli To: Ruifeng Wang , "Medvedkin, Vladimir" , Bruce Richardson , John McNamara , Marko Kovacevic , Ray Kinsella , Neil Horman CC: "dev@dpdk.org" , "konstantin.ananyev@intel.com" , nd , Honnappa Nagarahalli , nd Thread-Topic: [PATCH v4 1/3] lib/lpm: integrate RCU QSBR Thread-Index: AQHWRZUCZmygZwE2i0GT1Eehun6+6qjkJb2AgAF60uA= Date: Tue, 23 Jun 2020 04:34:52 +0000 Message-ID: References: <20190906094534.36060-1-ruifeng.wang@arm.com> <20200608051658.144417-1-ruifeng.wang@arm.com> <20200608051658.144417-2-ruifeng.wang@arm.com> <1307ba36-7b4a-e465-d055-b4ad976adea1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 4f5fb520-d95c-47f4-825b-c7c6e283d8cb.0 x-checkrecipientchecked: true Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [70.113.25.165] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3b3347de-d1e8-4516-ab1c-08d8172ec9f1 x-ms-traffictypediagnostic: DB6PR0802MB2375:|VE1PR08MB4911: 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-forefront-prvs: 04433051BF X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 7l7ghebOFe9Fj1CJ1/q3plwAJtK4O7nq3DZ2mLTQJDAUnbxV+u1Ze0uwdVcsTU6yT8tzoi3w6GpbS5agGRLVHortXbvdF6BthRXJs+0DGr5AEpvlrBPLiLJMT4V8780POaDYsOxOtxIi2tOZDtLqYxe5jZRkwdtHGstHiERVC67HzWYbOhj5fkx1HMBweYaabvUasgHJtx6S5ehAKaEvdZ3iPNozdjxn2P8U9IMDKrmMWzhMrIPVTZGkAS8MOajvTvLycOMHzkSpjCTRKtVJp8Cj40aYDKp934Z94Zsi6U/YwZz8A/YS3+4VZOhhp8FbkhYcYfnR39k7KsynbuxiBAsgKUvwyNhB4rmPzc+wXu/tKgcSFnWV4n7t0JzrWRN/ X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0802MB2216.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(366004)(396003)(136003)(376002)(346002)(55016002)(54906003)(110136005)(7696005)(9686003)(478600001)(186003)(53546011)(6506007)(33656002)(316002)(26005)(66556008)(86362001)(2906002)(30864003)(83380400001)(66446008)(66946007)(66476007)(64756008)(52536014)(5660300002)(8936002)(8676002)(71200400001)(76116006)(4326008)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: +64aNAa7UE08Hw4G0CI1PZue6s/5POgx4BLd6i5RHQgFmH+WAdKwyCnYEt8JZJWXPhD+MefxgQyXx48/mRk49yzVgDqAfVhj4al+9VSPj+zUZf3GoBM3VxZh+l3eLkmNsDypXw6WRzt9ebjDbdIY9tiEnlN8/zu8eeocE1E+igeEPS49eMgDE8QVawSPvVt/s6rw3Jq/SYiBSpPTNh4+6N5ihWQtA8D4hfcYhTAGLVHHmx7dXKGAYpQomFyReGHhMAAHrIeI/wHS6lzDmveGhqrAEZ7ITn3qoqaEciqyspnPvrAJyEjwCJLMwYj9icUPu/92MwGeBZHE24pTGQBC+ysadCwkiV+7aLbPe9nDzRtZAUvBJeof6sFJXoRdzy0UXKJnvblJlAgFfD5NVCNZ4ju8A0ERQIQaLitDZYufekA799YzzOtWU4x6kr/3TXNo1RknTdnVJh5dSvykSUVonzA8Ud42MoiO+WAFFw7SbA7Q8vfqkYirepeDaD7nPG5P Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2375 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT035.eop-EUR03.prod.protection.outlook.com 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; SFTY:; SFS:(4636009)(376002)(346002)(396003)(136003)(39860400002)(46966005)(82740400003)(86362001)(8936002)(7696005)(52536014)(8676002)(47076004)(33656002)(5660300002)(2906002)(478600001)(336012)(55016002)(26005)(83380400001)(9686003)(54906003)(110136005)(186003)(6506007)(356005)(4326008)(36906005)(316002)(53546011)(81166007)(30864003)(82310400002)(70206006)(70586007)(21314003); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: bd5afe9c-84d6-47a8-97af-08d8172ec5f8 X-Forefront-PRVS: 04433051BF X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5aQhCnSLW6xgKGjaJlNxoMsLKsZ8tLi0zD7i5tqSfSX8P6qjSS0Y6JiY5r9N9vWSe88GLBAI4GZBf+FeHkV+ZNk20mHaqsNgLN9cQKwcDd3JXvy7VTTumlZr1xqCMSyFBYgcEHUMj1Bk6ODTs/8hY5oiUFo9LIWa2PKrOSo6z8+NlvzEa5bDIC92VH2UezCUvlk4tUugadk9MlDSnGLZjJ98YaZrT1s8lxw8nH2KRar7TMLrZlZNLJuZUaPQeNFlsGoyv6lavZwGv1RxMZxMcbxuSrjqxZ5dc0Z3UfPMKcRRPSC6wmCx2pPDRhgAVBTeL8XesNe9fncdAqeElLtGj7LCacvobBUTdnaBIm8N5RyXeRa+ewsmnwfGCCoUEz63E+I/DL9+wgG1VWGFnMuFtRn0PiRwqkej2mf9p69StHI= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2020 04:34:59.5455 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3b3347de-d1e8-4516-ab1c-08d8172ec9f1 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: VE1PR08MB4911 Subject: Re: [dpdk-dev] [PATCH v4 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+DQo+ID4gT24gMDgvMDYvMjAyMCAwNjoxNiwgUnVpZmVuZyBXYW5n IHdyb3RlOg0KPiA+ID4gQ3VycmVudGx5LCB0aGUgdGJsOCBncm91cCBpcyBmcmVlZCBldmVuIHRo b3VnaCB0aGUgcmVhZGVycyBtaWdodCBiZQ0KPiA+ID4gdXNpbmcgdGhlIHRibDggZ3JvdXAgZW50 cmllcy4gVGhlIGZyZWVkIHRibDggZ3JvdXAgY2FuIGJlDQo+ID4gPiByZWFsbG9jYXRlZCBxdWlj a2x5LiBUaGlzIHJlc3VsdHMgaW4gaW5jb3JyZWN0IGxvb2t1cCByZXN1bHRzLg0KPiA+ID4NCj4g PiA+IFJDVSBRU0JSIHByb2Nlc3MgaXMgaW50ZWdyYXRlZCBmb3Igc2FmZSB0Ymw4IGdyb3VwIHJl Y2xhaW0uDQo+ID4gPiBSZWZlciB0byBSQ1UgZG9jdW1lbnRhdGlvbiB0byB1bmRlcnN0YW5kIHZh cmlvdXMgYXNwZWN0cyBvZg0KPiA+ID4gaW50ZWdyYXRpbmcgUkNVIGxpYnJhcnkgaW50byBvdGhl ciBsaWJyYXJpZXMuDQo+ID4gPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogUnVpZmVuZyBXYW5nIDxy dWlmZW5nLndhbmdAYXJtLmNvbT4NCj4gPiA+IFJldmlld2VkLWJ5OiBIb25uYXBwYSBOYWdhcmFo YWxsaSA8aG9ubmFwcGEubmFnYXJhaGFsbGlAYXJtLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gICBk b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvbHBtX2xpYi5yc3QgIHwgIDMyICsrKysrKysrDQo+ID4gPiAg IGxpYi9saWJydGVfbHBtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDIgKy0NCj4gPiA+ICAgbGli L2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSArDQo+ID4gPiAgIGxpYi9saWJy dGVfbHBtL3J0ZV9scG0uYyAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysr KystLS0NCj4gPiA+ICAgbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oICAgICAgICAgICB8ICA1OSAr KysrKysrKysrKysrKw0KPiA+ID4gICBsaWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFw IHwgICA2ICsrDQo+ID4gPiAgIDYgZmlsZXMgY2hhbmdlZCwgMjExIGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2df Z3VpZGUvbHBtX2xpYi5yc3QNCj4gPiA+IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2xwbV9saWIu cnN0DQo+ID4gPiBpbmRleCAxNjA5YTU3ZDAuLjdjYzk5MDQ0YSAxMDA2NDQNCj4gPiA+IC0tLSBh L2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9scG1fbGliLnJzdA0KPiA+ID4gKysrIGIvZG9jL2d1aWRl cy9wcm9nX2d1aWRlL2xwbV9saWIucnN0DQo+ID4gPiBAQCAtMTQ1LDYgKzE0NSwzOCBAQCBkZXBl bmRpbmcgb24gd2hldGhlciB3ZSBuZWVkIHRvIG1vdmUgdG8gdGhlDQo+ID4gbmV4dCB0YWJsZSBv ciBub3QuDQo+ID4gPiAgIFByZWZpeCBleHBhbnNpb24gaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRo aXMgYWxnb3JpdGhtLA0KPiA+ID4gICBzaW5jZSBpdCBpbXByb3ZlcyB0aGUgc3BlZWQgZHJhbWF0 aWNhbGx5IGJ5IGFkZGluZyByZWR1bmRhbmN5Lg0KPiA+ID4NCj4gPiA+ICtEZWxldGlvbg0KPiA+ ID4gK35+fn5+fn5+DQo+ID4gPiArDQo+ID4gPiArV2hlbiBkZWxldGluZyBhIHJ1bGUsIGEgcmVw bGFjZW1lbnQgcnVsZSBpcyBzZWFyY2hlZCBmb3IuDQo+ID4gPiArUmVwbGFjZW1lbnQgcnVsZSBp cyBhbiBleGlzdGluZyBydWxlIHRoYXQgaGFzIHRoZSBsb25nZXN0IHByZWZpeA0KPiA+ID4gK21h dGNoIHdpdGggdGhlIHJ1bGUgdG8gYmUNCj4gPiBkZWxldGVkLCBidXQgaGFzIHNtYWxsZXIgZGVw dGguDQo+ID4gPiArDQo+ID4gPiArSWYgYSByZXBsYWNlbWVudCBydWxlIGlzIGZvdW5kLCB0YXJn ZXQgdGJsMjQgYW5kIHRibDggZW50cmllcyBhcmUNCj4gPiA+ICt1cGRhdGVkIHRvIGhhdmUgdGhl IHNhbWUgZGVwdGggYW5kIG5leHQgaG9wIHZhbHVlIHdpdGggdGhlDQo+ID4gcmVwbGFjZW1lbnQg cnVsZS4NCj4gPiA+ICsNCj4gPiA+ICtJZiBubyByZXBsYWNlbWVudCBydWxlIGNhbiBiZSBmb3Vu ZCwgdGFyZ2V0IHRibDI0IGFuZCB0Ymw4IGVudHJpZXMNCj4gPiA+ICt3aWxsIGJlDQo+ID4gY2xl YXJlZC4NCj4gPiA+ICsNCj4gPiA+ICtQcmVmaXggZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCBpZiB0 aGUgcnVsZSdzIGRlcHRoIGlzIG5vdCBleGFjdGx5IDI0DQo+ID4gPiArYml0cyBvcg0KPiA+IDMy IGJpdHMuDQo+ID4gPiArDQo+ID4gPiArQWZ0ZXIgZGVsZXRpbmcgYSBydWxlLCBhIGdyb3VwIG9m IHRibDhzIHRoYXQgYmVsb25ncyB0byB0aGUgc2FtZQ0KPiA+ID4gK3RibDI0IGVudHJ5DQo+ID4g YXJlIGZyZWVkIGluIGZvbGxvd2luZyBjYXNlczoNCj4gPiA+ICsNCj4gPiA+ICsqICAgQWxsIHRi bDhzIGluIHRoZSBncm91cCBhcmUgZW1wdHkgLg0KPiA+ID4gKw0KPiA+ID4gKyogICBBbGwgdGJs OHMgaW4gdGhlIGdyb3VwIGhhdmUgdGhlIHNhbWUgdmFsdWVzIGFuZCB3aXRoIGRlcHRoIG5vDQo+ IGdyZWF0ZXINCj4gPiB0aGFuIDI0Lg0KPiA+ID4gKw0KPiA+ID4gK0ZyZWUgb2YgdGJsOHMgaGF2 ZSBkaWZmZXJlbnQgYmVoYXZpb3JzOg0KPiA+ID4gKw0KPiA+ID4gKyogICBJZiBSQ1UgaXMgbm90 IHVzZWQsIHRibDhzIGFyZSBjbGVhcmVkIGFuZCByZWNsYWltZWQgaW1tZWRpYXRlbHkuDQo+ID4g PiArDQo+ID4gPiArKiAgIElmIFJDVSBpcyB1c2VkLCB0Ymw4cyBhcmUgcmVjbGFpbWVkIHdoZW4g cmVhZGVycyBhcmUgaW4gcXVpZXNjZW50DQo+IHN0YXRlLg0KPiA+ID4gKw0KPiA+ID4gK1doZW4g dGhlIExQTSBpcyBub3QgdXNpbmcgUkNVLCB0Ymw4IGdyb3VwIGNhbiBiZSBmcmVlZCBpbW1lZGlh dGVseQ0KPiA+ID4gK2V2ZW4gdGhvdWdoIHRoZSByZWFkZXJzIG1pZ2h0IGJlIHVzaW5nIHRoZSB0 Ymw4IGdyb3VwIGVudHJpZXMuIFRoaXMNCj4gPiA+ICttaWdodA0KPiA+IHJlc3VsdCBpbiBpbmNv cnJlY3QgbG9va3VwIHJlc3VsdHMuDQo+ID4gPiArDQo+ID4gPiArUkNVIFFTQlIgcHJvY2VzcyBp cyBpbnRlZ3JhdGVkIGZvciBzYWZlIHRibDggZ3JvdXAgcmVjbGFpbWF0aW9uLg0KPiA+ID4gK0Fw cGxpY2F0aW9uIGhhcyBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2hpbGUgdXNpbmcgdGhpcyBm ZWF0dXJlLg0KPiA+ID4gK1BsZWFzZSByZWZlciB0byByZXNvdXJjZSByZWNsYWltYXRpb24gZnJh bWV3b3JrIG9mIDpyZWY6YFJDVQ0KPiA+ID4gK2xpYnJhcnkNCj4gPiA8UkNVX0xpYnJhcnk+YCBm b3IgbW9yZSBkZXRhaWxzLg0KPiA+ID4gKw0KPiA+ID4gICBMb29rdXANCj4gPiA+ICAgfn5+fn5+ DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbHBtL01ha2VmaWxlIGIvbGli L2xpYnJ0ZV9scG0vTWFrZWZpbGUgaW5kZXgNCj4gPiA+IGQ2ODI3ODViNi4uNmYwNmM1YzAzIDEw MDY0NA0KPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9scG0vTWFrZWZpbGUNCj4gPiA+ICsrKyBiL2xp Yi9saWJydGVfbHBtL01ha2VmaWxlDQo+ID4gPiBAQCAtOCw3ICs4LDcgQEAgTElCID0gbGlicnRl X2xwbS5hDQo+ID4gPg0KPiA+ID4gICBDRkxBR1MgKz0gLU8zDQo+ID4gPiAgIENGTEFHUyArPSAk KFdFUlJPUl9GTEFHUykgLUkkKFNSQ0RJUikgLUxETElCUyArPSAtbHJ0ZV9lYWwNCj4gPiA+IC1s cnRlX2hhc2gNCj4gPiA+ICtMRExJQlMgKz0gLWxydGVfZWFsIC1scnRlX2hhc2ggLWxydGVfcmN1 DQo+ID4gPg0KPiA+ID4gICBFWFBPUlRfTUFQIDo9IHJ0ZV9scG1fdmVyc2lvbi5tYXANCj4gPiA+ DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQgYi9saWIvbGli cnRlX2xwbS9tZXNvbi5idWlsZA0KPiA+ID4gaW5kZXggMDIxYWM2ZDhkLi42Y2ZjMDgzYzUgMTAw NjQ0DQo+ID4gPiAtLS0gYS9saWIvbGlicnRlX2xwbS9tZXNvbi5idWlsZA0KPiA+ID4gKysrIGIv bGliL2xpYnJ0ZV9scG0vbWVzb24uYnVpbGQNCj4gPiA+IEBAIC03LDMgKzcsNCBAQCBoZWFkZXJz ID0gZmlsZXMoJ3J0ZV9scG0uaCcsICdydGVfbHBtNi5oJykNCj4gPiA+ICAgIyB3aXRob3V0IHdv cnJ5aW5nIGFib3V0IHdoaWNoIGFyY2hpdGVjdHVyZSB3ZSBhY3R1YWxseSBuZWVkDQo+ID4gPiAg IGhlYWRlcnMgKz0gZmlsZXMoJ3J0ZV9scG1fYWx0aXZlYy5oJywgJ3J0ZV9scG1fbmVvbi5oJywg J3J0ZV9scG1fc3NlLmgnKQ0KPiA+ID4gICBkZXBzICs9IFsnaGFzaCddDQo+ID4gPiArZGVwcyAr PSBbJ3JjdSddDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jIGIv bGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5jDQo+ID4gPiBpbmRleA0KPiA+ID4gMzhhYjUxMmE0Li4z MGY1NDExNzkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmMNCj4g PiA+ICsrKyBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG0uYw0KPiA+ID4gQEAgLTEsNSArMSw2IEBA DQo+ID4gPiAgIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gPiA+ ICAgICogQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4gKyAq IENvcHlyaWdodChjKSAyMDIwIEFybSBMaW1pdGVkDQo+ID4gPiAgICAqLw0KPiA+ID4NCj4gPiA+ ICAgI2luY2x1ZGUgPHN0cmluZy5oPg0KPiA+ID4gQEAgLTI0NiwxMiArMjQ3LDg1IEBAIHJ0ZV9s cG1fZnJlZShzdHJ1Y3QgcnRlX2xwbSAqbHBtKQ0KPiA+ID4NCj4gPiA+ICAgcnRlX21jZmdfdGFp bHFfd3JpdGVfdW5sb2NrKCk7DQo+ID4gPg0KPiA+ID4gK2lmIChscG0tPmRxKQ0KPiA+ID4gK3J0 ZV9yY3VfcXNicl9kcV9kZWxldGUobHBtLT5kcSk7DQo+ID4gPiAgIHJ0ZV9mcmVlKGxwbS0+dGJs OCk7DQo+ID4gPiAgIHJ0ZV9mcmVlKGxwbS0+cnVsZXNfdGJsKTsNCj4gPiA+ICAgcnRlX2ZyZWUo bHBtKTsNCj4gPiA+ICAgcnRlX2ZyZWUodGUpOw0KPiA+ID4gICB9DQo+ID4gPg0KPiA+ID4gK3N0 YXRpYyB2b2lkDQo+ID4gPiArX19scG1fcmN1X3FzYnJfZnJlZV9yZXNvdXJjZSh2b2lkICpwLCB2 b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbikgew0KPiA+ID4gK3N0cnVjdCBydGVfbHBtX3RibF9l bnRyeSB6ZXJvX3RibDhfZW50cnkgPSB7MH07IHVpbnQzMl90DQo+ID4gPiArdGJsOF9ncm91cF9p bmRleCA9ICoodWludDMyX3QgKilkYXRhOyBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkNCj4gPiA+ ICsqdGJsOCA9IChzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKilwOw0KPiA+ID4gKw0KPiA+ID4g K1JURV9TRVRfVVNFRChuKTsNCj4gPiA+ICsvKiBTZXQgdGJsOCBncm91cCBpbnZhbGlkICovDQo+ ID4gPiArX19hdG9taWNfc3RvcmUoJnRibDhbdGJsOF9ncm91cF9pbmRleF0sICZ6ZXJvX3RibDhf ZW50cnksDQo+ID4gPiArX19BVE9NSUNfUkVMQVhFRCk7IH0NCj4gPiA+ICsNCj4gPiA+ICsvKiBB c3NvY2lhdGUgUVNCUiB2YXJpYWJsZSB3aXRoIGFuIExQTSBvYmplY3QuDQo+ID4gPiArICovDQo+ ID4gPiAraW50DQo+ID4gPiArcnRlX2xwbV9yY3VfcXNicl9hZGQoc3RydWN0IHJ0ZV9scG0gKmxw bSwgc3RydWN0IHJ0ZV9scG1fcmN1X2NvbmZpZw0KPiA+ICpjZmcsDQo+ID4gPiArc3RydWN0IHJ0 ZV9yY3VfcXNicl9kcSAqKmRxKQ0KPiA+ID4gK3sNCj4gPiA+ICtjaGFyIHJjdV9kcV9uYW1lW1JU RV9SQ1VfUVNCUl9EUV9OQU1FU0laRV07DQo+ID4gPiArc3RydWN0IHJ0ZV9yY3VfcXNicl9kcV9w YXJhbWV0ZXJzIHBhcmFtcyA9IHswfTsNCj4gPiA+ICsNCj4gPiA+ICtpZiAoKGxwbSA9PSBOVUxM KSB8fCAoY2ZnID09IE5VTEwpKSB7IHJ0ZV9lcnJubyA9IEVJTlZBTDsgcmV0dXJuIDE7DQo+ID4g PiArfQ0KPiA+ID4gKw0KPiA+ID4gK2lmIChscG0tPnYpIHsNCj4gPiA+ICtydGVfZXJybm8gPSBF RVhJU1Q7DQo+ID4gPiArcmV0dXJuIDE7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK2lmIChj ZmctPm1vZGUgPT0gUlRFX0xQTV9RU0JSX01PREVfU1lOQykgew0KPiA+ID4gKy8qIE5vIG90aGVy IHRoaW5ncyB0byBkby4gKi8NCj4gPiA+ICt9IGVsc2UgaWYgKGNmZy0+bW9kZSA9PSBSVEVfTFBN X1FTQlJfTU9ERV9EUSkgew0KPiA+ID4gKy8qIEluaXQgUVNCUiBkZWZlciBxdWV1ZS4gKi8NCj4g PiA+ICtzbnByaW50ZihyY3VfZHFfbmFtZSwgc2l6ZW9mKHJjdV9kcV9uYW1lKSwgIkxQTV9SQ1Vf JXMiLA0KPiA+ID4gK2xwbS0+bmFtZSk7IHBhcmFtcy5uYW1lID0gcmN1X2RxX25hbWU7IHBhcmFt cy5zaXplID0gY2ZnLT5kcV9zaXplOw0KPiA+ID4gK2lmIChwYXJhbXMuc2l6ZSA9PSAwKSBwYXJh bXMuc2l6ZSA9IGxwbS0+bnVtYmVyX3RibDhzOw0KPiA+ID4gK3BhcmFtcy50cmlnZ2VyX3JlY2xh aW1fbGltaXQgPSBjZmctPnJlY2xhaW1fdGhkOyBpZg0KPiA+ID4gKyhwYXJhbXMudHJpZ2dlcl9y ZWNsYWltX2xpbWl0ID09IDApDQo+ID4NCj4gPg0KPiA+IFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJs ZSBmb3IgYSB1c2VyIHRvIGNvbmZpZ3VyZSByZWNsYW1hdGlvbg0KPiA+IHRyaWdnZXJpbmcgd2l0 aCBldmVyeSBjYWxsLiBTaG91bGQgd2UgYWxsb3cgaXQ/DQo+IFllcywgdXNlIChyZWNsYWltX3Ro ZCA9IDApIHRvIHRyaWdnZXIgcmVjbGFtYXRpb24gYXQgZWFjaCBkcSBlbnF1ZXVlIHNob3VsZA0K PiBiZSBhIHZhbGlkIGNhc2UuDQo+IFdpbGwgcmVtb3ZlIHZhbHVlIG92ZXJyaWRpbmcgYW5kIHRh a2UgaXQgYXMgaXMuDQo+ID4NCj4gPg0KPiA+ID4gK3BhcmFtcy50cmlnZ2VyX3JlY2xhaW1fbGlt aXQgPQ0KPiA+ID4gK1JURV9MUE1fUkNVX0RRX1JFQ0xBSU1fVEhEOw0KPiA+ID4gK3BhcmFtcy5t YXhfcmVjbGFpbV9zaXplID0gY2ZnLT5yZWNsYWltX21heDsgaWYNCj4gPiA+ICsocGFyYW1zLm1h eF9yZWNsYWltX3NpemUgPT0gMCkgcGFyYW1zLm1heF9yZWNsYWltX3NpemUgPQ0KPiA+IFJURV9M UE1fUkNVX0RRX1JFQ0xBSU1fTUFYOw0KPiA+ID4gK3BhcmFtcy5lc2l6ZSA9IHNpemVvZih1aW50 MzJfdCk7LyogdGJsOCBncm91cCBpbmRleCAqLw0KPiA+ID4gK3BhcmFtcy5mcmVlX2ZuID0gX19s cG1fcmN1X3FzYnJfZnJlZV9yZXNvdXJjZTsgcGFyYW1zLnAgPQ0KPiA+ID4gK2xwbS0+dGJsODsN Cj4gPg0KPiA+DQo+ID4gSSB0aGluayBpdCdzIGJldHRlciB0byBwYXNzIHRoZSBMUE0gcG9pbnRl ciBoZXJlIHJhdGhlciB0aGFuIHRibDgsIGZvcg0KPiA+IGV4YW1wbGUsIGluIGNhc2Ugd2UgZGVj aWRlIHRvIGFkZCBzb21lIGNvdW50ZXJzIGluIHRoZSBmdXR1cmUNCj4gVXNlIExQTSBwb2ludGVy IGlzIG1vcmUgZXh0ZW5kYWJsZS4NCj4gV2lsbCBjaGFuZ2UgaW4gbmV4dCB2ZXJzaW9uLg0KPiA+ DQo+ID4NCj4gPiA+ICtwYXJhbXMudiA9IGNmZy0+djsNCj4gPiA+ICtscG0tPmRxID0gcnRlX3Jj dV9xc2JyX2RxX2NyZWF0ZSgmcGFyYW1zKTsNCj4gPiA+ICtpZiAobHBtLT5kcSA9PSBOVUxMKSB7 DQo+ID4gPiArUlRFX0xPRyhFUlIsIExQTSwNCj4gPiA+ICsiTFBNIFFTIGRlZmVyIHF1ZXVlIGNy ZWF0aW9uDQo+ID4gZmFpbGVkXG4iKTsNCj4gPiA+ICtyZXR1cm4gMTsNCj4gPiA+ICt9DQo+ID4g PiAraWYgKGRxKQ0KPiA+ID4gKypkcSA9IGxwbS0+ZHE7DQo+ID4gPiArfSBlbHNlIHsNCj4gPiA+ ICtydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gPiArcmV0dXJuIDE7DQo+ID4gPiArfQ0KPiA+ID4g K2xwbS0+cmN1X21vZGUgPSBjZmctPm1vZGU7DQo+ID4gPiArbHBtLT52ID0gY2ZnLT52Ow0KPiA+ ID4gKw0KPiA+ID4gK3JldHVybiAwOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICAgLyoNCj4g PiA+ICAgICogQWRkcyBhIHJ1bGUgdG8gdGhlIHJ1bGUgdGFibGUuDQo+ID4gPiAgICAqDQo+ID4g PiBAQCAtMzk0LDE0ICs0NjgsMTUgQEAgcnVsZV9maW5kKHN0cnVjdCBydGVfbHBtICpscG0sIHVp bnQzMl90DQo+ID4gaXBfbWFza2VkLCB1aW50OF90IGRlcHRoKQ0KPiA+ID4gICAgKiBGaW5kLCBj bGVhbiBhbmQgYWxsb2NhdGUgYSB0Ymw4Lg0KPiA+ID4gICAgKi8NCj4gPiA+ICAgc3RhdGljIGlu dDMyX3QNCj4gPiA+IC10Ymw4X2FsbG9jKHN0cnVjdCBydGVfbHBtX3RibF9lbnRyeSAqdGJsOCwg dWludDMyX3QgbnVtYmVyX3RibDhzKQ0KPiA+ID4gK190Ymw4X2FsbG9jKHN0cnVjdCBydGVfbHBt ICpscG0pDQo+ID4gPiAgIHsNCj4gPiA+ICAgdWludDMyX3QgZ3JvdXBfaWR4OyAvKiB0Ymw4IGdy b3VwIGluZGV4LiAqLw0KPiA+ID4gICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgKnRibDhfZW50 cnk7DQo+ID4gPg0KPiA+ID4gICAvKiBTY2FuIHRocm91Z2ggdGJsOCB0byBmaW5kIGEgZnJlZSAo aS5lLiBJTlZBTElEKSB0Ymw4IGdyb3VwLiAqLw0KPiA+ID4gLWZvciAoZ3JvdXBfaWR4ID0gMDsg Z3JvdXBfaWR4IDwgbnVtYmVyX3RibDhzOyBncm91cF9pZHgrKykgew0KPiA+ID4gLXRibDhfZW50 cnkgPSAmdGJsOFtncm91cF9pZHggKg0KPiA+IFJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5UUklF U107DQo+ID4gPiArZm9yIChncm91cF9pZHggPSAwOyBncm91cF9pZHggPCBscG0tPm51bWJlcl90 Ymw4czsgZ3JvdXBfaWR4KyspIHsNCj4gPiA+ICt0Ymw4X2VudHJ5ID0gJmxwbS0+dGJsOFtncm91 cF9pZHggKg0KPiA+ID4gKw0KPiA+IFJURV9MUE1fVEJMOF9HUk9VUF9OVU1fRU5UUklFU107DQo+ ID4gPiAgIC8qIElmIGEgZnJlZSB0Ymw4IGdyb3VwIGlzIGZvdW5kIGNsZWFuIGl0IGFuZCBzZXQg YXMgVkFMSUQuICovDQo+ID4gPiAgIGlmICghdGJsOF9lbnRyeS0+dmFsaWRfZ3JvdXApIHsNCj4g PiA+ICAgc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5IG5ld190Ymw4X2VudHJ5ID0geyBAQCAtNDI3 LDE0ICs1MDIsNDAgQEANCj4gPiA+IHRibDhfYWxsb2Moc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5 ICp0Ymw4LA0KPiA+IHVpbnQzMl90IG51bWJlcl90Ymw4cykNCj4gPiA+ICAgcmV0dXJuIC1FTk9T UEM7DQo+ID4gPiAgIH0NCj4gPiA+DQo+ID4gPiArc3RhdGljIGludDMyX3QNCj4gPiA+ICt0Ymw4 X2FsbG9jKHN0cnVjdCBydGVfbHBtICpscG0pDQo+ID4gPiArew0KPiA+ID4gK2ludDMyX3QgZ3Jv dXBfaWR4OyAvKiB0Ymw4IGdyb3VwIGluZGV4LiAqLw0KPiA+ID4gKw0KPiA+ID4gK2dyb3VwX2lk eCA9IF90Ymw4X2FsbG9jKGxwbSk7DQo+ID4gPiAraWYgKChncm91cF9pZHggPCAwKSAmJiAobHBt LT5kcSAhPSBOVUxMKSkgew0KPiA+DQo+ID4NCj4gPiBJIHRoaW5rIChncm91cF9pZHggPT0gLUVO T1NQQykgd2lsbCBiZSBzYWZlcg0KPiBXaWxsIGNoYW5nZSBpdCBpbiBuZXh0IHZlcnNpb24uDQo+ ID4NCj4gPg0KPiA+ID4gKy8qIElmIHRoZXJlIGFyZSBubyB0Ymw4IGdyb3VwcyB0cnkgdG8gcmVj bGFpbSBvbmUuICovIGlmDQo+ID4gPiArKHJ0ZV9yY3VfcXNicl9kcV9yZWNsYWltKGxwbS0+ZHEs IDEsIE5VTEwsIE5VTEwsIE5VTEwpDQo+ID4gPT0gMCkNCj4gPiA+ICtncm91cF9pZHggPSBfdGJs OF9hbGxvYyhscG0pOw0KPiA+DQo+ID4NCj4gPiBJJ20gbm90IHJlYWxseSBoYXBweSB3aXRoIHRo aXMgYXBwcm9hY2guIF90Ymw4X2FsbG9jKCkgcHJvZHVjZXMgbGluZWFyDQo+ID4gc2NhbiB0aHJv dWdoIHRoZSBtZW1vcnkgdG8gZmluZCBhIGZyZWUgZ3JvdXBfaWR4IGFuZCBpdCBpcyB0aGUgc2xv d2VzdA0KPiA+IHBhcnQgb2YgcnRlX2xwbV9hZGQoKS4NCj4gPiBIZXJlIGFmdGVyIHJlY2xhbWF0 aW9uIG9mIHNvbWUgZ3JvdXAgaW5kZXggd2UgbmVlZCB0byByZXNjYW4gYSBtZW1vcnkNCj4gPiBh Z2FpbiB0byBmaW5kIGl0LiBJdCB3b3VsZCBiZSBncmVhdCBpZiB0aGVyZSB3aWxsIGJlIHNvbWUg d2F5IHRvDQo+ID4gcmV0dXJuIHJlY2xhaW1lZCBlbGVtZW50cy4gT3IganVzdCB0byBkZXF1ZXVl IGVsZW1lbnRzIGZyb20gZHEgYW5kDQo+ID4gcmVjbGFpbSB0aGVtIG1hbnVhbGx5Lg0KPiBJIHRo aW5rIHRoZXJlIGlzIGxpdHRsZSBjaGFuY2UgYSByZXNjYW4gd2lsbCBiZSBuZWVkZWQuIElmIFJD VSBRU0JSIGRlZmVyDQo+IHF1ZXVlIHRyaWdnZXJfcmVjbGFpbV9saW1pdCBpcyBjb25maWd1cmVk IHdpdGggcmVhc29uYWJsZSB2YWx1ZSwgdGJsOCBncm91cHMNCj4gd2lsbCBiZSByZWNsYWltZWQg cmVndWxhcmx5LiBTbyBkZWZlciBxdWV1ZSB3b24ndCBnZXQgdG9vIGxvbmcuDQo+IA0KPiBSZXR1 cm4gcmVjbGFpbWVkIGVsZW1lbnRzIG1ha2VzIEFQSSBjb21wbGV4LiBOb3Qgc3VyZSBpZiBpdCBp cyB1c2VmdWwgZm9yDQo+IG90aGVyIHVzZSBjYXNlcy4NCj4gQEhvbm5hcHBhIE5hZ2FyYWhhbGxp LCBhbnkgaWRlYT8NCkkgdGhpbmsgaXQgaXMgYSBwcm9ibGVtIHRoYXQgc2hvdWxkIGJlIHNvbHZl ZCBpbiBMUE0uIEkgaGFkIGhhY2tlZCB1cCB0aGUgYWxsb2NhdGlvbiBzY2hlbWUgdG8gdXNlIGEg cmluZyB3aGVuIEkgd2FzIGRvaW5nIHRoZSBwZXJmb3JtYW5jZSB0ZXN0aW5nLiBJIGNhbiBzZW5k IHRoYXQgb3V0IGlmIHJlcXVpcmVkLg0KDQo+ID4NCj4gPg0KPiA+ID4gK30NCj4gPiA+ICsNCj4g PiA+ICtyZXR1cm4gZ3JvdXBfaWR4Ow0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICAgc3RhdGlj IHZvaWQNCj4gPiA+IC10Ymw4X2ZyZWUoc3RydWN0IHJ0ZV9scG1fdGJsX2VudHJ5ICp0Ymw4LCB1 aW50MzJfdA0KPiA+ID4gdGJsOF9ncm91cF9zdGFydCkNCj4gPiA+ICt0Ymw4X2ZyZWUoc3RydWN0 IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QgdGJsOF9ncm91cF9zdGFydCkNCj4gPiA+ICAgew0KPiA+ ID4gLS8qIFNldCB0Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+ID4gICBzdHJ1Y3QgcnRlX2xwbV90 YmxfZW50cnkgemVyb190Ymw4X2VudHJ5ID0gezB9Ow0KPiA+ID4NCj4gPiA+IC1fX2F0b21pY19z dG9yZSgmdGJsOFt0Ymw4X2dyb3VwX3N0YXJ0XSwgJnplcm9fdGJsOF9lbnRyeSwNCj4gPiA+IC1f X0FUT01JQ19SRUxBWEVEKTsNCj4gPiA+ICtpZiAoIWxwbS0+dikgew0KPiA+ID4gKy8qIFNldCB0 Ymw4IGdyb3VwIGludmFsaWQqLw0KPiA+ID4gK19fYXRvbWljX3N0b3JlKCZscG0tPnRibDhbdGJs OF9ncm91cF9zdGFydF0sDQo+ID4gJnplcm9fdGJsOF9lbnRyeSwNCj4gPiA+ICtfX0FUT01JQ19S RUxBWEVEKTsNCj4gPiA+ICt9IGVsc2UgaWYgKGxwbS0+cmN1X21vZGUgPT0gUlRFX0xQTV9RU0JS X01PREVfU1lOQykgew0KPiA+ID4gKy8qIFdhaXQgZm9yIHF1aWVzY2VudCBzdGF0ZSBjaGFuZ2Uu ICovDQo+ID4gPiArcnRlX3JjdV9xc2JyX3N5bmNocm9uaXplKGxwbS0+diwNCj4gPiBSVEVfUVNC Ul9USFJJRF9JTlZBTElEKTsNCj4gPiA+ICsvKiBTZXQgdGJsOCBncm91cCBpbnZhbGlkKi8NCj4g PiA+ICtfX2F0b21pY19zdG9yZSgmbHBtLT50Ymw4W3RibDhfZ3JvdXBfc3RhcnRdLA0KPiA+ICZ6 ZXJvX3RibDhfZW50cnksDQo+ID4gPiArX19BVE9NSUNfUkVMQVhFRCk7DQo+ID4gPiArfSBlbHNl IGlmIChscG0tPnJjdV9tb2RlID09IFJURV9MUE1fUVNCUl9NT0RFX0RRKSB7DQo+ID4gPiArLyog UHVzaCBpbnRvIFFTQlIgZGVmZXIgcXVldWUuICovDQo+ID4gPiArcnRlX3JjdV9xc2JyX2RxX2Vu cXVldWUobHBtLT5kcSwgKHZvaWQNCj4gPiAqKSZ0Ymw4X2dyb3VwX3N0YXJ0KTsNCj4gPiA+ICt9 DQo+ID4gPiAgIH0NCj4gPiA+DQo+ID4gPiAgIHN0YXRpYyBfX3J0ZV9ub2lubGluZSBpbnQzMl90 DQo+ID4gPiBAQCAtNTIzLDcgKzYyNCw3IEBAIGFkZF9kZXB0aF9iaWcoc3RydWN0IHJ0ZV9scG0g KmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgsDQo+ID4gPg0KPiA+ ID4gICBpZiAoIWxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLnZhbGlkKSB7DQo+ID4gPiAgIC8qIFNl YXJjaCBmb3IgYSBmcmVlIHRibDggZ3JvdXAuICovICAtdGJsOF9ncm91cF9pbmRleCA9DQo+ID4g PnRibDhfYWxsb2MobHBtLT50Ymw4LCBscG0tIG51bWJlcl90Ymw4cyk7DQo+ID4gPiArdGJsOF9n cm91cF9pbmRleCA9IHRibDhfYWxsb2MobHBtKTsNCj4gPiA+DQo+ID4gPiAgIC8qIENoZWNrIHRi bDggYWxsb2NhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4gKi8NCj4gPiA+ICAgaWYgKHRibDhfZ3JvdXBf aW5kZXggPCAwKSB7DQo+ID4gPiBAQCAtNTY5LDcgKzY3MCw3IEBAIGFkZF9kZXB0aF9iaWcoc3Ry dWN0IHJ0ZV9scG0gKmxwbSwgdWludDMyX3QNCj4gPiBpcF9tYXNrZWQsIHVpbnQ4X3QgZGVwdGgs DQo+ID4gPiAgIH0gLyogSWYgdmFsaWQgZW50cnkgYnV0IG5vdCBleHRlbmRlZCBjYWxjdWxhdGUg dGhlIGluZGV4IGludG8gVGFibGU4LiAqLw0KPiA+ID4gICBlbHNlIGlmIChscG0tPnRibDI0W3Ri bDI0X2luZGV4XS52YWxpZF9ncm91cCA9PSAwKSB7DQo+ID4gPiAgIC8qIFNlYXJjaCBmb3IgZnJl ZSB0Ymw4IGdyb3VwLiAqLw0KPiA+ID4gLXRibDhfZ3JvdXBfaW5kZXggPSB0Ymw4X2FsbG9jKGxw bS0+dGJsOCwgbHBtLSBudW1iZXJfdGJsOHMpOw0KPiA+ID4gK3RibDhfZ3JvdXBfaW5kZXggPSB0 Ymw4X2FsbG9jKGxwbSk7DQo+ID4gPg0KPiA+ID4gICBpZiAodGJsOF9ncm91cF9pbmRleCA8IDAp IHsNCj4gPiA+ICAgcmV0dXJuIHRibDhfZ3JvdXBfaW5kZXg7DQo+ID4gPiBAQCAtOTc3LDcgKzEw NzgsNyBAQCBkZWxldGVfZGVwdGhfYmlnKHN0cnVjdCBydGVfbHBtICpscG0sIHVpbnQzMl90DQo+ ID4gaXBfbWFza2VkLA0KPiA+ID4gICAgKi8NCj4gPiA+ICAgbHBtLT50YmwyNFt0YmwyNF9pbmRl eF0udmFsaWQgPSAwOw0KPiA+ID4gICBfX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9NSUNfUkVM RUFTRSk7DQo+ID4gPiAtdGJsOF9mcmVlKGxwbS0+dGJsOCwgdGJsOF9ncm91cF9zdGFydCk7DQo+ ID4gPiArdGJsOF9mcmVlKGxwbSwgdGJsOF9ncm91cF9zdGFydCk7DQo+ID4gPiAgIH0gZWxzZSBp ZiAodGJsOF9yZWN5Y2xlX2luZGV4ID4gLTEpIHsNCj4gPiA+ICAgLyogVXBkYXRlIHRibDI0IGVu dHJ5LiAqLw0KPiA+ID4gICBzdHJ1Y3QgcnRlX2xwbV90YmxfZW50cnkgbmV3X3RibDI0X2VudHJ5 ID0geyBAQCAtOTkzLDcgKzEwOTQsNyBAQA0KPiA+ID4gZGVsZXRlX2RlcHRoX2JpZyhzdHJ1Y3Qg cnRlX2xwbSAqbHBtLCB1aW50MzJfdA0KPiA+IGlwX21hc2tlZCwNCj4gPiA+ICAgX19hdG9taWNf c3RvcmUoJmxwbS0+dGJsMjRbdGJsMjRfaW5kZXhdLA0KPiA+ICZuZXdfdGJsMjRfZW50cnksDQo+ ID4gPiAgIF9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+ID4gICBfX2F0b21pY190aHJlYWRfZmVuY2Uo X19BVE9NSUNfUkVMRUFTRSk7DQo+ID4gPiAtdGJsOF9mcmVlKGxwbS0+dGJsOCwgdGJsOF9ncm91 cF9zdGFydCk7DQo+ID4gPiArdGJsOF9mcmVlKGxwbSwgdGJsOF9ncm91cF9zdGFydCk7DQo+ID4g PiAgIH0NCj4gPiA+ICAgI3VuZGVmIGdyb3VwX2lkeA0KPiA+ID4gICByZXR1cm4gMDsNCj4gPiA+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2xwbS9ydGVfbHBtLmggYi9saWIvbGlicnRlX2xwbS9y dGVfbHBtLmgNCj4gPiA+IGluZGV4IGI5ZDQ5YWM4Ny4uOGMwNTQ1MDlhIDEwMDY0NA0KPiA+ID4g LS0tIGEvbGliL2xpYnJ0ZV9scG0vcnRlX2xwbS5oDQo+ID4gPiArKysgYi9saWIvbGlicnRlX2xw bS9ydGVfbHBtLmgNCj4gPiA+IEBAIC0xLDUgKzEsNiBAQA0KPiA+ID4gICAvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ID4gPiAgICAqIENvcHlyaWdodChjKSAyMDEw LTIwMTQgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAyMCBBcm0g TGltaXRlZA0KPiA+ID4gICAgKi8NCj4gPiA+DQo+ID4gPiAgICNpZm5kZWYgX1JURV9MUE1fSF8N Cj4gPiA+IEBAIC0yMCw2ICsyMSw3IEBADQo+ID4gPiAgICNpbmNsdWRlIDxydGVfbWVtb3J5Lmg+ DQo+ID4gPiAgICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4gPiAgICNpbmNsdWRlIDxydGVf dmVjdC5oPg0KPiA+ID4gKyNpbmNsdWRlIDxydGVfcmN1X3FzYnIuaD4NCj4gPiA+DQo+ID4gPiAg ICNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+ID4gICBleHRlcm4gIkMiIHsNCj4gPiA+IEBAIC02Miw2 ICs2NCwxNyBAQCBleHRlcm4gIkMiIHsNCj4gPiA+ICAgLyoqIEJpdG1hc2sgdXNlZCB0byBpbmRp Y2F0ZSBzdWNjZXNzZnVsIGxvb2t1cCAqLw0KPiA+ID4gICAjZGVmaW5lIFJURV9MUE1fTE9PS1VQ X1NVQ0NFU1MgICAgICAgICAgMHgwMTAwMDAwMA0KPiA+ID4NCj4gPiA+ICsvKiogQGludGVybmFs IERlZmF1bHQgdGhyZXNob2xkIHRvIHRyaWdnZXIgUkNVIGRlZmVyIHF1ZXVlDQo+IHJlY2xhaW1h dGlvbi4NCj4gPiAqLw0KPiA+ID4gKyNkZWZpbmUgUlRFX0xQTV9SQ1VfRFFfUkVDTEFJTV9USEQz Mg0KPiA+ID4gKw0KPiA+ID4gKy8qKiBAaW50ZXJuYWwgRGVmYXVsdCBSQ1UgZGVmZXIgcXVldWUg ZW50cmllcyB0byByZWNsYWltIGluIG9uZSBnby4NCj4gPiA+ICsqLyAjZGVmaW5lIFJURV9MUE1f UkNVX0RRX1JFQ0xBSU1fTUFYMTYNCj4gPiA+ICsNCj4gPiA+ICsvKiBDcmVhdGUgZGVmZXIgcXVl dWUgZm9yIHJlY2xhaW0uICovICNkZWZpbmUNCj4gUlRFX0xQTV9RU0JSX01PREVfRFEwDQo+ID4g PiArLyogVXNlIGJsb2NraW5nIG1vZGUgcmVjbGFpbS4gTm8gZGVmZXIgcXVldWUgY3JlYXRlZC4g Ki8gI2RlZmluZQ0KPiA+ID4gK1JURV9MUE1fUVNCUl9NT0RFX1NZTkMweDAxDQo+ID4NCj4gPg0K PiA+IHVzaW5nIGVudW1zIGluc3RlYWQgb2YgZGVmaW5lcz8NCj4gV2lsbCBjb252ZXJ0IHRvIGVu dW1zIGluIG5leHQgdmVyc2lvbi4NCj4gPg0KPiA+DQo+ID4gPiArDQo+ID4gPiAgICNpZiBSVEVf QllURV9PUkRFUiA9PSBSVEVfTElUVExFX0VORElBTg0KPiA+ID4gICAvKiogQGludGVybmFsIFRi bDI0IGVudHJ5IHN0cnVjdHVyZS4gKi8NCj4gPiA+ICAgX19leHRlbnNpb25fXw0KPiA+ID4gQEAg LTEzMCw2ICsxNDMsMjggQEAgc3RydWN0IHJ0ZV9scG0gew0KPiA+ID4gICBfX3J0ZV9jYWNoZV9h bGlnbmVkOyAvKio8IExQTSB0YmwyNCB0YWJsZS4gKi8NCj4gPiA+ICAgc3RydWN0IHJ0ZV9scG1f dGJsX2VudHJ5ICp0Ymw4OyAvKio8IExQTSB0Ymw4IHRhYmxlLiAqLw0KPiA+ID4gICBzdHJ1Y3Qg cnRlX2xwbV9ydWxlICpydWxlc190Ymw7IC8qKjwgTFBNIHJ1bGVzLiAqLw0KPiA+ID4gKw0KPiA+ ID4gKy8qIFJDVSBjb25maWcuICovDQo+ID4gPiArc3RydWN0IHJ0ZV9yY3VfcXNiciAqdjsvKiBS Q1UgUVNCUiB2YXJpYWJsZS4gKi8gdWludDMyX3QNCj4gPiA+ICtyY3VfbW9kZTsvKiBCbG9ja2lu ZywgZGVmZXIgcXVldWUuICovIHN0cnVjdCBydGVfcmN1X3FzYnJfZHEgKmRxOy8qDQo+ID4gPiAr UkNVIFFTQlIgZGVmZXIgcXVldWUuICovIH07DQo+ID4gPiArDQo+ID4gPiArLyoqIExQTSBSQ1Ug UVNCUiBjb25maWd1cmF0aW9uIHN0cnVjdHVyZS4gKi8gc3RydWN0DQo+ID4gPiArcnRlX2xwbV9y Y3VfY29uZmlnIHsgc3RydWN0IHJ0ZV9yY3VfcXNiciAqdjsvKiBSQ1UgUVNCUiB2YXJpYWJsZS4N Cj4gPiA+ICsqLw0KPiA+ID4gKy8qIE1vZGUgb2YgUkNVIFFTQlIuIFJURV9MUE1fUVNCUl9NT0RF X3h4eA0KPiA+ID4gKyAqICcwJyBmb3IgZGVmYXVsdDogY3JlYXRlIGRlZmVyIHF1ZXVlIGZvciBy ZWNsYWltLg0KPiA+ID4gKyAqLw0KPiA+ID4gK3VpbnQzMl90IG1vZGU7DQo+ID4gPiArLyogUkNV IGRlZmVyIHF1ZXVlIHNpemUuIGRlZmF1bHQ6IGxwbS0+bnVtYmVyX3RibDhzLiAqLyB1aW50MzJf dA0KPiA+ID4gK2RxX3NpemU7IHVpbnQzMl90IHJlY2xhaW1fdGhkOy8qIFRocmVzaG9sZCB0byB0 cmlnZ2VyIGF1dG8gcmVjbGFpbS4NCj4gPiA+ICsgKiBkZWZhdWx0Og0KPiA+IFJURV9MUE1fUkNV X0RRX1JFQ0xBSU1fVFJIRC4NCj4gPiA+ICsgKi8NCj4gPiA+ICt1aW50MzJfdCByZWNsYWltX21h eDsvKiBNYXggZW50cmllcyB0byByZWNsYWltIGluIG9uZSBnby4NCj4gPiA+ICsgKiBkZWZhdWx0 Og0KPiA+IFJURV9MUE1fUkNVX0RRX1JFQ0xBSU1fTUFYLg0KPiA+ID4gKyAqLw0KPiA+ID4gICB9 Ow0KPiA+ID4NCj4gPiA+ICAgLyoqDQo+ID4gPiBAQCAtMTc5LDYgKzIxNCwzMCBAQCBydGVfbHBt X2ZpbmRfZXhpc3RpbmcoY29uc3QgY2hhciAqbmFtZSk7DQo+ID4gPiAgIHZvaWQNCj4gPiA+ICAg cnRlX2xwbV9mcmVlKHN0cnVjdCBydGVfbHBtICpscG0pOw0KPiA+ID4NCj4gPiA+ICsvKioNCj4g PiA+ICsgKiBAd2FybmluZw0KPiA+ID4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5 IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPiA+ID4gKyAqDQo+ID4gPiArICogQXNzb2Np YXRlIFJDVSBRU0JSIHZhcmlhYmxlIHdpdGggYW4gTFBNIG9iamVjdC4NCj4gPiA+ICsgKg0KPiA+ ID4gKyAqIEBwYXJhbSBscG0NCj4gPiA+ICsgKiAgIHRoZSBscG0gb2JqZWN0IHRvIGFkZCBSQ1Ug UVNCUg0KPiA+ID4gKyAqIEBwYXJhbSBjZmcNCj4gPiA+ICsgKiAgIFJDVSBRU0JSIGNvbmZpZ3Vy YXRpb24NCj4gPiA+ICsgKiBAcGFyYW0gZHENCj4gPiA+ICsgKiAgIGhhbmRsZXIgb2YgY3JlYXRl ZCBSQ1UgUVNCUiBkZWZlciBxdWV1ZQ0KPiA+ID4gKyAqIEByZXR1cm4NCj4gPiA+ICsgKiAgIE9u IHN1Y2Nlc3MgLSAwDQo+ID4gPiArICogICBPbiBlcnJvciAtIDEgd2l0aCBlcnJvciBjb2RlIHNl dCBpbiBydGVfZXJybm8uDQo+ID4gPiArICogICBQb3NzaWJsZSBydGVfZXJybm8gY29kZXMgYXJl Og0KPiA+ID4gKyAqICAgLSBFSU5WQUwgLSBpbnZhbGlkIHBvaW50ZXINCj4gPiA+ICsgKiAgIC0g RUVYSVNUIC0gYWxyZWFkeSBhZGRlZCBRU0JSDQo+ID4gPiArICogICAtIEVOT01FTSAtIG1lbW9y eSBhbGxvY2F0aW9uIGZhaWx1cmUNCj4gPiA+ICsgKi8NCj4gPiA+ICtfX3J0ZV9leHBlcmltZW50 YWwNCj4gPiA+ICtpbnQgcnRlX2xwbV9yY3VfcXNicl9hZGQoc3RydWN0IHJ0ZV9scG0gKmxwbSwg c3RydWN0DQo+ID4gcnRlX2xwbV9yY3VfY29uZmlnICpjZmcsDQo+ID4gPiArc3RydWN0IHJ0ZV9y Y3VfcXNicl9kcSAqKmRxKTsNCj4gPiA+ICsNCj4gPiA+ICAgLyoqDQo+ID4gPiAgICAqIEFkZCBh IHJ1bGUgdG8gdGhlIExQTSB0YWJsZS4NCj4gPiA+ICAgICoNCj4gPiA+IGRpZmYgLS1naXQgYS9s aWIvbGlicnRlX2xwbS9ydGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4gYi9saWIvbGlicnRlX2xwbS9y dGVfbHBtX3ZlcnNpb24ubWFwDQo+ID4gPiBpbmRleCA1MDBmNThiODAuLmJmY2NkN2VhYyAxMDA2 NDQNCj4gPiA+IC0tLSBhL2xpYi9saWJydGVfbHBtL3J0ZV9scG1fdmVyc2lvbi5tYXANCj4gPiA+ ICsrKyBiL2xpYi9saWJydGVfbHBtL3J0ZV9scG1fdmVyc2lvbi5tYXANCj4gPiA+IEBAIC0yMSwz ICsyMSw5IEBAIERQREtfMjAuMCB7DQo+ID4gPg0KPiA+ID4gICBsb2NhbDogKjsNCj4gPiA+ICAg fTsNCj4gPiA+ICsNCj4gPiA+ICtFWFBFUklNRU5UQUwgew0KPiA+ID4gK2dsb2JhbDoNCj4gPiA+ ICsNCj4gPiA+ICtydGVfbHBtX3JjdV9xc2JyX2FkZDsNCj4gPiA+ICt9Ow0KPiA+DQo+ID4gLS0N Cj4gPiBSZWdhcmRzLA0KPiA+IFZsYWRpbWlyDQo+IA0KDQo=