From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E52F441C89; Mon, 13 Feb 2023 15:34:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B62C140A81; Mon, 13 Feb 2023 15:34:03 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2064.outbound.protection.outlook.com [40.107.20.64]) by mails.dpdk.org (Postfix) with ESMTP id 0C4A7400D6 for ; Mon, 13 Feb 2023 15:34:02 +0100 (CET) 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=MLoWs01oSz28DXzu0WNjEwzh2/ENUBnrSzn1qsd5DRw=; b=q/4AjmoEeYCUbGMI8mRJtdhyZdLrOLkjZBZ37E/ICmu/vGN+HaqLcq4tlwJsdJXGmRHLXLU0XnBfLDVMbMlsr2gMJEW1uaPYB9Hs2b8pVgre5m5fNxM+yQkV+j1M6mzk5lpUpy7uEWbayx/x+iaCZPVnIWKFXhzOytNTKEXlekA= Received: from AM5PR0601CA0050.eurprd06.prod.outlook.com (2603:10a6:206::15) by AM8PR08MB5844.eurprd08.prod.outlook.com (2603:10a6:20b:1d1::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Mon, 13 Feb 2023 14:33:53 +0000 Received: from AM7EUR03FT054.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:0:cafe::e9) by AM5PR0601CA0050.outlook.office365.com (2603:10a6:206::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24 via Frontend Transport; Mon, 13 Feb 2023 14:33:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT054.mail.protection.outlook.com (100.127.140.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24 via Frontend Transport; Mon, 13 Feb 2023 14:33:53 +0000 Received: ("Tessian outbound b1d3ffe56e73:v132"); Mon, 13 Feb 2023 14:33:53 +0000 X-CR-MTA-TID: 64aa7808 Received: from 85fa4270e729.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 36A95202-2400-4984-B181-BD9E70FBB2C8.1; Mon, 13 Feb 2023 14:33:42 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 85fa4270e729.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 13 Feb 2023 14:33:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TcL1U7aISxa362Q9lwYMLQ5VGGYOUijcYHCmcc5/WjyY42HxAbWUoeLLgUc0pkg3mCz7eUWI/GR+MHzRWoMsBEJE8ofpiLqoUklDpFmPHtWgThyJEKeDMml+NE4Z1gh1teAVs6ZznjU4x7Ye/mpKxyRUeinfRAkALL7tSXeub+w5RGN4Ig5CtH2f/vISDIECDrijOF+zcbRgjphvc/3+v56d1MJeHoPUyxxCVp0+z3kbYnfSY/HRE2morYdNXRIy6SDjeWjQEWM4xTEzvewMVULXPKgfB33JrRXLlS5CLCbcVSJHNZ9td8pSjTjDxmq4XPGKngvCOQk0NHXMO8Mzqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MLoWs01oSz28DXzu0WNjEwzh2/ENUBnrSzn1qsd5DRw=; b=Rc7nAtpyt4M/f6wsPZ7p5Sg6m+25FhkLyIUCXkyT5WP20dD1i//jGyjOAIKQzXoPWK5NepvNJzeknO1yauKy3uvDYnzH6CVvlgwaJobuNSjBmmxUjDuXJAjmDv7mLDVDRCvwEa/9Q+ZNnIuGvlIU4m5AvOfLhe/E1qp1qHXk0lFYclGHCHNcENoYQT4BVtPeVD0f5/jhmNWFnaUdQCHPVnVIE7bmrCu7cOQTnUUAYFtgJZSVrGHAl0/zn8ljCNJnpuZUC1Y85mzOHUJEoFCI4YH/w+4aMZZXNjd1ccmET+4PBdsBMA9rRK7MuWSBh/W8+UIjw1uA/i+omCreMB43xQ== 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=MLoWs01oSz28DXzu0WNjEwzh2/ENUBnrSzn1qsd5DRw=; b=q/4AjmoEeYCUbGMI8mRJtdhyZdLrOLkjZBZ37E/ICmu/vGN+HaqLcq4tlwJsdJXGmRHLXLU0XnBfLDVMbMlsr2gMJEW1uaPYB9Hs2b8pVgre5m5fNxM+yQkV+j1M6mzk5lpUpy7uEWbayx/x+iaCZPVnIWKFXhzOytNTKEXlekA= Received: from DB7PR08MB3865.eurprd08.prod.outlook.com (2603:10a6:10:74::25) by DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Mon, 13 Feb 2023 14:33:39 +0000 Received: from DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::ee54:c9dc:b13d:727b]) by DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::ee54:c9dc:b13d:727b%3]) with mapi id 15.20.6086.024; Mon, 13 Feb 2023 14:33:39 +0000 From: Kamalakshitha Aligeri To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "olivier.matz@6wind.com" , "andrew.rybchenko@oktetlabs.ru" , Honnappa Nagarahalli , "bruce.richardson@intel.com" , "konstantin.ananyev@huawei.com" , "dev@dpdk.org" CC: nd , "david.marchand@redhat.com" , nd Subject: RE: [PATCH v9] mempool cache: add zero-copy get and put functions Thread-Topic: [PATCH v9] mempool cache: add zero-copy get and put functions Thread-Index: AQHZP6YuNDj8fHNV1kaSIY2UOybM0q7M8GoA Date: Mon, 13 Feb 2023 14:33:39 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87488@smartserver.smartshare.dk> <20230213122437.122858-1-mb@smartsharesystems.com> In-Reply-To: <20230213122437.122858-1-mb@smartsharesystems.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 9E02560773437549B4C0D691E892DB22.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DB7PR08MB3865:EE_|DBAPR08MB5814:EE_|AM7EUR03FT054:EE_|AM8PR08MB5844:EE_ X-MS-Office365-Filtering-Correlation-Id: e4304db0-1fbe-4471-b3cd-08db0dcf54b1 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: HfXbIa890s6Y+x/DokWHmtGVphEkNd4vhlaWHybf/jovfZHWO/P1FADTNe5GBZnNEamToPUtKf7nN2NKZ0i9aYVywtxCH1HmG1Nvy4kXe5gL+9oYnhy+BIyi6y2DBTGGsdnawb0pIRZ9ovmUmxpNHXvj0HjCGyI1GIUlzzUQeC3YGrtp8UtsOAC9ylMokKaB/RcCVFStmeJmRmXGpK2NSKfGMMmZBcku0NZpMU4OCuhZOUuQQY7f1+pjFBDCb1hL8LpGZlhmWSy4nT2X/MWKbgJBlPHhIVftDDxVxWJ1L2ppQVx0nbJQR1bv3gn/E0T5fPLP9hYKcwAPBzdbUS2PEpVuaY+WwFMM3CURi0t63+z5KaAvshPLlkmtwOP5lpUpVwZPGP1OjWumWgchI1toQhwDtWj2xqBj8MwpMd0Uv4Cpn5wUxykEf2nVCCI7GvII9T0/NXfRRRVXmsd12ocPdpYaa3I6pHOQftP4FcR4ufNRoehbjKuxf158Jx6e/m4wx1JRuPXarX7RyCYwOKFBXXMCVnsrc5oJNwUcQlphZ/o4knBZLn5sz+Uhthb8uR3yg3/uOOJlgEKGPMW8dqHnf3angOXiOhAcYZmyq//PZ/LaR1BiEFQVanqIiQrE7Frkfx2ORUfQEgY/zpLqymoYQ1MCJGprbG5Q9eCBVID6YKxlEtJ60ttgfTcWUb/D2GL8Ozp0FkYC0l9CJ3nfG7ksBIngQKLHQih4U0Bnm4kW8Qg= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3865.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(396003)(136003)(346002)(39860400002)(366004)(376002)(451199018)(7696005)(110136005)(54906003)(316002)(8936002)(52536014)(6506007)(53546011)(966005)(186003)(38070700005)(26005)(478600001)(86362001)(122000001)(38100700002)(9686003)(30864003)(5660300002)(33656002)(2906002)(55016003)(71200400001)(4326008)(66899018)(83380400001)(66574015)(66446008)(64756008)(66476007)(66946007)(66556008)(76116006)(41300700001)(8676002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5814 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 379a9afc-59b9-4bfc-c0c0-08db0dcf4c96 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nFMmrbhY6T6sPLQYStBP7FCCckAlnARmhr/s7b1WqV8vpESJbcDR9+c1M1w+DypmkylLf3Snb1/qZ7gObd+jCGzHA5d5T6wMdzOPjhSIbCP/+g2lLwUH+ZHLXTa6y0spzTVGsjbLwzIHUykM82LaTbk2iV52yLjYkZznZHELcZxHeOpOKoNWL9KWBbiOCx2xNobLYEfvA8wYilwKFA9G3QWegOe4ZCcS4Gq81uLdSgEcoAfhexOIJUP3oc1UYf6tt75IFffEAlYop5hqJUWqsoHON2ZQUUCiFFJavbIgqj2rhLxfempUd0zYVlRmZjGSEFYXcWuXh1d8vs3snqC0CiEZy19UhdrCvUg4HRh240hNfyw4GFqoD5PlcLUfgOFKM+JmnrWhGL9bcf6RH5h0NpdDahxb/LSphmKuuveMFgJG6yuepGJXvDYA4/3SufEcZqyCcXo7Cd+CyZPd9o4OTy6eXRwKZQdBLTZ3KBFQfMRFR9lQvDUu2jABP5hjYXL0Y7VGMmy4D5EIqHFSaEdxr8WkHpH9EKgpxdv0xiBljKT50RNZJly10PUi5EwI6a6qHuvFJxS1BZjR+X/CRusRNuiAVQla/+SDtVK0AbuTcVf1TtEA1hdwMEZgF4vhO9PNQ1Wm8B3Sd+EzsdqVYYVx69ZanLaUK9jjRqvjWAXAEhU87G66h/hsx/Ys8N1NJDLoRv+xDiLd8E9MYyPqOLIwg3lDWQ+a02y0/12YITb/SsP7+nYx5GVNfj07kipomtt8LdyY6xtDehzsbyQA7IOrEw== 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:(13230025)(4636009)(376002)(39860400002)(396003)(136003)(346002)(451199018)(36840700001)(40470700004)(46966006)(54906003)(7696005)(966005)(110136005)(82310400005)(26005)(53546011)(186003)(9686003)(478600001)(52536014)(30864003)(2906002)(41300700001)(6506007)(5660300002)(8936002)(316002)(4326008)(8676002)(70586007)(356005)(40460700003)(40480700001)(55016003)(33656002)(66574015)(47076005)(70206006)(81166007)(336012)(82740400003)(83380400001)(86362001)(66899018)(36860700001)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 14:33:53.2599 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e4304db0-1fbe-4471-b3cd-08db0dcf54b1 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: AM7EUR03FT054.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5844 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org UGF0Y2ggbG9va3MgZ29vZCB0byBtZQ0KDQpBY2tlZC1ieTogS2FtYWxha3NoaXRoYSBBbGlnZXJp IDxLYW1hbGFrc2hpdGhhLmFsaWdlcmlAYXJtLmNvbT4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29t Pg0KPiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDEzLCAyMDIzIDQ6MjUgQU0NCj4gVG86IG9saXZp ZXIubWF0ekA2d2luZC5jb207IGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1OyBIb25uYXBw YQ0KPiBOYWdhcmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IEthbWFsYWtz aGl0aGEgQWxpZ2VyaQ0KPiA8S2FtYWxha3NoaXRoYS5BbGlnZXJpQGFybS5jb20+OyBicnVjZS5y aWNoYXJkc29uQGludGVsLmNvbTsNCj4ga29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb207IGRl dkBkcGRrLm9yZw0KPiBDYzogbmQgPG5kQGFybS5jb20+OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQu Y29tOyBNb3J0ZW4gQnLDuHJ1cA0KPiA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiBTdWJq ZWN0OiBbUEFUQ0ggdjldIG1lbXBvb2wgY2FjaGU6IGFkZCB6ZXJvLWNvcHkgZ2V0IGFuZCBwdXQg ZnVuY3Rpb25zDQo+IA0KPiBaZXJvLWNvcHkgYWNjZXNzIHRvIG1lbXBvb2wgY2FjaGVzIGlzIGJl bmVmaWNpYWwgZm9yIFBNRCBwZXJmb3JtYW5jZSwgYW5kDQo+IG11c3QgYmUgcHJvdmlkZWQgYnkg dGhlIG1lbXBvb2wgbGlicmFyeSB0byBmaXggW0J1ZyAxMDUyXSB3aXRob3V0IGENCj4gcGVyZm9y bWFuY2UgcmVncmVzc2lvbi4NCj4gDQo+IFtCdWcgMTA1Ml06IGh0dHBzOi8vYnVncy5kcGRrLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Mg0KPiANCj4gQnVnemlsbGEgSUQ6IDEwNTINCj4gDQo+IFNp Z25lZC1vZmYtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+ IEFja2VkLWJ5OiBLb25zdGFudGluIEFuYW55ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRl eC5ydT4NCj4gQWNrZWQtYnk6IENoZW5nd2VuIEZlbmcgPGZlbmdjaGVuZ3dlbkBodWF3ZWkuY29t Pg0KPiANCj4gdjk6DQo+ICogQWxzbyBzZXQgcnRlX2Vycm5vIGluIHplcm8tY29weSBwdXQgZnVu Y3Rpb24sIGlmIHJldHVybmluZyBOVUxMLg0KPiAgIChIb25uYXBwYSkNCj4gKiBSZXZlcnQgdjMg Y29tcGFyaXNvbiB0byBwcmV2ZW50IG92ZXJmbG93IGlmIG4gaXMgcmVhbGx5IGh1Z2UgYW5kIGxl biBpcw0KPiAgIG5vbi16ZXJvLiAoT2xpdmllcikNCj4gdjg6DQo+ICogQWN0dWFsbHkgaW5jbHVk ZSB0aGUgcnRlX2Vycm5vIGhlYWRlciBmaWxlLg0KPiAgIE5vdGUgdG8gc2VsZjogVGhlIGNoYW5n ZXMgb25seSB0YWtlIGVmZmVjdCBvbiB0aGUgZGlzayBhZnRlciB0aGUgZmlsZSBpbg0KPiAgIHRo ZSB0ZXh0IGVkaXRvciBoYXMgYmVlbiBzYXZlZC4NCj4gdjc6DQo+ICogRml4IHR5cG8gaW4gZnVu Y3Rpb24gZGVzY3JpcHRpb24uIChjaGVja3BhdGNoKQ0KPiAqIFplcm8tY29weSBmdW5jdGlvbnMg bWF5IHNldCBydGVfZXJybm87IGluY2x1ZGUgcnRlX2Vycm5vIGhlYWRlciBmaWxlLg0KPiAgIChj aS9sb29uZ2FyY2gtY29tcGlsYXRpb24pDQo+IHY2Og0KPiAqIEltcHJvdmUgZGVzY3JpcHRpb24g b2YgdGhlICduJyBwYXJhbWV0ZXIgdG8gdGhlIHplcm8tY29weSBnZXQgZnVuY3Rpb24uDQo+ICAg KEtvbnN0YW50aW4sIEJydWNlKQ0KPiAqIFRoZSBjYWNoZXMgdXNlZCBmb3IgemVyby1jb3B5IG1h eSBub3QgYmUgdXNlci1vd25lZCwgc28gcmVtb3ZlIHRoaXMNCj4gd29yZA0KPiAgIGZyb20gdGhl IGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4gKEthbWFsYWtzaGl0aGEpDQo+IHY1Og0KPiAqIEJ1Z2Zp eDogQ29tcGFyZSB6ZXJvLWNvcHkgZ2V0IHJlcXVlc3QgdG8gdGhlIGNhY2hlIHNpemUgaW5zdGVh ZCBvZiB0aGUNCj4gICBmbHVzaCB0aHJlc2hvbGQ7IG90aGVyd2lzZSByZWZpbGwgY291bGQgb3Zl cmZsb3cgdGhlIG1lbW9yeSBhbGxvY2F0ZWQNCj4gICBmb3IgdGhlIGNhY2hlLiAoQW5kcmV3KQ0K PiAqIFNwbGl0IHRoZSB6ZXJvLWNvcHkgcHV0IGZ1bmN0aW9uIGludG8gYW4gaW50ZXJuYWwgZnVu Y3Rpb24gZG9pbmcgdGhlDQo+ICAgd29yaywgYW5kIGEgcHVibGljIGZ1bmN0aW9uIHdpdGggdHJh Y2UuDQo+ICogQXZvaWQgY29kZSBkdXBsaWNhdGlvbiBieSByZXdyaXRpbmcgcnRlX21lbXBvb2xf ZG9fZ2VuZXJpY19wdXQoKSB0byB1c2UNCj4gICB0aGUgaW50ZXJuYWwgemVyby1jb3B5IHB1dCBm dW5jdGlvbi4gKEFuZHJldykNCj4gKiBDb3JyZWN0ZWQgdGhlIHJldHVybiB0eXBlIG9mIHJ0ZV9t ZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKCkgZnJvbQ0KPiB2b2lkICoNCj4gICB0byB2b2lkICoq OyBpdCByZXR1cm5zIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBvYmplY3RzLg0KPiAqIEZpeCBj b2Rpbmcgc3R5bGU6IEFkZCBtaXNzaW5nIGN1cmx5IGJyYWNrZXRzLiAoQW5kcmV3KQ0KPiB2NDoN Cj4gKiBGaXggY2hlY2twYXRjaCB3YXJuaW5ncy4NCj4gdjM6DQo+ICogQnVnZml4OiBSZXNwZWN0 IHRoZSBjYWNoZSBzaXplOyBjb21wYXJlIHRvIHRoZSBmbHVzaCB0aHJlc2hvbGQgaW5zdGVhZA0K PiAgIG9mIFJURV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFLg0KPiAqIEFkZGVkICdyZXdpbmQnIGZ1 bmN0aW9uIGZvciBpbmNvbXBsZXRlICdwdXQnIG9wZXJhdGlvbnMuIChLb25zdGFudGluKQ0KPiAq IFJlcGxhY2UgUlRFX0FTU0VSVHMgd2l0aCBydW50aW1lIGNoZWNrcyBvZiB0aGUgcmVxdWVzdCBz aXplLg0KPiAgIEluc3RlYWQgb2YgZmFpbGluZywgcmV0dXJuIE5VTEwgaWYgdGhlIHJlcXVlc3Qg aXMgdG9vIGJpZy4gKEtvbnN0YW50aW4pDQo+ICogTW9kaWZpZWQgY29tcGFyaXNvbiB0byBwcmV2 ZW50IG92ZXJmbG93IGlmIG4gaXMgcmVhbGx5IGh1Z2UgYW5kIGxlbiBpcw0KPiAgIG5vbi16ZXJv LiAoQW5kcmV3KQ0KPiAqIFVwZGF0ZWQgdGhlIGNvbW1lbnRzIGluIHRoZSBjb2RlLg0KPiB2MjoN Cj4gKiBGaXggY2hlY2twYXRjaCB3YXJuaW5ncy4NCj4gKiBGaXggbWlzc2luZyByZWdpc3RyYXRp b24gb2YgdHJhY2UgcG9pbnRzLg0KPiAqIFRoZSBmdW5jdGlvbnMgYXJlIGlubGluZSwgc28gdGhl eSBkb24ndCBnbyBpbnRvIHRoZSBtYXAgZmlsZS4NCj4gdjEgY2hhbmdlcyBmcm9tIHRoZSBSRkM6 DQo+ICogUmVtb3ZlZCBydW4tdGltZSBwYXJhbWV0ZXIgY2hlY2tzLiAoSG9ubmFwcGEpDQo+ICAg VGhpcyBpcyBhIGhvdCBmYXN0IHBhdGggZnVuY3Rpb247IHJlcXVpcmluZyBjb3JyZWN0IGFwcGxp Y2F0aW9uDQo+ICAgYmVoYXZpb3VyLCBpLmUuIGZ1bmN0aW9uIHBhcmFtZXRlcnMgbXVzdCBiZSB2 YWxpZC4NCj4gKiBBZGRlZCBSVEVfQVNTRVJUIGZvciBwYXJhbWV0ZXJzIGluc3RlYWQuDQo+ICAg Q29kZSBmb3IgdGhpcyBpcyBvbmx5IGdlbmVyYXRlZCBpZiBidWlsdCB3aXRoIFJURV9FTkFCTEVf QVNTRVJULg0KPiAqIFJlbW92ZWQgZmFsbGJhY2sgd2hlbiAnY2FjaGUnIHBhcmFtZXRlciBpcyBu b3Qgc2V0LiAoSG9ubmFwcGEpDQo+ICogQ2hvc2UgdGhlIHNpbXBsZSBnZXQgZnVuY3Rpb247IGku ZS4gZG8gbm90IG1vdmUgdGhlIGV4aXN0aW5nIG9iamVjdHMgaW4NCj4gICB0aGUgY2FjaGUgdG8g dGhlIHRvcCBvZiB0aGUgbmV3IHN0YWNrLCBqdXN0IGxlYXZlIHRoZW0gYXQgdGhlIGJvdHRvbS4N Cj4gKiBSZW5hbWVkIHRoZSBmdW5jdGlvbnMuIE90aGVyIHN1Z2dlc3Rpb25zIGFyZSB3ZWxjb21l LCBvZiBjb3Vyc2UuIDstKQ0KPiAqIFVwZGF0ZWQgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4N Cj4gKiBBZGRlZCB0aGUgZnVuY3Rpb25zIHRvIHRyYWNlX2ZwIGFuZCB2ZXJzaW9uLm1hcC4NCj4g LS0tDQo+ICBsaWIvbWVtcG9vbC9tZW1wb29sX3RyYWNlX3BvaW50cy5jIHwgICA5ICsrDQo+ICBs aWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oICAgICAgICAgIHwgMjM5ICsrKysrKysrKysrKysrKysr KysrKysrKystLS0tDQo+ICBsaWIvbWVtcG9vbC9ydGVfbWVtcG9vbF90cmFjZV9mcC5oIHwgIDIz ICsrKw0KPiAgbGliL21lbXBvb2wvdmVyc2lvbi5tYXAgICAgICAgICAgICB8ICAgNSArDQo+ICA0 IGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkNCj4gDQo+ IGRpZmYgLS1naXQgYS9saWIvbWVtcG9vbC9tZW1wb29sX3RyYWNlX3BvaW50cy5jDQo+IGIvbGli L21lbXBvb2wvbWVtcG9vbF90cmFjZV9wb2ludHMuYw0KPiBpbmRleCA0YWQ3NmRlYjM0Li44M2Qz NTNhNzY0IDEwMDY0NA0KPiAtLS0gYS9saWIvbWVtcG9vbC9tZW1wb29sX3RyYWNlX3BvaW50cy5j DQo+ICsrKyBiL2xpYi9tZW1wb29sL21lbXBvb2xfdHJhY2VfcG9pbnRzLmMNCj4gQEAgLTc3LDMg Kzc3LDEyIEBADQo+IFJURV9UUkFDRV9QT0lOVF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9v cHNfZnJlZSwNCj4gDQo+ICBSVEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX21lbXBvb2xfdHJh Y2Vfc2V0X29wc19ieW5hbWUsDQo+ICAJbGliLm1lbXBvb2wuc2V0Lm9wcy5ieW5hbWUpDQo+ICsN Cj4gK1JURV9UUkFDRV9QT0lOVF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19w dXRfYnVsaywNCj4gKwlsaWIubWVtcG9vbC5jYWNoZS56Yy5wdXQuYnVsaykNCj4gKw0KPiArUlRF X1RSQUNFX1BPSU5UX1JFR0lTVEVSKHJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9yZXdp bmQsDQo+ICsJbGliLm1lbXBvb2wuY2FjaGUuemMucHV0LnJld2luZCkNCj4gKw0KPiArUlRFX1RS QUNFX1BPSU5UX1JFR0lTVEVSKHJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX2dldF9idWxrLA0K PiArCWxpYi5tZW1wb29sLmNhY2hlLnpjLmdldC5idWxrKQ0KPiBkaWZmIC0tZ2l0IGEvbGliL21l bXBvb2wvcnRlX21lbXBvb2wuaCBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gaW5kZXgg OWY1MzBkYjI0Yi4uOTRmODk1YzMyOSAxMDA2NDQNCj4gLS0tIGEvbGliL21lbXBvb2wvcnRlX21l bXBvb2wuaA0KPiArKysgYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+IEBAIC00Miw2ICs0 Miw3IEBADQo+ICAjaW5jbHVkZSA8cnRlX2NvbmZpZy5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9zcGlu bG9jay5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9kZWJ1Zy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9lcnJu by5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9sY29yZS5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9icmFuY2hf cHJlZGljdGlvbi5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9yaW5nLmg+DQo+IEBAIC0xMzQ2LDYgKzEz NDcsMTk5IEBAIHJ0ZV9tZW1wb29sX2NhY2hlX2ZsdXNoKHN0cnVjdA0KPiBydGVfbWVtcG9vbF9j YWNoZSAqY2FjaGUsDQo+ICAJY2FjaGUtPmxlbiA9IDA7DQo+ICB9DQo+IA0KPiArDQo+ICsvKioN Cj4gKyAqIEBpbnRlcm5hbCB1c2VkIGJ5IHJ0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKCkg YW5kDQo+IHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfcHV0KCkuDQo+ICsgKg0KPiArICogWmVyby1j b3B5IHB1dCBvYmplY3RzIGluIGEgbWVtcG9vbCBjYWNoZSBiYWNrZWQgYnkgdGhlIHNwZWNpZmll ZA0KPiBtZW1wb29sLg0KPiArICoNCj4gKyAqIEBwYXJhbSBjYWNoZQ0KPiArICogICBBIHBvaW50 ZXIgdG8gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ICsgKiBAcGFyYW0gbXANCj4gKyAqICAgQSBwb2lu dGVyIHRvIHRoZSBtZW1wb29sLg0KPiArICogQHBhcmFtIG4NCj4gKyAqICAgVGhlIG51bWJlciBv ZiBvYmplY3RzIHRvIGJlIHB1dCBpbiB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gKyAqIEByZXR1cm4N Cj4gKyAqICAgVGhlIHBvaW50ZXIgdG8gd2hlcmUgdG8gcHV0IHRoZSBvYmplY3RzIGluIHRoZSBt ZW1wb29sIGNhY2hlLg0KPiArICogICBOVUxMLCB3aXRoIHJ0ZV9lcnJubyBzZXQgdG8gRUlOVkFM LCBpZiB0aGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZw0KPiArICogICBmb3IgdGhlIGNhY2hl LCBpLmUuIGV4Y2VlZHMgdGhlIGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gKyAqLw0KPiArc3Rh dGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZCAqKg0KPiArX19ydGVfbWVtcG9vbF9jYWNoZV96 Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiArCQlzdHJ1Y3Qg cnRlX21lbXBvb2wgKm1wLA0KPiArCQl1bnNpZ25lZCBpbnQgbikNCj4gK3sNCj4gKwl2b2lkICoq Y2FjaGVfb2JqczsNCj4gKw0KPiArCVJURV9BU1NFUlQoY2FjaGUgIT0gTlVMTCk7DQo+ICsJUlRF X0FTU0VSVChtcCAhPSBOVUxMKTsNCj4gKw0KPiArCWlmIChjYWNoZS0+bGVuICsgbiA8PSBjYWNo ZS0+Zmx1c2h0aHJlc2gpIHsNCj4gKwkJLyoNCj4gKwkJICogVGhlIG9iamVjdHMgY2FuIGJlIGFk ZGVkIHRvIHRoZSBjYWNoZSB3aXRob3V0IGNyb3NzaW5nDQo+IHRoZQ0KPiArCQkgKiBmbHVzaCB0 aHJlc2hvbGQuDQo+ICsJCSAqLw0KPiArCQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzW2NhY2hl LT5sZW5dOw0KPiArCQljYWNoZS0+bGVuICs9IG47DQo+ICsJfSBlbHNlIGlmIChsaWtlbHkobiA8 PSBjYWNoZS0+Zmx1c2h0aHJlc2gpKSB7DQo+ICsJCS8qDQo+ICsJCSAqIFRoZSByZXF1ZXN0IGl0 c2VsZiBmaXRzIGludG8gdGhlIGNhY2hlLg0KPiArCQkgKiBCdXQgZmlyc3QsIHRoZSBjYWNoZSBt dXN0IGJlIGZsdXNoZWQgdG8gdGhlIGJhY2tlbmQsIHNvDQo+ICsJCSAqIGFkZGluZyB0aGUgb2Jq ZWN0cyBkb2VzIG5vdCBjcm9zcyB0aGUgZmx1c2ggdGhyZXNob2xkLg0KPiArCQkgKi8NCj4gKwkJ Y2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1swXTsNCj4gKwkJcnRlX21lbXBvb2xfb3BzX2VucXVl dWVfYnVsayhtcCwgY2FjaGVfb2JqcywgY2FjaGUtDQo+ID5sZW4pOw0KPiArCQljYWNoZS0+bGVu ID0gbjsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBUaGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJp ZyBmb3IgdGhlIGNhY2hlLiAqLw0KPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ICsJCXJldHVy biBOVUxMOw0KPiArCX0NCj4gKw0KPiArCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hl LCBwdXRfYnVsaywgMSk7DQo+ICsJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1 dF9vYmpzLCBuKTsNCj4gKw0KPiArCXJldHVybiBjYWNoZV9vYmpzOw0KPiArfQ0KPiArDQo+ICsv KioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBFUklNRU5UQUw6IFRoaXMgQVBJIG1heSBj aGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJpb3INCj4gbm90aWNlLg0KPiArICoNCj4g KyAqIFplcm8tY29weSBwdXQgb2JqZWN0cyBpbiBhIG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRo ZSBzcGVjaWZpZWQNCj4gbWVtcG9vbC4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gY2FjaGUNCj4gKyAq ICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiArICogQHBhcmFtIG1wDQo+ICsg KiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gKyAqIEBwYXJhbSBuDQo+ICsgKiAgIFRo ZSBudW1iZXIgb2Ygb2JqZWN0cyB0byBiZSBwdXQgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHdoZXJlIHRvIHB1dCB0aGUgb2JqZWN0 cyBpbiB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gKyAqICAgTlVMTCBpZiB0aGUgcmVxdWVzdCBpdHNl bGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLCBpLmUuDQo+ICsgKiAgIGV4Y2VlZHMgdGhlIGNh Y2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gKyAqLw0KPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ICtz dGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkICoqDQo+ICtydGVfbWVtcG9vbF9jYWNoZV96 Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiArCQlzdHJ1Y3Qg cnRlX21lbXBvb2wgKm1wLA0KPiArCQl1bnNpZ25lZCBpbnQgbikNCj4gK3sNCj4gKwlSVEVfQVNT RVJUKGNhY2hlICE9IE5VTEwpOw0KPiArCVJURV9BU1NFUlQobXAgIT0gTlVMTCk7DQo+ICsNCj4g KwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsayhjYWNoZSwgbXAsIG4pOw0KPiAr CXJldHVybiBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKGNhY2hlLCBtcCwgbik7IH0N Cj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlz IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+IG5vdGljZS4N Cj4gKyAqDQo+ICsgKiBaZXJvLWNvcHkgdW4tcHV0IG9iamVjdHMgaW4gYSBtZW1wb29sIGNhY2hl Lg0KPiArICoNCj4gKyAqIEBwYXJhbSBjYWNoZQ0KPiArICogICBBIHBvaW50ZXIgdG8gdGhlIG1l bXBvb2wgY2FjaGUuDQo+ICsgKiBAcGFyYW0gbg0KPiArICogICBUaGUgbnVtYmVyIG9mIG9iamVj dHMgbm90IHB1dCBpbiB0aGUgbWVtcG9vbCBjYWNoZSBhZnRlciBjYWxsaW5nDQo+ICsgKiAgIHJ0 ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKCkuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KPiArcnRlX21lbXBvb2xf Y2FjaGVfemNfcHV0X3Jld2luZChzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiAr CQl1bnNpZ25lZCBpbnQgbikNCj4gK3sNCj4gKwlSVEVfQVNTRVJUKGNhY2hlICE9IE5VTEwpOw0K PiArCVJURV9BU1NFUlQobiA8PSBjYWNoZS0+bGVuKTsNCj4gKw0KPiArCXJ0ZV9tZW1wb29sX3Ry YWNlX2NhY2hlX3pjX3B1dF9yZXdpbmQoY2FjaGUsIG4pOw0KPiArDQo+ICsJY2FjaGUtPmxlbiAt PSBuOw0KPiArDQo+ICsJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9vYmpz LCAoaW50KS1uKTsgfQ0KPiArDQo+ICsvKioNCj4gKyAqIEB3YXJuaW5nDQo+ICsgKiBAYiBFWFBF UklNRU5UQUw6IFRoaXMgQVBJIG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQgcHJp b3INCj4gbm90aWNlLg0KPiArICoNCj4gKyAqIFplcm8tY29weSBnZXQgb2JqZWN0cyBmcm9tIGEg bWVtcG9vbCBjYWNoZSBiYWNrZWQgYnkgdGhlIHNwZWNpZmllZA0KPiBtZW1wb29sLg0KPiArICoN Cj4gKyAqIEBwYXJhbSBjYWNoZQ0KPiArICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBvb2wgY2Fj aGUuDQo+ICsgKiBAcGFyYW0gbXANCj4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sLg0K PiArICogQHBhcmFtIG4NCj4gKyAqICAgVGhlIG51bWJlciBvZiBvYmplY3RzIHRvIGJlIG1hZGUg YXZhaWxhYmxlIGZvciBleHRyYWN0aW9uIGZyb20gdGhlDQo+IG1lbXBvb2wgY2FjaGUuDQo+ICsg KiBAcmV0dXJuDQo+ICsgKiAgIFRoZSBwb2ludGVyIHRvIHRoZSBvYmplY3RzIGluIHRoZSBtZW1w b29sIGNhY2hlLg0KPiArICogICBOVUxMIG9uIGVycm9yOyBpLmUuIHRoZSBjYWNoZSArIHRoZSBw b29sIGRvZXMgbm90IGNvbnRhaW4gJ24nIG9iamVjdHMuDQo+ICsgKiAgIFdpdGggcnRlX2Vycm5v IHNldCB0byB0aGUgZXJyb3IgY29kZSBvZiB0aGUgbWVtcG9vbCBkZXF1ZXVlIGZ1bmN0aW9uLA0K PiArICogICBvciBFSU5WQUwgaWYgdGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRo ZSBjYWNoZSwgaS5lLg0KPiArICogICBleGNlZWRzIHRoZSBjYWNoZSBmbHVzaCB0aHJlc2hvbGQu DQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiArc3RhdGljIF9fcnRlX2Fsd2F5c19p bmxpbmUgdm9pZCAqDQo+ICtydGVfbWVtcG9vbF9jYWNoZV96Y19nZXRfYnVsayhzdHJ1Y3QgcnRl X21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0KPiAr CQl1bnNpZ25lZCBpbnQgbikNCj4gK3sNCj4gKwl1bnNpZ25lZCBpbnQgbGVuLCBzaXplOw0KPiAr DQo+ICsJUlRFX0FTU0VSVChjYWNoZSAhPSBOVUxMKTsNCj4gKwlSVEVfQVNTRVJUKG1wICE9IE5V TEwpOw0KPiArDQo+ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGsoY2FjaGUs IG1wLCBuKTsNCj4gKw0KPiArCWxlbiA9IGNhY2hlLT5sZW47DQo+ICsJc2l6ZSA9IGNhY2hlLT5z aXplOw0KPiArDQo+ICsJaWYgKG4gPD0gbGVuKSB7DQo+ICsJCS8qIFRoZSByZXF1ZXN0IGNhbiBi ZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2FjaGUgYXMgaXMuICovDQo+ICsJCWxlbiAtPSBuOw0KPiAr CX0gZWxzZSBpZiAobGlrZWx5KG4gPD0gc2l6ZSkpIHsNCj4gKwkJLyoNCj4gKwkJICogVGhlIHJl cXVlc3QgaXRzZWxmIGNhbiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2FjaGUuDQo+ICsJCSAqIEJ1 dCBmaXJzdCwgdGhlIGNhY2hlIG11c3QgYmUgZmlsbGVkIGZyb20gdGhlIGJhY2tlbmQ7DQo+ICsJ CSAqIGZldGNoIHNpemUgKyByZXF1ZXN0ZWQgLSBsZW4gb2JqZWN0cy4NCj4gKwkJICovDQo+ICsJ CWludCByZXQ7DQo+ICsNCj4gKwkJcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVfYnVsayht cCwgJmNhY2hlLQ0KPiA+b2Jqc1tsZW5dLCBzaXplICsgbiAtIGxlbik7DQo+ICsJCWlmICh1bmxp a2VseShyZXQgPCAwKSkgew0KPiArCQkJLyoNCj4gKwkJCSAqIFdlIGFyZSBidWZmZXIgY29uc3Ry YWluZWQuDQo+ICsJCQkgKiBEbyBub3QgZmlsbCB0aGUgY2FjaGUsIGp1c3Qgc2F0aXNmeSB0aGUg cmVxdWVzdC4NCj4gKwkJCSAqLw0KPiArCQkJcmV0ID0gcnRlX21lbXBvb2xfb3BzX2RlcXVldWVf YnVsayhtcCwNCj4gJmNhY2hlLT5vYmpzW2xlbl0sIG4gLSBsZW4pOw0KPiArCQkJaWYgKHVubGlr ZWx5KHJldCA8IDApKSB7DQo+ICsJCQkJLyogVW5hYmxlIHRvIHNhdGlzZnkgdGhlIHJlcXVlc3Qu ICovDQo+ICsNCj4gKwkJCQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwNCj4gZ2V0X2ZhaWxfYnVs aywgMSk7DQo+ICsJCQkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAsDQo+IGdldF9mYWlsX29ianMs IG4pOw0KPiArDQo+ICsJCQkJcnRlX2Vycm5vID0gLXJldDsNCj4gKwkJCQlyZXR1cm4gTlVMTDsN Cj4gKwkJCX0NCj4gKw0KPiArCQkJbGVuID0gMDsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCWxlbiA9 IHNpemU7DQo+ICsJCX0NCj4gKwl9IGVsc2Ugew0KPiArCQkvKiBUaGUgcmVxdWVzdCBpdHNlbGYg aXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLiAqLw0KPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ ICsJCXJldHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCWNhY2hlLT5sZW4gPSBsZW47DQo+ICsN Cj4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgZ2V0X3N1Y2Nlc3NfYnVsaywg MSk7DQo+ICsJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIGdldF9zdWNjZXNzX29i anMsIG4pOw0KPiArDQo+ICsJcmV0dXJuICZjYWNoZS0+b2Jqc1tsZW5dOw0KPiArfQ0KPiArDQo+ ICAvKioNCj4gICAqIEBpbnRlcm5hbCBQdXQgc2V2ZXJhbCBvYmplY3RzIGJhY2sgaW4gdGhlIG1l bXBvb2w7IHVzZWQgaW50ZXJuYWxseS4NCj4gICAqIEBwYXJhbSBtcA0KPiBAQCAtMTM2NCwzMiAr MTU1OCwyNSBAQCBydGVfbWVtcG9vbF9kb19nZW5lcmljX3B1dChzdHJ1Y3QNCj4gcnRlX21lbXBv b2wgKm1wLCB2b2lkICogY29uc3QgKm9ial90YWJsZSwgIHsNCj4gIAl2b2lkICoqY2FjaGVfb2Jq czsNCj4gDQo+IC0JLyogTm8gY2FjaGUgcHJvdmlkZWQgKi8NCj4gLQlpZiAodW5saWtlbHkoY2Fj aGUgPT0gTlVMTCkpDQo+IC0JCWdvdG8gZHJpdmVyX2VucXVldWU7DQo+ICsJLyogTm8gY2FjaGUg cHJvdmlkZWQ/ICovDQo+ICsJaWYgKHVubGlrZWx5KGNhY2hlID09IE5VTEwpKSB7DQo+ICsJCS8q IEluY3JlbWVudCBzdGF0cyBub3csIGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBzdWNjZWVkcy4N Cj4gKi8NCj4gKwkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9idWxrLCAxKTsNCj4gKwkJ UlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9vYmpzLCBuKTsNCj4gDQo+IC0JLyogaW5jcmVt ZW50IHN0YXQgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBhbHdheXMgc3VjY2VzcyAqLw0KPiAtCVJU RV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBwdXRfYnVsaywgMSk7DQo+IC0JUlRFX01F TVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9vYmpzLCBuKTsNCj4gKwkJZ290byBkcml2 ZXJfZW5xdWV1ZTsNCj4gKwl9DQo+IA0KPiAtCS8qIFRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28g YmlnIGZvciB0aGUgY2FjaGUgKi8NCj4gLQlpZiAodW5saWtlbHkobiA+IGNhY2hlLT5mbHVzaHRo cmVzaCkpDQo+IC0JCWdvdG8gZHJpdmVyX2VucXVldWVfc3RhdHNfaW5jcmVtZW50ZWQ7DQo+ICsJ LyogUHJlcGFyZSB0byBhZGQgdGhlIG9iamVjdHMgdG8gdGhlIGNhY2hlLiAqLw0KPiArCWNhY2hl X29ianMgPSBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKGNhY2hlLCBtcCwgbik7DQo+ IA0KPiAtCS8qDQo+IC0JICogVGhlIGNhY2hlIGZvbGxvd3MgdGhlIGZvbGxvd2luZyBhbGdvcml0 aG06DQo+IC0JICogICAxLiBJZiB0aGUgb2JqZWN0cyBjYW5ub3QgYmUgYWRkZWQgdG8gdGhlIGNh Y2hlIHdpdGhvdXQgY3Jvc3NpbmcNCj4gLQkgKiAgICAgIHRoZSBmbHVzaCB0aHJlc2hvbGQsIGZs dXNoIHRoZSBjYWNoZSB0byB0aGUgYmFja2VuZC4NCj4gLQkgKiAgIDIuIEFkZCB0aGUgb2JqZWN0 cyB0byB0aGUgY2FjaGUuDQo+IC0JICovDQo+ICsJLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRv byBiaWcgZm9yIHRoZSBjYWNoZT8gKi8NCj4gKwlpZiAodW5saWtlbHkoY2FjaGVfb2JqcyA9PSBO VUxMKSkgew0KPiArCQkvKiBJbmNyZW1lbnQgc3RhdHMgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBh bHdheXMgc3VjY2VlZHMuDQo+ICovDQo+ICsJCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNh Y2hlLCBwdXRfYnVsaywgMSk7DQo+ICsJCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hl LCBwdXRfb2Jqcywgbik7DQo+IA0KPiAtCWlmIChjYWNoZS0+bGVuICsgbiA8PSBjYWNoZS0+Zmx1 c2h0aHJlc2gpIHsNCj4gLQkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+bGVuXTsN Cj4gLQkJY2FjaGUtPmxlbiArPSBuOw0KPiAtCX0gZWxzZSB7DQo+IC0JCWNhY2hlX29ianMgPSAm Y2FjaGUtPm9ianNbMF07DQo+IC0JCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAsIGNh Y2hlX29ianMsIGNhY2hlLQ0KPiA+bGVuKTsNCj4gLQkJY2FjaGUtPmxlbiA9IG47DQo+ICsJCWdv dG8gZHJpdmVyX2VucXVldWU7DQo+ICAJfQ0KPiANCj4gIAkvKiBBZGQgdGhlIG9iamVjdHMgdG8g dGhlIGNhY2hlLiAqLw0KPiBAQCAtMTM5OSwxMyArMTU4Niw3IEBAIHJ0ZV9tZW1wb29sX2RvX2dl bmVyaWNfcHV0KHN0cnVjdA0KPiBydGVfbWVtcG9vbCAqbXAsIHZvaWQgKiBjb25zdCAqb2JqX3Rh YmxlLA0KPiANCj4gIGRyaXZlcl9lbnF1ZXVlOg0KPiANCj4gLQkvKiBpbmNyZW1lbnQgc3RhdCBu b3csIGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBzdWNjZXNzICovDQo+IC0JUlRFX01FTVBPT0xf U1RBVF9BREQobXAsIHB1dF9idWxrLCAxKTsNCj4gLQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwg cHV0X29ianMsIG4pOw0KPiAtDQo+IC1kcml2ZXJfZW5xdWV1ZV9zdGF0c19pbmNyZW1lbnRlZDoN Cj4gLQ0KPiAtCS8qIHB1c2ggb2JqZWN0cyB0byB0aGUgYmFja2VuZCAqLw0KPiArCS8qIFB1c2gg dGhlIG9iamVjdHMgdG8gdGhlIGJhY2tlbmQuICovDQo+ICAJcnRlX21lbXBvb2xfb3BzX2VucXVl dWVfYnVsayhtcCwgb2JqX3RhYmxlLCBuKTsgIH0NCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvbWVt cG9vbC9ydGVfbWVtcG9vbF90cmFjZV9mcC5oDQo+IGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2xf dHJhY2VfZnAuaA0KPiBpbmRleCBlZDA2MGU4ODdjLi4xNDY2NjQ1N2Y3IDEwMDY0NA0KPiAtLS0g YS9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbF90cmFjZV9mcC5oDQo+ICsrKyBiL2xpYi9tZW1wb29s L3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gQEAgLTEwOSw2ICsxMDksMjkgQEAgUlRFX1RSQUNF X1BPSU5UX0ZQKA0KPiAgCXJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihtZW1wb29sKTsNCj4gICkN Cj4gDQo+ICtSVEVfVFJBQ0VfUE9JTlRfRlAoDQo+ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVf emNfcHV0X2J1bGssDQo+ICsJUlRFX1RSQUNFX1BPSU5UX0FSR1Modm9pZCAqY2FjaGUsIHZvaWQg Km1lbXBvb2wsIHVpbnQzMl90DQo+IG5iX29ianMpLA0KPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0 X3B0cihjYWNoZSk7DQo+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiAr CXJ0ZV90cmFjZV9wb2ludF9lbWl0X3UzMihuYl9vYmpzKTsNCj4gKykNCj4gKw0KPiArUlRFX1RS QUNFX1BPSU5UX0ZQKA0KPiArCXJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9yZXdpbmQs DQo+ICsJUlRFX1RSQUNFX1BPSU5UX0FSR1Modm9pZCAqY2FjaGUsIHVpbnQzMl90IG5iX29ianMp LA0KPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihjYWNoZSk7DQo+ICsJcnRlX3RyYWNlX3Bv aW50X2VtaXRfdTMyKG5iX29ianMpOw0KPiArKQ0KPiArDQo+ICtSVEVfVFJBQ0VfUE9JTlRfRlAo DQo+ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGssDQo+ICsJUlRFX1RSQUNF X1BPSU5UX0FSR1Modm9pZCAqY2FjaGUsIHZvaWQgKm1lbXBvb2wsIHVpbnQzMl90DQo+IG5iX29i anMpLA0KPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihjYWNoZSk7DQo+ICsJcnRlX3RyYWNl X3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0X3UzMihu Yl9vYmpzKTsNCj4gKykNCj4gKw0KPiAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICB9DQo+ICAjZW5k aWYNCj4gZGlmZiAtLWdpdCBhL2xpYi9tZW1wb29sL3ZlcnNpb24ubWFwIGIvbGliL21lbXBvb2wv dmVyc2lvbi5tYXAgaW5kZXgNCj4gYjY3ZDdhYWNlNy4uMTM4M2FlNmRiMiAxMDA2NDQNCj4gLS0t IGEvbGliL21lbXBvb2wvdmVyc2lvbi5tYXANCj4gKysrIGIvbGliL21lbXBvb2wvdmVyc2lvbi5t YXANCj4gQEAgLTYzLDYgKzYzLDExIEBAIEVYUEVSSU1FTlRBTCB7DQo+ICAJX19ydGVfbWVtcG9v bF90cmFjZV9vcHNfYWxsb2M7DQo+ICAJX19ydGVfbWVtcG9vbF90cmFjZV9vcHNfZnJlZTsNCj4g IAlfX3J0ZV9tZW1wb29sX3RyYWNlX3NldF9vcHNfYnluYW1lOw0KPiArDQo+ICsJIyBhZGRlZCBp biAyMy4wMw0KPiArCV9fcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X2J1bGs7DQo+ICsJ X19ydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5kOw0KPiArCV9fcnRlX21lbXBv b2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGs7DQo+ICB9Ow0KPiANCj4gIElOVEVSTkFMIHsNCj4g LS0NCj4gMi4xNy4xDQoNCg==