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 4C0E0A0C41; Wed, 15 Sep 2021 13:35:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 365B84014F; Wed, 15 Sep 2021 13:35:28 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 7352B4003C for ; Wed, 15 Sep 2021 13:35:25 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10107"; a="209383554" X-IronPort-AV: E=Sophos;i="5.85,295,1624345200"; d="scan'208";a="209383554" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Sep 2021 04:35:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,295,1624345200"; d="scan'208";a="700163593" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga005.fm.intel.com with ESMTP; 15 Sep 2021 04:35:24 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 15 Sep 2021 04:35:23 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 15 Sep 2021 04:35:23 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 15 Sep 2021 04:35:23 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.174) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 15 Sep 2021 04:35:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gc9QetyHGXdwHtKTqxSSGwNIE2eSPXxNfufNWX71zJ1B2LqtKutWarbEkfWieOQ75/9LAeBkHhecbB9bZ1SNd/oPCJQLkEsjTS8svsFIm+QxgxbzDj0BQa743L8RAO59387eR6qMy01B02rtvNL5KRnTBRJF9SYgfkrJ0EpGl+MT6/VEn7F7C40RQG5uv38eMMEOdtCkhBtqA+HuWPMxmkQ7O9vraHt6QfsfuEoS56o1amNiIsk6veZyeSux0Fe6Y5na1JIYFmUpmHQo6NyBEuK0SKEoLuOv0HblxSwZSiWSb3JHGI0NBCleumlFQ0pwCwXnYDRDHAZzqi07Lfj/IA== 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; bh=QuAp0gqRxH8zmhdJetCBfZmfgyxh5c77nWa6Xt/+GhU=; b=aSwQEamFrZImVMusvAMRt0hgYrzg30Rj7o3mUPe9ppDVGz1IO6cHWfvb07CeEb8vatlQwqYOW5HyblOYuHZeZJ4WFh9JPd4vt5a72Iry2qSzOcRWw8K2mK1rlk4a2AzmUOW1OTcURe+Lr9wTEgAQBqEpl33rWn7MLBbkvgrFxnRZNaizCmYDHneTxHWq/SIZSkIktdC3PMRSX1+knHX3KFZ0sJeiM5hkT9HKvM8lfVowk0FreFGHdEIAk6h4khTJPYBHSzG4MuDc6vfCL7ZMlQwP3tSi9mVs6BQDTWrko4Nrt2kOswzRJFiLehvOYbjmNX4lRIMR/EEQ3NkJL7siDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QuAp0gqRxH8zmhdJetCBfZmfgyxh5c77nWa6Xt/+GhU=; b=rT8CdflrJYEcEW+ETozwz7Imv50yY3h2nqRrAq2mXsvIqjkfbS9e5QUjYzE/tWQzB0ngHQzoOmmgjThnE75X4/KlIwXEf4fGTCZjTkWweu2Bk5Hvjl90ku2KmtjUxRwO/241WuJ4zP68VG7C5HnKWggsIB5fhFalW3WSaPkVRpA= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB3856.namprd11.prod.outlook.com (2603:10b6:208:ef::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Wed, 15 Sep 2021 11:35:20 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::6873:dced:7f68:801]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::6873:dced:7f68:801%3]) with mapi id 15.20.4523.015; Wed, 15 Sep 2021 11:35:20 +0000 From: "Xia, Chenbo" To: "Wang, YuanX" , "Ma, WenwuX" , "dev@dpdk.org" , "maxime.coquelin@redhat.com" CC: "Jiang, Cheng1" , "Hu, Jiayu" , "Pai G, Sunil" , "Yang, YvonneX" , "Wang, Yinan" Thread-Topic: [PATCH 1/4] vhost: support async dequeue for split ring Thread-Index: AQHXov0RnNlDYOps6UWnqZbvj7ZRUauhh5mAgANVHoCAACAg4A== Date: Wed, 15 Sep 2021 11:35:20 +0000 Message-ID: References: <20210906204837.112466-1-wenwux.ma@intel.com> <20210906204837.112466-2-wenwux.ma@intel.com> In-Reply-To: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 762a9438-5318-4d1d-568a-08d9783ce625 x-ms-traffictypediagnostic: MN2PR11MB3856: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BRkPyMXUEspmRXbi4qa81tN1ABgrCUJwthSSuJPjhA+0jeAoyUMsMAcmcq8DgYyZ5HevcxfH8yvY6OwVntZbRWjhbV/w0DBfo5eJ8ibutlQRYE3fplMPyike5/v8zWzWIpS3DI7Wqtygtgr21IxkVDuMutu271Wit+7XJMlkaDZ6f0C3FEaNjIIpdunaAjd0ZklaR0L2EUveeU0orDYRPUYKxvJwFw3uXmV0VKlY3tcTdZMq7FAcKClZNLTLkiOQUythpd9qiHdEdSfSv8JzuMqnAKxpn9W0DBfWTe4ZNaOtARjyD1Q3O96w9CHMWg6Tu4nC038wvuxnEPua1bQ4zA+iabuhkwcOB11ThQM5ROmzIflM24e1PzSJcbYSF3CZILlFvDiIQc80aXB4KZbMTLBlg7PBSCxxTcNimcFNugCMNvzVbRgtXXcw1jYhjgqOrx0GwrRK9GuD429aTL22IPqE4l7tGcH/ZMJVGxR4YxIWNZFdq6kEW+16J8DkNeuE4jrx/s5SaNocdwe/tjxkxELTe50ZO0c2fTvh2gQIIp6yfCF6jLPpE7A4QYNxKRUT+7XHSPaxuma4nqOQ5X0DrR+jcw+e8Nzh2OUMzjcqT4uelAiY2d9lg8NbD1YsPSh1IL2GrIgKI7ek3TGfd0lEoe4Q+4urOroGpF+Vf7I0aN85ICSo7wJtbB//W+43VTTK2z6l1+ZjdCQYyD2aOn55iQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(136003)(346002)(396003)(366004)(30864003)(64756008)(66446008)(66946007)(66556008)(2906002)(71200400001)(83380400001)(76116006)(66476007)(6506007)(8936002)(38100700002)(53546011)(7696005)(26005)(8676002)(33656002)(186003)(54906003)(110136005)(316002)(9686003)(122000001)(55016002)(86362001)(5660300002)(38070700005)(107886003)(478600001)(52536014)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bUpHMHZObnJzd3V5K3NMZVk2TVJoVk1CTUs1cERFdXR2YUo3YlpTWDJCeU9a?= =?utf-8?B?MGM1WjFMNFFaYzFUaDJSL0dqdjZ1cEd0dTczZmJ4eUFyaXBwREIyRlM4bktl?= =?utf-8?B?Mk5VNzAyYjhZRzgxUlI2VkVKM0l3dVMxSjh0TkJOSVgzc0FSbjhEa1JoMWFB?= =?utf-8?B?R0ZKNTlMOVllYk5qUFgzMGlwZmN1TUZWcXpsNk5yN0h2RStLYzIwc3B1amx3?= =?utf-8?B?MU8vdmIvenRhNVBlU2toQ3lrOTFTWkFHVmJTUFZYQjJlSjd4M01IczI2KzUr?= =?utf-8?B?VnNCMDFWL3VzcWdQRkVZMGlFQU1ZUDlsbk9adFptNDNKSzBTelQ0djZBM0tk?= =?utf-8?B?Q0VzNVFBek9TZVhPSnN3VFh1aUpvR25VRHhJckM3VEE1cG9SaVlld3I5SFJ5?= =?utf-8?B?L0hWV1lYdFVpUlFRVmJFV0Ivclg5aTV4NUFBdkdESytMVXhhWFdzdEtTeEc4?= =?utf-8?B?ZkRjN2tqKytDS20yQUNDcHk1QWhZdC9vbXFVNVlqSjRpR0tJdDZTemptcWxv?= =?utf-8?B?RE9QOUg4YkJJdjF6dE1NWTEvc2RjaWxHNG9PV0thbWM2MU1PclBMbzljTHpC?= =?utf-8?B?UzBLSCt3UWhwYVlVak9ZNXB3amNSQlppeFFxSFFuQUlaczYxWkJaNjFTYTRW?= =?utf-8?B?bnlDTUdkOGs4bDErVWZBYldEV1NXeW56R1JnTzlmcUlJd3FVZ2ExRG9PdVdS?= =?utf-8?B?WFRSMzRHWUZ6N2NqdEtKZHE4MkpjSnZadXVKbjM5TjlOQVdXclFRVUozSzJi?= =?utf-8?B?VDRsN3RpeVU5ajJITllBOHVGWjVQZFQvWVF5ZkI0QkV1NlErQTNXMDBkc0Fp?= =?utf-8?B?SDB0aXNmT3R2NWxuZHpHV3NneGF2M1o1THV5VUxzRUpneE5KRXFHNVBXM2po?= =?utf-8?B?WFA0SnJOUHhSQS9TVSs3U2xMbG1nbFR4NFM4by9tQXJhTVRFSCtmWWM1SzNj?= =?utf-8?B?R3REbExzTmhSQzh0bGx2NnFqVUI5YXRvRlFuYTZkYUdyMERiNlBudEhXM3Ex?= =?utf-8?B?ekp3OXdsUWk3WFhYRnd2cDQ0Y2RUZlZRUG9GdTVKZGs3OTFJZGo2bmY4ZEVM?= =?utf-8?B?Q2ZRbjNtMUoxcVdlcVoxR2I5cE1nbnpPdG9jdTh0QnR1SEdjRXBidFRRTW1G?= =?utf-8?B?RnE3bTYxclFMM09FVm9yR3BMbHJvbDY1bU1YTUwvVFAzNU9iVFFaMDlRTVUy?= =?utf-8?B?akU2MzlmeHA2TDlMa0VwUmpESVNRK25yLzMyeEMwQ2gybWdYMTd2cG9jd0cr?= =?utf-8?B?Wi9kY2F2TkN5V3draDB1d2duT2FTVmJ4b2lCUVZ5TGk3VnN5NE53UklTQUNk?= =?utf-8?B?eFhBcWxIUjZVeXR4dDFHQ3NCMStyeUpVc2wva1VTZ0VOZ1VHejNpM2JaV2V5?= =?utf-8?B?dHFjVHhrNDI4SjREVjFMWnhZbHg0YUkvaGFhWnpnR0Y0akFvb1NrQ3pqM0p5?= =?utf-8?B?bi9sYU4zNE5mMHgwQW1Yc2FmS1VpbXZaR1h0anp4WHhBbzA2Q3czbzlXODdy?= =?utf-8?B?N04zdUNQNUJkV2FyREZNMjYvVWVPUG10Q2RQOUVWVElCYXg5UWl6dWIwam84?= =?utf-8?B?WmRvdkNvak9PSUtMOUNVTlBtbDBOOVRTNjhlK0dpTWdQWVpZUk9TTFNMY240?= =?utf-8?B?T1E1Vy9jNmVRT0hJeGd1NXJrWkNBejNoY05GSU00bEtSWm8wN0k3Z0tDNFFF?= =?utf-8?B?UWUvbE5CM0cwdFMrTHBGaVY3K1pFUXFIODF1L3NablRkTjVWVGZvWmcvelcx?= =?utf-8?Q?NKw1jNGU2U3rTnEsUX1FdzDcpZdqRQ1zxDzvpsZ?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR11MB4063.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 762a9438-5318-4d1d-568a-08d9783ce625 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Sep 2021 11:35:20.1355 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: e0/Fjj0DJ2CWeELJbFTn79R2x4nawcL2CrnMdiYAjGbxCO31mLDwABiA+ouCcWPpngOHGkj6zoux7gsyclbN2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3856 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH 1/4] vhost: support async dequeue for split ring X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgTWF4aW1lICYgWXVhbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBXYW5nLCBZdWFuWCA8eXVhbngud2FuZ0BpbnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg U2VwdGVtYmVyIDE1LCAyMDIxIDU6MDkgUE0NCj4gVG86IFhpYSwgQ2hlbmJvIDxjaGVuYm8ueGlh QGludGVsLmNvbT47IE1hLCBXZW53dVggPHdlbnd1eC5tYUBpbnRlbC5jb20+Ow0KPiBkZXZAZHBk ay5vcmcNCj4gQ2M6IG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tOyBKaWFuZywgQ2hlbmcxIDxj aGVuZzEuamlhbmdAaW50ZWwuY29tPjsgSHUsDQo+IEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+ OyBQYWkgRywgU3VuaWwgPHN1bmlsLnBhaS5nQGludGVsLmNvbT47IFlhbmcsDQo+IFl2b25uZVgg PHl2b25uZXgueWFuZ0BpbnRlbC5jb20+OyBXYW5nLCBZaW5hbiA8eWluYW4ud2FuZ0BpbnRlbC5j b20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggMS80XSB2aG9zdDogc3VwcG9ydCBhc3luYyBkZXF1 ZXVlIGZvciBzcGxpdCByaW5nDQo+IA0KPiBIaSBDaGVuYm8sDQo+IA0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogWGlhLCBDaGVuYm8gPGNoZW5iby54aWFAaW50ZWwu Y29tPg0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDE1LCAyMDIxIDEwOjUyIEFNDQo+ ID4gVG86IE1hLCBXZW53dVggPHdlbnd1eC5tYUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4g PiBDYzogbWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb207IEppYW5nLCBDaGVuZzEgPGNoZW5nMS5q aWFuZ0BpbnRlbC5jb20+Ow0KPiA+IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPjsgUGFp IEcsIFN1bmlsIDxzdW5pbC5wYWkuZ0BpbnRlbC5jb20+OyBZYW5nLA0KPiA+IFl2b25uZVggPHl2 b25uZXgueWFuZ0BpbnRlbC5jb20+OyBXYW5nLCBZdWFuWA0KPiA+IDx5dWFueC53YW5nQGludGVs LmNvbT47IFdhbmcsIFlpbmFuIDx5aW5hbi53YW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBS RTogW1BBVENIIDEvNF0gdmhvc3Q6IHN1cHBvcnQgYXN5bmMgZGVxdWV1ZSBmb3Igc3BsaXQgcmlu Zw0KPiA+DQo+ID4gSGksDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gPiBGcm9tOiBNYSwgV2Vud3VYIDx3ZW53dXgubWFAaW50ZWwuY29tPg0KPiA+ID4gU2VudDog VHVlc2RheSwgU2VwdGVtYmVyIDcsIDIwMjEgNDo0OSBBTQ0KPiA+ID4gVG86IGRldkBkcGRrLm9y Zw0KPiA+ID4gQ2M6IG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tOyBYaWEsIENoZW5ibyA8Y2hl bmJvLnhpYUBpbnRlbC5jb20+Ow0KPiA+ID4gSmlhbmcsDQo+ID4gPiBDaGVuZzEgPGNoZW5nMS5q aWFuZ0BpbnRlbC5jb20+OyBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IFBhaQ0KPiA+ ID4gRywgU3VuaWwgPHN1bmlsLnBhaS5nQGludGVsLmNvbT47IFlhbmcsIFl2b25uZVgNCj4gPiA+ IDx5dm9ubmV4LnlhbmdAaW50ZWwuY29tPjsgV2FuZywgWXVhblggPHl1YW54LndhbmdAaW50ZWwu Y29tPjsgTWEsDQo+ID4gPiBXZW53dVggPHdlbnd1eC5tYUBpbnRlbC5jb20+OyBXYW5nLCBZaW5h biA8eWluYW4ud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggMS80XSB2aG9z dDogc3VwcG9ydCBhc3luYyBkZXF1ZXVlIGZvciBzcGxpdCByaW5nDQo+ID4gPg0KPiA+ID4gRnJv bTogWXVhbiBXYW5nIDx5dWFueC53YW5nQGludGVsLmNvbT4NCj4gPiA+DQo+ID4gPiBUaGlzIHBh dGNoIGltcGxlbWVudHMgYXN5bmNocm9ub3VzIGRlcXVldWUgZGF0YSBwYXRoIGZvciBzcGxpdCBy aW5nLg0KPiA+ID4gQSBuZXcgYXN5bmNocm9ub3VzIGRlcXVldWUgZnVuY3Rpb24gaXMgaW50cm9k dWNlZC4gV2l0aCB0aGlzIGZ1bmN0aW9uLA0KPiA+ID4gdGhlIGFwcGxpY2F0aW9uIGNhbiB0cnkg dG8gcmVjZWl2ZSBwYWNrZXRzIGZyb20gdGhlIGd1ZXN0IHdpdGgNCj4gPiA+IG9mZmxvYWRpbmcg Y29waWVzIHRvIHRoZSBhc3luYyBjaGFubmVsLCB0aHVzIHNhdmluZyBwcmVjaW91cyBDUFUNCj4g PiA+IGN5Y2xlcy4NCj4gPiA+DQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBZdWFuIFdhbmcgPHl1YW54 LndhbmdAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogSmlheXUgSHUgPGppYXl1Lmh1 QGludGVsLmNvbT4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFdlbnd1IE1hIDx3ZW53dXgubWFAaW50 ZWwuY29tPg0KPiA+ID4gVGVzdGVkLWJ5OiBZaW5hbiBXYW5nIDx5aW5hbi53YW5nQGludGVsLmNv bT4NCj4gPiA+IC0tLQ0KPiA+ID4gIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0 IHwgICA5ICsNCj4gPiA+ICBsaWIvdmhvc3QvcnRlX3Zob3N0X2FzeW5jLmggICAgICAgICB8ICAz NiArLQ0KPiA+ID4gIGxpYi92aG9zdC92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgIHwgICAzICsN Cj4gPiA+ICBsaWIvdmhvc3Qvdmhvc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMyArLQ0KPiA+ ID4gIGxpYi92aG9zdC92aXJ0aW9fbmV0LmMgICAgICAgICAgICAgIHwgNTMxICsrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDU3OSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVz L3Byb2dfZ3VpZGUvdmhvc3RfbGliLnJzdA0KPiA+ID4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv dmhvc3RfbGliLnJzdA0KPiA+ID4gaW5kZXggMTcxZTAwOTZmNi4uOWVkNTQ0ZGI3YSAxMDA2NDQN Cj4gPiA+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS92aG9zdF9saWIucnN0DQo+ID4gPiAr KysgYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvdmhvc3RfbGliLnJzdA0KPiA+ID4gQEAgLTMwMyw2 ICszMDMsMTUgQEAgVGhlIGZvbGxvd2luZyBpcyBhbiBvdmVydmlldyBvZiBzb21lIGtleSBWaG9z dA0KPiA+ID4gQVBJDQo+ID4gPiBmdW5jdGlvbnM6DQo+ID4gPiAgICBDbGVhciBpbmZsaWdodCBw YWNrZXRzIHdoaWNoIGFyZSBzdWJtaXR0ZWQgdG8gRE1BIGVuZ2luZSBpbiB2aG9zdA0KPiA+ID4g YXN5bmMgZGF0YQ0KPiA+ID4gICAgcGF0aC4gQ29tcGxldGVkIHBhY2tldHMgYXJlIHJldHVybmVk IHRvIGFwcGxpY2F0aW9ucyB0aHJvdWdoIGBgcGt0c2BgLg0KPiA+ID4NCj4gPiA+ICsqIGBgcnRl X3Zob3N0X2FzeW5jX3RyeV9kZXF1ZXVlX2J1cnN0KHZpZCwgcXVldWVfaWQsIG1idWZfcG9vbCwg cGt0cywNCj4gPiA+ICtjb3VudCwNCj4gPiA+IG5yX2luZmxpZ2h0KWBgDQo+ID4gPiArDQo+ID4g PiArICBUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIHJlY2VpdmUgcGFja2V0cyBmcm9tIHRoZSBndWVz dCB3aXRoDQo+ID4gPiArIG9mZmxvYWRpbmcgIGNvcGllcyB0byB0aGUgYXN5bmMgY2hhbm5lbC4g VGhlIHBhY2tldHMgdGhhdCBhcmUNCj4gPiA+ICsgdHJhbnNmZXIgY29tcGxldGVkICBhcmUgcmV0 dXJuZWQgaW4gYGBwa3RzYGAuIFRoZSBvdGhlciBwYWNrZXRzIHRoYXQNCj4gPiA+ICsgdGhlaXIg Y29waWVzIGFyZSBzdWJtaXR0ZWQgIHRvIHRoZSBhc3luYyBjaGFubmVsIGJ1dCBub3QgY29tcGxl dGVkIGFyZQ0KPiA+IGNhbGxlZCAiaW4tZmxpZ2h0IHBhY2tldHMiLg0KPiA+ID4gKyAgVGhpcyBm dW5jdGlvbiB3aWxsIG5vdCByZXR1cm4gaW4tZmxpZ2h0IHBhY2tldHMgdW50aWwgdGhlaXIgY29w aWVzDQo+ID4gPiArIGFyZSAgY29tcGxldGVkIGJ5IHRoZSBhc3luYyBjaGFubmVsLg0KPiA+ID4g Kw0KPiA+ID4gIFZob3N0LXVzZXIgSW1wbGVtZW50YXRpb25zDQo+ID4gPiAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGliL3Zob3N0L3J0ZV92 aG9zdF9hc3luYy5oIGIvbGliL3Zob3N0L3J0ZV92aG9zdF9hc3luYy5oDQo+ID4gPiBpbmRleCBh ZDcxNTU1YTdmLi41ZTI0MjlhYjcwIDEwMDY0NA0KPiA+ID4gLS0tIGEvbGliL3Zob3N0L3J0ZV92 aG9zdF9hc3luYy5oDQo+ID4gPiArKysgYi9saWIvdmhvc3QvcnRlX3Zob3N0X2FzeW5jLmgNCj4g PiA+IEBAIC04MywxMiArODMsMTggQEAgc3RydWN0IHJ0ZV92aG9zdF9hc3luY19jaGFubmVsX29w cyB7DQo+ID4gPiAgCQl1aW50MTZfdCBtYXhfcGFja2V0cyk7DQo+ID4gPiAgfTsNCj4gPiA+DQo+ ID4gPiArc3RydWN0IGFzeW5jX25ldGhkciB7DQo+ID4gPiArCXN0cnVjdCB2aXJ0aW9fbmV0X2hk ciBoZHI7DQo+ID4gPiArCWJvb2wgdmFsaWQ7DQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPg0KPiA+ IEFzIGEgc3RydWN0IGV4cG9zZWQgaW4gcHVibGljIGhlYWRlcnMsIGl0J3MgYmV0dGVyIHRvIHBy ZWZpeCBpdCB3aXRoIHJ0ZV8uDQo+ID4gSW4gdGhpcyBjYXNlIEkgd291bGQgcHJlZmVyIHJ0ZV9h c3luY19uZXRfaGRyLg0KPiA+DQo+ID4gPiAgLyoqDQo+ID4gPiAtICogaW5mbGlnaHQgYXN5bmMg cGFja2V0IGluZm9ybWF0aW9uDQo+ID4gPiArICogaW4tZmxpZ2h0IGFzeW5jIHBhY2tldCBpbmZv cm1hdGlvbg0KPiA+ID4gICAqLw0KPiA+ID4gIHN0cnVjdCBhc3luY19pbmZsaWdodF9pbmZvIHsN Cj4gPg0KPiA+IENvdWxkIHlvdSBoZWxwIHRvIHJlbmFtZSBpdCB0b28/IExpa2UgcnRlX2FzeW5j X2luZmxpZ2h0X2luZm8uDQo+IA0KPiBZb3UgYXJlIHJpZ2h0LCB0aGVzZSB0d28gc3RydWN0cyBh cmUgZm9yIGludGVybmFsIHVzZSBhbmQgbm90IHN1aXRhYmxlIGZvcg0KPiBleHBvc3VyZSBpbiB0 aGUgcHVibGljIGhlYWRlciwNCj4gYnV0IHRoZXkgYXJlIHVzZWQgZm9yIGFzeW5jIGNoYW5uZWws IEkgdGhpbmsgaXQncyBub3Qgc3VpdGFibGUgdG8gYmUgcGxhY2VkIGluDQo+IG90aGVyIGhlYWRl cnMuDQo+IENvdWxkIHlvdSBnaXZlIHNvbWUgYWR2aWNlIG9uIHdoaWNoIGZpbGUgdG8gcHV0IHRo ZW0gaW4/DQoNCkBNYXhpbWUsIFdoYXQgZG8geW91IHRoaW5rIG9mIHRoaXM/IEkgdGhpbmsgZWl0 aGVyIGNoYW5naW5nIGl0L3JlbmFtaW5nIGl0L21vdmluZyBpdA0KaXMgQUJJIGJyZWFrYWdlLiBC dXQgc2luY2UgaXQncyBuZXZlciB1c2VkIGJ5IGFueSBBUFAsIEkgZ3Vlc3MgaXQncyBub3QgYmln IHByb2JsZW0uDQpTbyB3aGF0IGRvIHlvdSB0aGluayB3ZSBzaG91bGQgZG8gd2l0aCB0aGUgc3Ry dWN0PyBJIHdpbGwgdm90ZSBmb3IgbW92ZSBpdCB0ZW1wb3JhcmlseQ0KdG8gaGVhZGVyIGxpa2Ug dmhvc3QuaC4gQXQgc29tZSBwb2ludCwgd2UgY2FuIGNyZWF0ZSBhIG5ldyBpbnRlcm5hbCBhc3lu YyBoZWFkZXIgZm9yDQpzdHJ1Y3RzIGxpa2UgdGhpcy4gT3IgY3JlYXRlIGl0IG5vdz8NCg0KQFl1 YW4sIEkgdGhpbmsgYWdhaW4gb2YgdGhlIHN0cnVjdCBhc3luY19uZXRoZHIsIGRvIHdlIHJlYWxs eSBuZWVkIHRvIGRlZmluZSB0aGlzPw0KQXMgZm9yIG5vdywgaGVhZGVyIGJlaW5nIGludmFsaWQg b25seSBoYXBwZW5zIHdoZW4gdmlydGlvX25ldF93aXRoX2hvc3Rfb2ZmbG9hZChkZXYpDQppcyBm YWxzZSwgcmlnaHQ/IFNvIHdoeSBub3QgdXNlIHRoaXMgdG8ga25vdyBoZHIgaW52YWxpZCBvciBu b3Qgd2hlbiB5b3UgbmVlZCB0byBjaGVjaz8NCg0KVGhhbmtzLA0KQ2hlbmJvDQoNCj4gDQo+ID4N Cj4gPiA+ICAJc3RydWN0IHJ0ZV9tYnVmICptYnVmOw0KPiA+ID4gLQl1aW50MTZfdCBkZXNjczsg LyogbnVtIG9mIGRlc2NzIGluZmxpZ2h0ICovDQo+ID4gPiArCXN0cnVjdCBhc3luY19uZXRoZHIg bmV0aGRyOw0KPiA+ID4gKwl1aW50MTZfdCBkZXNjczsgLyogbnVtIG9mIGRlc2NzIGluLWZsaWdo dCAqLw0KPiA+ID4gIAl1aW50MTZfdCBucl9idWZmZXJzOyAvKiBudW0gb2YgYnVmZmVycyBpbmZs aWdodCBmb3IgcGFja2VkIHJpbmcgKi8NCj4gPiA+IH07DQo+ID4gPg0KPiA+ID4gQEAgLTI1NSw1 ICsyNjEsMzEgQEAgaW50IHJ0ZV92aG9zdF9hc3luY19nZXRfaW5mbGlnaHQoaW50IHZpZCwNCj4g PiA+IHVpbnQxNl90IHF1ZXVlX2lkKTsgIF9fcnRlX2V4cGVyaW1lbnRhbCAgdWludDE2X3QNCj4g PiA+IHJ0ZV92aG9zdF9jbGVhcl9xdWV1ZV90aHJlYWRfdW5zYWZlKGludCB2aWQsIHVpbnQxNl90 IHF1ZXVlX2lkLA0KPiA+ID4gIAkJc3RydWN0IHJ0ZV9tYnVmICoqcGt0cywgdWludDE2X3QgY291 bnQpOw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIFRoaXMgZnVuY3Rpb24gdHJpZXMgdG8gcmVjZWl2 ZSBwYWNrZXRzIGZyb20gdGhlIGd1ZXN0IHdpdGgNCj4gPiA+ICtvZmZsb2FkaW5nDQo+ID4gPiAr ICogY29waWVzIHRvIHRoZSBhc3luYyBjaGFubmVsLiBUaGUgcGFja2V0cyB0aGF0IGFyZSB0cmFu c2Zlcg0KPiA+ID4gK2NvbXBsZXRlZA0KPiA+ID4gKyAqIGFyZSByZXR1cm5lZCBpbiAicGt0cyIu IFRoZSBvdGhlciBwYWNrZXRzIHRoYXQgdGhlaXIgY29waWVzIGFyZQ0KPiA+ID4gK3N1Ym1pdHRl ZA0KPiA+ID4gdG8NCj4gPiA+ICsgKiB0aGUgYXN5bmMgY2hhbm5lbCBidXQgbm90IGNvbXBsZXRl ZCBhcmUgY2FsbGVkICJpbi1mbGlnaHQgcGFja2V0cyIuDQo+ID4gPiArICogVGhpcyBmdW5jdGlv biB3aWxsIG5vdCByZXR1cm4gaW4tZmxpZ2h0IHBhY2tldHMgdW50aWwgdGhlaXIgY29waWVzDQo+ ID4gPiArIGFyZQ0KPiA+ID4gKyAqIGNvbXBsZXRlZCBieSB0aGUgYXN5bmMgY2hhbm5lbC4NCj4g PiA+ICsgKg0KPiA+ID4gKyAqIEBwYXJhbSB2aWQNCj4gPiA+ICsgKiAgaWQgb2Ygdmhvc3QgZGV2 aWNlIHRvIGRlcXVldWUgZGF0YQ0KPiA+ID4gKyAqIEBwYXJhbSBxdWV1ZV9pZA0KPiA+ID4gKyAq ICBxdWV1ZSBpZCB0byBkZXF1ZXVlIGRhdGENCj4gPg0KPiA+IFBhcmFtIG1idWZfcG9vbCBpcyBt aXNzZWQuDQo+IA0KPiBUaGFua3MsIHdpbGwgZml4IGl0IGluIG5leHQgdmVyc2lvbi4NCj4gDQo+ IFJlZ2FyZHMsDQo+IFl1YW4NCj4gDQo+ID4NCj4gPiA+ICsgKiBAcGFyYW0gcGt0cw0KPiA+ID4g KyAqICBibGFuayBhcnJheSB0byBrZWVwIHN1Y2Nlc3NmdWxseSBkZXF1ZXVlZCBwYWNrZXRzDQo+ ID4gPiArICogQHBhcmFtIGNvdW50DQo+ID4gPiArICogIHNpemUgb2YgdGhlIHBhY2tldCBhcnJh eQ0KPiA+ID4gKyAqIEBwYXJhbSBucl9pbmZsaWdodA0KPiA+ID4gKyAqICB0aGUgYW1vdW50IG9m IGluLWZsaWdodCBwYWNrZXRzLiBJZiBlcnJvciBvY2N1cnJlZCwgaXRzIHZhbHVlIGlzDQo+ID4g PiArIHNldCB0byAtDQo+ID4gPiAxLg0KPiA+ID4gKyAqIEByZXR1cm4NCj4gPiA+ICsgKiAgbnVt IG9mIHN1Y2Nlc3NmdWxseSBkZXF1ZXVlZCBwYWNrZXRzICAqLyBfX3J0ZV9leHBlcmltZW50YWwN Cj4gPiA+ICt1aW50MTZfdCBydGVfdmhvc3RfYXN5bmNfdHJ5X2RlcXVldWVfYnVyc3QoaW50IHZp ZCwgdWludDE2X3QNCj4gPiA+ICtxdWV1ZV9pZCwNCj4gPiA+ICsJc3RydWN0IHJ0ZV9tZW1wb29s ICptYnVmX3Bvb2wsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIHVpbnQxNl90DQo+ID4gY291bnQs DQo+ID4gPiArCWludCAqbnJfaW5mbGlnaHQpOw0KPiA+ID4NCj4gPiA+ICAjZW5kaWYgLyogX1JU RV9WSE9TVF9BU1lOQ19IXyAqLw0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi92aG9zdC92ZXJzaW9u Lm1hcCBiL2xpYi92aG9zdC92ZXJzaW9uLm1hcCBpbmRleA0KPiA+ID4gYzkyYTlkNDk2Mi4uMWUw MzNhZDhlMiAxMDA2NDQNCj4gPiA+IC0tLSBhL2xpYi92aG9zdC92ZXJzaW9uLm1hcA0KPiA+ID4g KysrIGIvbGliL3Zob3N0L3ZlcnNpb24ubWFwDQo+ID4gPiBAQCAtODUsNCArODUsNyBAQCBFWFBF UklNRU5UQUwgew0KPiA+ID4gIAlydGVfdmhvc3RfYXN5bmNfY2hhbm5lbF9yZWdpc3Rlcl90aHJl YWRfdW5zYWZlOw0KPiA+ID4gIAlydGVfdmhvc3RfYXN5bmNfY2hhbm5lbF91bnJlZ2lzdGVyX3Ro cmVhZF91bnNhZmU7DQo+ID4gPiAgCXJ0ZV92aG9zdF9jbGVhcl9xdWV1ZV90aHJlYWRfdW5zYWZl Ow0KPiA+ID4gKw0KPiA+ID4gKwkjIGFkZGVkIGluIDIxLjExDQo+ID4gPiArCXJ0ZV92aG9zdF9h c3luY190cnlfZGVxdWV1ZV9idXJzdDsNCj4gPiA+ICB9Ow0KPiA+ID4gZGlmZiAtLWdpdCBhL2xp Yi92aG9zdC92aG9zdC5oIGIvbGliL3Zob3N0L3Zob3N0LmggaW5kZXgNCj4gPiA+IDFlNTYzMTE3 MjUuLjg5YTMxZTRjYTggMTAwNjQ0DQo+ID4gPiAtLS0gYS9saWIvdmhvc3Qvdmhvc3QuaA0KPiA+ ID4gKysrIGIvbGliL3Zob3N0L3Zob3N0LmgNCj4gPiA+IEBAIC00OSw3ICs0OSw4IEBADQo+ID4N Cj4gPiBbLi4uXQ0KPiA+DQo+ID4gPiArdWludDE2X3QNCj4gPiA+ICtydGVfdmhvc3RfYXN5bmNf dHJ5X2RlcXVldWVfYnVyc3QoaW50IHZpZCwgdWludDE2X3QgcXVldWVfaWQsDQo+ID4gPiArCXN0 cnVjdCBydGVfbWVtcG9vbCAqbWJ1Zl9wb29sLCBzdHJ1Y3QgcnRlX21idWYgKipwa3RzLCB1aW50 MTZfdA0KPiA+IGNvdW50LA0KPiA+ID4gKwlpbnQgKm5yX2luZmxpZ2h0KQ0KPiA+ID4gK3sNCj4g PiA+ICsJc3RydWN0IHZpcnRpb19uZXQgKmRldjsNCj4gPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICpy YXJwX21idWYgPSBOVUxMOw0KPiA+ID4gKwlzdHJ1Y3Qgdmhvc3RfdmlydHF1ZXVlICp2cTsNCj4g PiA+ICsJaW50MTZfdCBzdWNjZXNzID0gMTsNCj4gPiA+ICsNCj4gPiA+ICsJKm5yX2luZmxpZ2h0 ID0gLTE7DQo+ID4gPiArDQo+ID4gPiArCWRldiA9IGdldF9kZXZpY2UodmlkKTsNCj4gPiA+ICsJ aWYgKCFkZXYpDQo+ID4gPiArCQlyZXR1cm4gMDsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHVubGlr ZWx5KCEoZGV2LT5mbGFncyAmIFZJUlRJT19ERVZfQlVJTFRJTl9WSVJUSU9fTkVUKSkpIHsNCj4g PiA+ICsJCVZIT1NUX0xPR19EQVRBKEVSUiwNCj4gPiA+ICsJCQkiKCVkKSAlczogYnVpbHQtaW4g dmhvc3QgbmV0IGJhY2tlbmQgaXMgZGlzYWJsZWQuXG4iLA0KPiA+ID4gKwkJCWRldi0+dmlkLCBf X2Z1bmNfXyk7DQo+ID4gPiArCQlyZXR1cm4gMDsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4g KwlpZiAodW5saWtlbHkoIWlzX3ZhbGlkX3ZpcnRfcXVldWVfaWR4KHF1ZXVlX2lkLCAxLCBkZXYt Pm5yX3ZyaW5nKSkpIHsNCj4gPiA+ICsJCVZIT1NUX0xPR19EQVRBKEVSUiwNCj4gPiA+ICsJCQki KCVkKSAlczogaW52YWxpZCB2aXJ0cXVldWUgaWR4ICVkLlxuIiwNCj4gPiA+ICsJCQlkZXYtPnZp ZCwgX19mdW5jX18sIHF1ZXVlX2lkKTsNCj4gPiA+ICsJCXJldHVybiAwOw0KPiA+ID4gKwl9DQo+ ID4gPiArDQo+ID4gPiArCXZxID0gZGV2LT52aXJ0cXVldWVbcXVldWVfaWRdOw0KPiA+ID4gKw0K PiA+ID4gKwlpZiAodW5saWtlbHkocnRlX3NwaW5sb2NrX3RyeWxvY2soJnZxLT5hY2Nlc3NfbG9j aykgPT0gMCkpDQo+ID4gPiArCQlyZXR1cm4gMDsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKHVubGlr ZWx5KHZxLT5lbmFibGVkID09IDApKSB7DQo+ID4gPiArCQljb3VudCA9IDA7DQo+ID4gPiArCQln b3RvIG91dF9hY2Nlc3NfdW5sb2NrOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCWlmICh1 bmxpa2VseSghdnEtPmFzeW5jX3JlZ2lzdGVyZWQpKSB7DQo+ID4gPiArCQlWSE9TVF9MT0dfREFU QShFUlIsICIoJWQpICVzOiBhc3luYyBub3QgcmVnaXN0ZXJlZCBmb3INCj4gPiBxdWV1ZQ0KPiA+ ID4gaWQgJWQuXG4iLA0KPiA+ID4gKwkJCWRldi0+dmlkLCBfX2Z1bmNfXywgcXVldWVfaWQpOw0K PiA+ID4gKwkJY291bnQgPSAwOw0KPiA+ID4gKwkJZ290byBvdXRfYWNjZXNzX3VubG9jazsNCj4g PiA+ICsJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoZGV2LT5mZWF0dXJlcyAmICgxVUxMIDw8IFZJ UlRJT19GX0lPTU1VX1BMQVRGT1JNKSkNCj4gPiA+ICsJCXZob3N0X3VzZXJfaW90bGJfcmRfbG9j ayh2cSk7DQo+ID4gPiArDQo+ID4gPiArCWlmICh1bmxpa2VseSh2cS0+YWNjZXNzX29rID09IDAp KQ0KPiA+ID4gKwkJaWYgKHVubGlrZWx5KHZyaW5nX3RyYW5zbGF0ZShkZXYsIHZxKSA8IDApKSB7 DQo+ID4gPiArCQkJY291bnQgPSAwOw0KPiA+ID4gKwkJCWdvdG8gb3V0X2FjY2Vzc191bmxvY2s7 DQo+ID4gPiArCQl9DQo+ID4gPiArDQo+ID4gPiArCS8qDQo+ID4gPiArCSAqIENvbnN0cnVjdCBh IFJBUlAgYnJvYWRjYXN0IHBhY2tldCwgYW5kIGluamVjdCBpdCB0byB0aGUgInBrdHMiDQo+ID4g PiArCSAqIGFycmF5LCB0byBsb29rcyBsaWtlIHRoYXQgZ3Vlc3QgYWN0dWFsbHkgc2VuZCBzdWNo IHBhY2tldC4NCj4gPiA+ICsJICoNCj4gPiA+ICsJICogQ2hlY2sgdXNlcl9zZW5kX3JhcnAoKSBm b3IgbW9yZSBpbmZvcm1hdGlvbi4NCj4gPiA+ICsJICoNCj4gPiA+ICsJICogYnJvYWRjYXN0X3Jh cnAgc2hhcmVzIGEgY2FjaGVsaW5lIGluIHRoZSB2aXJ0aW9fbmV0IHN0cnVjdHVyZQ0KPiA+ID4g KwkgKiB3aXRoIHNvbWUgZmllbGRzIHRoYXQgYXJlIGFjY2Vzc2VkIGR1cmluZyBlbnF1ZXVlIGFu ZA0KPiA+ID4gKwkgKiBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24gY2F1c2VzIGEgd3JpdGUg aWYgcGVyZm9ybWVkDQo+ID4gY29tcGFyZQ0KPiA+ID4gKwkgKiBhbmQgZXhjaGFuZ2UuIFRoaXMg Y291bGQgcmVzdWx0IGluIGZhbHNlIHNoYXJpbmcgYmV0d2VlbiBlbnF1ZXVlDQo+ID4gPiArCSAq IGFuZCBkZXF1ZXVlLg0KPiA+ID4gKwkgKg0KPiA+ID4gKwkgKiBQcmV2ZW50IHVubmVjZXNzYXJ5 IGZhbHNlIHNoYXJpbmcgYnkgcmVhZGluZyBicm9hZGNhc3RfcmFycCBmaXJzdA0KPiA+ID4gKwkg KiBhbmQgb25seSBwZXJmb3JtaW5nIGNvbXBhcmUgYW5kIGV4Y2hhbmdlIGlmIHRoZSByZWFkIGlu ZGljYXRlcyBpdA0KPiA+ID4gKwkgKiBpcyBsaWtlbHkgdG8gYmUgc2V0Lg0KPiA+ID4gKwkgKi8N Cj4gPiA+ICsJaWYgKHVubGlrZWx5KF9fYXRvbWljX2xvYWRfbigmZGV2LT5icm9hZGNhc3RfcmFy cCwNCj4gPiBfX0FUT01JQ19BQ1FVSVJFKSAmJg0KPiA+ID4gKwkJCV9fYXRvbWljX2NvbXBhcmVf ZXhjaGFuZ2VfbigmZGV2LQ0KPiA+ID5icm9hZGNhc3RfcmFycCwNCj4gPiA+ICsJCQkmc3VjY2Vz cywgMCwgMCwgX19BVE9NSUNfUkVMRUFTRSwNCj4gPiBfX0FUT01JQ19SRUxBWEVEKSkpIHsNCj4g PiA+ICsNCj4gPiA+ICsJCXJhcnBfbWJ1ZiA9IHJ0ZV9uZXRfbWFrZV9yYXJwX3BhY2tldChtYnVm X3Bvb2wsICZkZXYtDQo+ID4gPm1hYyk7DQo+ID4gPiArCQlpZiAocmFycF9tYnVmID09IE5VTEwp IHsNCj4gPiA+ICsJCQlWSE9TVF9MT0dfREFUQShFUlIsICJGYWlsZWQgdG8gbWFrZSBSQVJQDQo+ ID4gcGFja2V0LlxuIik7DQo+ID4gPiArCQkJY291bnQgPSAwOw0KPiA+ID4gKwkJCWdvdG8gb3V0 Ow0KPiA+ID4gKwkJfQ0KPiA+ID4gKwkJY291bnQgLT0gMTsNCj4gPiA+ICsJfQ0KPiA+ID4gKw0K PiA+ID4gKwlpZiAodW5saWtlbHkodnFfaXNfcGFja2VkKGRldikpKQ0KPiA+ID4gKwkJcmV0dXJu IDA7DQo+ID4NCj4gPiBTaG91bGQgYWRkIGEgbG9nIGhlcmUuDQo+ID4NCj4gPiBUaGFua3MsDQo+ ID4gQ2hlbmJvDQo=